/* 任务调度模块数据库结构 业务域:SnailJob任务调度相关表 包含表:sj_distributed_lock, sj_group_config, sj_namespace_config, sj_notify_config, sj_retry_dead_letter, sj_retry_summary, sj_retry_task, sj_retry_task_log, sj_server_node, sj_system_user_permission, sj_workflow_node, sj_workflow_task_batch 创建时间:2025-01-08 维护人员:项目开发团队 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for sj_distributed_lock -- ---------------------------- DROP TABLE IF EXISTS `sj_distributed_lock`; CREATE TABLE `sj_distributed_lock` ( `name` varchar(64) NOT NULL COMMENT '锁名称', `lock_until` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '锁定时长', `locked_at` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '锁定时间', `locked_by` varchar(255) NOT NULL COMMENT '锁定者', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='锁定表'; -- ---------------------------- -- Table structure for sj_group_config -- ---------------------------- DROP TABLE IF EXISTS `sj_group_config`; CREATE TABLE `sj_group_config` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id', `group_name` varchar(64) NOT NULL COMMENT '组名称', `description` varchar(256) DEFAULT NULL COMMENT '描述', `group_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '组状态 0、关闭 1、开启', `version` int(11) NOT NULL DEFAULT '1' COMMENT '版本号', `group_partition` int(11) DEFAULT '0' COMMENT '分区', `init_scene` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否初始化场景 0、关闭 1、开启', `bucket_index` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'bucket索引', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_namespace_group_partition` (`namespace_id`,`group_name`,`group_partition`), KEY `idx_namespace_id` (`namespace_id`), KEY `idx_group_name` (`group_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='组配置'; -- ---------------------------- -- Table structure for sj_namespace_config -- ---------------------------- DROP TABLE IF EXISTS `sj_namespace_config`; CREATE TABLE `sj_namespace_config` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(64) NOT NULL COMMENT '命名空间名称', `unique_id` varchar(64) NOT NULL COMMENT '唯一id', `description` varchar(256) DEFAULT NULL COMMENT '描述', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_unique_id` (`unique_id`), UNIQUE KEY `uk_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='命名空间'; -- ---------------------------- -- Table structure for sj_notify_config -- ---------------------------- DROP TABLE IF EXISTS `sj_notify_config`; CREATE TABLE `sj_notify_config` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '命名空间id', `group_name` varchar(64) NOT NULL DEFAULT '' COMMENT '组名称', `business_id` varchar(64) NOT NULL COMMENT '业务id', `notify_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '通知状态 0、关闭 1、开启', `notify_type` tinyint(4) NOT NULL COMMENT '通知类型', `notify_attribute` text NOT NULL COMMENT '配置属性', `notify_threshold` int(11) DEFAULT '100' COMMENT '通知阈值', `notify_scene` tinyint(4) NOT NULL COMMENT '通知场景', `rate_limiter_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '限流状态 0、关闭 1、开启', `rate_limiter_threshold` int(11) NOT NULL DEFAULT '20' COMMENT '限流阈值', `description` varchar(256) DEFAULT '' COMMENT '描述', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_namespace_group_business_type_scene` (`namespace_id`,`group_name`,`business_id`,`notify_type`,`notify_scene`), KEY `idx_namespace_id` (`namespace_id`), KEY `idx_group_name` (`group_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知配置'; -- ---------------------------- -- Table structure for sj_retry_dead_letter -- ---------------------------- DROP TABLE IF EXISTS `sj_retry_dead_letter`; CREATE TABLE `sj_retry_dead_letter` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id', `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一', `group_name` varchar(64) NOT NULL COMMENT '组名称', `scene_name` varchar(64) NOT NULL COMMENT '场景名称', `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id', `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号', `executor_name` varchar(512) NOT NULL COMMENT '执行器名称', `args_str` text COMMENT '执行方法参数', `ext_attrs` varchar(256) DEFAULT '' COMMENT '扩展字段', `task_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务类型 1、重试数据 2、回调数据', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_namespace_group_scene_idempotent` (`namespace_id`,`group_name`,`scene_name`,`idempotent_id`), KEY `idx_namespace_id` (`namespace_id`), KEY `idx_group_name` (`group_name`), KEY `idx_scene_name` (`scene_name`), KEY `idx_create_dt` (`create_dt`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='死信队列'; -- ---------------------------- -- Table structure for sj_retry_summary -- ---------------------------- DROP TABLE IF EXISTS `sj_retry_summary`; CREATE TABLE `sj_retry_summary` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id', `group_name` varchar(64) NOT NULL COMMENT '组名称', `scene_name` varchar(64) NOT NULL COMMENT '场景名称', `trigger_date` date NOT NULL COMMENT '统计日期', `running_num` int(11) NOT NULL DEFAULT '0' COMMENT '重试中', `finish_num` int(11) NOT NULL DEFAULT '0' COMMENT '重试完成数量', `max_count_num` int(11) NOT NULL DEFAULT '0' COMMENT '重试到达最大次数', `suspend_num` int(11) NOT NULL DEFAULT '0' COMMENT '暂停数量', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_namespace_group_scene_date` (`namespace_id`,`group_name`,`scene_name`,`trigger_date`), KEY `idx_namespace_id` (`namespace_id`), KEY `idx_group_name` (`group_name`), KEY `idx_scene_name` (`scene_name`), KEY `idx_trigger_date` (`trigger_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务重试汇总统计表'; -- ---------------------------- -- Table structure for sj_retry_task -- ---------------------------- DROP TABLE IF EXISTS `sj_retry_task`; CREATE TABLE `sj_retry_task` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id', `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一', `group_name` varchar(64) NOT NULL COMMENT '组名称', `scene_name` varchar(64) NOT NULL COMMENT '场景名称', `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id', `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号', `executor_name` varchar(512) NOT NULL COMMENT '执行器名称', `args_str` text COMMENT '执行方法参数', `ext_attrs` varchar(256) DEFAULT '' COMMENT '扩展字段', `next_trigger_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下次触发时间', `retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '重试次数', `retry_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '重试状态 0、重试中 1、成功 2、最大次数', `task_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务类型 1、重试数据 2、回调数据', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_namespace_group_scene_idempotent` (`namespace_id`,`group_name`,`scene_name`,`idempotent_id`), KEY `idx_namespace_id` (`namespace_id`), KEY `idx_group_name` (`group_name`), KEY `idx_scene_name` (`scene_name`), KEY `idx_next_trigger_at` (`next_trigger_at`), KEY `idx_retry_status` (`retry_status`), KEY `idx_create_dt` (`create_dt`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务信息'; -- ---------------------------- -- Table structure for sj_retry_task_log -- ---------------------------- DROP TABLE IF EXISTS `sj_retry_task_log`; CREATE TABLE `sj_retry_task_log` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id', `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一', `group_name` varchar(64) NOT NULL COMMENT '组名称', `scene_name` varchar(64) NOT NULL COMMENT '场景名称', `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id', `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号', `executor_name` varchar(512) NOT NULL COMMENT '执行器名称', `args_str` text COMMENT '执行方法参数', `ext_attrs` varchar(256) DEFAULT '' COMMENT '扩展字段', `retry_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '重试状态 0、重试中 1、成功 2、最大次数', `task_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务类型 1、重试数据 2、回调数据', `real_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '真实触发时间', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), KEY `idx_namespace_id` (`namespace_id`), KEY `idx_group_name` (`group_name`), KEY `idx_scene_name` (`scene_name`), KEY `idx_idempotent_id` (`idempotent_id`), KEY `idx_create_dt` (`create_dt`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='重试日志'; -- ---------------------------- -- Table structure for sj_server_node -- ---------------------------- DROP TABLE IF EXISTS `sj_server_node`; CREATE TABLE `sj_server_node` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id', `group_name` varchar(64) NOT NULL COMMENT '组名称', `host_id` varchar(64) NOT NULL COMMENT '主机id', `host_ip` varchar(64) NOT NULL COMMENT '主机ip', `host_port` int(11) NOT NULL COMMENT '主机端口', `expire_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间', `node_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '节点类型 1、客户端 2、服务端', `ext_attrs` varchar(256) DEFAULT '' COMMENT '扩展字段', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_namespace_group_host` (`namespace_id`,`group_name`,`host_id`), KEY `idx_namespace_id` (`namespace_id`), KEY `idx_group_name` (`group_name`), KEY `idx_expire_at` (`expire_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务器节点'; -- ---------------------------- -- Table structure for sj_system_user_permission -- ---------------------------- DROP TABLE IF EXISTS `sj_system_user_permission`; CREATE TABLE `sj_system_user_permission` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `group_name` varchar(64) NOT NULL COMMENT '组名称', `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), KEY `idx_group_name` (`group_name`), KEY `idx_namespace_id` (`namespace_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户权限表'; -- ---------------------------- -- Table structure for sj_workflow_node -- ---------------------------- DROP TABLE IF EXISTS `sj_workflow_node`; CREATE TABLE `sj_workflow_node` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id', `workflow_id` bigint(20) unsigned NOT NULL COMMENT '工作流id', `node_name` varchar(64) NOT NULL COMMENT '节点名称', `node_type` tinyint(4) NOT NULL COMMENT '节点类型 1、任务节点 2、条件节点 3、回调节点', `job_id` bigint(20) unsigned DEFAULT NULL COMMENT '关联的任务id', `expression_type` tinyint(4) DEFAULT NULL COMMENT '表达式类型 1、SpEL 2、Aviator 3、QL', `expression` varchar(256) DEFAULT NULL COMMENT '条件节点的表达式', `fail_strategy` tinyint(4) NOT NULL DEFAULT '1' COMMENT '失败策略 1、跳过 2、阻塞', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), KEY `idx_workflow_id` (`workflow_id`), KEY `idx_namespace_id` (`namespace_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工作流节点'; -- ---------------------------- -- Table structure for sj_workflow_task_batch -- ---------------------------- DROP TABLE IF EXISTS `sj_workflow_task_batch`; CREATE TABLE `sj_workflow_task_batch` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL COMMENT '命名空间id', `workflow_id` bigint(20) unsigned NOT NULL COMMENT '工作流id', `task_batch_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '任务批次状态 0、运行中 1、成功 2、失败 3、取消 4、暂停', `operation_reason` tinyint(4) NOT NULL DEFAULT '0' COMMENT '操作原因 0、系统触发 1、人工操作', `workflow_task_batch_id` bigint(20) unsigned NOT NULL COMMENT '工作流任务批次id', `execution_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '执行时间', `flow_info` text COMMENT '流程信息', `ext_attrs` varchar(256) DEFAULT NULL COMMENT '扩展字段', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除', PRIMARY KEY (`id`), KEY `idx_workflow_id` (`workflow_id`), KEY `idx_namespace_id` (`namespace_id`), KEY `idx_execution_at` (`execution_at`), KEY `idx_task_batch_status` (`task_batch_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工作流任务批次'; SET FOREIGN_KEY_CHECKS = 1;