《流程的永恒之道》(二)控制模式之单选分裂与单选汇聚模式2015-03-20 infoq 辛鹏 荣浩
1. 单选分裂模式(排他选择模式)
原型实例(故事片段)

图3.13 房改购房审批流程中的排他选择故事片段如图3.13所示,“初审”环节之后,需要根据业务情况,选择“公告”或“复审”两个活动中的一个活动进行转出。例如,如果房改房的面积大于70平米就进行“公告”,否则直接提交给“复审”。上下文(描述、动机)描述:当前活动(初审)分裂为两个或多个后续分支,当前活动执行完毕后只能选择触发一个后续分支执行,即多选一。动机:在现实生活或生产中,很多时候需要做出选择,就像你走到一个岔路口时,必须选择其中一条路走,排他选择模式就是提供了可以进行多选一的机制和功能的模式。还有一个更容易理解的例子,就是我们考试试卷中的单选题,只有一个答案是正确的,而在高级模式中的“多选模式”则对应试卷中的多选题。问题的本质排他选择的本质就是在多个可选的选择中,根据每个选择的执行条件输入当前的境况,并进行特定的匹配,当某个选择的执行条件与当前的境况一致时,就执行这个特定的选择。很多事情都有其执行的前提,就像我们出门,如果下雨天则带伞,如果晴天则不带。所以,是否下雨就是排他选择的判断标准。解决方案及技术实现解决方案。排他选择同样有两种解决方案:一种是在XORSplit节点上定义条件(如图3.14所示),另一种是在转移线上定义条件(图3.15所示)。

技术实现(1) 定义期:在设计器中,为两个不同的方案提供了不同的定义界面。提供可求值的条件表达式(包括表达式中的变量)的输入及持久化存储机制。例如在本模式的故事中,首先定义一个工作流变量int area,然后再定义个求值表达式:area>70。这样在运行期,area的实际值(如房改房面积为80平米),与area>70这个表达式进行匹配,得出匹配结果为true,所以需要进行“公告”。(2) 运行期:在本模式的本质中我们讲到,排他选择的本质就是将当前境况与已经定义的条件进行匹配,根据匹配结果进行选择。因此,按照匹配的方式,本模式的实现可以分为人工匹配、基于数据的自动匹配两种场景。方案一和方案二只是在进行条件定义及匹配的位置上有所不同,本质的技术实现并没有不同,因此我们将只给出方案一的技术实现。1. 人工匹配的技术实现:顾名思义,人工匹配就是由人(活动A的执行人)在转出任务时,手动地选择“活动B”或“活动C”。因此,必须直接将活动B和活动C同时返回给活动A的办理人,由活动A的办理人选择是执行活动B还是活动C;然后根据活动A的办理人所选择的活动,进行求值表达式的赋值。如果活动A的办理人选择了活动B,则将“XORSplit转到活动B”这个转移线上的condition赋值为1,即set condition=1;否则将condition赋为任意不等于1的值,如set condition=2。需要说明的是,人工匹配本质上也是基于数据的匹配,因为人工选择之后还是要将选择结果所对应的数据赋值给求值表达式。在BPMN 2.0及XPDL 2.1规范中,排他选择模式的类型就是两种:基于数据的排他选择(Data-based Exclusive)和基于事件的排他选择(Event-based Exclusive)。在BPMN 2.0规范中,排他选择的类型默认为基于数据的。