BPMN中的"error"事件和"compensation"事件有什么区别?



我正在尝试使用BPMN对一些软件的部署过程进行建模。部署的各个部分都可能出错,我想在图中指出在每种情况下应该采取哪些步骤。

起初,我似乎应该使用"补偿"事件,但我最终使用了"错误"事件。我一直无法找到这两者之间的明确区别,但我能想到的最好的是,"错误"表示如果任务产生错误应该立即发生什么,而"补偿"表示如果稍后需要反转该过程,则需要发生什么。

我所见过的补偿的例子是像旅行社处理酒店预订这样的事情:取消预订的任务将是预订任务上的补偿事件。我没能找到许多合适的"错误"的例子:我是否正确使用"错误"在我的情况下?

加上下面的答案…

根据BPMN规范302页"补偿与撤销已经成功完成的步骤有关,因为它们的结果和可能的副作用不再是人们所希望的,需要逆转。"

错误有其文学意义和235页错误触发器是关键的,在抛出的位置暂停执行。

这是我所能想象的,但可能不是真的。

补偿允许您修复某些东西,以便流程仍然可以完成。取消是指放弃某个活动。错误是指流程失败,触发的活动没有修复流程。

旅行社示例:如果旅行社流程只是取消了,那么实时预订可能仍然存在(因为它没有被撤消),因此需要补偿活动。如果旅行社未能正确预订房间,则需要错误处理步骤向旅行社提供通知,但系统不会立即激活补偿。
这将取决于旅行社处理补偿活动。

披萨订单示例:如果通过电话或互联网订购的披萨被放弃(取消),则不需要任何补偿活动。如果支付系统出现故障(错误),则需要通知用户,不会自动产生补偿。补偿将允许作出其他安排,如其他卡或货到付款或标签。

因此,如果流程未能在标准路径上完成,则可能需要错误或补偿。如果调用了这个替代路径,但是不需要进一步的工作(补偿活动),那么就会产生一个错误。取消不需要另择路径。

最新更新