当前位置: 首页 > 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

http://www.lryc.cn/news/229306.html

相关文章:

  • 世界互联网大会|云轴科技ZStack受邀分享云原生超融合
  • k8s ingress基础
  • 【网络奇缘】我和英特网再续前缘
  • node插件MongoDB(四)—— 库mongoose 的条件控制(三)
  • 【Amazon】云上探索实验室—了解 AI 编程助手 Amazon Codewhisperer
  • 【安卓13】谷歌原生桌面launcher3 禁止桌面图标拖拽和所有应用拖拽
  • SA实战 ·《SpringCloud Alibaba实战》第13章-服务网关:项目整合SpringCloud Gateway网关
  • 海外ASO优化之谷歌商店的评论优化
  • IP-guard Webserver view 远程命令执行漏洞【2023最新漏洞】
  • 专访|OpenTiny 社区 Mr 栋:结合兴趣,明确定位,在开源中给自己一些技术性挑战
  • 2023年11月PHP测试覆盖率解决方案
  • matlab模糊控制文件m代码实现和基础理论
  • Java设计模式-创建型模式-单例模式
  • 社区分享|杭银消费金融基于MeterSphere开展接口自动化测试
  • 阿里云2核2G云服务器99元一年!3M带宽的ECS云服务器哦
  • 【工程部署】在RK3588上部署OCR(文字检测识别)(DBNet+CRNN)
  • Dockerfile运行容器不立即退出
  • 基因检测技术的发展与创新:安全文件数据传输的重要作用
  • Flink SQL自定义标量函数(Scalar Function)
  • 【第2章 Node.js基础】2.4 Node.js 全局对象(二) process 对象
  • 觉非科技发布【轻地图高速NOA智驾方案】|地平线,觉非科技,MobileDrive超捷生态协作实现技术落地
  • 竞赛 车道线检测(自动驾驶 机器视觉)
  • 128. 最长连续序列
  • 设计模式-设计原则
  • MongoDB基础运维
  • 侧击雷如何检测预防
  • 检索搜索信息能力
  • 设计大咖亲授:Figma中文环境设置全攻略!
  • 华为Hcia-数通学习(更改策略)
  • 数据校验:Spring Validation