我有一个关于在bpmn2中抛出/捕捉/处理补偿事件的机制的问题。基于Travel Booking Example在bpmn2为例,我们有一些compensation intermediate throwing events,compensation boundary events和compensation handler。在这个图中,我将抛出和捕获补偿事件(与我对事件的了解)联系在一起:

这是正确的吗?补偿(预订)可以从结束的子进程(预订)之外抛出,并在其中激活compensation event sub-process (句柄补偿)吗?(绿色箭头)
发布于 2014-12-29 13:32:08
我的假设不是真的。基于activiti文件
补偿边界事件与其他边界事件具有不同的激活策略。其他边界事件,例如,当附加到的活动启动时,就会激活信号边界事件。当活动离开时,它们将被停用,相应的事件订阅将被取消。补偿边界事件不同。当附加到它的活动成功完成时,补偿边界事件被激活。此时,将创建补偿事件的相应订阅。当触发补偿事件或相应的流程实例结束时,订阅将被移除。从此,如下所示:
当触发补偿时,与补偿边界事件关联的补偿处理程序将以与其附加到的活动成功完成的次数相同的次数被调用。如果补偿边界事件附加到具有多个实例特征的活动,则为每个实例创建补偿事件订阅。如果将补偿边界事件附加到循环中包含的活动,则每次执行该活动时都会创建补偿事件订阅。如果流程实例结束,则取消对补偿事件的订阅。
子进程中的补偿事件处理程序是相同的。
因此,给定图形中红色和橙色箭头的目标应该是补偿任务:cancel flight和cancel hotel。
https://stackoverflow.com/questions/27676446
复制相似问题