Flowable7.0.1框架严重bug,流程跳转到指定节点导致流程中断

一、Bug描述

使用7.0.1版本的 moveActivityIdsToSingleActivityId 或 moveExecutionsToSingleActivityId实现节点跳转,程序不会报错,但是act_ru_task 没有生成新的任务,导致流程中断,这是相当严重的bug。

经过多次测试,发现单实例没问题,如果是多实例就会产生上边说的问题,导致流程中断

java 复制代码
runtimeService.createChangeActivityStateBuilder()
                .processInstanceId(processInstanceId)
                .moveActivityIdsToSingleActivityId("当前的任务的节点id", "需要跳转的目标节点")
                .changeState();


runtimeService.createChangeActivityStateBuilder()
                .processInstanceId(processInstanceId)
                .moveExecutionsToSingleActivityId(realExecutionIds,
targetRealActivityId).changeState();

二、问题复现

1、退回发起人节点

从审核人2退回发起人,经过测试发现退到发起人是没有问题的。

2、其他节点退回非发起人节点

从审核人2退回审核人1或审核人3退回审核人1或审核人2,测试发现,会产生流程中断,退回后的节点没有产生新任务,经过断点发现没有调用获取人员的UEL表达式,如下图所示

三、解决方案

1、退回低版本

7.0.1 -->7.0.0.M1

6.8.1-->6.8.0

2、修改源代码

调用退回api的时候,会调用

复制代码
org.flowable.engine.impl.dynamic.AbstractDynamicStateManager的createEmbeddedSubProcessAndExecutions 方法

本地代码创建和源码完全同包名、同方法名的类,将低版本的6.8.0或6.7.2版本中的

复制代码
createEmbeddedSubProcessAndExecutions方法的实现替换掉高版的实现即可。

四、总结

github 上issue也有好几人人遇到该问题,https://github.com/flowable/flowable-engine/issues/3944

但是官方还没推出该bug的解决方案,建议还是先降低版本,最方便也最省事,等官方解决了可以再切回来。

相关推荐
初圣魔门首席弟子2 天前
c++ bug 记录(merge函数调用时错误地传入了vector对象而非迭代器。)
java·c++·bug
Qiuner2 天前
历劫波,明真我——Debug Commune
ai·开源·bug·debug·信息差·信息·交流
川石课堂软件测试4 天前
什么是BUG,你对BUG的了解有多少?
android·linux·服务器·python·功能测试·bug·安全性测试
仰望星空的凡人4 天前
【BUG排查】基于RH850F1KMS1的主控出现系统中断错误,调试FEIC的值为0x11
单片机·bug·rh850·renesas
Vanranrr4 天前
Git Commit Message 最佳实践:从一次指针Bug说起
git·bug
初圣魔门首席弟子5 天前
c++ bug 函数定义和声明不一致导致出bug
开发语言·c++·bug
xuyuan19985 天前
修复1个Bug,引爆3个新Bug?回归测试的智慧
功能测试·测试用例·bug
三十_A5 天前
【实录】使用 patch-package 修复第三方 npm 包中的 Bug
前端·npm·bug
BrightMZM5 天前
记录一下Unity的BUG,Trial Version
unity·bug·打包·trial
一只自律的鸡6 天前
【bug日记】python找不到包
bug