Workflow bpmn2中的补偿

Workflow bpmn2中的补偿,workflow,bpmn,Workflow,Bpmn,我对bpmn2中投掷/捕捉/处理补偿事件的机制有疑问。 基于中的旅行预订示例,我们有一些补偿中间抛出事件,补偿边界事件和一个补偿处理程序。我在这个图中连接了投掷和捕捉补偿事件(根据我对事件的了解): 对吗?补偿(预订)是否可以从结束的子流程(预订)外部抛出,并在其内部激活补偿事件子流程(处理补偿)?(绿色箭头)我的假设是不正确的。基于: 补偿边界事件具有与其他边界事件不同的激活策略。其他边界事件(例如,信号边界事件)在它们所连接的活动启动时被激活。离开活动后,将停用这些活动并取消相应的事件订阅

我对bpmn2中投掷/捕捉/处理补偿事件的机制有疑问。 基于中的
旅行预订示例
,我们有一些
补偿中间抛出事件
补偿边界事件
和一个
补偿处理程序
。我在这个图中连接了投掷和捕捉补偿事件(根据我对事件的了解):


对吗?补偿(预订)是否可以从结束的子流程(预订)外部抛出,并在其内部激活
补偿事件子流程
(处理补偿)?(绿色箭头)

我的假设是不正确的。基于:

补偿边界事件具有与其他边界事件不同的激活策略。其他边界事件(例如,信号边界事件)在它们所连接的活动启动时被激活。离开活动后,将停用这些活动并取消相应的事件订阅。补偿边界事件不同补偿边界事件在其所连接的活动成功完成时激活。此时,将创建补偿事件的相应订阅。在触发补偿事件或相应的流程实例结束时,订阅将被删除。因此,订阅如下:

触发补偿时,与补偿边界事件关联的补偿处理程序被调用的次数与其所附加到的活动成功完成的次数相同。 如果补偿边界事件附加到具有多个实例特征的活动,则会为每个实例创建补偿事件订阅。 如果补偿边界事件附加到包含在循环中的活动,则每次执行该活动时都会创建补偿事件订阅。 如果流程实例结束,则取消对补偿事件的订阅

子流程中的补偿事件处理程序是相同的

因此,给定图中红色和橙色箭头的目标应该是补偿任务:
取消航班
取消酒店