1、12process-definitionxmlns=name=super135/start-state67task-nodecreate-tasks=signal=8description9我们要利用这个TaskNode实现并发子流程,create-tasks=true是为了可以手动控制任务实例的创建,同时创建子流程,10是为了实现当所有子流程均已完成,主流程才能继续运行的效果11/description12tasksub113要并发的子流程之一15sub216要并发的子流程之二20/event21end-state122/task-node2324end-state/end-state252
2、6process-start27scriptSuperProcessStart28System.out.println("主流程启动,并设置主流程ID&);29/script3031process-end32SuperProcessEnd33主流程结束&343536下面是主流程的Node-EnterAction的代码:1publicclassNodeEnterActionimplementsActionHandler2publicvoidexecute(ExecutionContextexecutionContext)throwsException/取得本节点所有的TaskSetta
3、sks=(TaskNode)executionContext.getNode().getTasks();6TaskMgmtInstancetgmtexecutionContext.getTaskMgmtInstance();for(Task:tasks)/为每一个Task创建实例TaskInstancetaskInstancetgmt.createTaskInstance(task,executionContext);/业务ServiceJbpmTestFacadejbpmTestFacade(JbpmTestFacade)SpringBeanUtil.getBean(jbpmTestFaca
4、de);/根据Task的名字,为每一个Task创建相应的子流程ProcessInstanceprocessInstancejbpmTestFacade.createProcessInstance(task.getName();/设置创建这个子流程的流程实例IDprocessInstance.getContextInstance().setVariable(TaskInstanceID,taskInstance.getId();/子流程开始流转processInstance.signal();23再看其中一个子流程的定义:Sub1TaskSubTask11113ProcessStartScrip
5、t-sub1流程启动-&19SubProcessEndActionjbpmTest.bfzlc.action.SubProcessEndAction2324下面是该子流程的ProcessEndAction:SubProcessEndActionSystem.out.println(executionContext.getProcessDefinition().getName()+结束/得到创建当前子流程的那个TaskInstanceIDStringtaskInstanceIDexecutionContext.getContextInstance().getVariable().toString();/取得创建当前子流程的那个主流程taskInstancejbpmTestFacade.geTaskInstance(Long.valueOf(taskInstanceID);taskInstance.end();1415 思路很清楚,代码也很简单,按照这种方式我们可以让子流程实现所有Task能实现的功能
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2