JeecgFlow补偿事件

事件定义

当一个流程操作完成后,其结果可能不合符预期,这时可以使用补偿机制对已经完成的操作流程进行补偿处理。
补偿事件主要用于触发补偿机制。

如需在线体验文章的案例演示,请访问JeecgFlow

边界事件

补偿边界事件可为所依附的流程活动附加补偿处理器,补偿处理器通过单项关联补偿边界事件。 补偿边界事件在流程活动
完成后根据实际情况出发,当补偿边界事件被触发时,执行它所连接的补偿处理器。
补偿边界事件必须通过直接引用设置唯一的补偿处理器

补偿边界事件与其他边界事件的行为策略不同,其他边界事件(如信号事件)在流程流转到所依附的活动时被激活,在流程活动结束时结束,
并且对应的事件订阅也会被取消,而补偿边界事件在所依附的活动结束后才被激活,并且创建相应的事件边界订阅,在补偿边界触发或对应流程
实例结束时,事件定于才会被删除。

补偿边界事件一般在两种情况下被触发:
1.由补偿中间抛出事件触发补偿边界事件。
2.事务子流程被取消,导致依附在事务子流程上的补偿边界事件被触发
补偿边界事件所产生的订阅数据(ACT\_RU\_EVENT\_SUBSCR)不会被删除(直到补偿边界事件触发或流程实例结束)。
因为即使流程活动完成了,所依附的补偿边界事件仍有可能被触发。

*   当补偿被触发时,所有已完成的活动所依附的补偿边界事件对应的补偿处理器将被吊用,如果补偿边界事件所依附的活动尚未产生历史任务,则不会被触发
*   如果补偿边界的活动完成N次,则补偿边界触发后,这些补偿边界的执行次数与活动完成次数想等。
*   如果补偿事件依附在多实例活动上,则会为每个实例创建补偿事件订阅,补偿边界事件被触发的次数与所所依附活动的循环多实例的成功完成次数想等。
*   如果流程实例结束,订阅的补偿事件都会结束
*   边界补偿事件不支持依附在内嵌的子流程中

中间抛出事件

补偿中间抛出事件用于触发补偿,当流程流转到补偿中间抛出事件时触发该流程已完成活动的边界补偿事件,
完成补偿操作后沿着中间抛出事件的外出顺序流继续流转。
::: warning
补偿中间抛出事件主要用于触发补偿,可用于指定活动或包含补偿事件的作用域触发补偿,通过执行与活动相关联的补偿
处理器来执行补偿。并遵循以下规则:

  • 针对某项活动进行补偿,则相关补偿处理器的执行次数与活动的完成次数想等。
  • 如果针对当前作用域进行补偿,则对当前作用域内的所有活动进行补偿,包括并行分支上的活动功。
  • 补偿是分级触发,如果补偿的活动是子流程,则为子流程中包含的所有活动触发补偿。如果自流程包含嵌套的活动,则补偿事件会递归的向下抛出,但
    补偿事件不会传播到比该流程高的层级,如果补偿在子流程触发,不会传播到子流程作用域外的活动上。
  • 触发补偿时,补偿的执行次序与流程的执行顺序相反,这意味着最后完成活动最新执行。以此类推。
  • 补偿中间抛出事件可以用于补偿已经完成的事务子流程
  • 当多实例活动抛出补偿时,只有当所有实例都结束了,相关的补偿处理器才会执行。这意味着多实例活动在被补偿前必须先结束。
  • 补偿不会传播给调用活动创建的子流程实例
    :::

演示案例

在这里插入图片描述

在用户任务节点,选择余额不足,得到上面补偿中间抛出事件的执行结果。点击Activiti演示站

在这里插入图片描述

在用户任务节点,选择资金充足,流程不会流转到补偿中间抛出事件。点击Activiti演示站

在这里插入图片描述

如果补偿被一个子流程的作用域触发,并且子流程包含带有补偿处理器的活动,则只有当子流程结束后,并且有补偿事件抛出时,
才会执行子流程中的补偿。如果子流程某些活动附加补偿处理器,但包含这些活动的子流程尚未结束,则补偿不会被执行。

上述案例"取消正式报名"服务任务的执行失效的情况:

  1. 银行卡支付失败,抛出补偿中间事件,但子流程尚未结束。
  2. 子流程“报名审核”用户任务在“取消报名”事件抛出之前完成,子流程已结束。

    “取消预报名”在以上两种情况均会被执行。
  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值