今天发布一个含子流程的实例。由于流程实例与环节是基于event模型的,主子流程定义上没有太多的不同,同时可以子流程嵌套子流程。
1:流程图:
2:实例代码:
ProcessEngine processEngine = new Configuration().buildProcessEngine(); IProcessDefineService procDefService = processEngine.getProcessDefineService(); IProcessInstanceService procInstService = processEngine.getProcessInstanceService(); IWorkItemService workItemService = processEngine.getWorkItemService(); //部署流程 procDefService.deployProcessFile("subflowTest/mainFlow.xml"); procDefService.deployProcessFile("subflowTest/subFlow.xml"); //添加filter processEngine.addFilter(new LoggerProcessFilter()); //启动并创建流程 ProcessInstance processInstance = procInstService.createAndStartProcess("mainFlow", "100001"); workItemService.finishWorkItem(1, "100001"); workItemService.finishWorkItem(2, "100001"); workItemService.finishWorkItem(3, "100001");
3:实例运行过程
2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter processCreate 信息: 流程【mainFlow】创建成功, 流程实例ID = 1 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter processStart 信息: 流程【mainFlow】启动成功, 流程实例ID = 1 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter acitivityStart 信息: 环节【省网监中心】创建成功, 环节实例ID = 2 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter acitivityComplete 信息: 环节【省网监中心】执行完成, 环节实例ID = 2 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter acitivityStart 信息: 环节【合肥子流程】创建成功, 环节实例ID = 3 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter processCreate 信息: 流程【subFlow】创建成功, 流程实例ID = 2 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter processStart 信息: 流程【subFlow】启动成功, 流程实例ID = 2 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter acitivityStart 信息: 环节【ADSL处理】创建成功, 环节实例ID = 5 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter acitivityComplete 信息: 环节【ADSL处理】执行完成, 环节实例ID = 5 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter processComplete 信息: 流程【subFlow】运行完成, 流程实例ID = 2 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter acitivityComplete 信息: 环节【合肥子流程】执行完成, 环节实例ID = 3 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter acitivityStart 信息: 环节【归档】创建成功, 环节实例ID = 7 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter acitivityComplete 信息: 环节【归档】执行完成, 环节实例ID = 7 2010-1-14 17:43:41 com.starit.wf.service.filter.LoggerProcessFilter processComplete 信息: 流程【mainFlow】运行完成, 流程实例ID = 1
4:主流程定义内容
<?xml version="1.0" encoding="UTF-8"?> <ProcessDefine name="mainFlow" version="1.1.1" chname="测试主流程"> <ProcessProperty> <limitTime>1440</limitTime> <description></description> </ProcessProperty> <Activitys> <Activity id="startAct" type="start" name="开始活动"> <splitMode>XOR</splitMode> <description></description> </Activity> <Activity id="A01" type="manual" name="省网监中心"> <limitTime>60</limitTime> <splitMode>XOR</splitMode> <joinMode>XOR</joinMode> <wiMode>single</wiMode> <participantType>process-starter</participantType> <description></description> </Activity> <Activity id="A02" type="subProcess" name="合肥子流程"> <limitTime>60</limitTime> <splitMode>XOR</splitMode> <joinMode>XOR</joinMode> <wiMode>single</wiMode> <subProcess>subFlow</subProcess> <description></description> </Activity> <Activity id="A03" type="manual" name="省保障部门"> <limitTime>60</limitTime> <splitMode>XOR</splitMode> <joinMode>XOR</joinMode> <wiMode>single</wiMode> <participantType>process-starter</participantType> <description></description> </Activity> <Activity id="A04" type="manual" name="归档"> <limitTime>60</limitTime> <splitMode>XOR</splitMode> <joinMode>XOR</joinMode> <wiMode>single</wiMode> <participantType>process-starter</participantType> <description></description> </Activity> <Activity id="endAct" type="end" name="结束活动"> <joinMode>XOR</joinMode> <description></description> </Activity> </Activitys> <Transitions> <Transition id="" from="startAct" to="A01" name=""> <isDefault>true</isDefault> </Transition> <Transition id="" from="A01" to="A02" name=""> <isDefault>true</isDefault> </Transition> <Transition id="" from="A01" to="A03" name=""> <isDefault>false</isDefault> <expression>map.optId==1</expression> </Transition> <Transition id="" from="A02" to="A04" name=""> <isDefault>true</isDefault> </Transition> <Transition id="" from="A3" to="A04" name=""> <isDefault>true</isDefault> </Transition> <Transition id="" from="A04" to="endAct" name=""> <isDefault>true</isDefault> </Transition> </Transitions> </ProcessDefine>
5:子流程定义过程
<?xml version="1.0" encoding="UTF-8"?> <ProcessDefine name="subFlow" version="1.1.1" chname="测试子流程"> <ProcessProperty> <limitTime>1440</limitTime> <description></description> </ProcessProperty> <Activitys> <Activity id="startAct" type="start" name="开始活动"> <splitMode>XOR</splitMode> <description></description> </Activity> <Activity id="A01" type="manual" name="ADSL处理"> <limitTime>60</limitTime> <splitMode>XOR</splitMode> <joinMode>XOR</joinMode> <wiMode>single</wiMode> <participantType>process-starter</participantType> <description></description> </Activity> <Activity id="endAct" type="end" name="结束活动"> <joinMode>XOR</joinMode> <description></description> </Activity> </Activitys> <Transitions> <Transition id="" from="startAct" to="A01" name=""> <isDefault>true</isDefault> </Transition> <Transition id="" from="A01" to="endAct" name=""> <isDefault>true</isDefault> </Transition> </Transitions> </ProcessDefine>
下一步实现自由流功能。。。。