浏览 3611 次
锁定老帖子 主题:jBPM4.0的用户指南(五-3)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-25
续第5章JPDL
5.2.4. concurrency并发 使用fork和join活动,可以模拟流向(executions)的汇合。 例子: 流程处理的并发例子 图 5.6. 流程处理的并发例子 <process name="ConcurrencyGraphBased" xmlns="http://jbpm.org/4/jpdl"> <start> <transition to="fork" /> </start> <fork name="fork"> <transition to="send invoice" /> <transition to="load truck" /> <transition to="print shipping documents" /> </fork> <state name="send invoice"> <transition to="final join" /> </state> <state name="load truck"> <transition to="shipping join" /> </state> <state name="print shipping documents"> <transition to="shipping join" /> </state> <join name="shipping join"> <transition to="drive truck to destiation" /> </join> <state name="drive truck to destiation"> <transition to="final join" /> </state> <join name="final join"> <transition to="end" /> </join> <end name="end" /> </process> 5.2.5. end结束 结束流向 5.2.5.1. end process instance结束流程处理实例 默认情况下,结束活动会终结已完成流程处理实例。因此在流程处理实例中,仍然在活动的多个并发(concurrent)流向(concurrent)也会结束。 结束活动 图 5.7. 结束活动 <process name="EndProcessInstance" xmlns="http://jbpm.org/4/jpdl"> <start> <transition to="end" /> </start> <end name="end" /> </process> 新的流程处理实例一创建便会直接结束。 5.2.5.2. end execution结束流向 只有流向到达结束(end)活动时会结束流程处理实例,并且其他并发流向会放弃活动。我们可以设置属性ends="execution"来达到这种状况。 表 5.8. end execution属性 属性 类型 默认值 是否必须 描述 ends {processinstance|execution} processinstance optional可选 流向路径到达end活动整个流程处理实例就会结束, 5.2.5.3. end multiple多个结束 一个流程处理可以有多个end events,这样就很容易显示出流程处理实例的不同结果。示例: 多个end events 图 5.8. 多个end events <prccess name="EndMultiple" xmlns="http://jbpm.org/4/jpdl"> <start> <transition to="get return code" /> </start> <state name="get return code"> <transition name="200" to="ok" /> <transition name="400" to="bad request" /> <transition name="500" to="internal server error" /> </state> <end name="ok" /> <end name="bad request" /> <end name="internal server error" /> </process> 如果你启动一个流向并使用下面的代码将它执行到get return code等待状态,流向便会以bad request的end 活动(event)结束 Execution execution = executionService.startProcessInstanceByKey("EndMultiple"); String executionId = execution.getId(); execution = executionService.signalExecutionById(executionId, "400"); 同样地,使用值为200或者500就会让流向(execution)分别以ok或者internal server error的end events结束。 5.2.5.4. end State结束状态 流向(execution)可以以不同的状态结束。可以用其他的方式列出流程处理实例的结果。可以用end event的状态属性或者end-cancel和end-error表示。 表 5.9. end execution 属性 属性 类型 默认值 是否必须 描述 state String 可选 状态分配给流向 不同的结束状态 图 5.9. 不同的结束状态 <process name="EndState" xmlns="http://jbpm.org/4/jpdl"> <start> <transition to="get return code" /> </start> <state name="get return code"> <transition name="200" to="ok" /> <transition name="400" to="bad request" /> <transition name="500" to="internal server error" /> </state> <end state="comleted" /> <end-cancel name="bad request" /> <end-error name="internal server error" /> </process> 这时,如果我们启动一个流向并使用下面的代码将流向执行到get return code等待状态,流向会以取消状态(cancel state)结束。 Execution execution = executionService.startProcessInstanceByKey("EndState"); String executionId = execution.getId(); execution = executionService.signalExecutionById(executionId, "400"); 和上面一样,使用值为200或500会让流向分别以comleted或者error states结束。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-27
<?xml version="1.0" encoding="UTF-8"?>
<process name="test_fork" xmlns="http://jbpm.org/4.0/jpdl"> <start g="105,85,48,48" name="start1"> <transition name="to task1" to="task1" g="-53,-17" /> </start> <task g="290,95,92,52" name="task1"> <assignment-handler class="org.jbpm.df.AssignTask" /> <transition name="to fork1" to="fork1" g="-53,-17" /> </task> <task name="task2" g="158,248,92,52"> <assignment-handler class="org.jbpm.df.AssignTask" /> <transition name="to join1" to="join1" g="-53,-17" /> </task> <task name="task3" g="165,348,92,52"> <assignment-handler class="org.jbpm.df.AssignTask" /> <transition name="to join1" to="join1" g="-53,-17" /> </task> <fork name="fork1" g="46,287,48,48"> <transition name="to task2" to="task2" g="-53,-17" /> <transition name="to task3" to="task3" g="-53,-17" /> </fork> <join name="join1" g="335,300,48,48"> <transition name="to task4" to="task4" g="-53,-17" /> </join> <task name="task4" g="465,295,92,52"> <assignment-handler class="org.jbpm.df.AssignTask" /> <transition name="to end1" to="end1" g="-47,-17" /> </task> <end name="end1" g="447,409,48,48" /> </process> 我这里是一个task结束后,进入fork节点,然后分成两个task,再进入join,请问该如何处理? |
|
返回顶楼 | |
发表时间:2009-09-27
呵呵,这就分支聚合啊,它是自动的,不知道你想如何处理,需求是什么 ?
|
|
返回顶楼 | |