BPMN中“错误”和“补偿”事件的区别是什么?

5
我正在尝试使用BPMN来建模一些软件的部署流程。部署的各个环节都可能出现问题,我希望在图中指示每种情况下应该采取哪些步骤。
起初,似乎我应该使用"补偿"事件来处理这个问题,但最终我选择了"错误"事件。我无法找到清晰的区别,但最好的解释是"错误"表示任务生成错误后立即应该发生什么,而"补偿"表示如果在以后的某个时候需要还原过程,则需要发生什么。
我看到的补偿示例是旅行社预订酒店:取消预订任务将成为预订任务的补偿事件。我没有找到很多适当的"错误"示例:在我的情况下使用"错误"是否正确?
2个回答

6

除了以下的回答之外...

根据 BPMN规范 第302页 "补偿涉及撤消已成功完成的步骤,因为它们的结果和可能的副作用不再需要并需要被撤销。"

错误在其文学意义上, 第235页 "错误触发器是关键的,并且在抛出位置挂起执行。


4

据我所知,但可能不准确。

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

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

比萨订单示例: 如果通过电话或互联网下的披萨订单被放弃(取消),则不需要补偿活动。 如果支付系统崩溃(错误),则需要通知用户,但不会自动产生补偿。 补偿将允许制定替代安排,例如其他卡或货到付款或一个标签。

因此,如果进程无法在标准路径上完成,则可能需要错误或补偿。如果调用了此备用路径,但不需要进一步的工作(补偿活动),则会出现错误。取消通常不需要备用路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接