踩坑日记 | 记一次流程图问题排查
踩坑日记:记一次流程图问题排查
标签: activiti | 流程
引言
今天排查了一个流程图问题,耗时2个小时终于解决,记录下来
现象
流程审批驳回报错:Unknown property used in expression: ${xxxx}
使用的是 activiti 流程
错误日志:
Error while closing command context
org.activiti.engine.ActivitiException: Unknown property used in expression: ${A0_LS_YCSHENPI}
流程图:

其中三条分支的配置分别为:
${path==‘P3’}
${path==‘P2’}
${action == ‘REFUSE’ || action == ‘REJECT’}
修改后的流程图:

其中三条分支的配置分别为:${action==‘PASS’&&path==‘P3’}
${action==‘PASS’&&path==‘P2’}
${action == ‘REFUSE’ || action == ‘REJECT’}
分析过程
完整日志:
提交时执行路径计算,taskId: 55438607,result: ProcessScriptExecuteResult(result=ProcessScriptExecuteResult.Result(path=P3, nextStepRoleIdList=[A0_LS_YCSHENPI], userId=null, nextStepSysFlag=false, nextTaskName=null), isSuccess=true, errMsg=null)
事务开始, transactionDefinition: PROPAGATION_REQUIRED,ISOLATION_DEFAULT
ActivitiGlobalTaskCompletedListener action: REJECT, taskId :55438607
ActivitiGlobalTaskCompletedListener over, taskId: 55438607
2024-07-12 08:49:24.003
Error while closing command context
org.activiti.engine.ActivitiException: Unknown property used in expression: ${A0_LS_YCSHENPI}
通过完整的日志 以及打断点方式 了解了整个流程
后端接到驳回的请求之后不管是否驳回 都会先调用grovvy的脚本 计算一下 下一步的审批人
计算完成后再去根据action 判断走哪个流程
结果就是 计算后得到结果 Result(path=P3, nextStepRoleIdList=[A0_LS_YCSHENPI], userId=null, nextStepSysFlag=false, nextTaskName=null), isSuccess=true, errMsg=null)
但实际上 应该驳回或否决的路 ,结果走到了下一个人审批的路径
导致程序去bpmn中找对应的角色 找不到,最后报错
解决方案就是,使用action强制约束每条路径
${action==‘PASS’&&path==‘P3’}
${action==‘PASS’&&path==‘P2’}
${action == ‘REFUSE’ || action == ‘REJECT’}
最后问题解决。(长舒一口气)
总结
这是一个画流程图的坑
画流程图时需要注意:如果一个节点之后有多个分支,需要先试用 action 做好分流,再用path做进一步的分流。
相关文章:
踩坑日记 | 记一次流程图问题排查
踩坑日记:记一次流程图问题排查 标签: activiti | 流程 引言 今天排查了一个流程图问题,耗时2个小时终于解决,记录下来 现象 流程审批驳回报错:Unknown property used in expression: ${xxxx} 使用的是 activiti …...
数据建设实践之大数据平台(四)安装mysql
安装mysql 卸载mysql [bigdatanode101 ~]$ sudo rpm -qa | grep mariadb | xargs sudo rpm -e --nodeps 上传安装包到/opt/software目录并解压 [bigdatanode101 software]$ tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C mysql_lib/ 到mysql_lib目录下顺序安装 …...
MongoDB常用命令大全,概述、备份恢复
文章目录 一、MongoDB简介二、服务启动停止、连接三、数据库相关四、集合操作五、文档操作六、数据备份与恢复/导入导出数据6.1 mongodump备份数据库6.2 mongorestore还原数据库6.3 mongoexport导出表 或 表中部分字段6.4 mongoimport导入表 或 表中部分字段 七、其他常用命令八…...
uni-app 保存号码到通讯录
1、 添加模块 2、添加权限 3、添加策略 Android: "permissionExternalStorage" : {"request" : "none","prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片…...
Jetson-AGX-Orin gstreamer+rtmp+http-flv 推拉流
Jetson-AGX-Orin gstreamerrtmphttp-flv 推拉流 Orin是ubuntu20.04 ARM64架构的系统,自带gstreamer 1、 测试摄像头 测试摄像头可以用v4l2-ctl命令或者用gst-launch-1.0 #用v4l2-ctl测试摄像头,有尖角符号持续打印则正常 v4l2-ctl -d /dev/video0 --set-fmt-vid…...
ES证书过期替换方案
简介: 在生产环境中,Elasticsearch 集群的证书可能会因为过期而导致集群无法正常工作。为了避免这种情况的发生,我们需要及时更新证书,并保证更新证书的过程中保持 Elasticsearch 集群的高可用性和数据安全性。 集群环境 ES集群版…...
计算机网络——网络层(IP地址与MAC地址、地址解析协议ARP、IP数据报格式以及转发分组、ICMP、IPV6)
IP地址与MAC地址 由于MAC地址已固化在网卡上的ROM 中,因此常常将 MAC地址称为硬件地址或物理地址;物理地址的反义词就是虚拟地址、软件地址或逻辑地址,IP地址就属于这类地址。 从层次的角度看,MAC地址是数据链路层使用的地址&…...
音视频入门基础:H.264专题(13)——FFmpeg源码中通过SPS属性获取视频色彩格式的实现
一、引言 通过FFmpeg命令可以获取到H.264裸流文件的色彩格式(又译作色度采样结构、像素格式): 在vlc中也可以获取到色彩格式(vlc底层也使用了FFmpeg进行解码): 这个色彩格式就是之前的文章《音视频入门基础…...
WEB前端05-JavaScrip基本对象
JavaScript对象 1.Function对象 函数的创建 //方法一:自定义函数 function 函数名([参数]) {函数体[return 表达式] }//方法二:匿名函数 (function([参数]) {函数体[return 表达式] }); **使用场景一:定义后直接调用使用(只使用一次) (fun…...
新手教学系列——简单的服务配置项集中管理
前言 在开发和运维过程中,配置管理是一个非常重要但经常被忽视的环节。常用的配置文件格式包括env、ini和yaml等,它们非常适合模块级别的系统配置,尤其是一些敏感信息的配置,例如数据库连接字符串和密码等。但是,对于…...
《0基础》学习Python——第十三讲__面向对象
<类(class)> 一、面向对象概念 1、面向对象是一种编程思想和技术,它是一种将程序设计问题分解成对象的方式。每个对象都有自己的状态(数据)和行为(方法),并且可以通过相互之间…...
前端JS特效第42波:纯CSS实现的卡片切换效果
纯CSS实现的卡片切换效果,先来看看效果: 部分核心的代码如下: <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><title>纯CSS实现的卡片切换效果演示</title><l…...
2.10、matlab中字符、数字、矩阵、字符串和元胞合并为字符串并将字符串以不同格式写入读出excel
1、前言 在 MATLAB 中,可以使用不同的数据类型(字符、数字、矩阵、字符串和元胞)合并为字符串,然后将字符串以不同格式写入 Excel 文件。 以下是一个示例代码,展示如何将不同数据类型合并为字符串,并以不…...
中文科技核心论文发表
中文科技核心论文题目如下: 1.混凝土结构用纤维增强塑料筋的耐久性评述:适合建筑、结构、材料等专业 2.建筑工程用阻燃塑料的研究进展:适合建筑、材料专业 3.纤维增强热塑性塑料在面部护具中的应用研究:适合化工、医学、材料等专…...
使用 Flask 3 搭建问答平台(一):项目结构搭建
一、项目基本结构 二、app.py from flask import Flask import config from exts import db from models import UserModel from blueprints.qa import bp as qa_bp from blueprints.auth import bp as auth_bp# 创建一个Flask应用实例,__name__参数帮助Flask确定应…...
力扣经典题目之->用队列实现栈 的详细讲解和实现,看这一篇就够了!
一:题目 二:思路 1:先看两个概念: 更清晰的对比: 理解这两张图的不同对题目的一个函数( 返回栈顶元素) 会更好做 由图可知 : 返回栈顶函数即返回队列队尾即可 2:题…...
[JS]认识feach
介绍 feach是浏览器内置的api, 用于发送网络请求 请求方式对比 AJAX: 基于XMLHttpRequest接收请求, 使用繁琐Axios: 基于Promise的请求客户端, 在浏览器和node中均可使用, 使用简单fetch: 浏览器内置的api, 基于Promise, 功能简单 基础语法 <body><button>发请求…...
tomcat如何进行调优?
从两个方面考虑:内存和线程 首先启动Tomcat,实际上就是启动了一个JVM,所以可以按JVM调优的方式来进行调整,从而达到Tomcat优化的目的。 另外Tomcat中设计了一些缓存区,比如appReadBufSize、bufferPoolSize等缓存区来提…...
复现GMM文章(一):图1代码和数据
介绍 复现GMM文章的的Fig1图。 加载R包 library(tidyr)library(tidyverse)library(dplyr)library(ggsci)library(ggpubr)导入数据 所有的数据可以通过下列链接下载: 百度网盘链接: https://pan.baidu.com/s/1isKEK1G5I6X90KYqLufmWw 提取码: t9ca 图1B 数据 …...
链接追踪系列-07.logstash安装json_lines插件
进入docker中的logstash 容器内: jelexbogon ~ % docker exec -it 7ee8960c99a31e607f346b2802419b8b819cc860863bc283cb7483bc03ba1420 /bin/sh $ pwd /usr/share/logstash $ ls bin CONTRIBUTORS Gemfile jdk logstash-core modules tools x-pack …...
LangChain学习之提示词模板 Prompts(2/8)
模块 2: 提示词模板 (Prompts) 2.1 提示词 (Prompts) 概述 在与大型语言模型(LLM)交互时,提示词 (Prompt) 是向模型发出的指令或问题。一个好的提示词能够引导模型生成高质量、符合预期的输出。LangChain 提供了强大的提示词管理功能&#…...
CREO新手避坑指南:从拉伸到抽壳,这10个建模细节90%的人都踩过
CREO新手避坑指南:从拉伸到抽壳,这10个建模细节90%的人都踩过 刚接触CREO三维建模时,许多初学者会被软件强大的功能所吸引,却往往在基础操作上反复踩坑。本文将从实际案例出发,剖析那些看似简单却暗藏玄机的建模细节&a…...
SpringBoot 2.6.2 + MyBatis-Plus 3.5.2 集成人大金仓Kingbase 8.6.0保姆级教程(含本地JAR安装避坑)
SpringBoot 2.6.2 MyBatis-Plus 3.5.2 集成人大金仓Kingbase 8.6.0实战指南 在国产化技术浪潮下,越来越多的企业开始采用国产数据库解决方案。作为国内领先的关系型数据库产品,人大金仓Kingbase以其高兼容性和稳定性受到广泛关注。本文将手把手带你完成…...
安防摄像头ISP不够用?聊聊MIPI CSI离线模式(Offline Pipeline)与RAW数据缓存的那些事
安防摄像头ISP资源紧张?深度解析MIPI CSI离线模式与RAW数据缓存技术 在智能安防和车载视觉系统快速发展的今天,多摄像头协同工作已成为行业标配。无论是商场监控中的360度无死角覆盖,还是汽车环视系统中的多路影像同步处理,都对图…...
STAR-CCM+物理场实战:用‘伴随求解器’优化无人机气动,附完整仿真流程文件
STAR-CCM物理场实战:用‘伴随求解器’优化无人机气动,附完整仿真流程文件 无人机气动外形优化一直是工程仿真领域的难点与热点。传统方法依赖人工试错与经验调整,效率低下且难以找到全局最优解。本文将深入解析如何利用STAR-CCM的伴随求解器技…...
如何快速实现swagger-jsdoc与TypeScript的完美集成:完整指南
如何快速实现swagger-jsdoc与TypeScript的完美集成:完整指南 【免费下载链接】swagger-jsdoc Generates swagger/openapi specification based on jsDoc comments and YAML files. 项目地址: https://gitcode.com/gh_mirrors/sw/swagger-jsdoc 在现代化的API…...
终极指南:在Linux系统上安装与优化Realtek RTL8125 2.5GbE网卡驱动
终极指南:在Linux系统上安装与优化Realtek RTL8125 2.5GbE网卡驱动 【免费下载链接】realtek-r8125-dkms A DKMS package for easy use of Realtek r8125 driver, which supports 2.5 GbE. 项目地址: https://gitcode.com/gh_mirrors/re/realtek-r8125-dkms …...
DocLayout-YOLO实战案例:从学术论文到财务报表的布局分析
DocLayout-YOLO实战案例:从学术论文到财务报表的布局分析 【免费下载链接】DocLayout-YOLO DocLayout-YOLO: Enhancing Document Layout Analysis through Diverse Synthetic Data and Global-to-Local Adaptive Perception 项目地址: https://gitcode.com/gh_mir…...
DeepSeek企业级部署GPU清单(2024Q3权威更新):仅3款消费级卡达标,87%私有云环境需重构PCIe拓扑
更多请点击: https://intelliparadigm.com 第一章:DeepSeek企业级GPU资源需求的演进逻辑与基准定义 随着DeepSeek系列大模型从开源轻量级版本(如DeepSeek-Coder-1.3B)向千亿参数级企业级推理与微调平台(如DeepSeek-VL…...
录音会议纪要整理教程
无论是整理课堂录音复习、小组讨论纪要,还是调研访谈整理,很多新手都会陷入困扰:要么逐句听录耗时费力,要么转写内容错漏多、找不到重点。这篇零基础教程,步骤简洁易懂,看完可直接上手,帮你大幅…...
