maestro
latest
false
- 简介
- 入门指南
- 流程建模
- 流程实施
- 流程运营
- 流程监控
- 流程优化
- 参考信息
Maestro 用户指南
上次更新日期 2026年5月6日
概述
事件子流程用于对流程或子流程作用域中的事件做出响应。它未连接到主序列流。
相反,当封闭作用域处于活动状态、发生配置的开始事件时,引擎会触发事件子流程。
请在以下情况下使用事件子流程:
- 集中管理相关的错误处理逻辑。
- 避免在多个任务之间重复边界错误事件。
- 控制流程或子流程作用域中的行为。
- 在运行时对外部消息做出响应。
- 一致地运行恢复、日志记录或通知逻辑。
在 Maestro 中,事件子流程可以下列方式开始:
- 错误开始事件
- 消息开始事件
错误开始事件
发生 BPMN 错误错误且错误代码匹配时,或事件配置为“全部捕获”时,错误开始事件会触发事件子流程。
抛出 BPMN 错误时,引擎会在同一作用域中评估匹配的事件子流程,然后再评估边界错误事件。这种评估顺序会优先处理事件子流程。
执行行为
错误开始事件一定会中断。
发生错误时,引擎会:
- 触发事件子流程。
- 取消封闭流程或子流程作用域。
- 停止该作用域内的所有活动路径。
当错误导致当前执行无效时,使用错误开始事件。
真实示例:
- 由于欺诈检测,付款授权失败。
- 在接入期间,强制性合规验证会失败。
- 关键系统依赖项不可用。
有无事件子流程时的错误处理
| 没有事件子流程 | 有事件子流程 |
|---|---|
| 您将边界错误事件附加到各个任务。 | 您在流程或子流程作用域中定义一个事件子流程。 |
| 您经常在多个任务之间复制类似的错误逻辑。 | 您将相关错误处理逻辑集中在一个地方。 |
| 每个任务都会控制自己的错误处理。 | 作用域会控制其中所有任务的错误处理。 |
| 随着模型的增长,维护难度增加。 | 由于您可以在一个位置更新错误逻辑,因此维护变得更简单。 |
对现有模型的影响
只有在您将事件子流程添加到同一作用域时,引擎才会更改行为。
- 仅使用边界错误事件的模型将继续保持以前的行为。
- 如果添加一个事件子流程,它会处理未被同一作用域中的边界错误事件处理的通用错误。
- 如果没有与抛出的错误匹配的边界错误事件,引擎将评估事件子流程。
请勿同时配置边界错误事件和事件子流程来处理同一作用域内的同一错误引用。
配置规则
对于给定作用域(流程或子流程):
- 每个错误代码仅使用一个事件子流程。
- 仅使用一个“全部捕获”的事件子流程。
对于给定任务:
- 每个错误代码仅使用一个边界错误事件。
- 仅使用一个“全部捕获”的边界错误事件。
消息开始事件
当引擎在封闭作用域处于活动状态时收到已配置的消息时,消息开始事件会触发事件子流程。
执行行为
在封闭作用域处于活动状态时,引擎会侦听已配置的消息。收到消息时,引擎会根据其中断性或非中断性配置触发事件子流程。
消息开始事件不会覆盖其他消息事件,也不会优先于其他消息事件。每个消息事件都会根据其作用域和配置独立做出响应。
有无事件子流程时的消息处理
| 没有事件子流程 | 有事件子流程 |
|---|---|
| 您在主序列流中对消息处理进行建模。 | 您在流程或子流程作用域中定义一个事件子流程。 |
| 您必须通过中间消息捕获事件路由主流程。 | 在作用域处于活动状态时,引擎会侦听消息。 |
| 主流程必须明确执行消息事件才能对其做出响应。 | 在作用域处于活动状态时,事件子流程可以随时触发。 |
| 消息处理逻辑将与主流程结构紧密关联。 | 消息处理逻辑始终独立于主序列流。 |
| 更改消息行为可能需要重组主流程。 | 您可以在不修改主流程的情况下更新消息处理。 |
| 发生消息事件时,主流程将会暂停。 | 您可以将消息开始事件配置为中断性或非中断性。 |
对现有模型的影响
只有您在事件子流程中添加消息开始事件后,引擎才会更改行为。
- 不使用事件子流程的模型将继续保持以前的行为。
- 添加消息开始事件后,引擎会在封闭作用域处于活动状态时侦听已配置的消息。
- 如果您将消息开始事件配置为中断性,引擎会在收到消息时取消封闭作用域。
- 如果您将其配置为非中断性,引擎将并行启动事件子流程,并允许主流程继续运行。
请勿在同一作用域中使用同一消息引用配置多个消息开始事件。
中断性与非中断性
您可以将消息开始事件配置为中断性或非中断性。
正在中断
引擎收到消息时,它会:
- 触发事件子流程。
- 取消封闭流程或子流程作用域。
- 停止该作用域内的所有活动路径。
当消息显示应停止当前执行的外部信号时,使用中断性消息开始事件。
真实示例:
- 客户在处理订单时将其取消。
- 调节器发送停止处理指令。
- 父系统发送终止命令。
非中断性
引擎收到消息时,它会:
- 触发事件子流程。
- 将封闭作用域保持在活动状态。
- 以并行方式运行事件子流程。
- 允许主流程继续执行。
当消息应在不中断主流程的情况下触发其他逻辑时,使用非中断性消息开始事件。
真实示例:
- 在继续进行接入流程时,客户更新详细联系信息。
- 合作伙伴系统发送其他元数据。
- 通知消息触发审核日志记录。