update 更新warmflow升级sql

This commit is contained in:
疯狂的狮子Li 2026-10-23 14:33:34 +08:00
parent a8b1bea7b7
commit c8be92b724

View File

@ -1,7 +1,8 @@
-- ============================================================
-- RuoYi-Vue-Plus 6.0.0 → 6.1.0 工作流升级脚本(MySQL)
-- 对齐 warm-flow 2.1.0:删除废弃的节点版本列、状态字典改为小写英文编码
-- 对齐 warm-flow 2.1.0:新增节点/定义配置与事件列、迁移状态编码及事件等待表
-- 只给存量库执行;全新建库直接用 script/sql/ry_workflow.sql,无需本脚本
-- 请在启动已开启 warm-flow.timer-enabled 的 2.1.0 应用之前,按顺序执行本脚本
-- 执行完到「系统管理 → 缓存管理 → 刷新缓存」刷一次字典缓存,否则前端仍显示旧文案
-- ============================================================
@ -9,7 +10,57 @@
-- 旧全量脚本里该列是 NOT NULL 且无默认值,引擎写节点会报「doesn't have a default value」
ALTER TABLE `flow_node` DROP COLUMN `version`;
-- 2. 任务状态字典改为引擎 TaskStatus 的 7 个码,外加撤回归档留痕的 cancel
-- 2. 补齐 2.1.0 的定义、服务任务、抄送与事件节点配置列
ALTER TABLE `flow_definition`
ADD COLUMN `def_config` text NULL COMMENT '流程定义配置(自动审批等引擎配置与自定义扩展属性json)' AFTER `ext`;
ALTER TABLE `flow_node`
ADD COLUMN `node_config` text NULL COMMENT '节点配置(服务任务、事件等引擎节点配置json)' AFTER `ext`,
ADD COLUMN `event_type` varchar(40) NULL COMMENT '事件类型' AFTER `node_config`,
ADD COLUMN `event_name` varchar(100) NULL COMMENT '事件名称(消息事件使用)' AFTER `event_type`,
ADD COLUMN `attached_to_node_code` varchar(100) NULL COMMENT '边界事件附着的任务节点编码' AFTER `event_name`,
ADD COLUMN `interrupting` tinyint(1) NULL COMMENT '边界事件是否中断型' AFTER `attached_to_node_code`;
ALTER TABLE `flow_his_task`
ADD COLUMN `node_config` text NULL COMMENT '节点配置(服务任务、事件等引擎节点配置json)' AFTER `ext`;
-- 3. 实例、任务和协作状态改用独立的字符串编码
ALTER TABLE `flow_instance`
MODIFY COLUMN `flow_status` varchar(20) NOT NULL COMMENT '实例状态(draft waiting termination invalid cancel finish back restart)';
ALTER TABLE `flow_task`
MODIFY COLUMN `flow_status` varchar(20) NOT NULL COMMENT '任务状态(pending pass auto_pass back invalid take_back copy)';
ALTER TABLE `flow_his_task`
MODIFY COLUMN `flow_status` varchar(20) NOT NULL COMMENT '任务状态(pending pass auto_pass back invalid take_back copy;撤回归档为 cancel)',
MODIFY COLUMN `cooperate_type` varchar(20) NOT NULL DEFAULT 'none' COMMENT '协作方式(none transfer delegate add_signer remove_signer)';
ALTER TABLE `flow_user`
MODIFY COLUMN `type` char(1) NOT NULL COMMENT '人员类型(1审批人 2转办人 3委托人 4抄送人)',
MODIFY COLUMN `associated` bigint NOT NULL COMMENT '关联id(待办任务id;抄送人记录为 flow_his_task.id)';
-- 旧数字码只在命中时转换,已经使用新编码的数据不会改变
UPDATE flow_instance SET flow_status = CASE flow_status
WHEN '0' THEN 'draft' WHEN '1' THEN 'waiting' WHEN '4' THEN 'termination'
WHEN '5' THEN 'invalid' WHEN '6' THEN 'cancel' WHEN '7' THEN 'waiting'
WHEN '8' THEN 'finish' WHEN '9' THEN 'back' WHEN '12' THEN 'restart'
WHEN '13' THEN 'draft' END
WHERE flow_status IN ('0', '1', '4', '5', '6', '7', '8', '9', '12', '13');
UPDATE flow_task SET flow_status = CASE flow_status
WHEN '1' THEN 'pending' WHEN '2' THEN 'pass' WHEN '8' THEN 'pass'
WHEN '9' THEN 'back' WHEN '10' THEN 'invalid' WHEN '11' THEN 'take_back' END
WHERE flow_status IN ('1', '2', '8', '9', '10', '11');
UPDATE flow_his_task SET flow_status = CASE flow_status
WHEN '1' THEN 'pending' WHEN '2' THEN 'pass' WHEN '8' THEN 'pass'
WHEN '9' THEN 'back' WHEN '10' THEN 'invalid' WHEN '11' THEN 'take_back' END
WHERE flow_status IN ('1', '2', '8', '9', '10', '11');
UPDATE flow_his_task SET cooperate_type = CASE cooperate_type
WHEN '0' THEN 'none' WHEN '1' THEN 'none' WHEN '2' THEN 'transfer'
WHEN '3' THEN 'delegate' WHEN '4' THEN 'none' WHEN '5' THEN 'none'
WHEN '6' THEN 'add_signer' WHEN '7' THEN 'remove_signer' END
WHERE cooperate_type IN ('0', '1', '2', '3', '4', '5', '6', '7');
-- 4. 任务状态字典改为引擎 TaskStatus 的 7 个码,外加撤回归档留痕的 cancel
DELETE FROM sys_dict_data WHERE dict_type = 'wf_task_status';
INSERT INTO sys_dict_data VALUES (1761600000000000060, 1, '待审批', 'pending', 'wf_task_status', '', 'primary', 'N', 1761000000000000103, 1761100000000000001, sysdate(), NULL, NULL, '待审批');
INSERT INTO sys_dict_data VALUES (1761600000000000049, 2, '通过', 'pass', 'wf_task_status', '', 'success', 'N', 1761000000000000103, 1761100000000000001, sysdate(), NULL, NULL, '通过');
@ -29,10 +80,10 @@ INSERT INTO sys_dict_data VALUES (1761600000000000067, 12, '减签', 'remove_sig
-- add_signer / remove_signer),timeout 是 flow_event_wait 的状态,都不是任务状态。
-- take_back 目前没有写入方,是留给「拿回」功能的占位,别当冗余删掉。
-- 3. 实例状态字典补 restart(引擎 FlowStatus 有,字典缺)
-- 5. 实例状态字典补 restart(引擎 FlowStatus 有,字典缺)
INSERT INTO sys_dict_data VALUES (1761600000000000063, 8, '重启', 'restart', 'wf_business_status', '', 'info', 'N', 1761000000000000103, 1761100000000000001, sysdate(), NULL, NULL, '重启');
-- 4. 事件等待表:定时 / 消息等需要「等待」的事件统一落在此表(与全量脚本一致)。
-- 6. 事件等待表:定时 / 消息等需要「等待」的事件统一落在此表(与全量脚本一致)。
-- 6.0.0 存量库没有这张表,不建表则定时器与定时任务页面全部不可用
-- 注意:建表后还需在 application.yml 打开 warm-flow.timer-enabled: true,引擎才会扫描本表
CREATE TABLE IF NOT EXISTS `flow_event_wait`
@ -73,7 +124,7 @@ CREATE TABLE IF NOT EXISTS `flow_event_wait`
KEY `event_wait_def_node_status` (`definition_id`, `node_code`, `status`) USING BTREE
) ENGINE = InnoDB COMMENT ='事件等待表';
-- 5. 「流程监控」下补「定时任务」菜单 + 查询/手动补发按钮(与 script/sql/ry_workflow.sql 全量脚本一致)
-- 7. 「流程监控」下补「定时任务」菜单 + 查询/手动补发按钮(与 script/sql/ry_workflow.sql 全量脚本一致)
-- 先删后插保证可重复执行;重新执行后记得给角色重新勾选按钮权限
DELETE FROM sys_menu WHERE menu_id IN (1761400000000011901, 1761400000000011902, 1761400000000011903);
insert into sys_menu values (1761400000000011901, '定时任务', 1761400000000011630, 3, 'timer', 'workflow/timer/index', '', 'N', 'N', 'C', '0', '0', 'workflow:eventWait:list', 'time', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '定时任务与事件等待监控菜单');