JBPM4.4自由流

来源:互联网 发布:java 数据结构 编辑:程序博客网 时间:2024/04/29 23:10

流程文件如下:

 

<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();    */}


 

原创粉丝点击