JBPM4 流程回退实现方法(转)

                                                                                  JBPM4 流程回退实现方法

在JBPM4流程设计中,让让当前节点回退到该节点以前的任意节点,如图,如果想从task3回到task1,可以使用的方法有:
①创建一个Transition对象,从task3到task1
/** 
* 动态创建连接当前任务节点至名称为destName的节点的Transition 
* @param taskId 任务节点ID 
* @param sourceName 源节点名称 
* @param desName  目标节点名称 
*/  public void addOutTransition(ProcessDefinitionImpl pd,String sourceName,String desName){
ProcessEngine pe = Configuration.getProcessEngine();
EnvironmentFactory ef =(EnvironmentFactory)pe;
EnvironmentImpl evti = null;
try{
evti = ef.openEnvironment();

ActivityImpl sourceActivity = pd.getActivity(sourceName);

TransitionImpl tran = sourceActivity.createOutgoingTransition();
ActivityImpl desActivity = pd.getActivity(desName);

tran.setName("to"+desName);
tran.setDestination(desActivity);

sourceActivity.addOutgoingTransition(tran);

}catch(Exception e){
e.printStackTrace();
}finally{
if(evti != null)evti.close();
}

}
/** 
* 动态删除连接sourceName与destName的Transition 
* @param taskId 
* @param sourceName 
* @param desName 
*/ 
public void removeOutTransition(ProcessDefinitionImpl pd,String sourceName,String destName){  
EnvironmentFactory environmentFactory = (EnvironmentFactory) processEngine;  
EnvironmentImpl env=null;  
try {  
     env = environmentFactory.openEnvironment();  
     //取得当前流程的活动定义  
     ActivityImpl sourceActivity = pd.findActivity(sourceName);  
       
     //若存在这个连接,则需要把该连接删除  
     List<Transition> trans=(List<Transition>) sourceActivity.getOutgoingTransitions();  
     for(Transition tran:trans){  
    if(destName.equals(tran.getDestination().getName())){//删除该连接  
            trans.remove(tran);  
            break;  
        }  
     }  
}catch(Exception ex){  
      
}finally{  
     if(env!=null)env.close();  
}  

这样再通过take()、completeTask()等方法就可以回退了
②调用ProcessEngin.execute()方法
③调用ExecutionImpl.moveTo()方法
推荐使用第一种

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值