分支模式(SplitMode)和聚合模式(JoinMode)


分支模式(SplitMode)和聚合模式(JoinMode)


工作流中的流程状态流转实现大部分都是通过活动的分支模式与聚合模式以及连接线上的条件来实现流程的流转组合实现,下面我们将要结合EMSFLOW流程管理平台来介绍一下

这2种模式的基本算法与使用。


分支模式(SplitMode)


分支模式,表示该活动结束后,它的后继活动的触发情况。它包括“全部分支(AND)”、“单一分支(XOR)”:
1. “AND”型分支模式
表示该活动结束后它的所有后继活动将同时被触发。
2. “XOR”型分支模式
如果该活动的分支模式为“单一分支”,那么引擎会根据由该活动“射出”的连接线上的条件进行判断,决定该触发哪个后继活动。具体分为下面三种情况:
1) 满足条件的连接线所指的活动被触发;
2) 如果有若干个连接线上的条件都满足,那么比较连接线上的优先级,优先级高的那条连接线所指的活动将被触发;
3) 如果连接线上的条件都不满足,那么取“默认值”的那条连接线所指的活动将被触发。
【注】活动的“分支模式”为“单一分支”时,由它射出的连接线有且只有一条线的取值是“默认值”。

【示例】
1. “AND”型分支模式示例

如图1所示,由于人工活动1的分支模式是“全部分支”,那么当人工活动1完成后它后继的所有活动(人工活动2、人工活动3、人工活动4)将同时被触发。



图1 “全部分支”型分支模式


2. “XOR”型分支模式示例
1) 手工判断

由该活动射出的连线上只有一个满足条件时如果分支类型为XOR,并且Transition上没有设置条件(设置为人工活动类型),则该活动到下一步执行为手工判断执行.



图2 手工判断“单一分支”型分支模式

2) 条件判断:由该活动射出的连线上有多个,并且分支类型为XOR时,如果连接线上有条件,则按照条件判断来决定下一步骤走哪条分支



图3 条件判断“单一分支”型分支模式

如果有多个满足条件,则走优先级别高的条件,如果优先级别相同,则由系统自动判断下一步骤所走的路线.
如上图3 所示,由于“A” 活动的分支模式是“单一分支”并且在处理的过程中“num==1”,尽管由A指向B和C的两条分支都满足条件,但指向B的优先级
大于指向C的优先级,因此“B”活动被触发。


3. 组合式判断


对于情况稍微复杂一点的,我们可以把几种情况组合起来使用,例如下面这个分支,是手工判断和条件判断组合,主管审批到下一步骤,是手工判断,是否需要上级主管审批到下一步骤,为条件判断,总经理审批到下一步骤为手工判断,组合起来使用,可以实现比较复杂的业务。


 

聚合模式(JoinMode)


有分就有聚,同理,聚合模式表示该多路活动入口分支触发它的的方式。它包括“全部聚合(AND)”、“单一聚合(XOR)”,如果只有一个活动入口,则不聚合模式不起作用。
1. “全部聚合”型聚合模式
表示该活动必须等到它的所有前驱活动全部完成才可以触发。
2. “单一聚合”型聚合模式
表示当该活动的若干前驱活动中只要有一个满足条件的活动完成,该活动即可被触发。

【示例】


1. “全部聚合”型聚合模式示例

表示该活动必须等到它的所有前驱活动全部完成才可以触发
如图4所示,“人工活动5”的“聚合模式”设置为“全部聚合”,那么只有在它的前驱“人工活动2”、“人工活动3”,“人工活动4”都完成后,“人工活动3”才可以运行。



图4 “全部聚合”型聚合模式

2. “单一聚合”型聚合模式示例

如图5所示,由于“人工活动3”的“聚合方式 ”设置为“XOR(任意一个)”,那么根据上面的算法说明,当“人工活动2,3,4”中的任意一个完成后,“人工活动5”就可以运行了,本例是人工活动4完成后就触发人工活动5,而无需考虑“人工活动2”或“人工活动3”是否完成。



图5 “单一聚合”型聚合模式

 

以上只是简单的介绍了EMSFLOW工作流实现流程流转的一些算法,更多的扩展方法我们在高级教程中介绍,如果您对此感兴趣,请与我们联系。.