# 包含网关
包含网关是一种工作流中的路由节点,它能够同时激活所有符合条件的路径,并在汇聚点等待所有被激活的路径执行完成后,才继续向下流转。
# 工作原理
包含网关的工作机制主要体现在以下两个阶段:
1.分支 - 条件性分裂 当流程执行到包含网关时,工作流引擎会评估所有外出顺序流上设置的条件表达式。 - 条件为True的路径:所有计算结果为 true的路径都会被激活,流程会在这几条路径上并行执行。 - 条件为False的路径:计算结果为 false的路径将被忽略,不会被执行。 默认路径:如果所有分支的条件都不满足,且定义了一条默认路径,那么该默认路径会被执行。如果所有条件都不满足且没有默认路径,流程引擎会抛出异常,导致流程中断 。因此,合理设置默认路径是重要的最佳实践。
2.汇聚 - 智能合并 所有被激活的并行分支,在到达下游的包含网关(汇聚点)时,会进入等待状态
- 包含网关会等待 所有被激活的、拥有流程令牌的分支都到达后,才会继续执行后续的流程。
- 这与并行网关的汇聚有本质区别。并行网关是死板地等待所有可能的传入分支,而包含网关只会等待那些实际被选中执行了的分支 。这使得它的汇聚行为更加智能和灵活
# 最佳实践
确保路径畅通:务必通过逻辑或默认流确保至少有一条路径可以被执行,防止流程因异常而中断。 变量的管理:确保在到达包含网关之前,条件表达式中使用的所有流程变量都已经正确设置。变量未定义或类型错误是导致条件评估失败的常见原因。 避免网关嵌套:在设计流程时,应尽量避免网关的复杂嵌套,以防止包含网关在汇聚时因路径判断错误而出现“死等”或流程无法继续的问题。
# 实战案例
# 需求描述
公司全体员工都需要进行“常规项检查”和“抽血化验”,而管理层领导额外需要进行“附加项检查”。
# 流程设计
用小扳手将网关类型设置为包含网关

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

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

# 流程执行
在线体验,请访问ruoyiflow (opens new window)