# 包含网关

包含网关是一种工作流中的路由节点,它能够同时激活所有符合条件的路径,并在汇聚点等待所有被激活的路径执行完成后,才继续向下流转。

foo

# 工作原理

包含网关的工作机制主要体现在以下两个阶段:

1.​​分支 - 条件性分裂​​ 当流程执行到包含网关时,工作流引擎会​​评估所有外出顺序流上设置的条件表达式​​。 ​​- 条件为True的路径​​:所有计算结果为 true的路径都会被激活,流程会在这几条路径上​​并行执行​​。 ​​- 条件为False的路径​​:计算结果为 false的路径将被忽略,不会被执行。 ​​默认路径​​:如果所有分支的条件都不满足,且定义了一条默认路径,那么该默认路径会被执行。如果所有条件都不满足且没有默认路径,流程引擎会抛出异常,导致流程中断 。因此,​​合理设置默认路径是重要的最佳实践​​。

2.汇聚 - 智能合并​ 所有被激活的并行分支,在到达下游的包含网关(汇聚点)时,会进入等待状态

  • 包含网关会等待 ​​所有被激活的、拥有流程令牌的分支​​都到达后,才会继续执行后续的流程。
  • 这与并行网关的汇聚有本质区别。​​并行网关是死板地等待所有可能的传入分支,而包含网关只会等待那些实际被选中执行了的分支​​ 。这使得它的汇聚行为更加智能和灵活

# 最佳实践

​​确保路径畅通​​:务必通过逻辑或默认流确保至少有一条路径可以被执行,防止流程因异常而中断。 ​​变量的管理​​:确保在到达包含网关之前,条件表达式中使用的所有流程变量都已经正确设置。变量未定义或类型错误是导致条件评估失败的常见原因。 ​​避免网关嵌套​​:在设计流程时,应尽量避免网关的复杂嵌套,以防止包含网关在汇聚时因路径判断错误而出现“死等”或流程无法继续的问题。

# 实战案例

# 需求描述

公司全体员工都需要进行“常规项检查”和“抽血化验”,而管理层领导额外需要进行“附加项检查”。

# 流程设计

  1. 用小扳手将网关类型设置为包含网关 foo

  2. 分别设计三条流出路径,其中两条是默认路线,即常规检查和抽血化验, 一条是领导专属的附加检查 foo

  3. 设置服务任务的属性, 这里我们设置为一个测试的方法 foo

# 流程执行

foo

在线体验,请访问ruoyiflow (opens new window)