# 事件子流程

# 一、基本介绍

# 1.1 什么是事件子流程

事件子流程(Event Sub-Process)是BPMN2.0新增的特殊子流程,用于在整个父流程生命周期内持续监听和处理特定事件。

# 1.2 设计初衷

  • 解决传统边界事件需要包裹整个流程的问题
  • 提供更清晰、更优雅的流程建模方式
  • 保持主流程结构简洁的同时实现全局事件监听

# 二、与传统方式的对比

# 2.1 传统边界事件方案

[主流程边界]
┌───────────────────────────────┐
│ 订单创建 → 物流处理 → 支付处理 │
└──────────────┬────────────────┘
               │
        [退货边界事件]

传统边界流程示例图

▲ 传统边界流程示例图

缺点

  • 需要创建包裹整个流程的大框
  • 破坏主流程的可读性
  • 难以维护

# 2.2 事件子流程方案

[主流程]
订单创建 → 物流处理 → 支付处理

[事件子流程]
退货信号捕获 → 后续处理

事件子流程示例图

▲ 事件子流程示例图

优点

  • 主流程保持线性结构
  • 事件处理逻辑独立封装
  • 可视化更清晰

# 三、核心特性

# 3.1 事件监听范围

  • 监听整个父流程执行期间的事件
  • 支持多种事件类型(消息/信号/定时等)

# 3.2 运行机制

  • 随父流程启动而激活
  • 持续监听直到父流程结束
  • 可配置为中断/非中断模式

# 五、最佳实践

# 5.1 适用场景

  • 需要全程监听的事件(如退货、取消等)
  • 后台定时任务(如超时监控)
  • 全局异常处理

# 5.2 设计建议

  1. 为事件子流程设置明确的命名
  2. 复杂逻辑应在子流程内封装
  3. 避免创建过多事件子流程

# 六、注意事项

  1. 中断型事件子流程会终止主流程所有活动
  2. 非中断型会继续执行主流程
  3. 不同BPM工具实现可能略有差异

提示:在流程设计时,应先考虑使用事件子流程替代包裹整个流程的边界事件,以获得更好的可读性和可维护性。