Flowable-边界事件-补偿边界事件

目录

      • 定义
      • 图形标记
      • XML内容
      • 使用示例
      • 演示demo

定义

补偿边界事件可以为所依附的节点附加补偿处理器,通过关联连接到补偿处理器(compensation
handler)。补偿边界事件会在流程活动完成后根据情况(事务取消或者补偿中间事件触发)而触发,
当补偿边界事件触发时,执行它连接的补偿处理器。

补偿边界事件必须直接引用一个相关的补偿处理器。如果要使用一个活动补偿另一个活动的影
响,可以将其声明为补偿处理器(compensation handler)。补偿执行是通过活动附加的补偿边界事
件所关联的补偿处理器的 execution 来完成的。

图形标记

补偿边界事件显示为了一个普通的中间事件(内部有小圈的圆),里面有补偿图标。补偿图标
是白色的(无填充),表明是捕获语义。取消边界事件图标如下图所示,图中还显示了使用无
方向的关联,为边界事件设置补偿处理器:

在这里插入图片描述

XML内容

补偿边界事件的 XML 内容是普通边界事件的声明,包含一个 compensateEventDefinition 子元
素:

 <process id="compensateBoundaryEventProcess"><userTask id="usertask1" name="审批"></userTask><!-- 定义边界补偿--><boundaryEvent id="compensateBoundaryEvent1" name="Compensate" attachedToRef="usertask1"> <compensateEventDefinition></boundaryEvent><!--  定义补偿处理器 --><serviceTask id="serviceTask1" name="CompensationHandler" isForCompensation="true"flowable:class="**.**.**.****"></serviceTask><!-- 定义关联 --><association id="association1" sourceRef="compensateBoundaryEvent1" targetRef="serviceTask1" associationDirection="None"/></process>

注意,附加的补偿事件通过关联连接到补偿处理器,而不是通过序列流连接到补偿处理器。

使用示例

补偿边界事件与其它边界事件的行为策略不同,其它边界事件(比如信号边界事件)在其附加
活动到达时即被激活,当活动结束时,它也结束了,并且对应的事件订阅也会被取消。而补偿边界
事件与它们不同,补偿边界事件在附加活动成功完成后才激活,并创建相应的边界事件订阅。当补
偿边界事件触发或对应流程实例结束时,事件订阅才会删除。

在 Flowable 中,当执行流到达附加边界事件的活动时,会往 ACT_RU_EVENT_SUBSCR 表入事
件描述数据,边界事件所依附的活动完成后,这些事件描述数据会被删除,但是补偿边界事件所产
生的事件描述数据不会被删除(直到流程实例结束),因为即使活动完成后,这些补偿事件都有可
能被触发。

1、补偿边界事件使用时遵循以下规则:

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

2、补偿边界事件关联的补偿处理器需要注意以下几点:

  • 补偿处理器不得有入口或出口顺序流。
  • 补偿处理器必须通过单向的关联,连接到一个补偿边界事件。
  • 要将一个活动声明为补偿处理器,需要将 isForCompensation 属性设置为 true,如。
    ⑷补偿处理器不在正常流程中执行,而只在流程抛出补偿事件时才会执行。

::: warning 注意
1、事务子流程被取消时,导致依附在事务子流程中的活动上的补偿边界事件触发。这种方式的示例请查看子流程中的事务子流程部分。
2、使用补偿中间事件来触发,导致补偿边界事件触发。这种方式的示例请查看本章补偿中间事件部分。
:::

演示demo

补偿边界事件

本文中内容和案例出自贺波老师的书《深入Activiti流程引擎:核心原理与高阶实战》,书中的介绍更全面、详细,推荐给大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/87820.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle积累增量和差异增量

积累增量和差异增量&#xff1a; 对于 RMAN 来说&#xff0c;积累增量备份和差异增量备份都是增量备份的一种形式&#xff0c;它们之间的区别在于备份的范围和备份集的方式。 积累增量备份&#xff1a;在进行积累增量备份时&#xff0c;RMAN 会备份自最后一次完全备份或增量备…

【Windows 常用工具系列 5 -- Selenium IDE的使用方法 】

文章目录 Selenium 介绍Selenium IDE 介绍 Selenium IDE安装Chrome 浏览器安装Selenium IDE使用 Selenium 介绍 Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。 Selenium家庭成员有三个&#xff0c;分别是S…

2023年即将推出的CSS特性对你影响大不大?

Google开发者大会每年都会提出有关于 Web UI 和 CSS 方面的新特性&#xff0c;今年又上新了许多新功能&#xff0c;今天就从中找出了影响最大的几个功能给大家介绍一下 :has :has() 可以通过检查父元素是否包含特定子元素或这些子元素是否处于特定状态来改变样式&#xff0c;也…

了解 Langchain️是个啥?:第 1 部分

一、说明 在日常生活中&#xff0c;我们主要致力于构建端到端的应用程序。我们可以使用许多自动 ML 平台和 CI/CD 管道来自动化 ml 管道。我们还有像Roboflow和Andrew N.G.的登陆AI这样的工具来自动化或创建端到端的计算机视觉应用程序。 如果我们想在OpenAI或拥抱脸的帮助下创…

毕业来北京要做的1000件事,第四十六,进行风险管理做B计划

风险管理就是指在项目进行过程中&#xff0c;识别可能的风险&#xff0c;对风险进行评估&#xff0c;并加以监控&#xff0c;从而减少风险对项目的负面影响。 对于风险管理&#xff0c;现在软件项目中提起的不多&#xff0c;应用的更少。主要原因还在于大家都比较乐观&#xf…

