首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

StarFlow 工作流 环节三种旁支模式

2012-11-12 
StarFlow 工作流 环节三种分支模式?StarFlow 支持三种环节分支模式:1:单一分支2:多路分支3:全部分支?设计

StarFlow 工作流 环节三种分支模式

?

StarFlow 支持三种环节分支模式:

1:单一分支

2:多路分支

3:全部分支

?

设计过程中分支模式比较容易实现。同时在这过程,考虑环节汇聚模式,如果考虑比较全面的话,实现起来困难还是不小,慢慢磨料,哈哈!

?

实例流程图:

?
StarFlow 工作流 环节三种旁支模式

多路分支实例代码:

?

ProcessEngine processEngine = new Configuration().buildProcessEngine();IProcessDefineService procDefService = processEngine.getProcessDefineService();IProcessInstanceService procInstService = processEngine.getProcessInstanceService();IWorkItemService workItemService = processEngine.getWorkItemService();//部署流程procDefService.deployProcessFile("Flow3.xml");//添加filterprocessEngine.addFilter(new LoggerProcessFilter());////启动流程//ProcessInstance processInstance = procInstService.createProcess("TestFlow1", "100002");////创建流程//procInstService.startProcess(processInstance.getProcessInstId());procInstService.createAndStartProcess("TestFlow3", "100002");//List<WorkItem> workItems = workItemService.queryPersonWorkItems("100002");//环节定义id, 用户idworkItemService.finishWorkItem(1, "100001"); //申告//默认线为固话处理班,这里派单到IPTV处理班Map<String, Object> values = new HashMap<String, Object>();values.put("optIdKD", Integer.valueOf(1)); //1: 宽带班,2:IPTV处理班values.put("optIdTV", Integer.valueOf(2)); //1: 宽带班,2:IPTV处理班Map<String, Object> conditions = new HashMap<String, Object>();conditions.put("map", values);workItemService.finishWorkItem(2, "910150", conditions); ////workItemService.finishWorkItem(3, "100002"); workItemService.finishWorkItem(4, "100002"); workItemService.finishWorkItem(5, "910115"); //归档}

?流程运行过程记录:

?

2010-1-14 15:37:02 com.starit.wf.service.filter.LoggerProcessFilter processCreate
信息: 流程【TestFlow3】创建成功, 流程实例ID = 1
2010-1-14 15:37:03 com.starit.wf.service.filter.LoggerProcessFilter processStart
信息: 流程【TestFlow3】启动成功, 流程实例ID = 1
2010-1-14 15:37:03 com.starit.wf.service.filter.LoggerProcessFilter acitivityStart
信息: 环节【上报】创建成功, 环节实例ID = 2
2010-1-14 15:37:03 com.starit.wf.service.filter.LoggerProcessFilter acitivityComplete
信息: 环节【上报】执行完成, 环节实例ID = 2
2010-1-14 15:37:03 com.starit.wf.service.filter.LoggerProcessFilter acitivityStart
信息: 环节【派单】创建成功, 环节实例ID = 3
2010-1-14 15:37:03 com.starit.wf.service.filter.LoggerProcessFilter acitivityComplete
信息: 环节【派单】执行完成, 环节实例ID = 3
2010-1-14 15:37:03 com.starit.wf.service.filter.LoggerProcessFilter acitivityStart
信息: 环节【宽带处理班】创建成功, 环节实例ID = 4
2010-1-14 15:37:03 com.starit.wf.service.filter.LoggerProcessFilter acitivityStart
信息: 环节【IPTV处理班】创建成功, 环节实例ID = 5
2010-1-14 15:37:03 com.starit.wf.service.filter.LoggerProcessFilter acitivityComplete
信息: 环节【IPTV处理班】执行完成, 环节实例ID = 5
2010-1-14 15:37:03 com.starit.wf.service.filter.LoggerProcessFilter acitivityStart
信息: 环节【归档】创建成功, 环节实例ID = 6
2010-1-14 15:37:03 com.starit.wf.service.filter.LoggerProcessFilter acitivityComplete
信息: 环节【归档】执行完成, 环节实例ID = 6
2010-1-14 15:37:03 com.starit.wf.service.filter.LoggerProcessFilter processComplete
信息: 流程【TestFlow3】运行完成, 流程实例ID = 1

? 流程定义内容:

?

<?xml version="1.0" encoding="UTF-8"?><ProcessDefine name="TestFlow3" 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="manual" name="派单">        <limitTime>60</limitTime>           <!-- 多路分支 -->            <splitMode>OR</splitMode>               <joinMode>XOR</joinMode>            <wiMode>single</wiMode>            <participantType>default</participantType>               <ParticipantList>                   <participant id="910150" name="俞文琦" type="person"/>                   <participant id="910115" name="李强" type="person"/>                   </ParticipantList>            <description></description>         </Activity>           <Activity id="A03" type="manual" name="固话处理班">        <limitTime>60</limitTime>            <splitMode>XOR</splitMode>               <joinMode>XOR</joinMode>            <wiMode>single</wiMode>            <participantType>act-logic</participantType>            <particiLogic>com.starit.test.TestParticipantService</particiLogic>            <description></description>        </Activity>        <Activity id="A04" type="manual" name="宽带处理班">        <limitTime>60</limitTime>            <splitMode>XOR</splitMode>               <joinMode>XOR</joinMode>            <wiMode>single</wiMode>            <participantType>act-logic</participantType>            <particiLogic>com.starit.test.TestParticipantService</particiLogic>            <description></description>        </Activity>        <Activity id="A05" type="manual" name="IPTV处理班">        <limitTime>60</limitTime>            <splitMode>XOR</splitMode>               <joinMode>XOR</joinMode>            <wiMode>single</wiMode>            <participantType>act-logic</participantType>            <particiLogic>com.starit.test.TestParticipantService</particiLogic>            <description></description>        </Activity>        <Activity id="A06" type="manual" name="归档">        <limitTime>60</limitTime>            <splitMode>XOR</splitMode>            <joinMode>XOR</joinMode>            <wiMode>single</wiMode>            <participantType>act-executer</participantType>            <particiSpecActID>A02</particiSpecActID>            <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="A02" to="A03" name="">               <isDefault>true</isDefault>            </Transition>        <Transition id="" from="A02" to="A04" name="">               <isDefault>false</isDefault>            <expression>map.optIdKD==1</expression>        </Transition>        <Transition id="" from="A02" to="A05" name="">               <isDefault>false</isDefault>            <expression>map.optIdTV==2</expression>        </Transition>        <Transition id="" from="A03" to="A06" name="">               <isDefault>true</isDefault>        </Transition>        <Transition id="" from="A04" to="A06" name="">               <isDefault>true</isDefault>        </Transition>        <Transition id="" from="A05" to="A06" name="">               <isDefault>true</isDefault>        </Transition>        <Transition id="" from="A06" to="endAct" name="">               <isDefault>true</isDefault>           </Transition>    </Transitions>   </ProcessDefine>
?

?

热点排行