补偿抛出事件
====
定义
元素定义
中间触发补偿事件 可以用来触发补偿。
触发补偿: 补偿可以由特定节点或包含补偿事件的作用域触发。 补偿是通过分配给节点的补偿处理器来完成的。
- 当补偿由节点触发,对应的补偿处理器会根据节点成功完成的次数执行相同次数。
- 如果补偿由当前作用域触发,当前作用域的所有节点都会执行补偿, 也包含并发分支。
- 补偿的触发是继承式的:如果执行补偿的节点是子流程,补偿会作用到子流程中包含的所有节点。 如果子流程是内嵌节点,补偿会递归触发。 然而,补偿不会传播到流程的上层: 如果补偿在子流程中触发,不会传播到子流程范围外。 bpmn规范定义,由节点触发的流程只会作用到“子流程同一级别”。
- activiti的补偿执行次序与流程执行顺序相反。 以为着最后完成的节点会最先执行补偿,诸如此类。
- 中间触发补偿事件可以用来补偿成功完成的事务性子流程。
注意: 如果补偿被一个包含子流程的作用域触发,子流程还包含了关联补偿处理器的节点, 补偿只会传播到子流程,如果它已经成功完成了。 如果子流程中的节点也完成了,并关联了补偿处理器, 如果子流程包含的这些节点还没有完成,就不会执行补偿处理器。 参考下面实例:
图标说明
IDE无补偿抛出事件图标
使用说明
中间抛出信号事件触发信号开始事件
元素验证
验证用例
验证项目 | 用例描述 | 输入条件 | 期望结果 | 实际结果 | 结果 | |
---|---|---|---|---|---|---|
1 | 验证补偿抛出事件在流程中正常使用 | 通过测试流程,验证补偿抛出事件在流程中正常使用 | 未验证,IDE无补偿抛出事件 | |||
2 | ||||||
3 |