BPMN基本元素:事件 Events——流程的触发与结束

在BPMN中,事件(Event) 代表流程的”关键时刻”——何时开始、中途如何被触发、何时结束。事件是流程的入口与出口,也是流程中等待与反应的载体。本文深入讲解事件的分类、语义及常见用法。

事件的三个生命周期

1. 启动事件(Start Event)

用途:定义流程的起点,指定流程如何被触发。

常见类型:

  • 空启动事件(None Start Event):人工启动,无特定触发条件
  • 消息启动(Message Start Event):接收外部消息后启动
  • 定时器启动(Timer Start Event):按时间表自动启动(如每天早上8点)
  • 信号启动(Signal Start Event):响应来自系统/其他流程的信号
  • 错误启动(Error Start Event):从另一个流程中断触发

符号示意

空启动 消息启动 定时器启动 信号启动 错误启动

2. 中间事件(Intermediate Event)

用途:在流程进行中捕获事件,可作为”等待点”或”触发点”。

常见类型:

  • 消息中间事件:等待接收消息或发送消息
  • 定时器中间事件:等待指定时间后继续
  • 错误中间事件:捕获错误并处理
  • 信号中间事件:等待或发送信号
  • 补偿事件:在子流程发生错误时触发补偿逻辑

特殊:边界事件(Boundary Event)

  • 附着在活动(任务/子流程)的边界上
  • 中断型边界事件:触发时中断当前活动,跳转到异常处理路径
  • 非中断型边界事件:触发时不中断当前活动,并行执行异常处理

符号示意

中间(消息) 中间(定时器) 边界(中断) 边界(非中断)

3. 结束事件(End Event)

用途:定义流程的终点。

常见类型:

  • 空结束事件(None End Event):流程正常结束
  • 错误结束事件(Error End Event):流程异常结束,向父流程报告错误
  • 消息结束事件(Message End Event):流程结束并发送消息到外部系统
  • 信号结束事件(Signal End Event):发送信号给其他流程

符号示意

空结束 错误结束 消息结束

事件与异常处理的结合

BPMN的强大之处在于精细化异常建模

1
2
3
4
5
┌─────────────┐
│ 用户任务 │ ← 边界事件:定时器(30分钟)
│ 审批订单 │ ├─ 非中断:发送提醒邮件(继续等待)
│ │ └─ 中断:超时处理(取消订单)
└─────────────┘

这比简单的”超时设置”更清晰——明确表示:

  • 定时器触发时的行为
  • 是否中断当前流程
  • 触发后的后续处理路径

小案例:消息驱动的支付流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
启动事件(人工创建订单)

[ 等待支付 ](中间消息事件)

收到支付成功消息

[ 发货 ]

结束事件(发送确认邮件)

例外路径:
[ 等待支付 ] 有边界事件(定时器24小时)
└─ 触发 → 发送催款 → 回到[ 等待支付 ]

[ 等待支付 ] 有边界事件(错误中间事件)
└─ 收到支付失败 → [ 退款 ] → 结束(错误)

事件的关键属性

属性 说明 示例
类型 事件的种类(消息、定时器等) Message, Timer, Error
方向 捕获/发送(对消息/信号) Catch, Throw
时机 同步/异步、立即/延迟 Start, Intermediate, End
中断性 中断/非中断(边界事件) Interrupting, Non-interrupting

小结

事件是BPMN流程的”时间与触发器”。掌握:

  • ✓ 三个生命周期(启动、中间、结束)
  • ✓ 各类事件的触发条件与语义
  • ✓ 边界事件处理异常
  • ✓ 事件与活动的组合

便能设计出韧性强、异常清晰的流程。

参考资料