JeecgFlow补偿事件

事件定义

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

补偿事件主要用于触发补偿机制。

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

边界事件

补偿边界事件可为所依附的流程活动附加补偿处理器,补偿处理器通过单项关联补偿边界事件。 补偿边界事件在流程活动

完成后根据实际情况出发,当补偿边界事件被触发时,执行它所连接的补偿处理器。
补偿边界事件必须通过直接引用设置唯一的补偿处理器

补偿边界事件与其他边界事件的行为策略不同,其他边界事件(如信号事件)在流程流转到所依附的活动时被激活,在流程活动结束时结束,

并且对应的事件订阅也会被取消,而补偿边界事件在所依附的活动结束后才被激活,并且创建相应的事件边界订阅,在补偿边界触发或对应流程

实例结束时,事件定于才会被删除。

复制代码
补偿边界事件一般在两种情况下被触发:
1.由补偿中间抛出事件触发补偿边界事件。
2.事务子流程被取消,导致依附在事务子流程上的补偿边界事件被触发

补偿边界事件所产生的订阅数据(ACT\_RU\_EVENT\_SUBSCR)不会被删除(直到补偿边界事件触发或流程实例结束)。
因为即使流程活动完成了,所依附的补偿边界事件仍有可能被触发。

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

中间抛出事件

补偿中间抛出事件用于触发补偿,当流程流转到补偿中间抛出事件时触发该流程已完成活动的边界补偿事件,

完成补偿操作后沿着中间抛出事件的外出顺序流继续流转。

::: warning

补偿中间抛出事件主要用于触发补偿,可用于指定活动或包含补偿事件的作用域触发补偿,通过执行与活动相关联的补偿

处理器来执行补偿。并遵循以下规则:

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

演示案例

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

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

如果补偿被一个子流程的作用域触发,并且子流程包含带有补偿处理器的活动,则只有当子流程结束后,并且有补偿事件抛出时,

才会执行子流程中的补偿。如果子流程某些活动附加补偿处理器,但包含这些活动的子流程尚未结束,则补偿不会被执行。

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

  1. 银行卡支付失败,抛出补偿中间事件,但子流程尚未结束。

  2. 子流程"报名审核"用户任务在"取消报名"事件抛出之前完成,子流程已结束。

    "取消预报名"在以上两种情况均会被执行。

相关推荐
TGITCIC18 小时前
LangChain入门(十五)- LangGraph为什么这么香,看它是如何逆天DIFY的
langchain·工作流·rag·ai agent·ai智能体·langgraph·agentic
spencer_tseng1 天前
activiti-engine-7.0.0.Beta2.jar org/activiti/db/create/*.sql
activiti
在线打码8 天前
禅道二次开发:项目月报整合Dify工作流实现AI智能分析
人工智能·ai·禅道·工作流·dify
风生u13 天前
bpmn 的理解和元素
java·开发语言·工作流·bpmn
闻道且行之14 天前
Dify开源平台部署与实战指南:企业级大模型工作流应用搭建
开源·nlp·工作流·dify
不正经绣才15 天前
【扣子Coze教程】160+音色,多种情感 | 0成本搭建智能体(专业AI配音师)
教程·工作流·智能体·coze·扣子·ai配音
小旺不正经17 天前
解锁n8n:工作流自动化的魔法工具
运维·自动化·工作流·n8n
不正经绣才17 天前
飞书多维表格工作流指南(AI日报小助手)
ai·飞书·教程·工作流·扣子
洛阳泰山18 天前
智能体项目MaxKB4J - 本地部署与开发完整指南
java·agent·工作流·rag·智能体·maxkb
特立独行的猫a21 天前
告别写作焦虑:用 n8n + AI 打造“输入即发布”的自驱动写作工作流
人工智能·工作流·n8n