Flowable动态修改在途流程

背景

之前在生产上部署了一个节点较多文件大小较大的流程图,在用eclipse改图的时候图是正常的,然后部署上去的时候发现有两条线进和出的节点错乱了,导致流程走乱;
例子:
原先正确的流程图:
在这里插入图片描述
部署上去之后有问题的流程图:
在这里插入图片描述
有问题的流程图出现的情况:
如果是走userTask3的情况,在userTask2执行完之后,会生产一个userTask3和一个userTask5的任务数据;

因为flowbale每部署一次流程,流程的版本就加一,不同版本互相不影响,问题就来,我已经在途的流程怎么修改呢,我应该如何才能让停留着userTask1和userTask2的流程往下执行的时候是按着正确的版本走呢?

解决方案

flowable是根据解析我们部署的xml,在数据库存一份,然后把数据解析到本地的内存中(在执行流程的时候就可以直接读内存中的数据,不需要再次去读库和解析xml数据);
此时就有两个疑问点:

  • 我们是否可以直接把数据库中的xml数据直接替换掉,然后刷新flowable本地缓存?
  • 如何刷新flowable的本地缓存?

动手

在flowbale框架中

  • ACT_RE_PROCDEF:记录部署的流程的相关信息,如流程id,流程名称,版本号,部署id等
  • ACT_GE_BYTEARRAY:记录流程的xml信息

首先把对的流程重新部署一遍
在这里插入图片描述
假如VERSION_为16的是我们后面部署正确的版本,15为有问题的版本,我们需要把16版本的XML数据覆盖到15版本上,让在途的15版本的数据按覆盖后的XML去执行;
细心的朋友会发现ACT_GE_BYTEARRAY和ACT_RE_PROCDEF两个表中都会有DEPLOYMENT_ID_;
在这里插入图片描述

所以,直接把ACT_GE_BYTEARRAY中,版本16的BYTES_数据直接覆盖15的,到这里流程替换就已经完成了;

然后就到了疑问2了,我要如何刷新flowable的本地缓存呢?
因为时间上的不允许(避免生产上过多异常数据),我就没有去找flowable有没有相关刷新缓存的接口了,直接来大招,重启项目!!!

在修改完BYTES_的数据和项目重启完之后,后续的流程也没跑乱了,可以正确执行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值