StartFlow 工作流 --子流程

今天发布一个含子流程的实例。由于流程实例与环节是基于event模型的,主子流程定义上没有太多的不同,同时可以子流程嵌套子流程。

1:流程图:


StartFlow 工作流 --子流程
 子流程
StartFlow 工作流 --子流程

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>

 

下一步实现自由流功能。。。。

你可能感兴趣的:(工作,xml,活动)