踩坑日记 | 记一次流程图问题排查

踩坑日记:记一次流程图问题排查

标签: 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做进一步的分流。

相关推荐
挣扎与觉醒中的技术人1 天前
网络安全入门持续学习与进阶路径(一)
网络·c++·学习·程序人生·安全·web安全
测试19981 天前
Jmeter HTTP代理服务器录制压力脚本
自动化测试·软件测试·测试工具·jmeter·程序人生·职场和发展·测试用例
大米洗澡1 天前
数字签名技术基础
python·学习·程序人生·面试·职场和发展
Tiger Z2 天前
R 语言科研绘图第 27 期 --- 密度图-分组
开发语言·程序人生·r语言·贴图
CIb0la3 天前
Arm 将自己制造芯片
运维·程序人生
Sherlock Ma5 天前
Java零基础入门笔记:(4)方法
java·开发语言·笔记·程序人生·跳槽·学习方法·改行学it
带娃的IT创业者6 天前
Python实战进阶 No1: RESTful API - 基于Flask的实例说明
python·程序人生·flask·restful·改行学it
Tiger Z8 天前
R 语言科研绘图第 24 期 --- 直方图-高亮
开发语言·程序人生·r语言·贴图
楼台的春风10 天前
LeetCode刷题第7题【整数反转】---解题思路及源码注释
c++·程序人生·算法·leetcode·面试·蓝桥杯·嵌入式