erp-java/services/scheduled-task-service/doc/README.md

89 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- =============================================
-- 定时任务调度服务 - 数据库初始化脚本
-- =============================================
-- 创建数据库
CREATE DATABASE IF NOT EXISTS erp_task DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE erp_task;
-- 定时任务表
CREATE TABLE IF NOT EXISTS scheduled_task (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '任务ID',
task_name VARCHAR(100) NOT NULL COMMENT '任务名称',
description VARCHAR(500) COMMENT '任务描述',
task_group VARCHAR(50) NOT NULL COMMENT '任务分组',
cron_expression VARCHAR(100) NOT NULL COMMENT 'Cron表达式',
task_class VARCHAR(500) NOT NULL COMMENT '任务类名或Bean名称',
method_name VARCHAR(100) COMMENT '任务方法名',
task_params TEXT COMMENT '任务参数(JSON格式)',
status VARCHAR(20) NOT NULL DEFAULT 'DRAFT' COMMENT '任务状态: RUNNING/STOPPED/PAUSED/DRAFT/DELETED/ERROR',
concurrent BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否允许并发',
sync BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否同步执行',
task_type VARCHAR(20) NOT NULL DEFAULT 'BEAN' COMMENT '任务类型: BEAN/CLASS/XXL_JOB',
xxl_job_id BIGINT COMMENT 'XXL-Job任务ID(兼容模式)',
max_retries INT NOT NULL DEFAULT 3 COMMENT '最大重试次数',
retry_interval INT NOT NULL DEFAULT 60 COMMENT '重试间隔(秒)',
timeout INT COMMENT '超时时间(秒)',
alert_emails VARCHAR(500) COMMENT '告警邮箱(逗号分隔)',
alert_phones VARCHAR(200) COMMENT '告警手机号(逗号分隔)',
alert_enabled BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否启用告警',
misfire_policy VARCHAR(20) DEFAULT 'DO_NOTHING' COMMENT 'Misfire策略: DO_NOTHING/FIRE_NOW/FIRE_ONCE',
next_fire_time DATETIME COMMENT '下次执行时间',
prev_fire_time DATETIME COMMENT '上次执行时间',
execute_count BIGINT NOT NULL DEFAULT 0 COMMENT '执行次数',
owner VARCHAR(50) COMMENT '负责人',
remark VARCHAR(500) COMMENT '备注',
tenant_id VARCHAR(50) COMMENT '租户ID',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
created_by VARCHAR(50) COMMENT '创建人',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
updated_by VARCHAR(50) COMMENT '更新人',
INDEX idx_task_name (task_name),
INDEX idx_task_group (task_group),
INDEX idx_task_status (status),
INDEX idx_cron (cron_expression),
UNIQUE KEY uk_name_group (task_name, task_group)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='定时任务表';
-- 任务执行日志表
CREATE TABLE IF NOT EXISTS task_execution_log (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '记录ID',
task_id BIGINT NOT NULL COMMENT '任务ID',
task_name VARCHAR(100) NOT NULL COMMENT '任务名称',
task_group VARCHAR(50) COMMENT '任务分组',
batch_no VARCHAR(64) NOT NULL COMMENT '执行批次号',
trigger_time DATETIME NOT NULL COMMENT '触发时间',
start_time DATETIME COMMENT '开始时间',
end_time DATETIME COMMENT '结束时间',
status VARCHAR(20) NOT NULL COMMENT '执行状态: RUNNING/SUCCESS/FAILED/RETRYING/TIMEOUT/CANCELLED',
duration BIGINT COMMENT '执行耗时(毫秒)',
executor_node VARCHAR(50) COMMENT '执行节点IP',
result TEXT COMMENT '执行结果',
error_trace TEXT COMMENT '错误堆栈',
retry_count INT NOT NULL DEFAULT 0 COMMENT '重试次数',
is_retry BOOLEAN DEFAULT FALSE COMMENT '是否重试执行',
task_params TEXT COMMENT '任务参数',
tenant_id VARCHAR(50) COMMENT '租户ID',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_log_task_id (task_id),
INDEX idx_log_status (status),
INDEX idx_log_start_time (start_time),
INDEX idx_log_trigger_time (trigger_time),
INDEX idx_batch_no (batch_no)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务执行日志表';
-- Quartz相关表 (如果使用JDBC存储)
-- 这些表由Quartz自动创建这里只是预留
-- CREATE TABLE QRTZ_JOB_DETAILS (...) ENGINE=InnoDB;
-- CREATE TABLE QRTZ_TRIGGERS (...) ENGINE=InnoDB;
-- CREATE TABLE QRTZ_CRON_TRIGGERS (...) ENGINE=InnoDB;
-- 初始化示例数据
INSERT INTO scheduled_task (task_name, description, task_group, cron_expression, task_class, method_name, task_type, status, max_retries, alert_enabled, owner) VALUES
('数据同步任务', '每日凌晨同步业务数据', 'sync', '0 0 2 * * ?', 'dataSyncTask', 'execute', 'BEAN', 'STOPPED', 3, TRUE, 'admin'),
('报表生成任务', '每周一生成周报', 'report', '0 0 8 ? * MON', 'reportTask', 'generate', 'BEAN', 'STOPPED', 2, TRUE, 'admin'),
('缓存清理任务', '每小时清理过期缓存', 'system', '0 0 * * * ?', 'cacheCleanTask', 'clean', 'BEAN', 'RUNNING', 1, FALSE, 'system');