# 事件子流程
# 一、 基本介绍
# 什么是事件子流程
事件子流程(Event Sub-Process)是BPMN2.0新增的特殊子流程,用于在整个父流程生命周期内持续监听和处理特定事件。
# 设计初衷
- 解决传统边界事件需要包裹整个流程的问题。
- 提供更清晰、更优雅的流程建模方式。
- 保持主流程结构简洁的同时实现全局事件监听。
# 二、 与传统方式的对比
# 传统边界事件方案
[主流程边界]
┌───────────────────────────────┐
│ 订单创建 → 物流处理 → 支付处理 │
└──────────────┬────────────────┘
│
[退货边界事件]
▲ 传统边界流程示例图
缺点:
- 需要创建包裹整个流程的大框。
- 破坏主流程的可读性。
- 难以维护。
# 事件子流程方案
[主流程]
订单创建 → 物流处理 → 支付处理
[事件子流程]
退货信号捕获 → 后续处理
▲ 事件子流程示例图
优点:
- 主流程保持线性结构。
- 事件处理逻辑独立封装。
- 可视化更清晰。
# 三、 核心特性
# 事件监听范围
- 监听整个父流程执行期间的事件。
- 支持多种事件类型(消息/信号/定时等)。
# 运行机制
- 随父流程启动而激活。
- 持续监听直到父流程结束。
- 可配置为中断/非中断模式。
# 四、 最佳实践
# 适用场景
- 需要全程监听的事件(如退货、取消等)。
- 后台定时任务(如超时监控)。
- 全局异常处理。
# 设计建议
- 为事件子流程设置明确的命名。
- 复杂逻辑应在子流程内封装。
- 避免创建过多事件子流程。
# 五、 注意事项
- 中断型事件子流程会终止主流程所有活动。
- 非中断型会继续执行主流程。
- 不同BPM工具实现可能略有差异。
提示:在流程设计时,应先考虑使用事件子流程替代包裹整个流程的边界事件,以获得更好的可读性和可维护性。