-- ============================================================
|
-- 修复「流程模型 → 修改 → 流程设计 → 保存」失败
|
--
|
-- 现象:报「操作流程失败,原因:你不是该流程(xxx)的管理员」,
|
-- 或修掉管理员问题后变成「系统异常」
|
-- (FlowableOptimisticLockingException: was updated by another transaction concurrently)
|
--
|
-- 根因有两个,都出在从备份恢复/迁移过来的 act_re_model 数据上:
|
--
|
-- 1) META_INFO_ 里 managerUserIds 为空数组或缺失
|
-- 后端 updateModel 是「先校验管理员、后写入」,校验读的是库里的值,
|
-- 所以一旦为空就永久校验失败,无法自愈(前端怎么传新值都没用)。
|
--
|
-- 2) REV_(Flowable 乐观锁版本号)为 NULL
|
-- saveModel 时的 UPDATE 条件带 REV_ = ?,为 NULL 时匹配不到任何行,
|
-- Flowable 认为被并发修改,抛 OptimisticLockingException → 前端显示「系统异常」。
|
--
|
-- 执行后需重启后端服务(Flowable 有模型缓存)。
|
-- ============================================================
|
|
-- 1) 补齐流程管理员:空数组 → 超管(1);缺失该字段的,补到 visible 后面
|
UPDATE act_re_model
|
SET META_INFO_ = REPLACE(META_INFO_, '"managerUserIds":[]', '"managerUserIds":[1]')
|
WHERE META_INFO_ LIKE '%"managerUserIds":[]%';
|
|
UPDATE act_re_model
|
SET META_INFO_ = REPLACE(META_INFO_, '"visible":true', '"visible":true,"managerUserIds":[1]')
|
WHERE META_INFO_ NOT LIKE '%managerUserIds%';
|
|
-- 2) 补齐乐观锁版本号
|
UPDATE act_re_model SET REV_ = 1 WHERE REV_ IS NULL;
|