补偿抛出事件

====

定义

元素定义

中间触发补偿事件 可以用来触发补偿。

触发补偿: 补偿可以由特定节点或包含补偿事件的作用域触发。 补偿是通过分配给节点的补偿处理器来完成的。

  • 当补偿由节点触发,对应的补偿处理器会根据节点成功完成的次数执行相同次数。
  • 如果补偿由当前作用域触发,当前作用域的所有节点都会执行补偿, 也包含并发分支。
  • 补偿的触发是继承式的:如果执行补偿的节点是子流程,补偿会作用到子流程中包含的所有节点。 如果子流程是内嵌节点,补偿会递归触发。 然而,补偿不会传播到流程的上层: 如果补偿在子流程中触发,不会传播到子流程范围外。 bpmn规范定义,由节点触发的流程只会作用到“子流程同一级别”。
  • activiti的补偿执行次序与流程执行顺序相反。 以为着最后完成的节点会最先执行补偿,诸如此类。
  • 中间触发补偿事件可以用来补偿成功完成的事务性子流程。 注意: 如果补偿被一个包含子流程的作用域触发,子流程还包含了关联补偿处理器的节点, 补偿只会传播到子流程,如果它已经成功完成了。 如果子流程中的节点也完成了,并关联了补偿处理器, 如果子流程包含的这些节点还没有完成,就不会执行补偿处理器。 参考下面实例:

    图标说明

IDE无补偿抛出事件图标

使用说明

中间抛出信号事件触发信号开始事件

元素验证

验证用例

验证项目 用例描述 输入条件 期望结果 实际结果 结果
1 验证补偿抛出事件在流程中正常使用 通过测试流程,验证补偿抛出事件在流程中正常使用 未验证,IDE无补偿抛出事件
2
3

验证流程

用例1