Lazy loaded image
🥉自由流程
00 分钟
2019-12-2
2024-12-5
type
status
date
slug
summary
tags
category
icon
password
 flowable中会对流程定义做缓存处理,在实现自由流程的时候需要动态给流程定义添加节点,默认的是对流程定义做的缓存,要想在每个流程实例中动态添加节点,可以通过修改流程缓存,添加每个流程实例的缓存 ## 涉及到的类
notion image
## 主要步骤
  • 步骤1:修改BpmnJsonConverter,添加自定义属性,区分流程是否为自由流程
  • 步骤2:设置全局的FlowableEventListener( FlowableEngineEventType. ACTIVITY_COMPLETED ),在流程启动的时候判断流程是否为自由流程,如果是的话,把流程的bpmnModel转成xml设置到自己定义的缓存对象中,然后保存到redis里。 Redis采用了Hash方式存储,key为流程实例ID,value为自定义缓存类。
  • 步骤3:自由流程添加节点的时候提前把流程实例id放在request作用域中
  • 步骤4:定义 DefaultDeploymentCache 子类重写get方法,如果是自定义流程并且request作用域中有流程实例id就中redis中获取流程定义json转换成 ProcessDefinitionCacheEntry
  • 步骤5:定义自由流程命令类,获取流程定义缓存,给里面添加连线和节点
  • 步骤6:往新加的节点上跳转 ## 放入缓存主要代码 if (FlowUtils.isFreeProcess(entity.getProcessDefinitionId())) {

下方为以上用到的类以及方法

  • 获取缓存命令类
  • 序列化缓存对象方法
  • Redis存储的对象
  • 添加到redis接口
  • 添加到redis接口实现

修改流程配置类添加自定义缓存获取

设置的自定义缓存获取类(主要是重写获取缓存的get方法,以下仅为参考)

定义获取缓存命令类

添加节点命令类

调用方法示例

FlowUtils

实现效果

 
notion image
notion image
 
notion image
上一篇
Kafka实现sqlserver的CDC数据实时变更
下一篇
VictoriaMetrics(二)安装Grafana

评论
Loading...