工作流网关
概要
此页介绍流程中使用的网关类型(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)的运行时语义与示例;
- 为包含网关定义条件求值策略与冲突解决规则;
- 针对事件网关,定义事件选择与优先级策略,确保与消息/定时器实现一致。
下一步:编写小而明确的示例流程(带预期执行路径),作为实现与回归测试的基础,并在文档中记录变更历史。
网关实现细节
- 类型与语义
- Exclusive Gateway(互斥):按条件顺序选择单一路径,需定义默认分支;
- Parallel Gateway(并行):并行启动多个分支,后续需同步(join)策略;
- Inclusive Gateway(包含):可以同时选择多个满足条件的分支——实现时需处理冲突与重复执行问题;
- Event-based Gateway:根据到达的事件进行分支选择,需保证事件选择的原子性与优先级。
补充说明:当前 Inclusive 既可以显式提交多个分支标识,也可以在连线配置表达式,由后端自动求值选路。
- 条件评估与执行顺序
- 条件使用可表达式(支持字段名、比较符、简单函数),并在网关处按定义顺序求值;
- 对于包含网关,应按明确规则(例如按权重或全部匹配)决定触发哪些分支,并避免重复触发同一逻辑节点。
- 包含网关(Inclusive)实现建议
- 在评估阶段先收集所有满足条件的分支,然后创建与并行分支对应的子实例/任务,跟踪子分支状态并在全部完成后继续主流。
- Event-based 网关实现建议
- 定义事件选择优先级与超时回退(若超时未收到事件则走备用路径);
- 当前引擎已经保证“命中一个候选事件,只路由一个候选分支”;后续可继续补强外部监听注册与撤销。
- 测试矩阵
- 单元:条件表达式解析、分支计算、并发分支并发性测试;
- 集成:包含网关在高并发下的正确性、事件网关的优先级与回退行为;
- 回归:历史版本变动导致的网关语义差异检测。