网关
2024年3月26日大约 2 分钟
网关
通俗讲,网关用来控制流程,不同网关的流程控制方式不一样。在Activiti7有4种网关:排他、并行、包含、事件。
排他网关
排他网关,选择符合条件(true)的一个分支进行流程推进。
为此,我们关系的情况有可能有3种:
- 符合一个条件
- 符合多个条件
- 不符合条件
假如符合的条件不止一个,Activit7默认选择第一个命中的,同理如果过一个符合条件的都没有,则抛异常。
官网给出依据:

示例图:

并行网关
并行网关的基本思想来自:分治思想,即FORK/JOIN。

在流程审批中,会签的实现方式有两种:
- 使用多实例会签。
- 并行网关实现会签。
不论使用哪种方式实现,一般地需关注2个问题:
- 如何推送"待审批人"给业务方
- 如何在不影响"非会签"模式下,实现多种模式并存。比如:或签下,无具体的assignee值;会签下,多个assignee值共存等问题。
包含网关
包含网关:排他网关与并行网关的组合。
与排他网关的区别:当条件满足多个分支时,多个分支流程都会被触发;排他网关则默认只生效第一条分支。
与并行网关的区别:包含网关可以设置条件并且可以生效,并行网关即使设置了条件也无法生效。
事件网关
不在讨论范围,感兴趣可以看:
🔗 https://www.activiti.org/userguide/#bpmnEventbasedGateway
任务
任务类型有很多,这里只讲一种:用户任务(User Task)
用户任务

在工作流中,需要人参与的,都使用这一任务类型。对于用户任务(User Task)的使用,可以指定特定一个人、候选人、候选组。对于用户任务(User Task)的使用要点是给用户任务设置一些属性:
- 截止日期
- 办理人(assignee) ⚠️ 或签模式下assignee是空的,需要去
act_ru_identitylink
找 - 候选人、候选组等等