BPMN 2中边界事件后连接链接抛出事件是否合规?
BPMN 2中边界事件直接/间接连接链接抛出事件是否合规?
根据BPMN 2.0规范,这种用法不合规,以下是基于规范的具体分析:
1. 边界事件流出的是exception flow
依据BPMN 2.0.2规范第268页10.5.6节《事件处理》:
中断型边界事件由其cancelActivity属性设为true定义。事件触发时,关联活动终止,生成下游令牌激活流程的下一个元素,连接事件的无条件顺序流称为exception flow。
无论边界事件的类型(错误、超时等),从它流出的顺序流都属于exception flow。并且在该流与normal flow汇合前,其exception flow的属性会持续保留——也就是说,边界事件之后到链接抛出事件的流依然属于exception flow范畴。
2. 链接事件仅允许用于normal flow
BPMN规范第252页10.5.4节《中间事件》明确规定:
链接中间事件仅在normal flow中有效,即不得用于活动边界。
虽然注释里的i.e.部分看起来只禁止将链接事件用作边界事件,但前文的核心限制是流类型——链接事件必须处于normal flow中,而边界事件流出的exception flow不符合这个要求,因此这样的BPMN图是不合规的。
关于你的两点疑问
- 限制看似不合理:链接事件的设计定位是可视化流程连接器,用于简化跨子流程、跨池的正常流程跳转。规范限制其仅用于
normal flow,是为了明确区分异常流的处理逻辑(异常流通常由错误、补偿等专用事件处理),避免流程语义模糊,让流程图的可读性和规范性更强。 - 建模工具未报错且可执行:Camunda、jBPM等工具的验证规则并非100%覆盖BPMN规范的所有细节,部分工具会优先保证流程的可执行性,而非强制严格合规。这就导致了“可执行但不合规”的情况。
结论
你的理解是正确的:链接事件仅能用于normal flow中。如果需要将非BPMN流程转换为合规的BPMN流程,建议调整异常流的处理逻辑——比如用直接顺序流替代链接事件,或者通过中间捕获事件来衔接异常流的后续逻辑,确保符合规范的同时保留原执行语义。
内容的提问来源于stack exchange,提问作者blutorange
相关产品推荐
相关产品推荐

