在流程设计当中经常会遇到根据条件来判断流程走向的问题,Activiti中也给出了相应的实现方法:网关。
网关(Gateway)用于控制流程走向(在BPMN2.0规范中称为“执行令牌”)。根据功能不同可以划分为以下四种网关:
- 排他网关
- 并行网关
- 包容网关
- 事件网关
其中,排他网关(Exclusive Gateway)用来对流程中的走向进行建模。流程执行到该网关时,Activiti 根据设置的条件进行计算,当条件计算结果为true时,执行当前网关的输出流。
小提示:如果多个线路计算结果都为true,那么只会执行第一个,如果没有为true的值,会抛出异常。
排他网关在流程图当中的形象如下图所示:
下面介绍一下排他网关的使用方法。
1、绘制流程图
ExclusiveProcess.bpmn如下所示:
其中排他网关的三个输出线分别设置Condition值为:
${type == 1}
${type == 2}
${type == 3}123
当表达式判断结果为true时会执行后面的系统任务。
三个系统任务分别设置成如图所示:
三个系统任务的Task type 设为Expression,Expression选项中分别填入
${resumeService.showTask1()}
${resumeService.showTask2()}
${resumeService.showTask3()}123
流程图的XML代码如下&