当前位置: 首页 > news >正文

activiti7审批驳回,控制变量无法覆盖,导致无限循环驳回,流程无法结束

项目开发过程中使用工作流,因此考虑使用activiti7做完工作流引擎。项目开发过程中,发现流程驳回时,再次执行流程,控制变量无法覆盖,导致无限循环驳回,流程无法结束。流程图如下图所示:
驳回控制变量及流程图
在这里插入图片描述
审批结束控制变量及流程图
在这里插入图片描述
1.设置控制变量值为false,驳回流程到上一阶段,代码如下所示:
在这里插入图片描述

    /*** 审批节点,驳回*/@Testpublic void doCheckRejectTask() {List<Task> taskList = taskService.createTaskQuery().processDefinitionKey("rejectProcess")
//                .processInstanceId()
//                .taskAssignee(assignee).list();for (Task task : taskList) {Map<String, Object> varMap = new HashMap<>();// 驳回控制变量,重点varMap.put("checkPass", false);taskService.addComment(task.getId(), task.getProcessInstanceId(), "审批通过--测试xx");taskService.complete(task.getId(), varMap);}}

2.重新执行流程,审批结束,结束流程
此处虽然设置控制变量为true,流程审批结束,但实际执行过程中,流程并未结束,仍然是驳回上一流程阶段,查看相关资料及文档,说是activiti7的bug,升级到7.1.0.M4可解决,于是升级版本,最后发现仍然存在同样的问题。导致该问题原因是流程绑定的全局变量, 在taskService.complete无法覆盖。
在这里插入图片描述

    /*** 审批结束*/@Testpublic void doCheckRejectTask() {List<Task> taskList = taskService.createTaskQuery().processDefinitionKey("rejectProcess")
//                .processInstanceId()
//                .taskAssignee(assignee).list();for (Task task : taskList) {Map<String, Object> varMap = new HashMap<>();varMap.put("checkPass", true);taskService.addComment(task.getId(), task.getProcessInstanceId(), "审批结束--测试xx");taskService.complete(task.getId(), varMap);}}

3.解决方案
既然流程绑定的全局变量, 在taskService.complete无法覆盖,那么就想办法覆盖变量值即可,因此只需要重新设置变量。解决方案有2种方式,第一种是设置局部变量覆盖;第二种是设置全局变量覆盖。如下图所示:
在这里插入图片描述

    /*** 审批结束*/@Testpublic void doCheckRejectTask() {List<Task> taskList = taskService.createTaskQuery().processDefinitionKey("rejectProcess")
//                .processInstanceId()
//                .taskAssignee(assignee).list();for (Task task : taskList) {Map<String, Object> varMap = new HashMap<>();varMap.put("checkPass", true);// 设置局部变量覆盖和设置全局变量覆盖二选一即可// 1.设置局部变量覆盖taskService.setVariablesLocal(task.getId(), varMap);// 2.设置全局变量覆盖// taskService.setVariables(task.getId(), varMap);taskService.addComment(task.getId(), task.getProcessInstanceId(), "审批结束");taskService.complete(task.getId(), varMap);}}

4.相关大数据学习demo地址:
https://github.com/carteryh/big-data

相关文章:

activiti7审批驳回,控制变量无法覆盖,导致无限循环驳回,流程无法结束

项目开发过程中使用工作流&#xff0c;因此考虑使用activiti7做完工作流引擎。项目开发过程中&#xff0c;发现流程驳回时&#xff0c;再次执行流程&#xff0c;控制变量无法覆盖&#xff0c;导致无限循环驳回&#xff0c;流程无法结束。流程图如下图所示&#xff1a; 驳回控制…...

世界互联网大会|云轴科技ZStack受邀分享云原生超融合

11月8日至10日“世界互联网大会乌镇峰会”在浙江嘉兴的乌镇开幕&#xff0c;大会的主题为“建设包容、普惠、有韧性的数字世界——携手构建网络空间命运共同体”&#xff0c;全球各界代表就热点焦点问题展开讨论&#xff0c;反映产业各界对互联网发展的前瞻思考&#xff0c;引领…...

k8s ingress基础

一、ingress 简介 在k8s集群中&#xff0c;service和pod的ip为内网ip&#xff0c;仅集群内部才可以访问。如果外部应用想要直接访问集群内的服务&#xff0c;就需要把外部请求通过负载均衡转发到service上&#xff0c;然后再由kube-proxy组件将其转发给后端pod。一般service可…...

【网络奇缘】我和英特网再续前缘

&#x1f308;个人主页: Aileen_0v0&#x1f525;系列专栏: 一见倾心,再见倾城 --- 计算机网络~&#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 计算机网络的概念 计算机网络的功能 ⭐1.数据通信 ⭐2.资源共享 ⭐3.分布式处理 ⭐4.提高可靠性 ⭐…...

node插件MongoDB(四)—— 库mongoose 的条件控制(三)

文章目录 前言一、运算符二、逻辑运算1. $or 逻辑或2. $and 逻辑与 三、正则匹配 前言 在mongodb 不能使用 > < > < ! 等运算符&#xff0c;需要使用替代符号。 一、运算符 > 使用 $gt< 使用 $lt> 使用 $gte< 使用 $lte! 使用 $ne 例子&#xff1a;获…...

【Amazon】云上探索实验室—了解 AI 编程助手 Amazon Codewhisperer

文章目录 一、前言&#x1f4e2;二、关于云上探索实验室&#x1f579;️三、领学员需要做什么&#xff1f;✴️四、领学员能获得什么&#xff1f;&#x1f523;五、学课通道入口&#x1f447;1️⃣CSDN平台2️⃣网易云课堂3️⃣Skill Builder 平台 六、活动详情链接 一、前言&a…...

【安卓13】谷歌原生桌面launcher3 禁止桌面图标拖拽和所有应用拖拽

前言 如果我们需要固定住布局&#xff0c;不给用户拖拽&#xff0c;可以通过修改长按点击监听事件来达到禁止拖拽的目的二、代码追踪 1、src/com/android/launcher3/touch/ItemLongClickListener.java 在这个类开头注册了两种类型的监听&#xff0c;一个是在桌面拖拽应用&…...

SA实战 ·《SpringCloud Alibaba实战》第13章-服务网关:项目整合SpringCloud Gateway网关

大家好,我是冰河~~ 一不小心[SpringCloud Alibaba实战》专栏都更新到第13章了,再不上车就跟不上了,小伙伴们快跟上啊! 在《SpringCloud Alibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基于…...

海外ASO优化之谷歌商店的评论优化

应用商店中的评分和评论&#xff0c;显示我们的应用程序的受欢迎程度以及用户对该应用程序的看法。评分和评论是以前或者是现在的用户分享的经验和公开的反馈。 1、提高应用评分评论。 高评分的应用可以从应用商店内的搜索流量中获得更多的点击量&#xff0c;通过推荐和推荐获…...

IP-guard Webserver view 远程命令执行漏洞【2023最新漏洞】

IP-guard Webserver view 远程命令执行漏洞【2023最新漏洞】 一、漏洞描述二、漏洞影响三、漏洞危害四、FOFA语句五、漏洞复现1、手动复现yaml pocburp发包 2、自动化复现小龙POC检测工具下载地址 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传…...

专访|OpenTiny 社区 Mr 栋:结合兴趣,明确定位,在开源中给自己一些技术性挑战

前言 OpenTiny 开源之夏项目终于迎来了圆满的结局。借此机会&#xff0c;我们采访了 TinyReact 的共建者 Mr 栋同学。 Mr 栋同学是一位热衷于前端技术的开发者&#xff0c;对前端开发充满了激情和热爱。同时他也是一位即将毕业的大四在校生。在 OpenTiny 开源项目中&#xff0…...

2023年11月PHP测试覆盖率解决方案

【题记&#xff1a;最近进行了ExcelBDD PHP版的开发&#xff0c;查阅了大量资料&#xff0c;发现PHP测试覆盖率解决方案存在不同的历史版本&#xff0c;让我花费了蛮多时间&#xff0c;为了避免后人浪费时间&#xff0c;整理本文&#xff0c;而且网上没有给出Azure DevOps里面P…...

matlab模糊控制文件m代码实现和基础理论

1、内容简介 略 15-可以交流、咨询、答疑 通过m代码来实现生成模糊文件fis文件 2、内容说明 模糊文件m代码实现和基础理论 matlab模糊控制文件m代码实现和基础理论 模糊文件、m代码和模糊基础理论 3、仿真分析 略 4、参考论文 略 链接&#xff1a;https://pan.baidu.co…...

Java设计模式-创建型模式-单例模式

单例模式 单例模式饿汉式懒汉式 单例模式 解释&#xff1a;一个类只能有一个实例 单例模式可以分为两种 饿汉式 和 懒汉式 饿汉式 也被称为预加载&#xff0c;即 在加载类的时候&#xff0c;就将实例创建出来&#xff0c;加载到内存&#xff0c;不管之后会不会使用这个实例 …...

社区分享|杭银消费金融基于MeterSphere开展接口自动化测试

杭银消费金融有限公司&#xff08;以下简称“杭银消费金融”&#xff09;成立于2015年12月&#xff0c;是经中国银保监会批准&#xff0c;由杭州银行作为主发起人&#xff0c;联合滴滴出行、中国银泰等企业组建的持牌消费金融机构&#xff0c;注册资本为25.61亿元。杭银消费金融…...

阿里云2核2G云服务器99元一年!3M带宽的ECS云服务器哦

经济型e实例2核2G3M带宽优惠价99元一年 除了轻量服务器配置&#xff0c;经济型e实例2核2G3M配置也成为了用户关注的焦点。这款云服务器以99元一年的价格&#xff0c;适合个人和普通企业用户搭建网站、开发测试等需求。 我买的是阿里云这款99元的云服务器&#xff0c;活动参与地…...

【工程部署】在RK3588上部署OCR(文字检测识别)(DBNet+CRNN)

硬件平台&#xff1a; 1、firefly安装Ubuntu系统的RK3588&#xff1b; 2、安装Windows系统的电脑一台&#xff0c;其上安装Ubuntu18.04系统虚拟机。 参考手册&#xff1a;《00-Rockchip_RKNPU_User_Guide_RKNN_API_V1.3.0_CN》 《RKNN Toolkit Lite2 用户使用指南》 1、文…...

Dockerfile运行容器不立即退出

1. 问题描述 运行容器结束&#xff0c;docker container立即退出。 2. 解决方案 在dockerfile中&#xff0c;添加如下命令&#xff0c; ENTRYPOINT ["tail", "-f", "/dev/null"]...

基因检测技术的发展与创新:安全文件数据传输的重要作用

基因是生命的密码&#xff0c;它决定了我们的身体特征、健康状况、疾病风险等。随着基因检测技术的高速发展&#xff0c;我们可以通过对基因进行测序、分析和解读&#xff0c;更深入地认识自己&#xff0c;预防和治疗各种遗传性疾病&#xff0c;甚至实现个性化医疗和精准健康管…...

Flink SQL自定义标量函数(Scalar Function)

使用场景&#xff1a; 标量函数即 UDF&#xff0c;⽤于进⼀条数据出⼀条数据的场景。 开发流程&#xff1a; 实现 org.apache.flink.table.functions.ScalarFunction 接⼝实现⼀个或者多个⾃定义的 eval 函数&#xff0c;名称必须叫做 eval&#xff0c;eval ⽅法签名必须是 p…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...