JBPM4.4自由流

流程文件如下:

 

<process name="Free" xmlns="http://jbpm.org/4.4/jpdl">

<start g="20,20,48,48">
<transition g="-23,-17" name="123" to="state1"/>
</start>
<state g="143,142,92,52" name="state1">
<transition g="-47,-17" name="to review" to="review"/>
</state>

<task assignee="#{a}" g="96,16,127,52" name="review">
<transition g="-53,-17" name="to task1" to="task1"/>
</task>
<task assignee="#{b}" g="348,86,92,52" name="task1">
<transition name="to end1" to="end1" g="-47,-17"/>
</task>

<end g="213,298,48,48" name="end1"/>
</process>


 实现代码如下:

public void removeOutTransition(ProcessDefinitionImpl pd,String sourceName,String destName){
  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;
	  }
  } 
}
public void addOutTransition(ProcessDefinitionImpl pd,String sourceName,String destName){
    ActivityImpl sourceActivity = pd.findActivity(sourceName);
    ActivityImpl destActivity=pd.findActivity(destName);
    TransitionImpl transition = sourceActivity.createOutgoingTransition();
    transition.setName("to " +destName);
    transition.setDestination(destActivity);
    sourceActivity.addOutgoingTransition(transition);
}
public void testTaskAssignee() {
	Map<String, Object> variables = new HashMap<String, Object>(); 
    variables.put("a", "johndoe");
    variables.put("b", "xueyong");
    ProcessInstance processInstance3 = executionService.startProcessInstanceByKey("Free",variables);
	
    ProcessDefinition pd = repositoryService.createProcessDefinitionQuery().processDefinitionId(processInstance3.getProcessDefinitionId()).uniqueResult();
    addOutTransition((ProcessDefinitionImpl)pd,"state1","task1");
	
    Execution executionInA = processInstance3.findActiveExecutionIn("state1");
	processInstance3 = executionService.signalExecutionById(executionInA.getId(),"to task1");
	removeOutTransition((ProcessDefinitionImpl)pd,"task1","state1");
	
	Task task=taskService.findPersonalTasks("xueyong").get(0);
	taskService.completeTask(task.getId());
	   
	/*Set<String> outcomes = taskService.getOutcomes(task1.getId());
    List<HistoryActivityInstance> list = historyService.createHistoryActivityInstanceQuery().activityName("state1").list();
    */
}


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值