Camunda 工作流节点跳转 - 多实例节点判断和跳转
在多种工作流引擎中,Camunda框架对流程的处理控制更为强大、灵活。
在应对流程节点按业务需要进行自由跨节点跳转的需求时,通过代码自由控制节点的跳转在Camunda中是支持的,并且提供了编码方法,其中多实例的处理上有一些区别要特别注意:
1、单实例节点,或者不是基于集合配置的多实例节点。
2、多实例 userTask
节点,在 <multiInstanceLoopCharacteristics ...>
中通过配置 collection
和 elementVariable
为 userTask
提供 assignee
变量引用的。
其中第1点,跳转节点的主要代码片段如下:
ProcessInstance processInstance = ...;
runtimeService.createProcessInstanceModification(processInstance.getId()).cancelAllForActivity("Activity_8dsxc8ds") // 取消当前节点所有活动中的Task任务(可选使用).startBeforeActivity("Activity_0qsw8c1") // 目标节点Id,在流程图中看,固定值(一般起一个正规的名字).setVariable("带入所需变量key", "变量值Object类型").execute();
如果多实例活动是基于集合配置的,则执行 startBeforeActivity
指令时不会考虑集合,并且不会为附加实例填充集合元素变量,针对这种情况,需要使用下面的处理方法。
第2点,基于集合的多实例跳转节点的跳转时,需要在节点Id后追加特定字符串 #multiInstanceBody
,示例如下:
ProcessInstance processInstance = ...;
runtimeService.createProcessInstanceModification(processInstance.getId()).cancelAllForActivity("Activity_8dsxc8ds").startBeforeActivity("Activity_0qsw8c1#multiInstanceBody") // 目标节点是多实例节点,节点Id后面必须增加后缀 #multiInstanceBody.setVariable("带入所需变量key", "变量值Object类型").execute();
注:对于目标节点是多实例的节点,如果不在节点Id后面追加框架约定的字符串
#multiInstanceBody
,则不能自动执行触发多实例节点配置的<multiInstanceLoopCharacteristics .... >
中的集合变量处理。
对于如何判断一个节点是多实例节点,可以参考使用下面我写好的一个判断方法:
/*** 判断一个节点是否为多实例节点* * @param repositoryService 可以注入Camunda对象直接使用* @param processDefinitionId 流程定义Id* @param activityId 节点Id* @return 是否多实例节点*/public boolean isMultiInstanceActivity(RepositoryService repositoryService, String processDefinitionId, String activityId){boolean isMultiInstanceActivity = false;BpmnModelInstance bpmnModelInstance = repositoryService.getBpmnModelInstance(processDefinitionId);Optional<Process> processOptional =bpmnModelInstance.getModelElementsByType(Process.class).stream().filter(p -> p.getId().equals(processDefinitionId)).findFirst();if(processOptional.isPresent()){Process process = processOptional.get();Optional<FlowElement> activityOptional = process.getFlowElements().stream().filter(flowElement -> flowElement.getId().equals(activityId)).findFirst();if(activityOptional.isPresent()){isMultiInstanceActivity =CollectionUtils.isEmpty(activityOptional.get().getChildElementsByType(MultiInstanceLoopCharacteristics.class));}}return isMultiInstanceActivity;}
官方参考文档:https://docs.camunda.org/manual/7.19/user-guide/process-engine/process-instance-modification/#modify-multi-instance-activity-instances
(END)
相关文章:
Camunda 工作流节点跳转 - 多实例节点判断和跳转
在多种工作流引擎中,Camunda框架对流程的处理控制更为强大、灵活。 在应对流程节点按业务需要进行自由跨节点跳转的需求时,通过代码自由控制节点的跳转在Camunda中是支持的,并且提供了编码方法,其中多实例的处理上有一些区别要特…...
MySQL不停重启问题
MySQL不停的自动杀掉自动重启 看一下log日志 my.cnf 里配置的 log_error /var/log/mysqld.log vim /var/log/mysqld.log 报的错误只是 [ERROR] Cant start server: Bind on TCP/IP port: Address already in use [ERROR] Do you already have another mysqld server …...
ol-cesium 暴露 Cesium viewer 对象以及二三维切换、viewer 添加点功能示例
ol-cesium 暴露 Cesium viewer 对象以及二三维切换、viewer 添加点功能示例 核心代码完整代码在线示例 二三维一体化的概念一直都比较火热,虽然大多数都是狭义的概念,但是很多需求方也想要这样的功能。 Openlayers 官方出了一个二三维一体化的工具&…...
国产化-达梦数据库安装2
目录 DM8数据库下载地址 安装一路狂飙next 启动服务 随着国家政府的推广、越来越多的政府项目、在系统部署需要采购国产服务器、数据库等 DM8数据库下载地址 https://eco.dameng.com/download/ 安装一路狂飙next windos安装比较简单直接next即可 仅仅记录几个关键疑问地方k…...
延长OLED透明屏的使用寿命:关键因素与有效方法分享
OLED透明屏作为一项创新的显示技术,具备透明度和高清晰度的特点,在各个领域得到了广泛应用。 然而,为了确保OLED透明屏的持久性和稳定性,延长其使用寿命是至关重要的。根据最新的研究和数据报告, 在这篇文章中&#…...
域名是指哪一部分?
域名是指互联网中用于识别和定位网站的地址。它是由多个部分组成的,每个部分都具有特定的含义和功能。下面是有关域名各个部分的解释。 顶级域名(Top-Level Domain,TLD): 顶级域名是域名的最高级别部分,通常…...
MPP 还是主流架构吗
MPP 架构: MPP 架构的产品: Impala ClickHouse Druid Doris 很多 OLAP 引擎都采用了 MPP 架构 批处理系统 - 使用场景分钟级、小时级以上的任务,目前很多大型互联网公司都大规模运行这样的系统,稳定可靠,低成本。…...
ubuntu查看网速
使用speedomster测试网速 sudo apt-get install speedometer 查询需要测速的网卡 speedometer -r ens33 -t ens33 -r: 指定网卡的接收速度 -t: 指定网卡的发送速度 使用nload测试 sudo apt-get install nload 测速 nload -t 200 -i 1024 -o 128 -U M 参数含义࿰…...
【官方中文文档】Mybatis-Spring #使用 MyBatis API
使用 MyBatis API 使用 MyBatis-Spring,你可以继续直接使用 MyBatis 的 API。只需简单地使用 SqlSessionFactoryBean 在 Spring 中创建一个 SqlSessionFactory,然后按你的方式在代码中使用工厂即可。 public class UserDaoImpl implements UserDao {//…...
go gorm belong to也就是多对一的情况
多位员工属于同一个公司,一个公司包含多个人,关系放在多的那一部分 belongs to 会与另一个模型建立了一对一的连接。 这种模型的每一个实例都“属于”另一个模型的一个实例。 例如,您的应用包含 user 和 company,并且每个 user 能…...
亚马逊云科技 云技能孵化营——机器学习心得
亚马逊云科技 云技能孵化营机器学习心得 前言什么是机器学习?机器学习如何解决业务问题?什么时候适合使用机器学习模型?总结 前言 很荣幸参加了本次亚马逊云科技云技能孵化营,再本期的《亚马逊云科技云技能孵化营》中,…...
Django实现音乐网站 ⒀
使用Python Django框架制作一个音乐网站, 本篇主要是推荐页-推荐排行榜、推荐歌手功能开发。 目录 推荐页开发 推荐排行榜 单曲表增加播放量 表模型增加播放量字段 执行表操作 模板中显示外键对应值 表模型外键设置 获取外键对应模型值 推荐排行榜视图 推…...
PySide6学习笔记--基础环境的安装配置
PySide6介绍 QT官方发布Qt6.0之后,紧接着于2020年12月10日发布了PySide 6,对应C版的Qt6。从PySide6开始,PySide的命名也会与Qt的大版本号保持一致。需要注意的是使用PySide6开发的程序在默认情况下,不兼容Windows7系统,…...
算法通关村第九关——中序遍历与搜索树
1 中序遍历和搜索树原理 二叉搜索树按照中序遍历正好是一个递增序列。其比较规范的定义是: 若它的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不为空,则右子树所有节点的值均大于它的根节点的值&…...
测试框架pytest教程(5)运行失败用例-rerun failed tests
# content of test_50.py import pytestpytest.mark.parametrize("i", range(50)) def test_num(i):if i in (17, 25):pytest.fail("bad luck") 运行这个文件,2个失败,48个通过。 要运行上次失败的测试用例,可以使用--l…...
【车载开发系列】UDS当中的时间参数
【车载开发系列】UDS当中的时间参数 UDS当中的时间参数 【车载开发系列】UDS当中的时间参数一. 术语定义二. 网络层时间调整参数三. ECU诊断层与会话层参数 一. 术语定义 缩写全称中文说明BSBlock Size块大小STminSeparation time min时间间隙SIService Identifier服务标识符S…...
PDF中的表格怎么转换为Excel?这两个工具一定得收藏!
PDF是一种常见的文件格式,它可以保持文件的原始样式和内容,但是也有一些缺点,比如不易编辑和处理数据。如果你想要将PDF中的表格或数据导出到Excel中,以便进行分析、计算或制作图表,那么你可能需要一个专业的PDF转Exce…...
ssh scp sshpass
ssh命令用于远程连接主机 ssh usernamehostname更多用法参考: ssh常用用法 scp 命令是用于通过 SSH 协议安全地将文件复制到远程系统和从远程系统复制文件到本地的命令 比如: scp /data/log/a.txt root192.168.1.100:/data/log该命令就就将本地的a.t…...
leetcode 1996. 游戏中弱角色的数量(排序的魅力)
题目 题意: 给定n个人的攻击力和防御力,对于一个人来说,如果存在某个人的攻击力和防御力都比他高,那么称这个人为弱角色。统计弱角色的数量 思路: 排序,攻击力按从大到小排序,这样遍历的时候某个数时前边的攻击力都比他…...
从头到尾说一次 Spring 事务管理(器) | 京东云技术团队
事务管理,一个被说烂的也被看烂的话题,还是八股文中的基础股之一。 本文会从设计角度,一步步的剖析 Spring 事务管理的设计思路(都会设计事务管理器了,还能玩不转?) 为什么需要事务管理&…...
php 系列题目,包含查看后端源代码
一、弱类型比较问题 原则: 1.字符串和数字比较,字符串回被转换成数字。 "admin" 0(true) admin被转换成数字,由于admin是字符串,转换失败,变成0 int(admin)0,所以比较结果是ture 2.混合字符串转…...
令牌桶C语言代码实现
令牌桶实例 令牌桶三要素 cps 每秒钟传输字节数 burst 令牌桶内最多能传输的字节数,token的最大值 token 令牌的个数 之前是一个令牌(token)对应一个字节,现在将一个token变为一个cps,cps是解码速率,每攒到一个令牌ÿ…...
Mybatis 建立依赖失败:报错Dependency ‘mysql:mysql-connector-java:8.0.28‘ not found
Mybatis 建立依赖失败:报错Dependency ‘mysql:mysql-connector-java:8.0.28’ not found 解决办法: 写完依赖代码,直接重构,下载依赖。 图片: ![Alt](https://img-home.csdnimg.cn/images/20220524100510.png Mac 版本注意Ide…...
多线程+隧道代理:提升爬虫速度
在进行大规模数据爬取时,爬虫速度往往是一个关键问题。本文将介绍一个提升爬虫速度的秘密武器:多线程隧道代理。通过合理地利用多线程技术和使用隧道代理,我们可以显著提高爬虫的效率和稳定性。本文将为你提供详细的解决方案和实际操作价值&a…...
使用@Configuration和@Bean给spring容器中注入组件
Confguration->告诉spring这是一个配置类 以前我们是使用配置文件来注册bean的,现如今可以用Configuration 来代替配置文件。 //配置配配置文件 Configuration // 告诉Spring这是一个配置类,等同于以前的配置文件 public class MainConfig {// Bean注解是给IOC…...
信号波形解读
can波形解读 实际波形 标准帧 发送数据 仲裁段 0x1AA 数据长度为8字节 内容为:0x41, 0x20, 0x38, 0x41, 0x00, 0x16, 0x00, 0x00 波特率 111K...
Centos 解决 XXX不在 sudoers 文件中。此事将被报告。的错误
本来想使用 sudo 拷贝一个文件,结果出现上面的问题! 下面是解决方法: 首先登录root,然后执行下面的命令 vim /etc/sudoers 将你需要添加的用户带红色框线的地方,模仿root写一遍,然后保存! …...
雪花算法和uuid的区别
雪花算法(Snowflake Algorithm)和 UUID(Universally Unique Identifier)都是用于生成唯一标识符的方法,但它们在实现和适用场景上存在一些区别。 雪花算法: 雪花算法是Twitter开发的一种分布式ID生成算法…...
docker之DockerFile与网络
目录 DockerFile 构建步骤 基础知识 指令 实战:构建自己的centos 第一步:编写dockerfile文件 第二步:构建镜像文件 docker网络 原理 功能 网络模式 host模式 container模式 none模式 bridge模式 DockerFile dockerfile 是用来…...
知识蒸馏开山之作(部分解读)—Distilling the Knowledge in a Neural Network
1、蒸馏温度T 正常的模型学习到的就是在正确的类别上得到最大的概率,但是不正确的分类上也会得到一些概率尽管有时这些概率很小,但是在这些不正确的分类中,有一些分类的可能性仍然是其他类别的很多倍。但是对这些非正确类别的预测概率也能反…...
shopify做全品类网站/百度快照官网
5月12日,英国、意大利、俄罗斯等多个国家爆发勒索病毒攻击,国内校园网也出现大面积感染。 这并不是勒索病毒首次发威。近几年来,勒索病毒已经多次出现爆发的情况。黑客利用Windows漏洞传播病毒后,感染病毒的计算机会将用户的文件加…...
网站建设后怎么/站长工具之家seo查询
移动科技平台Usablenet的最新数据显示:在网站中加入互动元素可极大提高网站流量。如果零售商在平台中采用具有HTML 5特性,比如互动画册,地理位置服务,可浮动可扩展的模块,其网站浏览量可提高11%,跳出率下降…...
老网站301跳转新网站/营销网络的建设怎么写
我们所有的数据一般都放在Mysql的data目录下 注意这里的端口写的是主机映射到mysql下的端口,而不是3306...
西安商城类网站制作/百度投诉中心24人工客服
别问别人为什么,多问自己凭什么 乐观的人只顾着微笑,而忘了怨; 悲观的人只顾着怨,而忘记笑; 真正的美丽,不是青春的容颜,而是绽放的心灵; 你能帮多少人 就有多少人来帮你 十年前你是…...
wordpress中国/汕头网站关键词推广
1.注释注释是为了解释某些代码所加的文字,类似批注,提高程序可读性。编译时,编译器直接跳过,不会 变成字节码文件。单行注释:以"//"开头,这一行"//"后面均为注释,换行即结束…...
阿里云 做网站 百度开放云/百度指数免费查询
为大家分享一款专业的音乐标签及管理工具,Yate for mac主要用于标记和整理你的音频文件,你可以轻松编辑音乐文件的元标签数据,Yate for mac支持AIFF、DFF、FLAC、M4A、M4B、MP3、MP4等格式的音频文件,不管是自动还是手动标记文件都…...