-- ============================================================ -- 修复「流程模型 → 修改 → 流程设计 → 保存」失败 -- -- 现象:报「操作流程失败,原因:你不是该流程(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;