跳到主要内容
版本:5.0 (最新)

工作流网关

概要

此页介绍流程中使用的网关类型(Exclusive / Inclusive / Parallel / Event-based 等)以及它们在执行时的行为。

已知限制:

  • 包含(Inclusive)与事件网关(Event-based gateway)已经具备基础运行时语义,但高级函数、复杂回退与外部监听治理仍需继续补强。
  • 分支条件和 branch_key 的评估逻辑需与后端严格对齐。

当前已落地:

  • Exclusive:可按单个 branch_key 路由;
  • Parallel:可激活全部后继;
  • Inclusive:可按多个 branch_key 激活多个后继,也可基于表达式自动求值;
  • Event-based:已支持消息/定时器候选事件竞争,命中一个事件后只激活对应分支。

补齐建议:

  • 明确各类网关(Exclusive/Inclusive/Parallel/Event-based)的运行时语义与示例;
  • 为包含网关定义条件求值策略与冲突解决规则;
  • 针对事件网关,定义事件选择与优先级策略,确保与消息/定时器实现一致。

下一步:编写小而明确的示例流程(带预期执行路径),作为实现与回归测试的基础,并在文档中记录变更历史。

网关实现细节

  1. 类型与语义
  • Exclusive Gateway(互斥):按条件顺序选择单一路径,需定义默认分支;
  • Parallel Gateway(并行):并行启动多个分支,后续需同步(join)策略;
  • Inclusive Gateway(包含):可以同时选择多个满足条件的分支——实现时需处理冲突与重复执行问题;
  • Event-based Gateway:根据到达的事件进行分支选择,需保证事件选择的原子性与优先级。

补充说明:当前 Inclusive 既可以显式提交多个分支标识,也可以在连线配置表达式,由后端自动求值选路。

  1. 条件评估与执行顺序
  • 条件使用可表达式(支持字段名、比较符、简单函数),并在网关处按定义顺序求值;
  • 对于包含网关,应按明确规则(例如按权重或全部匹配)决定触发哪些分支,并避免重复触发同一逻辑节点。
  1. 包含网关(Inclusive)实现建议
  • 在评估阶段先收集所有满足条件的分支,然后创建与并行分支对应的子实例/任务,跟踪子分支状态并在全部完成后继续主流。
  1. Event-based 网关实现建议
  • 定义事件选择优先级与超时回退(若超时未收到事件则走备用路径);
  • 当前引擎已经保证“命中一个候选事件,只路由一个候选分支”;后续可继续补强外部监听注册与撤销。
  1. 测试矩阵
  • 单元:条件表达式解析、分支计算、并发分支并发性测试;
  • 集成:包含网关在高并发下的正确性、事件网关的优先级与回退行为;
  • 回归:历史版本变动导致的网关语义差异检测。