我正在尝试使用BPMN为某些软件的部署过程建模。部署的各个部分可能出错,我想在图中指出在每种情况下应该采取哪些步骤。
起初,似乎我应该为此使用“补偿”事件,但我最终使用了“错误”事件。我一直无法在这两者之间找到明确的区别,但我提出的最好的是“错误”表示如果任务产生错误会立即发生什么,而“补偿”则表明如果,有时候需要发生什么之后,这个过程需要逆转。
我所看到的补偿的例子是旅行社接受酒店预订的事情:取消预订的任务将是预订任务的补偿事件。我无法找到许多适当的“错误”示例:在我的案例中使用“错误”是否正确?
答案 0 :(得分:5)
添加以下答案......
截至 BPMN specification 第302页 “补偿涉及撤销已经成功完成的步骤,因为他们的结果和可能的副作用已经不再需要,需要逆转。”
错误拥有其文学意义和 第235页 “错误触发器至关重要,并在抛出位置暂停执行。
答案 1 :(得分:3)
我能想到的最好,但可能不是真的。
补偿允许您修复某些内容,以便该过程仍然可以完成。 取消是指放弃活动的时间。 错误是指进程失败并且触发了不能修复进程的活动。
旅行社示例:
如果旅行社流程被取消,则可能仍然存在实时预订(因为它尚未撤消),因此需要进行补偿活动。
如果旅行社未能正确预订房间,则需要进行错误处理步骤以向旅行社提供通知,但系统不会立即激活补偿。
由旅行社负责处理补偿活动。
比萨订单示例: 如果通过电话或互联网的披萨订单被放弃(取消),则不需要补偿活动。 如果支付系统出现故障(错误),则需要通知用户,不会自动产生补偿。 补偿将允许进行替代安排,如其他卡或COD或标签。
因此,如果某个流程无法在标准路径上完成,则可能需要进行错误或补偿。如果调用此备用路径,但不需要进一步的工作(补偿活动),则会发生错误。取消通常不需要备用路径。