Redis原理简述

Redis原理简述 Redis 有哪些特性 1. 特性 key-value 型内存数据库单线程——原子化操作支持lua脚本发布与订阅可持久化逐出与过期……2. 持久化 RDB:经过压缩的二进制文件;fork子进程进行操作AOF:保存所有写命令;先写缓存再同步至AOF文件;文件过大时会触发AOF重写3. 过期…

QGIS3.28的二次开发八:显示shp的属性表

这里实现两个基本的 GIS 软件需求&#xff1a;矢量图层的属性表显示&#xff0c;以及根据属性筛选要素。 具体需求如下&#xff1a; 加载一个矢量图层并打开其属性表&#xff1b;输入筛选条件确认无误后&#xff0c;画布上和属性表中均只显示筛选后的要素。 QGIS 提供了若干…

山景DSP芯片可烧录AP8224C2音频处理器方案

AP8224C2高性能32位音频应用处理器AP82系列音频处理器是面向音频应用领域设计的新一代SoC平台产品&#xff0c;适用于传统音响系统、新兴的蓝牙或Wifi 无线音频产品、Sound Bar 和调音台等市场。该处理器在总体架构和系统组成上&#xff0c;充分考虑了音频领域的特点&#xff0…

STM32 CubeMX (uart_IAP串口)简单示例

STM32 CubeMX STM32 CubeMX &#xff08;串口IAP&#xff09; STM32 CubeMXIAP有什么用&#xff1f;整体思路 一、STM32 CubeMX 设置时钟树UART使能UART初始化设置 二、代码部分文件移植![在这里插入图片描述](https://img-blog.csdnimg.cn/0c4841d8328b4169a8833f15fe3d670c.p…

python num循环怎么从1开始

如何实现python for循环从1开始&#xff1f; range()函数的作用和用法&#xff1a; 编写一个从数值1开始的循环&#xff1a; 执行后得到的结果 其他注意事项

JavaWeb-Servlet服务连接器(三)

目录 Response响应对象 1.基本功能 2.重定向 3.路径 4.服务器输出数据到浏览器 Response响应对象 1.基本功能 设置响应行&#xff1a;格式为 HTTP/1.1 200 OK&#xff0c;可以使用 setStatus(int sc) 方法设置状态码为 200 表示成功。 方法名称描述setStatus(int sc)设…

STM32定时器级联功能

参考&#xff1a;官方文档《stm32f4xx参考手册.pdf》 级联功能&#xff0c;可以把两个定时器的功能关联起来&#xff0c;具体有以下几种&#xff1a; 本文只讲其中一个功能&#xff0c;定时器1给定时器2当分频器。这种功能可以把两个32位定时器&#xff0c;合并为为一个64位定…

tampermonky插件安装

换了电脑&#xff0c;今天重新下载了tampermonky&#xff0c;哎&#xff0c;被自己气死的一上午。wwwww&#xff0c;最后发现最大的问题就是没有问题。 Edge能不用下载直接安装&#xff0c;但是何少 下载tampermonky&#xff0c;在谷歌程序扩展-chrome://extensions/ 添加解压…

GPT-4助力数据分析:提升效率与洞察力的未来关键技术 | 京东云技术团队

摘要 随着大数据时代的到来&#xff0c;数据分析已经成为企业和组织的核心竞争力。然而&#xff0c;传统的数据分析方法往往无法满足日益增长的数据分析需求的数量和复杂性。在这种背景下&#xff0c;ChatGPT-4作为一种先进的自然语言处理技术&#xff0c;为数据分析带来了革命…

CCLINK IE转MODBUS-TCP网关modbus tcp协议详解

你是否曾经遇到过需要同时处理CCLINK IE FIELD BASIC和MODBUS两种数据协议的情况&#xff1f;捷米的JM-CCLKIE-TCP网关可以帮助你解决这个问题。 捷米JM-CCLKIE-TCP网关可以分别从CCLINK IE FIELD BASIC一侧和MODBUS一侧读写数据&#xff0c;然后将数据存入各自的缓冲区。接着…

计算机网络 ARP协议 IP地址简述

ARP只能在一个链路或一段网络上使用

gitee linux免密/SSH 方式连接免登录

目录 生成SSH公钥通过 ssh-keygen 程序创建找到SSH公钥 在gitee中添加公钥参考 生成SSH公钥 通过 ssh-keygen 程序创建 shell> ssh-keygen -t rsa -C "xxxxxx.com" Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/i…

【CSS学习笔记】

学习内容 1.css是什么 2.CSS怎么用&#xff08;快速入门&#xff09; 3.CSS选择器&#xff08;重点 难点&#xff09; 4.美化页面&#xff08;文字、阴影、超链接、列表、渐变…&#xff09; 5.盒子模型 6.浮动 7.定位 8.网页动画&#xff08;特效&#xff09; 1.什么是CSS C…

Spring中的AOP

Spring中的AOP 一.Spring AOP的概念 1.AOP的概述 AOP的全称是Aspect Oriented Programming&#xff0c;即面向切面编程。是通过预编译方式和运行期间动态代理&#xff0c;实现程序功能的统一维护的一种技术。AOP是OOP面向对象编程的一种延续。 使用OOP编程时&#xff0c;虽然…

力扣 377. 组合总和 Ⅳ

题目来源&#xff1a;https://leetcode.cn/problems/combination-sum-iv/description/ C题解&#xff08;来源代码随想录&#xff09;&#xff1a; 本题求的是排列总和&#xff0c;而且仅仅是求排列总和的个数&#xff0c;并不是把所有的排列都列出来。动规五部曲分析如下&…