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

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

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

标签: 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——第十三讲__面向对象

<类&#xff08;class&#xff09;> 一、面向对象概念 1、面向对象是一种编程思想和技术&#xff0c;它是一种将程序设计问题分解成对象的方式。每个对象都有自己的状态&#xff08;数据&#xff09;和行为&#xff08;方法&#xff09;&#xff0c;并且可以通过相互之间…...

前端JS特效第42波:纯CSS实现的卡片切换效果

纯CSS实现的卡片切换效果&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><title>纯CSS实现的卡片切换效果演示</title><l…...

2.10、matlab中字符、数字、矩阵、字符串和元胞合并为字符串并将字符串以不同格式写入读出excel

1、前言 在 MATLAB 中&#xff0c;可以使用不同的数据类型&#xff08;字符、数字、矩阵、字符串和元胞&#xff09;合并为字符串&#xff0c;然后将字符串以不同格式写入 Excel 文件。 以下是一个示例代码&#xff0c;展示如何将不同数据类型合并为字符串&#xff0c;并以不…...

中文科技核心论文发表

中文科技核心论文题目如下&#xff1a; 1.混凝土结构用纤维增强塑料筋的耐久性评述&#xff1a;适合建筑、结构、材料等专业 2.建筑工程用阻燃塑料的研究进展&#xff1a;适合建筑、材料专业 3.纤维增强热塑性塑料在面部护具中的应用研究&#xff1a;适合化工、医学、材料等专…...

使用 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应用实例&#xff0c;__name__参数帮助Flask确定应…...

力扣经典题目之->用队列实现栈 的详细讲解和实现,看这一篇就够了!

一&#xff1a;题目 二&#xff1a;思路 1&#xff1a;先看两个概念&#xff1a; 更清晰的对比&#xff1a; 理解这两张图的不同对题目的一个函数&#xff08; 返回栈顶元素&#xff09; 会更好做 由图可知 &#xff1a; 返回栈顶函数即返回队列队尾即可 2&#xff1a;题…...

[JS]认识feach

介绍 feach是浏览器内置的api, 用于发送网络请求 请求方式对比 AJAX: 基于XMLHttpRequest接收请求, 使用繁琐Axios: 基于Promise的请求客户端, 在浏览器和node中均可使用, 使用简单fetch: 浏览器内置的api, 基于Promise, 功能简单 基础语法 <body><button>发请求…...

tomcat如何进行调优?

从两个方面考虑&#xff1a;内存和线程 首先启动Tomcat&#xff0c;实际上就是启动了一个JVM&#xff0c;所以可以按JVM调优的方式来进行调整&#xff0c;从而达到Tomcat优化的目的。 另外Tomcat中设计了一些缓存区&#xff0c;比如appReadBufSize、bufferPoolSize等缓存区来提…...

复现GMM文章(一):图1代码和数据

介绍 复现GMM文章的的Fig1图。 加载R包 library(tidyr)library(tidyverse)library(dplyr)library(ggsci)library(ggpubr)导入数据 所有的数据可以通过下列链接下载&#xff1a; 百度网盘链接: https://pan.baidu.com/s/1isKEK1G5I6X90KYqLufmWw 提取码: t9ca 图1B 数据 …...

链接追踪系列-07.logstash安装json_lines插件

进入docker中的logstash 容器内&#xff1a; jelexbogon ~ % docker exec -it 7ee8960c99a31e607f346b2802419b8b819cc860863bc283cb7483bc03ba1420 /bin/sh $ pwd /usr/share/logstash $ ls bin CONTRIBUTORS Gemfile jdk logstash-core modules tools x-pack …...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

Python环境安装与虚拟环境配置详解

本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南&#xff0c;适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者&#xff0c;都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...

Springboot 高校报修与互助平台小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;高校报修与互助平台小程序被用户普遍使用&#xff0c;为…...