流程变更
流程变更
情况一:
正在执行 “用户任务2”,更新流程后,完成 “用户任务2”后,执行新流程。
步骤:
(1)创建流程定义,app 选择流程模型(v1),发布 → 应用程序 app (v1)
(2)启动流程:根据流程定义 key,启动最新的流程 → 会创建一个流程实例 instance1(用的流程模型 v1)
(3)完成 “用户任务1” → 开始 “用户任务2”
(4)更改流程定义,保存新版本(v2),app 重新选择流程模型(v2),发布为新版本 → 应用程序 app(v2)
(5)完成 “用户任务2”(此时,流程实例为 instance1,流程模型 v1,不会执行新版本的流程,需要迁移流程‼️)
情况二:在节点之前插入节点
start → 用户任务1 → 用户任务2(正在执行)→ end
start → 用户任务0(新增,流程打回到该节点执行)
→ 用户任务1 → 用户任务2 → end
需验证:
① 流程打回到用户任务0 之后,用户任务1、用户任务2 的状态;
② 执行用户任务0,用户任务1、用户任务2 会跳过吗?
版本 1 流程:
流程模型:before_siona_model(key:key_before_siona_model)
app 应用程序:app_before_siona(key:key_app_before_siona)
1-2023-12-10 22:31:22 [http-nio-8085-exec-1] ERROR com.qx.service.impl.FlowableServiceImpl - 迁移结果:true
1-2023-12-10 22:31:22 [http-nio-8085-exec-1] INFO com.qx.service.impl.FlowableServiceImpl - 可以直接迁移
1-2023-12-10 22:31:23 [http-nio-8085-exec-1] WARN com.qx.service.impl.FlowableServiceImpl - 任务已完成,任务ID: 5f11a961-9768-11ee-817a-d41b81b8a45a
# 验证一下为什么还会迁移,因为只有一个版本 v1
版本 2 流程(更新的流程):
流程定义版本+1
更新app定义中的流程模型版本
完成当前任务之前_判断是否有新版本流程定义(迁移)
完成当前任务之前_迁移流程定义到新的实例(根据最新版本流程定义)
完成用户任务2 之后的流程图片(从途中可以看出 “新增用户任务0” 颜色是黑色,表示没有执行):
将执行节点,跳到未执行的 “新增用户任务0”(在完成 “用户任务2” 之前就要跳到该节点)
(1)情况1:“用户任务1” 的执行结果保留。当完成 “新增用户任务0” 时,直接跳到 “用户任务2”。(符合实际)
(2)情况2:“用户任务2” 的执行结果不保留。从 “新增用户任务0” 重新开始执行。(应该不符合常理)
支持的流程实例迁移案例
本节概述了流程实例迁移的支持案例。 如果您要查找的案例尚不受支持,请查看下一节即将推出的支持。
在新的流程定义版本中,自动将等待状态(用户任务、接收任务、中间捕获事件)迁移到具有相同 ID 的活动。
通过为正在运行的流程实例中的特定活动状态指定目标活动来手动迁移等待状态。
将等待状态迁移到具有边界计时器、信号或消息事件的活动。
将具有边界计时器、信号或消息事件的等待状态迁移到没有边界事件的活动。
将等待状态迁移到嵌入式子进程或嵌套嵌入式子进程中的活动。
将嵌入式子进程或嵌套嵌入式子进程中的等待状态迁移到进程定义的根级别或其他嵌套作用域。
将等待状态迁移到(嵌套)事件子进程中的活动,包括中断和非中断。
使用并行网关或非独占网关时,将多个执行迁移到网关范围之外的一个执行。
在并行或包含网关中从单个执行迁移到多个执行。
将等待状态迁移到父进程中的活动。
即将推出的流程实例迁移支持
使用此版本的 Flowable Engine 时,添加了流程实例迁移支持的第一步。在下一版本中,重点是添加对以下迁移情况的支持:
支持将多实例执行的集合移动到另一个活动。
支持将等待状态移动到多实例活动。
当进程定义中存在一个或多个调用活动时,支持将等待状态移动到子进程中的活动。
支持在流程实例或本地执行作用域中添加和删除变量。
支持定义目标用户任务的分配规则和其他配置选项。