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

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

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

相关推荐
恣逍信点6 小时前
主观是客观的聚焦
人工智能·学习·程序人生·生活·业界资讯·交友·哲学
小李云雾12 小时前
Langchain【3】---提示词模板、输出解析、LCEL链式调用
java·人工智能·程序人生·langchain
旧曲重听12 天前
为什么现在 RAG 越少越少提及了
数据库·程序人生·职场和发展·agent
恣逍信点3 天前
《凌微经》助读:本体论根基——“无之自悖”与“形性一体”
人工智能·科技·学习·程序人生·生活·交友·哲学
CodeCaptain3 天前
遐思心智 (01):万古更新,AI在此
人工智能·程序人生·ai
郝学胜-神的一滴6 天前
CMake 038:OBJECT目标复用编译+Linux动态库版本自动化管理
linux·c++·程序人生·软件工程·软件构建·cmake·工程配置
恣逍信点7 天前
论“无中生有”之元逻辑——《凌微经——对称性共生关系论》随读
人工智能·程序人生·知识图谱·学习方法·业界资讯·交友·哲学
郝学胜-神的一滴7 天前
Qt 高级编程 034:深耕QWidget底层内核—彻底吃透无边框窗口设计核心原理
开发语言·c++·qt·程序人生·软件开发·用户界面
可触的未来,发芽的智生7 天前
发现-认知系统记忆架构工程启示录
数据库·人工智能·python·程序人生·sqlserver
humors2217 天前
问题六问:从认知到行动的思维框架
程序人生