Browse Source

!511 update 更新EasyRetry v3.1.1 => v3.2.0 更新数据库sql脚本,添加表前缀er_支持
Merge pull request !511 from 秋辞未寒/dev_easyretry

疯狂的狮子Li 1 năm trước cách đây
mục cha
commit
8677f78a56

+ 1 - 1
pom.xml

@@ -35,7 +35,7 @@
         <dynamic-ds.version>4.3.0</dynamic-ds.version>
         <alibaba-ttl.version>2.14.4</alibaba-ttl.version>
         <powerjob.version>4.3.6</powerjob.version>
-        <easyretry.version>3.1.1</easyretry.version>
+        <easyretry.version>3.2.0</easyretry.version>
         <mapstruct-plus.version>1.3.6</mapstruct-plus.version>
         <mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version>
         <lombok.version>1.18.30</lombok.version>

+ 0 - 3
ruoyi-extend/ruoyi-easyretry-server/src/main/resources/application-dev.yml

@@ -1,6 +1,3 @@
-easy-retry:
-  # 当前使用的数据库类型
-  db-type: mysql
 spring:
   datasource:
     type: com.zaxxer.hikari.HikariDataSource

+ 0 - 3
ruoyi-extend/ruoyi-easyretry-server/src/main/resources/application-prod.yml

@@ -1,6 +1,3 @@
-easy-retry:
-  # 当前使用的数据库类型
-  db-type: mysql
 spring:
   datasource:
     type: com.zaxxer.hikari.HikariDataSource

+ 1 - 0
ruoyi-extend/ruoyi-easyretry-server/src/main/resources/application.yml

@@ -16,6 +16,7 @@ mybatis-plus:
   typeAliasesPackage: com.aizuda.easy.retry.template.datasource.persistence.po
   global-config:
     db-config:
+      table-prefix: er_
       where-strategy: NOT_EMPTY
       capital-mode: false
       logic-delete-value: 1

+ 1 - 1
ruoyi-extend/ruoyi-easyretry-server/src/main/resources/logback-plus.xml

@@ -79,7 +79,7 @@
     </appender>
 
     <!-- EasyRetry appender -->
-    <appender name="easy_log_server_appender" class="com.aizuda.easy.retry.server.job.task.support.appender.EasyRetryServerLogbackAppender">
+    <appender name="easy_log_server_appender" class="com.aizuda.easy.retry.server.common.appender.EasyRetryServerLogbackAppender">
     </appender>
 
     <!-- 控制台输出日志级别 -->

+ 53 - 71
script/sql/easy_retry.sql

@@ -1,7 +1,6 @@
 SET NAMES utf8mb4;
 
-DROP TABLE IF EXISTS `namespace`;
-CREATE TABLE `namespace`
+CREATE TABLE `er_namespace`
 (
     `id`          bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `name`        varchar(64)         NOT NULL COMMENT '名称',
@@ -16,16 +15,17 @@ CREATE TABLE `namespace`
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='命名空间';
 
-INSERT INTO `namespace` VALUES (1, 'Development', 'dev', '', now(), now(), 0);
-INSERT INTO `namespace` VALUES (2, 'Production', 'prod', '', now(), now(), 0);
+INSERT INTO `er_namespace` VALUES (1, 'Development', 'dev', '', now(), now(), 0);
+INSERT INTO `er_namespace` VALUES (2, 'Production', 'prod', '', now(), now(), 0);
 
-DROP TABLE IF EXISTS `group_config`;
-CREATE TABLE `group_config`
+
+CREATE TABLE `er_group_config`
 (
     `id`                bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`      varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
     `group_name`        varchar(64)         NOT NULL DEFAULT '' COMMENT '组名称',
     `description`       varchar(256)        NOT NULL DEFAULT '' COMMENT '组描述',
+    `token`             varchar(64)        NOT NULL DEFAULT 'ER_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT' COMMENT 'token',
     `group_status`      tinyint(4)          NOT NULL DEFAULT '0' COMMENT '组状态 0、未启用 1、启用',
     `version`           int(11)             NOT NULL COMMENT '版本号',
     `group_partition`   int(11)             NOT NULL COMMENT '分区',
@@ -41,10 +41,10 @@ CREATE TABLE `group_config`
   DEFAULT CHARSET = utf8mb4 COMMENT ='组配置'
 ;
 
-INSERT INTO `group_config` VALUES (1, 'dev', 'ruoyi_group', '', 1, 1, 0, 1, 1, 4, now(), now());
+INSERT INTO `er_group_config` VALUES (1, 'dev', 'ruoyi_group', '', 'ER_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now());
+
 
-DROP TABLE IF EXISTS `notify_config`;
-CREATE TABLE `notify_config`
+CREATE TABLE `er_notify_config`
 (
     `id`                     bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`           varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -67,8 +67,7 @@ CREATE TABLE `notify_config`
   DEFAULT CHARSET = utf8mb4 COMMENT ='通知配置'
 ;
 
-DROP TABLE IF EXISTS `retry_dead_letter_0`;
-CREATE TABLE `retry_dead_letter_0`
+CREATE TABLE `er_retry_dead_letter_0`
 (
     `id`            bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`  varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -93,8 +92,7 @@ CREATE TABLE `retry_dead_letter_0`
   DEFAULT CHARSET = utf8mb4 COMMENT ='死信队列表'
 ;
 
-DROP TABLE IF EXISTS `retry_task_0`;
-CREATE TABLE `retry_task_0`
+CREATE TABLE `er_retry_task_0`
 (
     `id`              bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`    varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -125,8 +123,7 @@ CREATE TABLE `retry_task_0`
   DEFAULT CHARSET = utf8mb4 COMMENT ='任务表'
 ;
 
-DROP TABLE IF EXISTS `retry_task_log`;
-CREATE TABLE `retry_task_log`
+CREATE TABLE `er_retry_task_log`
 (
     `id`            bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`  varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -141,6 +138,7 @@ CREATE TABLE `retry_task_log`
     `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`),
     KEY `idx_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
     KEY `idx_retry_status` (`retry_status`),
@@ -153,16 +151,16 @@ CREATE TABLE `retry_task_log`
   DEFAULT CHARSET = utf8mb4 COMMENT ='任务日志基础信息表'
 ;
 
-DROP TABLE IF EXISTS `retry_task_log_message`;
-CREATE TABLE `retry_task_log_message`
+CREATE TABLE `er_retry_task_log_message`
 (
     `id`           bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id` varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
     `group_name`   varchar(64)         NOT NULL COMMENT '组名称',
     `unique_id`    varchar(64)         NOT NULL COMMENT '同组下id唯一',
     `create_dt`    datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    `message`      text                NOT NULL COMMENT '异常信息',
-    `client_info`  varchar(128)                 DEFAULT NULL COMMENT '客户端地址 clientId#ip:port',
+    `message`      longtext                NOT NULL COMMENT '异常信息',
+    `log_num`      int(11)             NOT NULL DEFAULT 1 COMMENT '日志数量',
+    `real_time`    bigint(13)          NOT NULL DEFAULT 0 COMMENT '上报时间',
     PRIMARY KEY (`id`),
     KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `unique_id`),
     KEY `idx_create_dt` (`create_dt`)
@@ -171,8 +169,7 @@ CREATE TABLE `retry_task_log_message`
   DEFAULT CHARSET = utf8mb4 COMMENT ='任务调度日志信息记录表'
 ;
 
-DROP TABLE IF EXISTS `scene_config`;
-CREATE TABLE `scene_config`
+CREATE TABLE `er_scene_config`
 (
     `id`               bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`     varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -195,8 +192,7 @@ CREATE TABLE `scene_config`
   DEFAULT CHARSET = utf8mb4 COMMENT ='场景配置'
 ;
 
-DROP TABLE IF EXISTS `server_node`;
-CREATE TABLE `server_node`
+CREATE TABLE `er_server_node`
 (
     `id`           bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id` varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -219,8 +215,7 @@ CREATE TABLE `server_node`
   DEFAULT CHARSET = utf8mb4 COMMENT ='服务器节点'
 ;
 
-DROP TABLE IF EXISTS `distributed_lock`;
-CREATE TABLE `distributed_lock`
+CREATE TABLE `er_distributed_lock`
 (
     `id`         bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `name`       varchar(64)         NOT NULL COMMENT '锁名称',
@@ -236,8 +231,7 @@ CREATE TABLE `distributed_lock`
   DEFAULT CHARSET = utf8mb4 COMMENT ='锁定表'
 ;
 
-DROP TABLE IF EXISTS `system_user`;
-CREATE TABLE `system_user`
+CREATE TABLE `er_system_user`
 (
     `id`        bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `username`  varchar(64)         NOT NULL COMMENT '账号',
@@ -251,10 +245,9 @@ CREATE TABLE `system_user`
   DEFAULT CHARSET = utf8mb4 COMMENT ='系统用户表';
 
 -- pwd: admin
-INSERT INTO `system_user` VALUES (1, 'admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2, now(), now());
+INSERT INTO `er_system_user` VALUES (1, 'admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2, now(), now());
 
-DROP TABLE IF EXISTS `system_user_permission`;
-CREATE TABLE `system_user_permission`
+CREATE TABLE `er_system_user_permission`
 (
     `id`             bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `group_name`     varchar(64)         NOT NULL COMMENT '组名称',
@@ -267,8 +260,7 @@ CREATE TABLE `system_user_permission`
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='系统用户权限表';
 
-DROP TABLE IF EXISTS `sequence_alloc`;
-CREATE TABLE `sequence_alloc`
+CREATE TABLE `er_sequence_alloc`
 (
     `id`           bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id` varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -282,8 +274,7 @@ CREATE TABLE `sequence_alloc`
   DEFAULT CHARSET = utf8mb4 COMMENT ='号段模式序号ID分配表';
 
 -- 分布式调度DDL
-DROP TABLE IF EXISTS `job`;
-CREATE TABLE `job`
+CREATE TABLE `er_job`
 (
     `id`               bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`     varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -319,10 +310,7 @@ CREATE TABLE `job`
   AUTO_INCREMENT = 0
   DEFAULT CHARSET = utf8mb4 COMMENT ='任务信息';
 
-INSERT INTO `job` VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', '', now(), now(), 0);
-
-DROP TABLE IF EXISTS `job_log_message`;
-CREATE TABLE `job_log_message`
+CREATE TABLE `er_job_log_message`
 (
     `id`            bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`  varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -343,8 +331,7 @@ CREATE TABLE `job_log_message`
   AUTO_INCREMENT = 0
   DEFAULT CHARSET = utf8mb4 COMMENT ='调度日志';
 
-DROP TABLE IF EXISTS `job_task`;
-CREATE TABLE `job_task`
+CREATE TABLE `er_job_task`
 (
     `id`             bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`   varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -369,8 +356,7 @@ CREATE TABLE `job_task`
   AUTO_INCREMENT = 0
   DEFAULT CHARSET = utf8mb4 COMMENT ='任务实例';
 
-DROP TABLE IF EXISTS `job_task_batch`;
-CREATE TABLE `job_task_batch`
+CREATE TABLE `er_job_task_batch`
 (
     `id`                      bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`            varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -392,13 +378,12 @@ CREATE TABLE `job_task_batch`
     KEY `idx_job_id_task_batch_status` (`job_id`, `task_batch_status`),
     KEY `idx_create_dt` (`create_dt`),
     KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`),
-    KEY `idx_workflow_task_batch_id_workflow_node_id` (`workflow_task_batch_id`,`workflow_node_id`)
+    KEY `idx_workflow_task_batch_id_workflow_node_id` (`workflow_task_batch_id`, `workflow_node_id`)
 ) ENGINE = InnoDB
   AUTO_INCREMENT = 0
   DEFAULT CHARSET = utf8mb4 COMMENT ='任务批次';
 
-DROP TABLE IF EXISTS `job_notify_config`;
-CREATE TABLE `job_notify_config`
+CREATE TABLE `er_job_notify_config`
 (
     `id`                     bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`           varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -420,32 +405,31 @@ CREATE TABLE `job_notify_config`
   AUTO_INCREMENT = 4
   DEFAULT CHARSET = utf8mb4 COMMENT ='job通知配置';
 
-DROP TABLE IF EXISTS `job_summary`;
-CREATE TABLE `job_summary`
+CREATE TABLE `er_job_summary`
 (
-    `id`            bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
-    `namespace_id`  VARCHAR(64)     NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
-    `group_name`    VARCHAR(64)     NOT NULL DEFAULT '' COMMENT '组名称',
-    `job_id`        bigint          NOT NULL COMMENT '任务信息id',
-    `trigger_at`    datetime        NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '统计时间',
-    `success_num`   int             NOT NULL DEFAULT '0' COMMENT '执行成功-日志数量',
-    `fail_num`      int             NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量',
-    `fail_reason`   varchar(512)    NOT NULL DEFAULT '' COMMENT '失败原因',
-    `stop_num`      int             NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量',
-    `stop_reason`   varchar(512)    NOT NULL DEFAULT '' COMMENT '失败原因',
-    `cancel_num`    int             NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量',
-    `cancel_reason` varchar(512)    NOT NULL DEFAULT '' COMMENT '失败原因',
-    `create_dt`     datetime        NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    `update_dt`     datetime        NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+    `id`               bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+    `namespace_id`     VARCHAR(64)     NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
+    `group_name`       VARCHAR(64)     NOT NULL DEFAULT '' COMMENT '组名称',
+    `business_id`      bigint          NOT NULL COMMENT '业务id (job_id或workflow_id)',
+    `system_task_type` tinyint(4)      NOT NULL DEFAULT '3' COMMENT '任务类型 3、JOB任务 4、WORKFLOW任务',
+    `trigger_at`       datetime        NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '统计时间',
+    `success_num`      int             NOT NULL DEFAULT '0' COMMENT '执行成功-日志数量',
+    `fail_num`         int             NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量',
+    `fail_reason`      varchar(512)    NOT NULL DEFAULT '' COMMENT '失败原因',
+    `stop_num`         int             NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量',
+    `stop_reason`      varchar(512)    NOT NULL DEFAULT '' COMMENT '失败原因',
+    `cancel_num`       int             NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量',
+    `cancel_reason`    varchar(512)    NOT NULL 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`),
-    KEY `idx_namespace_id_group_name_job_id` (`namespace_id`, `group_name`, job_id),
-    UNIQUE KEY `uk_job_id_trigger_at` (`job_id`, `trigger_at`) USING BTREE
+    KEY `idx_namespace_id_group_name_business_id` (`namespace_id`, `group_name`, business_id),
+    UNIQUE KEY `uk_trigger_at_system_task_type_business_id` (`trigger_at`, `system_task_type`, `business_id`) USING BTREE
 ) ENGINE = InnoDB
   AUTO_INCREMENT = 1
   DEFAULT CHARSET = utf8mb4 COMMENT ='DashBoard_Job';
 
-DROP TABLE IF EXISTS `retry_summary`;
-CREATE TABLE `retry_summary`
+CREATE TABLE `er_retry_summary`
 (
     `id`            bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`  VARCHAR(64)     NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -459,13 +443,13 @@ CREATE TABLE `retry_summary`
     `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_trigger_at` (`trigger_at`),
     UNIQUE KEY `uk_scene_name_trigger_at` (`namespace_id`, `group_name`, `scene_name`, `trigger_at`) USING BTREE
 ) ENGINE = InnoDB
   AUTO_INCREMENT = 1
   DEFAULT CHARSET = utf8mb4 COMMENT ='DashBoard_Retry';
 
-DROP TABLE IF EXISTS `workflow`;
-CREATE TABLE `workflow`
+CREATE TABLE `er_workflow`
 (
     `id`               bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `workflow_name`    varchar(64)         NOT NULL COMMENT '工作流名称',
@@ -492,8 +476,7 @@ CREATE TABLE `workflow`
   AUTO_INCREMENT = 0
   DEFAULT CHARSET = utf8mb4 COMMENT ='工作流';
 
-DROP TABLE IF EXISTS `workflow_node`;
-CREATE TABLE `workflow_node`
+CREATE TABLE `er_workflow_node`
 (
     `id`                   bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`         varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
@@ -519,8 +502,7 @@ CREATE TABLE `workflow_node`
   AUTO_INCREMENT = 0
   DEFAULT CHARSET = utf8mb4 COMMENT ='工作流节点';
 
-DROP TABLE IF EXISTS `workflow_task_batch`;
-CREATE TABLE `workflow_task_batch`
+CREATE TABLE `er_workflow_task_batch`
 (
     `id`                bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`      varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',

+ 825 - 0
script/sql/oracle/easy_retry_oracle.sql

@@ -0,0 +1,825 @@
+-- Oracle DDL
+
+-- er_namespace
+CREATE TABLE er_namespace
+(
+    id          NUMBER GENERATED ALWAYS AS IDENTITY,
+    name        VARCHAR2(64) NOT NULL,
+    unique_id   VARCHAR2(64) NOT NULL,
+    description VARCHAR2(256) DEFAULT '',
+    create_dt   TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt   TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    deleted     SMALLINT      DEFAULT 0
+);
+
+CREATE UNIQUE INDEX uk_namespace_1 ON namespace (unique_id);
+
+COMMENT ON TABLE namespace IS '命名空间';
+COMMENT ON COLUMN namespace.id IS '主键';
+COMMENT ON COLUMN namespace.name IS '名称';
+COMMENT ON COLUMN namespace.unique_id IS '唯一id';
+COMMENT ON COLUMN namespace.description IS '描述';
+COMMENT ON COLUMN namespace.create_dt IS '创建时间';
+COMMENT ON COLUMN namespace.update_dt IS '修改时间';
+COMMENT ON COLUMN namespace.deleted IS '逻辑删除 1、删除';
+
+INSERT INTO er_namespace VALUES (1, 'Development', 'dev', '', sysdate, sysdate, 0);
+INSERT INTO er_namespace VALUES (2, 'Production', 'prod', '', sysdate, sysdate, 0);
+
+-- er_group_config
+CREATE TABLE er_group_config
+(
+    id                NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id      VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name        VARCHAR2(64) NOT NULL,
+    description       VARCHAR2(256) DEFAULT '',
+    token             VARCHAR2(64)  DEFAULT 'ER_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT',
+    group_status      SMALLINT      DEFAULT 0,
+    version           INT          NOT NULL,
+    group_partition   INT          NOT NULL,
+    id_generator_mode SMALLINT      DEFAULT 1,
+    init_scene        SMALLINT      DEFAULT 0,
+    bucket_index      INT           DEFAULT 0,
+    create_dt         TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt         TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_group_config_1 ON group_config (namespace_id, group_name);
+
+COMMENT ON TABLE group_config IS '组配置';
+COMMENT ON COLUMN group_config.id IS '主键';
+COMMENT ON COLUMN group_config.namespace_id IS '命名空间';
+COMMENT ON COLUMN group_config.group_name IS '组名称';
+COMMENT ON COLUMN group_config.description IS '组描述';
+COMMENT ON COLUMN group_config.token IS 'token';
+COMMENT ON COLUMN group_config.group_status IS '组状态 0、未启用 1、启用';
+COMMENT ON COLUMN group_config.version IS '版本号';
+COMMENT ON COLUMN group_config.group_partition IS '分区';
+COMMENT ON COLUMN group_config.id_generator_mode IS '唯一id生成模式 默认号段模式';
+COMMENT ON COLUMN group_config.init_scene IS '是否初始化场景 0:否 1:是';
+COMMENT ON COLUMN group_config.bucket_index IS 'bucket';
+COMMENT ON COLUMN group_config.create_dt IS '创建时间';
+COMMENT ON COLUMN group_config.update_dt IS '修改时间';
+
+INSERT INTO er_group_config VALUES (1, 'dev', 'ruoyi_group', '', 'ER_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, sysdate, sysdate);
+
+-- er_notify_config
+CREATE TABLE er_notify_config
+(
+    id                     NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id           VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name             VARCHAR2(64)  NOT NULL,
+    scene_name             VARCHAR2(64)  NOT NULL,
+    notify_status          SMALLINT      DEFAULT 0,
+    notify_type            SMALLINT      DEFAULT 0,
+    notify_attribute       VARCHAR2(512) NOT NULL,
+    notify_threshold       INT           DEFAULT 0,
+    notify_scene           SMALLINT      DEFAULT 0,
+    rate_limiter_status    SMALLINT      DEFAULT 0,
+    rate_limiter_threshold INT           DEFAULT 0,
+    description            VARCHAR2(256) DEFAULT '',
+    create_dt              TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt              TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE INDEX idx_notify_config_1 ON notify_config (namespace_id, group_name);
+
+COMMENT ON TABLE notify_config IS '通知配置';
+COMMENT ON COLUMN notify_config.id IS '主键';
+COMMENT ON COLUMN notify_config.group_name IS '组名称';
+COMMENT ON COLUMN notify_config.namespace_id IS '命名空间id';
+COMMENT ON COLUMN notify_config.scene_name IS '场景名称';
+COMMENT ON COLUMN notify_config.notify_status IS '通知状态 0、未启用 1、启用';
+COMMENT ON COLUMN notify_config.notify_type IS '通知类型 1、钉钉 2、邮件 3、企业微信';
+COMMENT ON COLUMN notify_config.notify_attribute IS '配置属性';
+COMMENT ON COLUMN notify_config.notify_threshold IS '通知阈值';
+COMMENT ON COLUMN notify_config.notify_scene IS '通知场景';
+COMMENT ON COLUMN notify_config.rate_limiter_status IS '限流状态 0、未启用 1、启用';
+COMMENT ON COLUMN notify_config.rate_limiter_threshold IS '每秒限流阈值';
+COMMENT ON COLUMN notify_config.description IS '描述';
+COMMENT ON COLUMN notify_config.create_dt IS '创建时间';
+COMMENT ON COLUMN notify_config.update_dt IS '修改时间';
+
+-- er_retry_dead_letter
+CREATE TABLE er_retry_dead_letter_0
+(
+    id            NUMBER GENERATED ALWAYS AS IDENTITY,
+    unique_id     VARCHAR2(64) NOT NULL,
+    namespace_id  VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name    VARCHAR2(64) NOT NULL,
+    scene_name    VARCHAR2(64) NOT NULL,
+    idempotent_id VARCHAR2(64) NOT NULL,
+    biz_no        VARCHAR2(64)  DEFAULT '',
+    executor_name VARCHAR2(512) DEFAULT '',
+    args_str      CLOB          DEFAULT '',
+    ext_attrs     CLOB          DEFAULT '',
+    task_type     SMALLINT      DEFAULT 1,
+    create_dt     TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_retry_dead_letter_0_1 ON retry_dead_letter_0 (namespace_id, group_name, unique_id);
+CREATE INDEX idx_retry_dead_letter_0_1 ON retry_dead_letter_0 (namespace_id, group_name, scene_name);
+CREATE INDEX idx_retry_dead_letter_0_2 ON retry_dead_letter_0 (idempotent_id);
+CREATE INDEX idx_retry_dead_letter_0_3 ON retry_dead_letter_0 (biz_no);
+CREATE INDEX idx_retry_dead_letter_0_4 ON retry_dead_letter_0 (create_dt);
+
+COMMENT ON TABLE retry_dead_letter_0 IS '死信队列表';
+COMMENT ON COLUMN retry_dead_letter_0.id IS '主键';
+COMMENT ON COLUMN retry_dead_letter_0.unique_id IS '同组下id唯一';
+COMMENT ON COLUMN retry_dead_letter_0.namespace_id IS '命名空间id';
+COMMENT ON COLUMN retry_dead_letter_0.group_name IS '组名称';
+COMMENT ON COLUMN retry_dead_letter_0.scene_name IS '场景名称';
+COMMENT ON COLUMN retry_dead_letter_0.idempotent_id IS '幂等id';
+COMMENT ON COLUMN retry_dead_letter_0.biz_no IS '业务编号';
+COMMENT ON COLUMN retry_dead_letter_0.executor_name IS '执行器名称';
+COMMENT ON COLUMN retry_dead_letter_0.args_str IS '执行方法参数';
+COMMENT ON COLUMN retry_dead_letter_0.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN retry_dead_letter_0.task_type IS '任务类型 1、重试数据 2、回调数据';
+COMMENT ON COLUMN retry_dead_letter_0.create_dt IS '创建时间';
+
+-- er_retry_task
+CREATE TABLE er_retry_task_0
+(
+    id              NUMBER GENERATED ALWAYS AS IDENTITY,
+    unique_id       VARCHAR2(64) NOT NULL,
+    namespace_id    VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name      VARCHAR2(64) NOT NULL,
+    scene_name      VARCHAR2(64) NOT NULL,
+    idempotent_id   VARCHAR2(64) NOT NULL,
+    biz_no          VARCHAR2(64)  DEFAULT '',
+    executor_name   VARCHAR2(512) DEFAULT '',
+    args_str        CLOB          DEFAULT '',
+    ext_attrs       CLOB          DEFAULT '',
+    next_trigger_at TIMESTAMP    NOT NULL,
+    retry_count     INT           DEFAULT 0,
+    retry_status    SMALLINT      DEFAULT 0,
+    task_type       SMALLINT      DEFAULT 1,
+    create_dt       TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt       TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_retry_task_0_1 ON retry_task_0 (namespace_id, group_name, unique_id);
+CREATE INDEX idx_retry_task_0_1 ON retry_task_0 (namespace_id, group_name, scene_name);
+CREATE INDEX idx_retry_task_0_2 ON retry_task_0 (namespace_id, group_name, retry_status);
+CREATE INDEX idx_retry_task_0_3 ON retry_task_0 (idempotent_id);
+CREATE INDEX idx_retry_task_0_4 ON retry_task_0 (biz_no);
+CREATE INDEX idx_retry_task_0_5 ON retry_task_0 (create_dt);
+
+COMMENT ON TABLE retry_task_0 IS '任务表';
+COMMENT ON COLUMN retry_task_0.id IS '主键';
+COMMENT ON COLUMN retry_task_0.unique_id IS '同组下id唯一';
+COMMENT ON COLUMN retry_task_0.namespace_id IS '命名空间id';
+COMMENT ON COLUMN retry_task_0.group_name IS '组名称';
+COMMENT ON COLUMN retry_task_0.scene_name IS '场景名称';
+COMMENT ON COLUMN retry_task_0.idempotent_id IS '幂等id';
+COMMENT ON COLUMN retry_task_0.biz_no IS '业务编号';
+COMMENT ON COLUMN retry_task_0.executor_name IS '执行器名称';
+COMMENT ON COLUMN retry_task_0.args_str IS '执行方法参数';
+COMMENT ON COLUMN retry_task_0.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN retry_task_0.next_trigger_at IS '下次触发时间';
+COMMENT ON COLUMN retry_task_0.retry_count IS '重试次数';
+COMMENT ON COLUMN retry_task_0.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数';
+COMMENT ON COLUMN retry_task_0.task_type IS '任务类型 1、重试数据 2、回调数据';
+COMMENT ON COLUMN retry_task_0.create_dt IS '创建时间';
+COMMENT ON COLUMN retry_task_0.update_dt IS '修改时间';
+
+-- er_retry_task_log
+CREATE TABLE er_retry_task_log
+(
+    id            NUMBER GENERATED ALWAYS AS IDENTITY,
+    unique_id     VARCHAR2(64) NOT NULL,
+    namespace_id  VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name    VARCHAR2(64) NOT NULL,
+    scene_name    VARCHAR2(64) NOT NULL,
+    idempotent_id VARCHAR2(64) NOT NULL,
+    biz_no        VARCHAR2(64)  DEFAULT '',
+    executor_name VARCHAR2(512) DEFAULT '',
+    args_str      CLOB          DEFAULT '',
+    ext_attrs     CLOB          DEFAULT '',
+    retry_status  SMALLINT      DEFAULT 0,
+    task_type     SMALLINT      DEFAULT 1,
+    create_dt     TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt     TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE INDEX idx_retry_task_log_1 ON retry_task_log (namespace_id, group_name, scene_name);
+CREATE INDEX idx_retry_task_log_2 ON retry_task_log (retry_status);
+CREATE INDEX idx_retry_task_log_3 ON retry_task_log (idempotent_id);
+CREATE INDEX idx_retry_task_log_4 ON retry_task_log (namespace_id, group_name, unique_id);
+CREATE INDEX idx_retry_task_log_5 ON retry_task_log (biz_no);
+CREATE INDEX idx_retry_task_log_6 ON retry_task_log (create_dt);
+
+COMMENT ON TABLE retry_task_log IS '任务日志基础信息表';
+COMMENT ON COLUMN retry_task_log.id IS '主键';
+COMMENT ON COLUMN retry_task_log.namespace_id IS '命名空间id';
+COMMENT ON COLUMN retry_task_log.unique_id IS '同组下id唯一';
+COMMENT ON COLUMN retry_task_log.group_name IS '组名称';
+COMMENT ON COLUMN retry_task_log.scene_name IS '场景名称';
+COMMENT ON COLUMN retry_task_log.idempotent_id IS '幂等id';
+COMMENT ON COLUMN retry_task_log.biz_no IS '业务编号';
+COMMENT ON COLUMN retry_task_log.executor_name IS '执行器名称';
+COMMENT ON COLUMN retry_task_log.args_str IS '执行方法参数';
+COMMENT ON COLUMN retry_task_log.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN retry_task_log.retry_status IS '重试状态 0、重试中 1、成功 2、最大次数';
+COMMENT ON COLUMN retry_task_log.task_type IS '任务类型 1、重试数据 2、回调数据';
+COMMENT ON COLUMN retry_task_log.create_dt IS '创建时间';
+COMMENT ON COLUMN retry_task_log.update_dt IS '修改时间';
+
+-- er_retry_task_log_message
+CREATE TABLE er_retry_task_log_message
+(
+    id           NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name   VARCHAR2(64) NOT NULL,
+    unique_id    VARCHAR2(64) NOT NULL,
+    create_dt    TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    message      CLOB          DEFAULT '',
+    log_num      INT           DEFAULT 1,
+    real_time    NUMERIC(13)   DEFAULT 0
+);
+
+CREATE INDEX idx_retry_task_log_message_1 ON retry_task_log_message (namespace_id, group_name, unique_id);
+CREATE INDEX idx_retry_task_log_message_2 ON retry_task_log_message (create_dt);
+
+COMMENT ON TABLE retry_task_log_message IS '任务调度日志信息记录表';
+COMMENT ON COLUMN retry_task_log_message.id IS '主键';
+COMMENT ON COLUMN retry_task_log_message.namespace_id IS '命名空间';
+COMMENT ON COLUMN retry_task_log_message.group_name IS '组名称';
+COMMENT ON COLUMN retry_task_log_message.unique_id IS '同组下id唯一';
+COMMENT ON COLUMN retry_task_log_message.create_dt IS '创建时间';
+COMMENT ON COLUMN retry_task_log_message.message IS '异常信息';
+COMMENT ON COLUMN retry_task_log_message.log_num IS '日志数量';
+COMMENT ON COLUMN retry_task_log_message.real_time IS '上报时间';
+
+-- er_scene_config
+CREATE TABLE er_scene_config
+(
+    id               NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id     VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    scene_name       VARCHAR2(64) NOT NULL,
+    group_name       VARCHAR2(64) NOT NULL,
+    scene_status     SMALLINT      DEFAULT 0,
+    max_retry_count  INT           DEFAULT 5,
+    back_off         SMALLINT      DEFAULT 1,
+    trigger_interval VARCHAR2(16)  DEFAULT '',
+    deadline_request NUMBER(20)    DEFAULT 60000,
+    route_key        SMALLINT      DEFAULT 4,
+    executor_timeout INT           DEFAULT 5,
+    description      VARCHAR2(256) DEFAULT '',
+    create_dt        TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt        TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_scene_config_1 ON scene_config (namespace_id, group_name, scene_name);
+
+COMMENT ON TABLE scene_config IS '场景配置';
+COMMENT ON COLUMN scene_config.id IS '主键';
+COMMENT ON COLUMN scene_config.namespace_id IS '命名空间id';
+COMMENT ON COLUMN scene_config.scene_name IS '场景名称';
+COMMENT ON COLUMN scene_config.group_name IS '组名称';
+COMMENT ON COLUMN scene_config.scene_status IS '组状态 0、未启用 1、启用';
+COMMENT ON COLUMN scene_config.max_retry_count IS '最大重试次数';
+COMMENT ON COLUMN scene_config.back_off IS '1、默认等级 2、固定间隔时间 3、CRON 表达式';
+COMMENT ON COLUMN scene_config.trigger_interval IS '间隔时长';
+COMMENT ON COLUMN scene_config.deadline_request IS 'Deadline Request 调用链超时 单位毫秒';
+COMMENT ON COLUMN scene_config.description IS '描述';
+COMMENT ON COLUMN scene_config.route_key IS '路由策略';
+COMMENT ON COLUMN scene_config.executor_timeout IS '超时时间';
+COMMENT ON COLUMN scene_config.create_dt IS '创建时间';
+COMMENT ON COLUMN scene_config.update_dt IS '修改时间';
+
+-- er_server_node
+CREATE TABLE er_server_node
+(
+    id           NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name   VARCHAR2(64) NOT NULL,
+    host_id      VARCHAR2(64) NOT NULL,
+    host_ip      VARCHAR2(64) NOT NULL,
+    context_path VARCHAR2(256) DEFAULT '/',
+    host_port    INT          NOT NULL,
+    expire_at    TIMESTAMP    NOT NULL,
+    node_type    SMALLINT     NOT NULL,
+    ext_attrs    VARCHAR2(256) DEFAULT '',
+    create_dt    TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt    TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_server_node_1 ON server_node (host_id, host_ip);
+CREATE INDEX idx_server_node_1 ON server_node (expire_at, node_type);
+CREATE INDEX idx_server_node_2 ON server_node (namespace_id, group_name);
+
+COMMENT ON TABLE server_node IS '服务器节点';
+COMMENT ON COLUMN server_node.id IS '主键';
+COMMENT ON COLUMN server_node.group_name IS '组名称';
+COMMENT ON COLUMN server_node.namespace_id IS '命名空间id';
+COMMENT ON COLUMN server_node.host_id IS '主机id';
+COMMENT ON COLUMN server_node.host_ip IS '机器ip';
+COMMENT ON COLUMN server_node.context_path IS '客户端上下文路径 server.servlet.context-path';
+COMMENT ON COLUMN server_node.host_port IS '机器端口';
+COMMENT ON COLUMN server_node.expire_at IS '过期时间';
+COMMENT ON COLUMN server_node.node_type IS '节点类型 1、客户端 2、是服务端';
+COMMENT ON COLUMN server_node.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN server_node.create_dt IS '创建时间';
+COMMENT ON COLUMN server_node.update_dt IS '修改时间';
+
+-- er_distributed_lock
+CREATE TABLE er_distributed_lock
+(
+    id         NUMBER GENERATED ALWAYS AS IDENTITY,
+    name       VARCHAR2(64)  NOT NULL,
+    lock_until TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+    locked_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+    locked_by  VARCHAR2(255) NOT NULL,
+    create_dt  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+    update_dt  TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+);
+
+ALTER TABLE distributed_lock
+    ADD CONSTRAINT uk_name_distributed_lock UNIQUE (name);
+
+COMMENT ON TABLE distributed_lock IS '锁定表';
+COMMENT ON COLUMN distributed_lock.id IS '主键';
+COMMENT ON COLUMN distributed_lock.name IS '锁名称';
+COMMENT ON COLUMN distributed_lock.lock_until IS '锁定时长';
+COMMENT ON COLUMN distributed_lock.locked_at IS '锁定时间';
+COMMENT ON COLUMN distributed_lock.locked_by IS '锁定者';
+COMMENT ON COLUMN distributed_lock.create_dt IS '创建时间';
+COMMENT ON COLUMN distributed_lock.update_dt IS '修改时间';
+
+-- er_system_user
+CREATE TABLE er_system_user
+(
+    id        NUMBER GENERATED ALWAYS AS IDENTITY,
+    username  VARCHAR2(64)  NOT NULL,
+    password  VARCHAR2(128) NOT NULL,
+    role      SMALLINT  DEFAULT 0,
+    create_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+    update_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_system_user_1 ON system_user (username);
+
+COMMENT ON TABLE system_user IS '系统用户表';
+COMMENT ON COLUMN system_user.id IS '主键';
+COMMENT ON COLUMN system_user.username IS '账号';
+COMMENT ON COLUMN system_user.password IS '密码';
+COMMENT ON COLUMN system_user.role IS '角色:1-普通用户、2-管理员';
+COMMENT ON COLUMN system_user.create_dt IS '创建时间';
+COMMENT ON COLUMN system_user.update_dt IS '修改时间';
+
+-- er_pwd: admin
+INSERT INTO er_system_user VALUES (1, 'admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2, sysdate, sysdate);
+
+-- er_system_user_permission
+CREATE TABLE er_system_user_permission
+(
+    id             NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id   VARCHAR2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name     VARCHAR2(64) NOT NULL,
+    system_user_id NUMBER(20)   NOT NULL,
+    create_dt      TIMESTAMP    DEFAULT CURRENT_TIMESTAMP,
+    update_dt      TIMESTAMP    DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_system_user_permission_1 ON system_user_permission (namespace_id, group_name, system_user_id);
+
+COMMENT ON TABLE system_user_permission IS '系统用户权限表';
+COMMENT ON COLUMN system_user_permission.id IS '主键';
+COMMENT ON COLUMN system_user_permission.namespace_id IS '命名空间id';
+COMMENT ON COLUMN system_user_permission.group_name IS '组名称';
+COMMENT ON COLUMN system_user_permission.system_user_id IS '系统用户id';
+COMMENT ON COLUMN system_user_permission.create_dt IS '创建时间';
+COMMENT ON COLUMN system_user_permission.update_dt IS '修改时间';
+
+-- er_sequence_alloc
+CREATE TABLE er_sequence_alloc
+(
+    id           NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id VARCHAR2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name   VARCHAR2(64) DEFAULT '',
+    max_id       NUMBER(20)   DEFAULT 1,
+    step         INT          DEFAULT 100,
+    update_dt    TIMESTAMP    DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_sequence_alloc_1 ON sequence_alloc (namespace_id, group_name);
+
+COMMENT ON TABLE sequence_alloc IS '号段模式序号ID分配表';
+COMMENT ON COLUMN sequence_alloc.id IS '主键';
+COMMENT ON COLUMN sequence_alloc.namespace_id IS '命名空间id';
+COMMENT ON COLUMN sequence_alloc.group_name IS '组名称';
+COMMENT ON COLUMN sequence_alloc.max_id IS '最大id';
+COMMENT ON COLUMN sequence_alloc.step IS '步长';
+COMMENT ON COLUMN sequence_alloc.update_dt IS '更新时间';
+
+-- er_job
+CREATE TABLE er_job
+(
+    id               NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id     VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name       VARCHAR2(64)  NOT NULL,
+    job_name         VARCHAR2(64)  NOT NULL,
+    args_str         CLOB          DEFAULT '',
+    args_type        SMALLINT      DEFAULT 1,
+    next_trigger_at  NUMBER(20)    NOT NULL,
+    job_status       SMALLINT      DEFAULT 1,
+    task_type        SMALLINT      DEFAULT 1,
+    route_key        SMALLINT      DEFAULT 4,
+    executor_type    SMALLINT      DEFAULT 1,
+    executor_info    VARCHAR2(255) DEFAULT NULL,
+    trigger_type     SMALLINT      NOT NULL,
+    trigger_interval VARCHAR2(255) NOT NULL,
+    block_strategy   SMALLINT      DEFAULT 1,
+    executor_timeout INT           DEFAULT 0,
+    max_retry_times  INT           DEFAULT 0,
+    parallel_num     INT           DEFAULT 1,
+    retry_interval   INT           DEFAULT 0,
+    bucket_index     INT           DEFAULT 0,
+    resident         SMALLINT      DEFAULT 0,
+    description      VARCHAR2(256) DEFAULT '',
+    ext_attrs        VARCHAR2(256) DEFAULT '',
+    create_dt        TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt        TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    deleted          SMALLINT      DEFAULT 0
+);
+
+CREATE INDEX idx_job_1 ON job (namespace_id, group_name);
+CREATE INDEX idx_job_2 ON job (job_status, bucket_index);
+CREATE INDEX idx_job_3 ON job (create_dt);
+
+COMMENT ON TABLE job IS '任务信息';
+COMMENT ON COLUMN job.id IS '主键';
+COMMENT ON COLUMN job.namespace_id IS '命名空间id';
+COMMENT ON COLUMN job.group_name IS '组名称';
+COMMENT ON COLUMN job.job_name IS '名称';
+COMMENT ON COLUMN job.args_str IS '执行方法参数';
+COMMENT ON COLUMN job.args_type IS '参数类型';
+COMMENT ON COLUMN job.next_trigger_at IS '下次触发时间';
+COMMENT ON COLUMN job.job_status IS '重试状态 0、关闭、1、开启';
+COMMENT ON COLUMN job.task_type IS '任务类型 1、集群 2、广播 3、切片';
+COMMENT ON COLUMN job.route_key IS '路由策略';
+COMMENT ON COLUMN job.executor_type IS '执行器类型';
+COMMENT ON COLUMN job.executor_info IS '执行器名称';
+COMMENT ON COLUMN job.trigger_type IS '触发类型 1.CRON 表达式 2. 固定时间';
+COMMENT ON COLUMN job.trigger_interval IS '间隔时长';
+COMMENT ON COLUMN job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
+COMMENT ON COLUMN job.executor_timeout IS '任务执行超时时间,单位秒';
+COMMENT ON COLUMN job.max_retry_times IS '最大重试次数';
+COMMENT ON COLUMN job.parallel_num IS '并行数';
+COMMENT ON COLUMN job.retry_interval IS '更新重试间隔(s)';
+COMMENT ON COLUMN job.bucket_index IS 'bucket';
+COMMENT ON COLUMN job.resident IS '是否是常驻任务';
+COMMENT ON COLUMN job.description IS '描述';
+COMMENT ON COLUMN job.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN job.create_dt IS '创建时间';
+COMMENT ON COLUMN job.deleted IS '逻辑删除 1、删除';
+COMMENT ON COLUMN job.update_dt IS '更新时间';
+
+-- er_job_log_message
+CREATE TABLE er_job_log_message
+(
+    id            NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id  VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name    VARCHAR2(64) NOT NULL,
+    job_id        NUMBER(20)   NOT NULL,
+    task_batch_id NUMBER(20)   NOT NULL,
+    task_id       NUMBER(20)   NOT NULL,
+    message       CLOB          DEFAULT '',
+    log_num       INT           DEFAULT 1,
+    real_time     NUMBER(20)    DEFAULT 0,
+    ext_attrs     VARCHAR2(256) DEFAULT '',
+    create_dt     TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE INDEX idx_job_log_message_1 ON job_log_message (namespace_id, group_name);
+CREATE INDEX idx_job_log_message_2 ON job_log_message (task_batch_id, task_id);
+CREATE INDEX idx_job_log_message_3 ON job_log_message (create_dt);
+
+COMMENT ON TABLE job_log_message IS '调度日志';
+COMMENT ON COLUMN job_log_message.id IS '主键';
+COMMENT ON COLUMN job_log_message.namespace_id IS '命名空间id';
+COMMENT ON COLUMN job_log_message.group_name IS '组名称';
+COMMENT ON COLUMN job_log_message.job_id IS '任务信息id';
+COMMENT ON COLUMN job_log_message.task_batch_id IS '任务批次id';
+COMMENT ON COLUMN job_log_message.task_id IS '调度任务id';
+COMMENT ON COLUMN job_log_message.message IS '调度信息';
+COMMENT ON COLUMN job_log_message.log_num IS '日志序号';
+COMMENT ON COLUMN job_log_message.real_time IS '实际时间';
+COMMENT ON COLUMN job_log_message.create_dt IS '创建时间';
+COMMENT ON COLUMN job_log_message.ext_attrs IS '扩展字段';
+
+-- er_job_task
+CREATE TABLE er_job_task
+(
+    id             NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id   VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name     VARCHAR2(64) NOT NULL,
+    job_id         NUMBER(20)   NOT NULL,
+    task_batch_id  NUMBER(20)   NOT NULL,
+    parent_id      NUMBER(20)    DEFAULT 0,
+    task_status    SMALLINT      DEFAULT 0,
+    retry_count    INT           DEFAULT 0,
+    client_info    VARCHAR2(128) DEFAULT NULL,
+    result_message CLOB          DEFAULT '',
+    args_str       CLOB          DEFAULT '',
+    args_type      SMALLINT      DEFAULT 1,
+    ext_attrs      VARCHAR2(256) DEFAULT '',
+    create_dt      TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt      TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE INDEX idx_job_task_1 ON job_task (namespace_id, group_name);
+CREATE INDEX idx_job_task_2 ON job_task (task_batch_id, task_status);
+CREATE INDEX idx_job_task_3 ON job_task (create_dt);
+
+COMMENT ON TABLE job_task IS '任务实例';
+COMMENT ON COLUMN job_task.id IS '主键';
+COMMENT ON COLUMN job_task.namespace_id IS '命名空间id';
+COMMENT ON COLUMN job_task.group_name IS '组名称';
+COMMENT ON COLUMN job_task.job_id IS '任务信息id';
+COMMENT ON COLUMN job_task.task_batch_id IS '任务批次id';
+COMMENT ON COLUMN job_task.parent_id IS '父执行器id';
+COMMENT ON COLUMN job_task.task_status IS '执行的状态 0、失败 1、成功';
+COMMENT ON COLUMN job_task.retry_count IS '重试次数';
+COMMENT ON COLUMN job_task.client_info IS '客户端地址 clientId#ip:port';
+COMMENT ON COLUMN job_task.result_message IS '调度信息';
+COMMENT ON COLUMN job_task.args_str IS '执行方法参数';
+COMMENT ON COLUMN job_task.args_type IS '参数类型';
+COMMENT ON COLUMN job_task.create_dt IS '创建时间';
+COMMENT ON COLUMN job_task.update_dt IS '创建时间';
+COMMENT ON COLUMN job_task.ext_attrs IS '扩展字段';
+
+-- er_job_task_batch
+CREATE TABLE er_job_task_batch
+(
+    id                      NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id            VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name              VARCHAR2(64) NOT NULL,
+    job_id                  NUMBER(20)   NOT NULL,
+    workflow_node_id        NUMBER(20)    DEFAULT 0,
+    parent_workflow_node_id NUMBER(20)    DEFAULT 0,
+    workflow_task_batch_id  NUMBER(20)    DEFAULT 0,
+    parent_id               VARCHAR2(64)  DEFAULT '',
+    task_batch_status       SMALLINT      DEFAULT 0,
+    operation_reason        SMALLINT      DEFAULT 0,
+    execution_at            NUMBER(20)    DEFAULT 0,
+    system_task_type        SMALLINT      DEFAULT 3,
+    ext_attrs               VARCHAR2(256) DEFAULT '',
+    deleted                 SMALLINT      DEFAULT 0,
+    create_dt               TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt               TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE INDEX idx_job_task_batch_1 ON job_task_batch (namespace_id, group_name);
+CREATE INDEX idx_job_task_batch_2 ON job_task_batch (job_id, task_batch_status);
+CREATE INDEX idx_job_task_batch_3 ON job_task_batch (create_dt);
+CREATE INDEX idx_job_task_batch_4 ON job_task_batch (workflow_task_batch_id, workflow_node_id);
+
+COMMENT ON TABLE job_task_batch IS '任务批次';
+COMMENT ON COLUMN job_task_batch.id IS '主键';
+COMMENT ON COLUMN job_task_batch.namespace_id IS '命名空间id';
+COMMENT ON COLUMN job_task_batch.group_name IS '组名称';
+COMMENT ON COLUMN job_task_batch.job_id IS '任务信息id';
+COMMENT ON COLUMN job_task_batch.task_batch_status IS '任务批次状态 0、失败 1、成功';
+COMMENT ON COLUMN job_task_batch.operation_reason IS '操作原因';
+COMMENT ON COLUMN job_task_batch.workflow_node_id IS '工作流节点id';
+COMMENT ON COLUMN job_task_batch.parent_workflow_node_id IS '父节点';
+COMMENT ON COLUMN job_task_batch.workflow_task_batch_id IS '任务批次id';
+COMMENT ON COLUMN job_task_batch.system_task_type IS '任务类型 0、系统任务 1、业务任务';
+COMMENT ON COLUMN job_task_batch.execution_at IS '任务执行时间';
+COMMENT ON COLUMN job_task_batch.parent_id IS '父节点';
+COMMENT ON COLUMN job_task_batch.deleted IS '逻辑删除 1、删除';
+COMMENT ON COLUMN job_task_batch.create_dt IS '创建时间';
+COMMENT ON COLUMN job_task_batch.update_dt IS '创建时间';
+COMMENT ON COLUMN job_task_batch.ext_attrs IS '扩展字段';
+
+CREATE TABLE er_job_notify_config
+(
+    id                     NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id           VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name             VARCHAR2(64)  NOT NULL,
+    job_id                 NUMBER(20)    NOT NULL,
+    notify_status          SMALLINT      DEFAULT 0,
+    notify_type            SMALLINT      DEFAULT 0,
+    notify_attribute       VARCHAR2(512) NOT NULL,
+    notify_threshold       INT           DEFAULT 0,
+    notify_scene           SMALLINT      DEFAULT 0,
+    rate_limiter_status    SMALLINT      DEFAULT 0,
+    rate_limiter_threshold INT           DEFAULT 0,
+    description            VARCHAR2(256) DEFAULT '',
+    create_dt              TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt              TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE INDEX idx_job_notify_config_1 ON job_notify_config (namespace_id, group_name, job_id);
+
+COMMENT ON TABLE job_notify_config IS '通知配置';
+COMMENT ON COLUMN job_notify_config.id IS '主键';
+COMMENT ON COLUMN job_notify_config.namespace_id IS '命名空间id';
+COMMENT ON COLUMN job_notify_config.group_name IS '组名称';
+COMMENT ON COLUMN job_notify_config.job_id IS '任务信息id';
+COMMENT ON COLUMN job_notify_config.notify_status IS '通知状态 0、未启用 1、启用';
+COMMENT ON COLUMN job_notify_config.notify_type IS '通知类型 1、钉钉 2、邮件 3、企业微信';
+COMMENT ON COLUMN job_notify_config.notify_attribute IS '配置属性';
+COMMENT ON COLUMN job_notify_config.notify_threshold IS '通知阈值';
+COMMENT ON COLUMN job_notify_config.notify_scene IS '通知场景';
+COMMENT ON COLUMN job_notify_config.rate_limiter_status IS '限流状态 0、未启用 1、启用';
+COMMENT ON COLUMN job_notify_config.rate_limiter_threshold IS '每秒限流阈值';
+COMMENT ON COLUMN job_notify_config.description IS '描述';
+COMMENT ON COLUMN job_notify_config.create_dt IS '创建时间';
+COMMENT ON COLUMN job_notify_config.update_dt IS '修改时间';
+
+-- er_retry_summary
+CREATE TABLE er_retry_summary
+(
+    id            NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id  VARCHAR2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name    VARCHAR2(64) DEFAULT '',
+    scene_name    VARCHAR2(50) DEFAULT '',
+    trigger_at    TIMESTAMP    DEFAULT CURRENT_TIMESTAMP,
+    running_num   INT          DEFAULT 0,
+    finish_num    INT          DEFAULT 0,
+    max_count_num INT          DEFAULT 0,
+    suspend_num   INT          DEFAULT 0,
+    create_dt     TIMESTAMP    DEFAULT CURRENT_TIMESTAMP,
+    update_dt     TIMESTAMP    DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_retry_summary_1 ON retry_summary (namespace_id, group_name, scene_name, trigger_at);
+
+COMMENT ON TABLE retry_summary IS 'DashBoard_Retry';
+COMMENT ON COLUMN retry_summary.id IS '主键';
+COMMENT ON COLUMN retry_summary.namespace_id IS '命名空间id';
+COMMENT ON COLUMN retry_summary.group_name IS '组名称';
+COMMENT ON COLUMN retry_summary.scene_name IS '场景名称';
+COMMENT ON COLUMN retry_summary.trigger_at IS '统计时间';
+COMMENT ON COLUMN retry_summary.running_num IS '重试中-日志数量';
+COMMENT ON COLUMN retry_summary.finish_num IS '重试完成-日志数量';
+COMMENT ON COLUMN retry_summary.max_count_num IS '重试到达最大次数-日志数量';
+COMMENT ON COLUMN retry_summary.suspend_num IS '暂停重试-日志数量';
+COMMENT ON COLUMN retry_summary.create_dt IS '创建时间';
+COMMENT ON COLUMN retry_summary.update_dt IS '修改时间';
+
+-- er_job_summary
+CREATE TABLE er_job_summary
+(
+    id               NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id     VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name       VARCHAR2(64)  DEFAULT '',
+    business_id      NUMBER(20) NOT NULL,
+    system_task_type SMALLINT      DEFAULT '3',
+    trigger_at       TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    success_num      INT           DEFAULT 0,
+    fail_num         INT           DEFAULT 0,
+    fail_reason      VARCHAR2(512) DEFAULT '',
+    stop_num         INT           DEFAULT 0,
+    stop_reason      VARCHAR2(512) DEFAULT '',
+    cancel_num       INT           DEFAULT 0,
+    cancel_reason    VARCHAR2(512) DEFAULT '',
+    create_dt        TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt        TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_job_summary_1 ON job_summary (trigger_at, system_task_type, business_id);
+CREATE INDEX idx_job_summary_1 ON job_summary (namespace_id, group_name, business_id);
+
+COMMENT ON TABLE job_summary IS 'DashBoard_Job';
+COMMENT ON COLUMN job_summary.id IS '主键';
+COMMENT ON COLUMN job_summary.namespace_id IS '命名空间id';
+COMMENT ON COLUMN job_summary.group_name IS '组名称';
+COMMENT ON COLUMN job_summary.business_id IS '业务id (job_id或workflow_id)';
+COMMENT ON COLUMN job_summary.system_task_type IS '任务类型 3、JOB任务 4、WORKFLOW任务';
+COMMENT ON COLUMN job_summary.trigger_at IS '统计时间';
+COMMENT ON COLUMN job_summary.success_num IS '执行成功-日志数量';
+COMMENT ON COLUMN job_summary.fail_num IS '执行失败-日志数量';
+COMMENT ON COLUMN job_summary.fail_reason IS '失败原因';
+COMMENT ON COLUMN job_summary.stop_num IS '执行失败-日志数量';
+COMMENT ON COLUMN job_summary.stop_reason IS '失败原因';
+COMMENT ON COLUMN job_summary.cancel_num IS '执行失败-日志数量';
+COMMENT ON COLUMN job_summary.cancel_reason IS '失败原因';
+
+-- er_workflow
+CREATE TABLE er_workflow
+(
+    id               NUMBER GENERATED ALWAYS AS IDENTITY,
+    workflow_name    VARCHAR2(64)  NOT NULL,
+    namespace_id     VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name       VARCHAR2(64)  NOT NULL,
+    workflow_status  SMALLINT      DEFAULT 1,
+    trigger_type     SMALLINT      NOT NULL,
+    trigger_interval VARCHAR2(255) NOT NULL,
+    next_trigger_at  NUMBER(20)    NOT NULL,
+    block_strategy   SMALLINT      DEFAULT 1,
+    executor_timeout INT           DEFAULT 0,
+    description      VARCHAR2(256) DEFAULT '',
+    flow_info        CLOB          DEFAULT '',
+    bucket_index     INT           DEFAULT 0,
+    version          INT           NOT NULL,
+    create_dt        TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt        TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    deleted          SMALLINT      DEFAULT 0,
+    ext_attrs        VARCHAR2(256) DEFAULT ''
+);
+
+CREATE INDEX idx_workflow_1 ON workflow (create_dt);
+CREATE INDEX idx_workflow_2 ON workflow (namespace_id, group_name);
+
+COMMENT ON TABLE workflow IS '工作流';
+COMMENT ON COLUMN workflow.id IS '主键';
+COMMENT ON COLUMN workflow.workflow_name IS '工作流名称';
+COMMENT ON COLUMN workflow.namespace_id IS '命名空间id';
+COMMENT ON COLUMN workflow.group_name IS '组名称';
+COMMENT ON COLUMN workflow.workflow_status IS '工作流状态 0、关闭、1、开启';
+COMMENT ON COLUMN workflow.trigger_type IS '触发类型 1.CRON 表达式 2. 固定时间';
+COMMENT ON COLUMN workflow.trigger_interval IS '间隔时长';
+COMMENT ON COLUMN workflow.next_trigger_at IS '下次触发时间';
+COMMENT ON COLUMN workflow.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
+COMMENT ON COLUMN workflow.executor_timeout IS '任务执行超时时间,单位秒';
+COMMENT ON COLUMN workflow.description IS '描述';
+COMMENT ON COLUMN workflow.flow_info IS '流程信息';
+COMMENT ON COLUMN workflow.bucket_index IS 'bucket';
+COMMENT ON COLUMN workflow.version IS '版本号';
+COMMENT ON COLUMN workflow.create_dt IS '创建时间';
+COMMENT ON COLUMN workflow.update_dt IS '修改时间';
+COMMENT ON COLUMN workflow.deleted IS '逻辑删除 1、删除';
+COMMENT ON COLUMN workflow.ext_attrs IS '扩展字段';
+
+-- er_workflow_node
+CREATE TABLE er_workflow_node
+(
+    id                   NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id         VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    node_name            VARCHAR2(64) NOT NULL,
+    group_name           VARCHAR2(64) NOT NULL,
+    job_id               NUMBER(20)   NOT NULL,
+    workflow_id          NUMBER(20)   NOT NULL,
+    node_type            SMALLINT      DEFAULT 1,
+    expression_type      SMALLINT      DEFAULT 0,
+    fail_strategy        SMALLINT      DEFAULT 1,
+    workflow_node_status SMALLINT      DEFAULT 1,
+    priority_level       INT           DEFAULT 1,
+    node_info            CLOB          DEFAULT '',
+    version              INT          NOT NULL,
+    create_dt            TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt            TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    deleted              SMALLINT      DEFAULT 0,
+    ext_attrs            VARCHAR2(256) DEFAULT ''
+);
+
+CREATE INDEX idx_workflow_node_1 ON workflow_node (create_dt);
+CREATE INDEX idx_workflow_node_2 ON workflow_node (namespace_id, group_name);
+
+COMMENT ON TABLE workflow_node IS '工作流节点';
+COMMENT ON COLUMN workflow_node.id IS '主键';
+COMMENT ON COLUMN workflow_node.namespace_id IS '命名空间id';
+COMMENT ON COLUMN workflow_node.node_name IS '节点名称';
+COMMENT ON COLUMN workflow_node.group_name IS '组名称';
+COMMENT ON COLUMN workflow_node.job_id IS '任务信息id';
+COMMENT ON COLUMN workflow_node.workflow_id IS '工作流ID';
+COMMENT ON COLUMN workflow_node.node_type IS '1、任务节点 2、条件节点';
+COMMENT ON COLUMN workflow_node.expression_type IS '1、SpEl、2、Aviator 3、QL';
+COMMENT ON COLUMN workflow_node.fail_strategy IS '失败策略 1、跳过 2、阻塞';
+COMMENT ON COLUMN workflow_node.workflow_node_status IS '工作流节点状态 0、关闭、1、开启';
+COMMENT ON COLUMN workflow_node.priority_level IS '优先级';
+COMMENT ON COLUMN workflow_node.node_info IS '节点信息';
+COMMENT ON COLUMN workflow_node.version IS '版本号';
+COMMENT ON COLUMN workflow_node.create_dt IS '创建时间';
+COMMENT ON COLUMN workflow_node.update_dt IS '修改时间';
+COMMENT ON COLUMN workflow_node.deleted IS '逻辑删除 1、删除';
+COMMENT ON COLUMN workflow_node.ext_attrs IS '扩展字段';
+
+-- er_workflow_task_batch
+CREATE TABLE er_workflow_task_batch
+(
+    id                NUMBER GENERATED ALWAYS AS IDENTITY,
+    namespace_id      VARCHAR2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name        VARCHAR2(64) NOT NULL,
+    workflow_id       NUMBER(20)   NOT NULL,
+    task_batch_status SMALLINT      DEFAULT 0,
+    operation_reason  SMALLINT      DEFAULT 0,
+    flow_info         CLOB          DEFAULT '',
+    execution_at      NUMBER(20)    DEFAULT 0,
+    create_dt         TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    update_dt         TIMESTAMP     DEFAULT CURRENT_TIMESTAMP,
+    deleted           SMALLINT      DEFAULT 0,
+    ext_attrs         VARCHAR2(256) DEFAULT ''
+);
+
+CREATE INDEX idx_workflow_task_batch_1 ON workflow_task_batch (workflow_id, task_batch_status);
+CREATE INDEX idx_workflow_task_batch_2 ON workflow_task_batch (create_dt);
+CREATE INDEX idx_workflow_task_batch_3 ON workflow_task_batch (namespace_id, group_name);
+
+COMMENT ON TABLE workflow_task_batch IS '工作流批次';
+COMMENT ON COLUMN workflow_task_batch.id IS '主键';
+COMMENT ON COLUMN workflow_task_batch.namespace_id IS '命名空间id';
+COMMENT ON COLUMN workflow_task_batch.group_name IS '组名称';
+COMMENT ON COLUMN workflow_task_batch.workflow_id IS '工作流任务id';
+COMMENT ON COLUMN workflow_task_batch.task_batch_status IS '任务批次状态 0、失败 1、成功';
+COMMENT ON COLUMN workflow_task_batch.operation_reason IS '操作原因';
+COMMENT ON COLUMN workflow_task_batch.flow_info IS '流程信息';
+COMMENT ON COLUMN workflow_task_batch.execution_at IS '任务执行时间';
+COMMENT ON COLUMN workflow_task_batch.create_dt IS '创建时间';
+COMMENT ON COLUMN workflow_task_batch.update_dt IS '修改时间';
+COMMENT ON COLUMN workflow_task_batch.deleted IS '逻辑删除 1、删除';
+COMMENT ON COLUMN workflow_task_batch.ext_attrs IS '扩展字段';

+ 0 - 800
script/sql/postgres/easy_retry.sql

@@ -1,800 +0,0 @@
--- PostgreSQL DDL
-
-CREATE TABLE namespace
-(
-    id          BIGSERIAL PRIMARY KEY,
-    name        VARCHAR(64)  NOT NULL,
-    unique_id   VARCHAR(64)  NOT NULL,
-    description VARCHAR(256) NOT NULL DEFAULT '',
-    create_dt   TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt   TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    deleted     SMALLINT     NOT NULL DEFAULT 0
-);
-
-CREATE UNIQUE INDEX uk_namespace_unique_id ON "namespace" (unique_id);
-
-COMMENT ON COLUMN namespace.id IS '主键';
-COMMENT ON COLUMN namespace.name IS '名称';
-COMMENT ON COLUMN namespace.unique_id IS '唯一id';
-COMMENT ON COLUMN namespace.description IS '描述';
-COMMENT ON COLUMN namespace.create_dt IS '创建时间';
-COMMENT ON COLUMN namespace.update_dt IS '修改时间';
-COMMENT ON COLUMN namespace.deleted IS '逻辑删除 1、删除';
-COMMENT ON TABLE namespace IS '命名空间';
-
-INSERT INTO namespace VALUES (1, 'Development', 'dev', '', now(), now(), 0);
-INSERT INTO namespace VALUES (2, 'Production', 'prod', '', now(), now(), 0);
-
-CREATE TABLE group_config
-(
-    id                BIGSERIAL PRIMARY KEY,
-    namespace_id      VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name        VARCHAR(64)  NOT NULL,
-    description       VARCHAR(256) NOT NULL,
-    group_status      SMALLINT     NOT NULL DEFAULT 0,
-    version           INT          NOT NULL,
-    group_partition   INT          NOT NULL,
-    id_generator_mode SMALLINT     NOT NULL DEFAULT 1,
-    init_scene        SMALLINT     NOT NULL DEFAULT 0,
-    bucket_index      INT          NOT NULL DEFAULT 0,
-    create_dt         TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt         TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE UNIQUE INDEX "uk_namespace_id_group_name_group_config" ON "group_config" ("namespace_id", "group_name");
-
-COMMENT ON COLUMN "group_config"."id" IS '主键';
-COMMENT ON COLUMN "group_config"."namespace_id" IS '命名空间';
-COMMENT ON COLUMN "group_config"."group_name" IS '组名称';
-COMMENT ON COLUMN "group_config"."description" IS '组描述';
-COMMENT ON COLUMN "group_config"."group_status" IS '组状态 0、未启用 1、启用';
-COMMENT ON COLUMN "group_config"."version" IS '版本号';
-COMMENT ON COLUMN "group_config"."group_partition" IS '分区';
-COMMENT ON COLUMN "group_config"."id_generator_mode" IS '唯一id生成模式 默认号段模式';
-COMMENT ON COLUMN "group_config"."init_scene" IS '是否初始化场景 0:否 1:是';
-COMMENT ON COLUMN "group_config"."bucket_index" IS 'bucket';
-COMMENT ON COLUMN "group_config"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "group_config"."update_dt" IS '修改时间';
-COMMENT ON TABLE "group_config" IS '组配置';
-
-INSERT INTO group_config VALUES (1, 'dev', 'ruoyi_group', '', 1, 1, 0, 1, 1, 4, now(), now());
-
-CREATE TABLE notify_config
-(
-    id                     BIGSERIAL PRIMARY KEY,
-    namespace_id           VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name             VARCHAR(64)  NOT NULL,
-    scene_name             VARCHAR(64)  NOT NULL,
-    notify_status          SMALLINT     NOT NULL DEFAULT 0,
-    notify_type            SMALLINT     NOT NULL DEFAULT 0,
-    notify_attribute       VARCHAR(512) NOT NULL,
-    notify_threshold       INT          NOT NULL DEFAULT 0,
-    notify_scene           SMALLINT     NOT NULL DEFAULT 0,
-    rate_limiter_status    SMALLINT     NOT NULL DEFAULT 0,
-    rate_limiter_threshold INT          NOT NULL DEFAULT 0,
-    description            VARCHAR(256) NOT NULL DEFAULT '',
-    create_dt              TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt              TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE INDEX idx_namespace_id_group_name ON notify_config (namespace_id, group_name);
-
-COMMENT ON COLUMN "notify_config"."id" IS '主键';
-COMMENT ON COLUMN "notify_config"."group_name" IS '组名称';
-COMMENT ON COLUMN "notify_config"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "notify_config"."scene_name" IS '场景名称';
-COMMENT ON COLUMN "notify_config"."notify_status" IS '通知状态 0、未启用 1、启用';
-COMMENT ON COLUMN "notify_config"."notify_type" IS '通知类型 1、钉钉 2、邮件 3、企业微信';
-COMMENT ON COLUMN "notify_config"."notify_attribute" IS '配置属性';
-COMMENT ON COLUMN "notify_config"."notify_threshold" IS '通知阈值';
-COMMENT ON COLUMN "notify_config"."notify_scene" IS '通知场景';
-COMMENT ON COLUMN "notify_config"."rate_limiter_status" IS '限流状态 0、未启用 1、启用';
-COMMENT ON COLUMN "notify_config"."rate_limiter_threshold" IS '每秒限流阈值';
-COMMENT ON COLUMN "notify_config"."description" IS '描述';
-COMMENT ON COLUMN "notify_config"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "notify_config"."update_dt" IS '修改时间';
-COMMENT ON TABLE "notify_config" IS '通知配置';
-
-
-CREATE TABLE retry_dead_letter_0
-(
-    id            BIGSERIAL PRIMARY KEY,
-    unique_id     VARCHAR(64)  NOT NULL,
-    namespace_id  VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name    VARCHAR(64)  NOT NULL,
-    scene_name    VARCHAR(64)  NOT NULL,
-    idempotent_id VARCHAR(64)  NOT NULL,
-    biz_no        VARCHAR(64)  NOT NULL DEFAULT '',
-    executor_name VARCHAR(512) NOT NULL DEFAULT '',
-    args_str      TEXT         NOT NULL,
-    ext_attrs     TEXT         NOT NULL,
-    task_type     SMALLINT     NOT NULL DEFAULT 1,
-    create_dt     TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE UNIQUE INDEX "uk_namespace_id_group_name_unique_id_retry_dead_letter" ON "retry_dead_letter_0" ("namespace_id", "group_name", "unique_id");
-CREATE INDEX "idx_namespace_id_group_name_scene_name_retry_dead_letter" ON "retry_dead_letter_0" ("namespace_id", "group_name", "scene_name");
-CREATE INDEX "idx_idempotent_id_retry_dead_letter" ON "retry_dead_letter_0" ("idempotent_id");
-CREATE INDEX "idx_biz_no_retry_dead_letter" ON "retry_dead_letter_0" ("biz_no");
-CREATE INDEX "idx_create_dt_retry_dead_letter" ON "retry_dead_letter_0" ("create_dt");
-
-COMMENT ON COLUMN "retry_dead_letter_0"."id" IS '主键';
-COMMENT ON COLUMN "retry_dead_letter_0"."unique_id" IS '同组下id唯一';
-COMMENT ON COLUMN "retry_dead_letter_0"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "retry_dead_letter_0"."group_name" IS '组名称';
-COMMENT ON COLUMN "retry_dead_letter_0"."scene_name" IS '场景名称';
-COMMENT ON COLUMN "retry_dead_letter_0"."idempotent_id" IS '幂等id';
-COMMENT ON COLUMN "retry_dead_letter_0"."biz_no" IS '业务编号';
-COMMENT ON COLUMN "retry_dead_letter_0"."executor_name" IS '执行器名称';
-COMMENT ON COLUMN "retry_dead_letter_0"."args_str" IS '执行方法参数';
-COMMENT ON COLUMN "retry_dead_letter_0"."ext_attrs" IS '扩展字段';
-COMMENT ON COLUMN "retry_dead_letter_0"."task_type" IS '任务类型 1、重试数据 2、回调数据';
-COMMENT ON COLUMN "retry_dead_letter_0"."create_dt" IS '创建时间';
-COMMENT ON TABLE "retry_dead_letter_0" IS '死信队列表';
-
-CREATE TABLE retry_task_0
-(
-    id              BIGSERIAL PRIMARY KEY,
-    unique_id       VARCHAR(64)  NOT NULL,
-    namespace_id    VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name      VARCHAR(64)  NOT NULL,
-    scene_name      VARCHAR(64)  NOT NULL,
-    idempotent_id   VARCHAR(64)  NOT NULL,
-    biz_no          VARCHAR(64)  NOT NULL DEFAULT '',
-    executor_name   VARCHAR(512) NOT NULL DEFAULT '',
-    args_str        TEXT         NOT NULL,
-    ext_attrs       TEXT         NOT NULL,
-    next_trigger_at TIMESTAMP    NOT NULL,
-    retry_count     INT          NOT NULL DEFAULT 0,
-    retry_status    SMALLINT     NOT NULL DEFAULT 0,
-    task_type       SMALLINT     NOT NULL DEFAULT 1,
-    create_dt       TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt       TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE UNIQUE INDEX "uk_name_unique_id_retry_task" ON "retry_task_0" ("namespace_id", "group_name", "unique_id");
-CREATE INDEX "idx_namespace_id_group_name_scene_name_retry_task" ON "retry_task_0" ("namespace_id", "group_name", "scene_name");
-CREATE INDEX "idx_namespace_id_group_name_retry_status_retry_task" ON "retry_task_0" (namespace_id, group_name, "retry_status");
-CREATE INDEX "idx_idempotent_id_retry_task" ON "retry_task_0" ("idempotent_id");
-CREATE INDEX "idx_biz_no_retry_task" ON "retry_task_0" ("biz_no");
-CREATE INDEX "idx_create_dt_retry_task" ON "retry_task_0" ("create_dt");
-
-COMMENT ON COLUMN "retry_task_0"."id" IS '主键';
-COMMENT ON COLUMN "retry_task_0"."unique_id" IS '同组下id唯一';
-COMMENT ON COLUMN "retry_task_0"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "retry_task_0"."group_name" IS '组名称';
-COMMENT ON COLUMN "retry_task_0"."scene_name" IS '场景名称';
-COMMENT ON COLUMN "retry_task_0"."idempotent_id" IS '幂等id';
-COMMENT ON COLUMN "retry_task_0"."biz_no" IS '业务编号';
-COMMENT ON COLUMN "retry_task_0"."executor_name" IS '执行器名称';
-COMMENT ON COLUMN "retry_task_0"."args_str" IS '执行方法参数';
-COMMENT ON COLUMN "retry_task_0"."ext_attrs" IS '扩展字段';
-COMMENT ON COLUMN "retry_task_0"."next_trigger_at" IS '下次触发时间';
-COMMENT ON COLUMN "retry_task_0"."retry_count" IS '重试次数';
-COMMENT ON COLUMN "retry_task_0"."retry_status" IS '重试状态 0、重试中 1、成功 2、最大重试次数';
-COMMENT ON COLUMN "retry_task_0"."task_type" IS '任务类型 1、重试数据 2、回调数据';
-COMMENT ON COLUMN "retry_task_0"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "retry_task_0"."update_dt" IS '修改时间';
-COMMENT ON TABLE "retry_task_0" IS '任务表';
-
-CREATE TABLE retry_task_log
-(
-    id            BIGSERIAL PRIMARY KEY,
-    unique_id     VARCHAR(64)  NOT NULL,
-    namespace_id  VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name    VARCHAR(64)  NOT NULL,
-    scene_name    VARCHAR(64)  NOT NULL,
-    idempotent_id VARCHAR(64)  NOT NULL,
-    biz_no        VARCHAR(64)  NOT NULL DEFAULT '',
-    executor_name VARCHAR(512) NOT NULL DEFAULT '',
-    args_str      TEXT         NOT NULL,
-    ext_attrs     TEXT         NOT NULL,
-    retry_status  SMALLINT     NOT NULL DEFAULT 0,
-    task_type     SMALLINT     NOT NULL DEFAULT 1,
-    create_dt     TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE INDEX "idx_group_name_scene_name_retry_task_log" ON "retry_task_log" ("namespace_id", "group_name", "scene_name");
-CREATE INDEX "idx_retry_status_retry_task_log" ON "retry_task_log" ("retry_status");
-CREATE INDEX "idx_idempotent_id_retry_task_log" ON "retry_task_log" ("idempotent_id");
-CREATE INDEX "idx_unique_id" ON "retry_task_log" ("namespace_id", "group_name", "unique_id");
-CREATE INDEX "idx_biz_no_retry_task_log" ON "retry_task_log" ("biz_no");
-CREATE INDEX "idx_create_dt_retry_task_log" ON "retry_task_log" ("create_dt");
-
-COMMENT ON COLUMN "retry_task_log"."id" IS '主键';
-COMMENT ON COLUMN "retry_task_log"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "retry_task_log"."unique_id" IS '同组下id唯一';
-COMMENT ON COLUMN "retry_task_log"."group_name" IS '组名称';
-COMMENT ON COLUMN "retry_task_log"."scene_name" IS '场景名称';
-COMMENT ON COLUMN "retry_task_log"."idempotent_id" IS '幂等id';
-COMMENT ON COLUMN "retry_task_log"."biz_no" IS '业务编号';
-COMMENT ON COLUMN "retry_task_log"."executor_name" IS '执行器名称';
-COMMENT ON COLUMN "retry_task_log"."args_str" IS '执行方法参数';
-COMMENT ON COLUMN "retry_task_log"."ext_attrs" IS '扩展字段';
-COMMENT ON COLUMN "retry_task_log"."retry_status" IS '重试状态 0、重试中 1、成功 2、最大次数';
-COMMENT ON COLUMN "retry_task_log"."task_type" IS '任务类型 1、重试数据 2、回调数据';
-COMMENT ON COLUMN "retry_task_log"."create_dt" IS '创建时间';
-COMMENT ON TABLE "retry_task_log" IS '任务日志基础信息表';
-
-CREATE TABLE retry_task_log_message
-(
-    id           BIGSERIAL PRIMARY KEY,
-    namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name   VARCHAR(64) NOT NULL,
-    unique_id    VARCHAR(64) NOT NULL,
-    create_dt    TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    message      TEXT        NOT NULL,
-    client_info  VARCHAR(128)         DEFAULT NULL
-);
-
-CREATE INDEX "idx_namespace_id_group_name_unique_id" ON "retry_task_log_message" ("namespace_id", "group_name", "unique_id");
-CREATE INDEX "idx_create_dt" ON "retry_task_log_message" ("create_dt");
-COMMENT ON COLUMN "retry_task_log_message"."id" IS '主键';
-COMMENT ON COLUMN "retry_task_log_message"."namespace_id" IS '命名空间';
-COMMENT ON COLUMN "retry_task_log_message"."group_name" IS '组名称';
-COMMENT ON COLUMN "retry_task_log_message"."unique_id" IS '同组下id唯一';
-COMMENT ON COLUMN "retry_task_log_message"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "retry_task_log_message"."message" IS '异常信息';
-COMMENT ON COLUMN "retry_task_log_message"."client_info" IS '客户端地址 clientId#ip:port';
-COMMENT ON TABLE "retry_task_log_message" IS '任务调度日志信息记录表';
-
-CREATE TABLE scene_config
-(
-    id               BIGSERIAL PRIMARY KEY,
-    namespace_id     VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    scene_name       VARCHAR(64)  NOT NULL,
-    group_name       VARCHAR(64)  NOT NULL,
-    scene_status     SMALLINT     NOT NULL DEFAULT 0,
-    max_retry_count  INT          NOT NULL DEFAULT 5,
-    back_off         SMALLINT     NOT NULL DEFAULT 1,
-    trigger_interval VARCHAR(16)  NOT NULL DEFAULT '',
-    deadline_request BIGINT       NOT NULL DEFAULT 60000,
-    route_key        SMALLINT     NOT NULL DEFAULT 4,
-    executor_timeout INT          NOT NULL DEFAULT 5,
-    description      VARCHAR(256) NOT NULL DEFAULT '',
-    create_dt        TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt        TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE UNIQUE INDEX "uk_namespace_id_group_name_scene_name" ON "scene_config" ("namespace_id", "group_name","scene_name");
-COMMENT ON COLUMN "scene_config"."id" IS '主键';
-COMMENT ON COLUMN "scene_config"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "scene_config"."scene_name" IS '场景名称';
-COMMENT ON COLUMN "scene_config"."group_name" IS '组名称';
-COMMENT ON COLUMN "scene_config"."scene_status" IS '组状态 0、未启用 1、启用';
-COMMENT ON COLUMN "scene_config"."max_retry_count" IS '最大重试次数';
-COMMENT ON COLUMN "scene_config"."back_off" IS '1、默认等级 2、固定间隔时间 3、CRON 表达式';
-COMMENT ON COLUMN "scene_config"."trigger_interval" IS '间隔时长';
-COMMENT ON COLUMN "scene_config"."deadline_request" IS 'Deadline Request 调用链超时 单位毫秒';
-COMMENT ON COLUMN "scene_config"."description" IS '描述';
-COMMENT ON COLUMN "scene_config"."route_key" IS '路由策略';
-COMMENT ON COLUMN "scene_config"."executor_timeout" IS '超时时间';
-COMMENT ON COLUMN "scene_config"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "scene_config"."update_dt" IS '修改时间';
-COMMENT ON TABLE "scene_config" IS '场景配置';
-
-CREATE TABLE server_node
-(
-    id           BIGSERIAL PRIMARY KEY,
-    namespace_id VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name   VARCHAR(64)  NOT NULL,
-    host_id      VARCHAR(64)  NOT NULL,
-    host_ip      VARCHAR(64)  NOT NULL,
-    context_path VARCHAR(256) NOT NULL DEFAULT '/',
-    host_port    INT          NOT NULL,
-    expire_at    TIMESTAMP    NOT NULL,
-    node_type    SMALLINT     NOT NULL,
-    ext_attrs    VARCHAR(256)          DEFAULT '',
-    create_dt    TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt    TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE UNIQUE INDEX "uk_host_id_host_ip" ON "server_node" ("host_id","host_ip");
-CREATE INDEX "idx_expire_at_node_type" ON "server_node" ("expire_at","node_type");
-CREATE INDEX "idx_namespace_id_group_name_server_node" ON "server_node" ("namespace_id", "group_name");
-
-COMMENT ON COLUMN "server_node"."id" IS '主键';
-COMMENT ON COLUMN "server_node"."group_name" IS '组名称';
-COMMENT ON COLUMN "server_node"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "server_node"."host_id" IS '主机id';
-COMMENT ON COLUMN "server_node"."host_ip" IS '机器ip';
-COMMENT ON COLUMN "server_node"."context_path" IS '客户端上下文路径 server.servlet.context-path';
-COMMENT ON COLUMN "server_node"."host_port" IS '机器端口';
-COMMENT ON COLUMN "server_node"."expire_at" IS '过期时间';
-COMMENT ON COLUMN "server_node"."node_type" IS '节点类型 1、客户端 2、是服务端';
-COMMENT ON COLUMN "server_node"."ext_attrs" IS '扩展字段';
-COMMENT ON COLUMN "server_node"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "server_node"."update_dt" IS '修改时间';
-COMMENT ON TABLE "server_node" IS '服务器节点';
-
-CREATE TABLE distributed_lock
-(
-    id         BIGSERIAL PRIMARY KEY,
-    name       VARCHAR(64)  NOT NULL,
-    lock_until TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    locked_at  TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    locked_by  VARCHAR(255) NOT NULL,
-    create_dt  TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt  TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-ALTER TABLE distributed_lock ADD CONSTRAINT uk_name UNIQUE (name);
-
-COMMENT ON COLUMN "distributed_lock"."id" IS '主键';
-COMMENT ON COLUMN "distributed_lock"."name" IS '锁名称';
-COMMENT ON COLUMN "distributed_lock"."lock_until" IS '锁定时长';
-COMMENT ON COLUMN "distributed_lock"."locked_at" IS '锁定时间';
-COMMENT ON COLUMN "distributed_lock"."locked_by" IS '锁定者';
-COMMENT ON COLUMN "distributed_lock"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "distributed_lock"."update_dt" IS '修改时间';
-COMMENT ON TABLE "distributed_lock" IS '锁定表';
-
-
-CREATE TABLE system_user
-(
-    id        BIGSERIAL PRIMARY KEY,
-    username  VARCHAR(64)  NOT NULL,
-    password  VARCHAR(128) NOT NULL,
-    role      SMALLINT     NOT NULL DEFAULT 0,
-    create_dt TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE UNIQUE INDEX "uk_username" ON "system_user" ("username");
-COMMENT ON COLUMN "system_user"."id" IS '主键';
-COMMENT ON COLUMN "system_user"."username" IS '账号';
-COMMENT ON COLUMN "system_user"."password" IS '密码';
-COMMENT ON COLUMN "system_user"."role" IS '角色:1-普通用户、2-管理员';
-COMMENT ON COLUMN "system_user"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "system_user"."update_dt" IS '修改时间';
-COMMENT ON TABLE "system_user" IS '系统用户表';
-
--- pwd: admin
-INSERT INTO system_user VALUES (1, 'admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2, now(), now());
-
-
-CREATE TABLE system_user_permission
-(
-    id             BIGSERIAL PRIMARY KEY,
-    namespace_id   VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name     VARCHAR(64) NOT NULL,
-    system_user_id BIGINT      NOT NULL,
-    create_dt      TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt      TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE UNIQUE INDEX "uk_namespace_id_group_name_system_user_id" ON "system_user_permission" ("namespace_id","group_name","system_user_id");
-COMMENT ON COLUMN "system_user_permission"."id" IS '主键';
-COMMENT ON COLUMN "system_user_permission"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "system_user_permission"."group_name" IS '组名称';
-COMMENT ON COLUMN "system_user_permission"."system_user_id" IS '系统用户id';
-COMMENT ON COLUMN "system_user_permission"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "system_user_permission"."update_dt" IS '修改时间';
-COMMENT ON TABLE "system_user_permission" IS '系统用户权限表';
-
-
-CREATE TABLE sequence_alloc
-(
-    id           BIGSERIAL PRIMARY KEY,
-    namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name   VARCHAR(64) NOT NULL DEFAULT '',
-    max_id       BIGINT      NOT NULL DEFAULT 1,
-    step         INT         NOT NULL DEFAULT 100,
-    update_dt    TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE UNIQUE INDEX "uk_namespace_id_group_name" ON "sequence_alloc" ("namespace_id", "group_name");
-
-COMMENT ON COLUMN "sequence_alloc"."id" IS '主键';
-COMMENT ON COLUMN "sequence_alloc"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "sequence_alloc"."group_name" IS '组名称';
-COMMENT ON COLUMN "sequence_alloc"."max_id" IS '最大id';
-COMMENT ON COLUMN "sequence_alloc"."step" IS '步长';
-COMMENT ON COLUMN "sequence_alloc"."update_dt" IS '更新时间';
-COMMENT ON TABLE "sequence_alloc" IS '号段模式序号ID分配表';
-
--- 分布式调度DDL
-CREATE TABLE job
-(
-    id               BIGSERIAL PRIMARY KEY,
-    namespace_id     VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name       VARCHAR(64)  NOT NULL,
-    job_name         VARCHAR(64)  NOT NULL,
-    args_str         TEXT         NOT NULL DEFAULT '',
-    args_type        SMALLINT     NOT NULL DEFAULT 1,
-    next_trigger_at  BIGINT       NOT NULL,
-    job_status       SMALLINT     NOT NULL DEFAULT 1,
-    task_type        SMALLINT     NOT NULL DEFAULT 1,
-    route_key        SMALLINT     NOT NULL DEFAULT 4,
-    executor_type    SMALLINT     NOT NULL DEFAULT 1,
-    executor_info    VARCHAR(255)          DEFAULT NULL,
-    trigger_type     SMALLINT     NOT NULL,
-    trigger_interval VARCHAR(255) NOT NULL,
-    block_strategy   SMALLINT     NOT NULL DEFAULT 1,
-    executor_timeout INT          NOT NULL DEFAULT 0,
-    max_retry_times  INT          NOT NULL DEFAULT 0,
-    parallel_num     INT          NOT NULL DEFAULT 1,
-    retry_interval   INT          NOT NULL DEFAULT 0,
-    bucket_index     INT          NOT NULL DEFAULT 0,
-    resident         SMALLINT     NOT NULL DEFAULT 0,
-    description      VARCHAR(256) NOT NULL DEFAULT '',
-    ext_attrs        VARCHAR(256)          DEFAULT NULL,
-    create_dt        TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt        TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    deleted          SMALLINT     NOT NULL DEFAULT 0
-);
-
-CREATE INDEX "idx_namespace_id_group_name_job" ON "job" ("namespace_id", "group_name");
-CREATE INDEX "idx_job_status_bucket_index_job" ON "job" ("job_status", "bucket_index");
-CREATE INDEX "idx_create_dt_job" ON "job" ("create_dt");
-
-COMMENT ON COLUMN "job"."id" IS '主键';
-COMMENT ON COLUMN "job"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "job"."group_name" IS '组名称';
-COMMENT ON COLUMN "job"."job_name" IS '名称';
-COMMENT ON COLUMN "job"."args_str" IS '执行方法参数';
-COMMENT ON COLUMN "job"."args_type" IS '参数类型';
-COMMENT ON COLUMN "job"."next_trigger_at" IS '下次触发时间';
-COMMENT ON COLUMN "job"."job_status" IS '重试状态 0、关闭、1、开启';
-COMMENT ON COLUMN "job"."task_type" IS '任务类型 1、集群 2、广播 3、切片';
-COMMENT ON COLUMN "job"."route_key" IS '路由策略';
-COMMENT ON COLUMN "job"."executor_type" IS '执行器类型';
-COMMENT ON COLUMN "job"."executor_info" IS '执行器名称';
-COMMENT ON COLUMN "job"."trigger_type" IS '触发类型 1.CRON 表达式 2. 固定时间';
-COMMENT ON COLUMN "job"."trigger_interval" IS '间隔时长';
-COMMENT ON COLUMN "job"."block_strategy" IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
-COMMENT ON COLUMN "job"."executor_timeout" IS '任务执行超时时间,单位秒';
-COMMENT ON COLUMN "job"."max_retry_times" IS '最大重试次数';
-COMMENT ON COLUMN "job"."parallel_num" IS '并行数';
-COMMENT ON COLUMN "job"."retry_interval" IS '更新重试间隔(s)';
-COMMENT ON COLUMN "job"."bucket_index" IS 'bucket';
-COMMENT ON COLUMN "job"."resident" IS '是否是常驻任务';
-COMMENT ON COLUMN "job"."description" IS '描述';
-COMMENT ON COLUMN "job"."ext_attrs" IS '扩展字段';
-COMMENT ON COLUMN "job"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "job"."deleted" IS '逻辑删除 1、删除';
-COMMENT ON COLUMN "job"."update_dt" IS '更新时间';
-COMMENT ON TABLE "job" IS '任务信息';
-
-INSERT INTO job VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', '', now(), now(), 0);
-
-CREATE TABLE job_log_message
-(
-    id            BIGSERIAL PRIMARY KEY,
-    namespace_id  VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name    VARCHAR(64) NOT NULL,
-    job_id        BIGINT      NOT NULL,
-    task_batch_id BIGINT      NOT NULL,
-    task_id       BIGINT      NOT NULL,
-    message       TEXT    NOT NULL,
-    log_num       INT         NOT NULL DEFAULT 1,
-    real_time     BIGINT      NOT NULL DEFAULT 0,
-    ext_attrs     VARCHAR(256)         DEFAULT '',
-    create_dt     TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE INDEX "idx_namespace_id_group_name_to_job_log_message" ON "job_log_message" ("namespace_id", "group_name");
-CREATE INDEX "idx_task_batch_id_task_id_to_job_log_message" ON "job_log_message" ("task_batch_id", "task_id");
-CREATE INDEX "idx_create_dt_to_job_log_message" ON "job_log_message" ("create_dt");
-
-COMMENT ON COLUMN "job_log_message"."id" IS '主键';
-COMMENT ON COLUMN "job_log_message"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "job_log_message"."group_name" IS '组名称';
-COMMENT ON COLUMN "job_log_message"."job_id" IS '任务信息id';
-COMMENT ON COLUMN "job_log_message"."task_batch_id" IS '任务批次id';
-COMMENT ON COLUMN "job_log_message"."task_id" IS '调度任务id';
-COMMENT ON COLUMN "job_log_message"."message" IS '调度信息';
-COMMENT ON COLUMN "job_log_message"."log_num" IS '日志序号';
-COMMENT ON COLUMN "job_log_message"."real_time" IS '实际时间';
-COMMENT ON COLUMN "job_log_message"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "job_log_message"."ext_attrs" IS '扩展字段';
-COMMENT ON TABLE "job_log_message" IS '调度日志';
-
-CREATE TABLE job_task
-(
-    id             BIGSERIAL PRIMARY KEY,
-    namespace_id   VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name     VARCHAR(64) NOT NULL,
-    job_id         BIGINT      NOT NULL,
-    task_batch_id  BIGINT      NOT NULL,
-    parent_id      BIGINT      NOT NULL DEFAULT 0,
-    task_status    SMALLINT    NOT NULL DEFAULT 0,
-    retry_count    INT         NOT NULL DEFAULT 0,
-    client_info    VARCHAR(128)         DEFAULT NULL,
-    result_message TEXT        NOT NULL,
-    args_str       TEXT        NOT NULL,
-    args_type      SMALLINT    NOT NULL DEFAULT 1,
-    ext_attrs      VARCHAR(256)         DEFAULT '',
-    create_dt      TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt      TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-
-CREATE INDEX "idx_namespace_id_group_name_to_job_task" ON "job_task" ("namespace_id", "group_name");
-CREATE INDEX "idx_task_batch_id_task_status_to_job_task" ON "job_task" ("task_batch_id", "task_status");
-CREATE INDEX "idx_create_dt_to_job_task" ON "job_task" ("create_dt");
-COMMENT ON COLUMN "job_task"."id" IS '主键';
-COMMENT ON COLUMN "job_task"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "job_task"."group_name" IS '组名称';
-COMMENT ON COLUMN "job_task"."job_id" IS '任务信息id';
-COMMENT ON COLUMN "job_task"."task_batch_id" IS '任务批次id';
-COMMENT ON COLUMN "job_task"."parent_id" IS '父执行器id';
-COMMENT ON COLUMN "job_task"."task_status" IS '执行的状态 0、失败 1、成功';
-COMMENT ON COLUMN "job_task"."retry_count" IS '重试次数';
-COMMENT ON COLUMN "job_task"."client_info" IS '客户端地址 clientId#ip:port';
-COMMENT ON COLUMN "job_task"."result_message" IS '调度信息';
-COMMENT ON COLUMN "job_task"."args_str" IS '执行方法参数';
-COMMENT ON COLUMN "job_task"."args_type" IS '参数类型';
-COMMENT ON COLUMN "job_task"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "job_task"."update_dt" IS '创建时间';
-COMMENT ON COLUMN "job_task"."ext_attrs" IS '扩展字段';
-COMMENT ON TABLE "job_task" IS '任务实例';
-
-CREATE TABLE job_task_batch
-(
-    id                      BIGSERIAL PRIMARY KEY,
-    namespace_id            VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name              VARCHAR(64) NOT NULL,
-    job_id                  BIGINT      NOT NULL,
-    workflow_node_id        BIGINT      NOT NULL DEFAULT 0,
-    parent_workflow_node_id BIGINT      NOT NULL DEFAULT 0,
-    workflow_task_batch_id  BIGINT      NOT NULL DEFAULT 0,
-    parent_id               VARCHAR(64) NOT NULL DEFAULT '',
-    task_batch_status       SMALLINT    NOT NULL DEFAULT 0,
-    operation_reason        SMALLINT    NOT NULL DEFAULT 0,
-    execution_at            BIGINT      NOT NULL DEFAULT 0,
-    system_task_type        SMALLINT    NOT NULL DEFAULT 3,
-    ext_attrs               VARCHAR(256)         DEFAULT '',
-    deleted                 SMALLINT    NOT NULL DEFAULT 0,
-    create_dt               TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt               TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE INDEX "idx_namespace_id_group_name_to_job_task_batch" ON "job_task_batch" ("namespace_id", "group_name");
-CREATE INDEX "idx_job_id_task_batch_status_to_job_task_batch" ON "job_task_batch" ("job_id", "task_batch_status");
-CREATE INDEX "idx_create_dt_to_job_task_batch" ON "job_task_batch" ("create_dt");
-CREATE INDEX "idx_workflow_task_batch_id_workflow_node_id" ON "job_task_batch" ("workflow_task_batch_id", "workflow_node_id");
-
-COMMENT ON COLUMN "job_task_batch"."id" IS '主键';
-COMMENT ON COLUMN "job_task_batch"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "job_task_batch"."group_name" IS '组名称';
-COMMENT ON COLUMN "job_task_batch"."job_id" IS '任务信息id';
-COMMENT ON COLUMN "job_task_batch"."task_batch_status" IS '任务批次状态 0、失败 1、成功';
-COMMENT ON COLUMN "job_task_batch"."operation_reason" IS '操作原因';
-COMMENT ON COLUMN "job_task_batch"."workflow_node_id" IS '工作流节点id';
-COMMENT ON COLUMN "job_task_batch"."parent_workflow_node_id" IS '父节点';
-COMMENT ON COLUMN "job_task_batch"."workflow_task_batch_id" IS '任务批次id';
-COMMENT ON COLUMN "job_task_batch"."system_task_type" IS '任务类型 0、系统任务 1、业务任务';
-COMMENT ON COLUMN "job_task_batch"."execution_at" IS '任务执行时间';
-COMMENT ON COLUMN "job_task_batch"."parent_id" IS '父节点';
-COMMENT ON COLUMN "job_task_batch"."deleted" IS '逻辑删除 1、删除';
-COMMENT ON COLUMN "job_task_batch"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "job_task_batch"."update_dt" IS '创建时间';
-COMMENT ON COLUMN "job_task_batch"."ext_attrs" IS '扩展字段';
-COMMENT ON TABLE "job_task" IS '任务批次';
-
-CREATE TABLE job_notify_config
-(
-    id                     BIGSERIAL PRIMARY KEY,
-    namespace_id           VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name             VARCHAR(64)  NOT NULL,
-    job_id                 BIGINT       NOT NULL,
-    notify_status          SMALLINT     NOT NULL DEFAULT 0,
-    notify_type            SMALLINT     NOT NULL DEFAULT 0,
-    notify_attribute       VARCHAR(512) NOT NULL,
-    notify_threshold       INT          NOT NULL DEFAULT 0,
-    notify_scene           SMALLINT     NOT NULL DEFAULT 0,
-    rate_limiter_status    SMALLINT     NOT NULL DEFAULT 0,
-    rate_limiter_threshold INT          NOT NULL DEFAULT 0,
-    description            VARCHAR(256) NOT NULL DEFAULT '',
-    create_dt              TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt              TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE INDEX idx_namespace_id_group_name_job_id_job_notify_config ON job_notify_config (namespace_id, group_name, job_id);
-
-COMMENT ON COLUMN "job_notify_config"."id" IS '主键';
-COMMENT ON COLUMN "job_task"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "job_notify_config"."group_name" IS '组名称';
-COMMENT ON COLUMN "job_notify_config"."job_id" IS '任务信息id';
-COMMENT ON COLUMN "job_notify_config"."notify_status" IS '通知状态 0、未启用 1、启用';
-COMMENT ON COLUMN "job_notify_config"."notify_type" IS '通知类型 1、钉钉 2、邮件 3、企业微信';
-COMMENT ON COLUMN "job_notify_config"."notify_attribute" IS '配置属性';
-COMMENT ON COLUMN "job_notify_config"."notify_threshold" IS '通知阈值';
-COMMENT ON COLUMN "job_notify_config"."notify_scene" IS '通知场景';
-COMMENT ON COLUMN "job_notify_config"."rate_limiter_status" IS '限流状态 0、未启用 1、启用';
-COMMENT ON COLUMN "job_notify_config"."rate_limiter_threshold" IS '每秒限流阈值';
-COMMENT ON COLUMN "job_notify_config"."description" IS '描述';
-COMMENT ON COLUMN "job_notify_config"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "job_notify_config"."update_dt" IS '修改时间';
-COMMENT ON TABLE "job_notify_config" IS '通知配置';
-
-CREATE TABLE retry_summary
-(
-    id            BIGSERIAL PRIMARY KEY,
-    namespace_id  VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name    VARCHAR(64) NOT NULL DEFAULT '',
-    scene_name    VARCHAR(50) NOT NULL DEFAULT '',
-    trigger_at    TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    running_num   INT         NOT NULL DEFAULT 0,
-    finish_num    INT         NOT NULL DEFAULT 0,
-    max_count_num INT         NOT NULL DEFAULT 0,
-    suspend_num   INT         NOT NULL DEFAULT 0,
-    create_dt     TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt     TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE UNIQUE INDEX uk_scene_name_trigger_at ON retry_summary ("namespace_id", "group_name", "scene_name", "trigger_at");
-
-COMMENT ON COLUMN "retry_summary"."id" IS '主键';
-COMMENT ON COLUMN "retry_summary"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "retry_summary"."group_name" IS '组名称';
-COMMENT ON COLUMN "retry_summary"."scene_name" IS '场景名称';
-COMMENT ON COLUMN "retry_summary"."trigger_at" IS '统计时间';
-COMMENT ON COLUMN "retry_summary"."running_num" IS '重试中-日志数量';
-COMMENT ON COLUMN "retry_summary"."finish_num" IS '重试完成-日志数量';
-COMMENT ON COLUMN "retry_summary"."max_count_num" IS '重试到达最大次数-日志数量';
-COMMENT ON COLUMN "retry_summary"."suspend_num" IS '暂停重试-日志数量';
-COMMENT ON COLUMN "retry_summary"."create_dt" IS '创建时间';
-COMMENT ON COLUMN "retry_summary"."update_dt" IS '修改时间';
-COMMENT ON TABLE "retry_summary" IS 'DashBoard_Retry';
-
-CREATE TABLE job_summary
-(
-    id            BIGSERIAL PRIMARY KEY,
-    namespace_id  VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name    VARCHAR(64)  NOT NULL DEFAULT '',
-    job_id        BIGINT       NOT NULL,
-    trigger_at    TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    success_num   INT          NOT NULL DEFAULT 0,
-    fail_num      INT          NOT NULL DEFAULT 0,
-    fail_reason   VARCHAR(512) NOT NULL DEFAULT '',
-    stop_num      INT          NOT NULL DEFAULT 0,
-    stop_reason   VARCHAR(512) NOT NULL DEFAULT '',
-    cancel_num    INT          NOT NULL DEFAULT 0,
-    cancel_reason VARCHAR(512) NOT NULL DEFAULT '',
-    create_dt     TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt     TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
-);
-
-CREATE UNIQUE INDEX uk_job_id_trigger_at ON job_summary ("job_id", "trigger_at");
-CREATE INDEX idx_namespace_id_group_name_job_id ON job_summary ("namespace_id", "group_name", "job_id");
-
-COMMENT ON COLUMN "job_summary"."id" IS '主键';
-COMMENT ON COLUMN "job_summary"."namespace_id" IS '命名空间id';
-COMMENT ON COLUMN "job_summary"."group_name" IS '组名称';
-COMMENT ON COLUMN "job_summary"."job_id" IS '任务信息id';
-COMMENT ON COLUMN "job_summary"."trigger_at" IS '统计时间';
-COMMENT ON COLUMN "job_summary"."success_num" IS '执行成功-日志数量';
-COMMENT ON COLUMN "job_summary"."fail_num" IS '执行失败-日志数量';
-COMMENT ON COLUMN "job_summary"."fail_reason" IS '失败原因';
-COMMENT ON COLUMN "job_summary"."stop_num" IS '执行失败-日志数量';
-COMMENT ON COLUMN "job_summary"."stop_reason" IS '失败原因';
-COMMENT ON COLUMN "job_summary"."cancel_num" IS '执行失败-日志数量';
-COMMENT ON COLUMN "job_summary"."cancel_reason" IS '失败原因';
-COMMENT ON TABLE "job_summary" IS 'DashBoard_Job';
-
-CREATE TABLE workflow
-(
-    id               BIGSERIAL PRIMARY KEY,
-    workflow_name    varchar(64)  NOT NULL,
-    namespace_id     varchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name       varchar(64)  NOT NULL,
-    workflow_status  smallint     NOT NULL DEFAULT 1,
-    trigger_type     smallint     NOT NULL,
-    trigger_interval varchar(255) NOT NULL,
-    next_trigger_at  BIGINT       NOT NULL,
-    block_strategy   smallint     NOT NULL DEFAULT 1,
-    executor_timeout INT          NOT NULL DEFAULT 0,
-    description      varchar(256) NOT NULL DEFAULT '',
-    flow_info        text                  DEFAULT NULL,
-    bucket_index     INT          NOT NULL DEFAULT 0,
-    version          INT          NOT NULL,
-    create_dt        timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt        timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    deleted          smallint     NOT NULL DEFAULT 0,
-    ext_attrs        varchar(256) NULL DEFAULT ''
-);
-
-
-CREATE INDEX idx_create_dt_workflow ON workflow (create_dt);
-CREATE INDEX idx_namespace_id_group_name ON workflow (namespace_id, group_name);
-
-COMMENT ON TABLE workflow IS '工作流';
-COMMENT ON COLUMN workflow.id IS '主键';
-COMMENT ON COLUMN workflow.workflow_name IS '工作流名称';
-COMMENT ON COLUMN workflow.namespace_id IS '命名空间id';
-COMMENT ON COLUMN workflow.group_name IS '组名称';
-COMMENT ON COLUMN workflow.workflow_status IS '工作流状态 0、关闭、1、开启';
-COMMENT ON COLUMN workflow.trigger_type IS '触发类型 1.CRON 表达式 2. 固定时间';
-COMMENT ON COLUMN workflow.trigger_interval IS '间隔时长';
-COMMENT ON COLUMN workflow.next_trigger_at IS '下次触发时间';
-COMMENT ON COLUMN workflow.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
-COMMENT ON COLUMN workflow.executor_timeout IS '任务执行超时时间,单位秒';
-COMMENT ON COLUMN workflow.description IS '描述';
-COMMENT ON COLUMN workflow.flow_info IS '流程信息';
-COMMENT ON COLUMN workflow.bucket_index IS 'bucket';
-COMMENT ON COLUMN workflow.version IS '版本号';
-COMMENT ON COLUMN workflow.create_dt IS '创建时间';
-COMMENT ON COLUMN workflow.update_dt IS '修改时间';
-COMMENT ON COLUMN workflow.deleted IS '逻辑删除 1、删除';
-COMMENT ON COLUMN workflow.ext_attrs IS '扩展字段';
-
-CREATE TABLE workflow_node
-(
-    id                   BIGSERIAL PRIMARY KEY,
-    namespace_id         VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    node_name            VARCHAR(64) NOT NULL,
-    group_name           VARCHAR(64) NOT NULL,
-    job_id               BIGINT      NOT NULL,
-    workflow_id          BIGINT      NOT NULL,
-    node_type            SMALLINT    NOT NULL DEFAULT 1,
-    expression_type      SMALLINT    NOT NULL DEFAULT 0,
-    fail_strategy        SMALLINT    NOT NULL DEFAULT 1,
-    workflow_node_status SMALLINT    NOT NULL DEFAULT 1,
-    priority_level       INT         NOT NULL DEFAULT 1,
-    node_info            TEXT                 DEFAULT NULL,
-    version              INT         NOT NULL,
-    create_dt            TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt            TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    deleted              SMALLINT    NOT NULL DEFAULT 0,
-    ext_attrs            VARCHAR(256) NULL DEFAULT ''
-);
-
-CREATE INDEX idx_create_dt_workflow_node ON workflow_node (create_dt);
-CREATE INDEX idx_namespace_id_group_name ON workflow_node (namespace_id, group_name);
-
-COMMENT ON TABLE workflow_node IS '工作流节点';
-COMMENT ON COLUMN workflow_node.id IS '主键';
-COMMENT ON COLUMN workflow_node.namespace_id IS '命名空间id';
-COMMENT ON COLUMN workflow_node.node_name IS '节点名称';
-COMMENT ON COLUMN workflow_node.group_name IS '组名称';
-COMMENT ON COLUMN workflow_node.job_id IS '任务信息id';
-COMMENT ON COLUMN workflow_node.workflow_id IS '工作流ID';
-COMMENT ON COLUMN workflow_node.node_type IS '1、任务节点 2、条件节点';
-COMMENT ON COLUMN workflow_node.expression_type IS '1、SpEl、2、Aviator 3、QL';
-COMMENT ON COLUMN workflow_node.fail_strategy IS '失败策略 1、跳过 2、阻塞';
-COMMENT ON COLUMN workflow_node.workflow_node_status IS '工作流节点状态 0、关闭、1、开启';
-COMMENT ON COLUMN workflow_node.priority_level IS '优先级';
-COMMENT ON COLUMN workflow_node.node_info IS '节点信息';
-COMMENT ON COLUMN workflow_node.version IS '版本号';
-COMMENT ON COLUMN workflow_node.create_dt IS '创建时间';
-COMMENT ON COLUMN workflow_node.update_dt IS '修改时间';
-COMMENT ON COLUMN workflow_node.deleted IS '逻辑删除 1、删除';
-COMMENT ON COLUMN workflow_node.ext_attrs IS '扩展字段';
-
-CREATE TABLE workflow_task_batch
-(
-    id                BIGSERIAL PRIMARY KEY,
-    namespace_id      VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name        VARCHAR(64) NOT NULL,
-    workflow_id       BIGINT      NOT NULL,
-    task_batch_status SMALLINT    NOT NULL DEFAULT 0,
-    operation_reason  SMALLINT    NOT NULL DEFAULT 0,
-    flow_info         TEXT                 DEFAULT NULL,
-    execution_at      BIGINT      NOT NULL DEFAULT 0,
-    create_dt         TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt         TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    deleted           SMALLINT    NOT NULL DEFAULT 0,
-    ext_attrs         VARCHAR(256) NULL DEFAULT ''
-);
-
-CREATE INDEX idx_job_id_task_batch_status_workflow_task_batch ON workflow_task_batch (workflow_id, task_batch_status);
-CREATE INDEX idx_create_dt_workflow_task_batch ON workflow_task_batch (create_dt);
-CREATE INDEX idx_namespace_id_group_name_workflow_task_batch ON workflow_task_batch (namespace_id, group_name);
-
-COMMENT ON TABLE workflow_task_batch IS '工作流批次';
-COMMENT ON COLUMN workflow_task_batch.id IS '主键';
-COMMENT ON COLUMN workflow_task_batch.namespace_id IS '命名空间id';
-COMMENT ON COLUMN workflow_task_batch.group_name IS '组名称';
-COMMENT ON COLUMN workflow_task_batch.workflow_id IS '工作流任务id';
-COMMENT ON COLUMN workflow_task_batch.task_batch_status IS '任务批次状态 0、失败 1、成功';
-COMMENT ON COLUMN workflow_task_batch.operation_reason IS '操作原因';
-COMMENT ON COLUMN workflow_task_batch.flow_info IS '流程信息';
-COMMENT ON COLUMN workflow_task_batch.execution_at IS '任务执行时间';
-COMMENT ON COLUMN workflow_task_batch.create_dt IS '创建时间';
-COMMENT ON COLUMN workflow_task_batch.update_dt IS '修改时间';
-COMMENT ON COLUMN workflow_task_batch.deleted IS '逻辑删除 1、删除';
-COMMENT ON COLUMN workflow_task_batch.ext_attrs IS '扩展字段';
-
-

+ 805 - 0
script/sql/postgres/easy_retry_postgre.sql

@@ -0,0 +1,805 @@
+-- PostgreSQL DDL
+
+CREATE TABLE er_namespace
+(
+    id          BIGSERIAL PRIMARY KEY,
+    name        VARCHAR(64)  NOT NULL,
+    unique_id   VARCHAR(64)  NOT NULL,
+    description VARCHAR(256) NOT NULL DEFAULT '',
+    create_dt   TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt   TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    deleted     SMALLINT     NOT NULL DEFAULT 0
+);
+
+CREATE UNIQUE INDEX uk_namespace_unique_id ON namespace (unique_id);
+
+COMMENT ON COLUMN namespace.id IS '主键';
+COMMENT ON COLUMN namespace.name IS '名称';
+COMMENT ON COLUMN namespace.unique_id IS '唯一id';
+COMMENT ON COLUMN namespace.description IS '描述';
+COMMENT ON COLUMN namespace.create_dt IS '创建时间';
+COMMENT ON COLUMN namespace.update_dt IS '修改时间';
+COMMENT ON COLUMN namespace.deleted IS '逻辑删除 1、删除';
+COMMENT ON TABLE namespace IS '命名空间';
+
+INSERT INTO er_namespace VALUES (1, 'Development', 'dev', '', now(), now(), 0);
+INSERT INTO er_namespace VALUES (2, 'Production', 'prod', '', now(), now(), 0);
+
+CREATE TABLE er_group_config
+(
+    id                BIGSERIAL PRIMARY KEY,
+    namespace_id      VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name        VARCHAR(64) NOT NULL,
+    description       VARCHAR(256)         DEFAULT '',
+    token             VARCHAR(64)          DEFAULT 'ER_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT',
+    group_status      SMALLINT    NOT NULL DEFAULT 0,
+    version           INT         NOT NULL,
+    group_partition   INT         NOT NULL,
+    id_generator_mode SMALLINT    NOT NULL DEFAULT 1,
+    init_scene        SMALLINT    NOT NULL DEFAULT 0,
+    bucket_index      INT         NOT NULL DEFAULT 0,
+    create_dt         TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt         TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_namespace_id_group_name_group_config ON group_config (namespace_id, group_name);
+
+COMMENT ON COLUMN group_config.id IS '主键';
+COMMENT ON COLUMN group_config.namespace_id IS '命名空间';
+COMMENT ON COLUMN group_config.group_name IS '组名称';
+COMMENT ON COLUMN group_config.description IS '组描述';
+COMMENT ON COLUMN group_config.token IS 'token';
+COMMENT ON COLUMN group_config.group_status IS '组状态 0、未启用 1、启用';
+COMMENT ON COLUMN group_config.version IS '版本号';
+COMMENT ON COLUMN group_config.group_partition IS '分区';
+COMMENT ON COLUMN group_config.id_generator_mode IS '唯一id生成模式 默认号段模式';
+COMMENT ON COLUMN group_config.init_scene IS '是否初始化场景 0:否 1:是';
+COMMENT ON COLUMN group_config.bucket_index IS 'bucket';
+COMMENT ON COLUMN group_config.create_dt IS '创建时间';
+COMMENT ON COLUMN group_config.update_dt IS '修改时间';
+COMMENT ON TABLE group_config IS '组配置';
+
+INSERT INTO er_group_config VALUES (1, 'dev', 'ruoyi_group', '', 'ER_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now());
+
+CREATE TABLE er_notify_config
+(
+    id                     BIGSERIAL PRIMARY KEY,
+    namespace_id           VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name             VARCHAR(64)  NOT NULL,
+    scene_name             VARCHAR(64)  NOT NULL,
+    notify_status          SMALLINT     NOT NULL DEFAULT 0,
+    notify_type            SMALLINT     NOT NULL DEFAULT 0,
+    notify_attribute       VARCHAR(512) NOT NULL,
+    notify_threshold       INT          NOT NULL DEFAULT 0,
+    notify_scene           SMALLINT     NOT NULL DEFAULT 0,
+    rate_limiter_status    SMALLINT     NOT NULL DEFAULT 0,
+    rate_limiter_threshold INT          NOT NULL DEFAULT 0,
+    description            VARCHAR(256) NOT NULL DEFAULT '',
+    create_dt              TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt              TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE INDEX idx_namespace_id_group_name_notify_config ON notify_config (namespace_id, group_name);
+
+COMMENT ON COLUMN notify_config.id IS '主键';
+COMMENT ON COLUMN notify_config.group_name IS '组名称';
+COMMENT ON COLUMN notify_config.namespace_id IS '命名空间id';
+COMMENT ON COLUMN notify_config.scene_name IS '场景名称';
+COMMENT ON COLUMN notify_config.notify_status IS '通知状态 0、未启用 1、启用';
+COMMENT ON COLUMN notify_config.notify_type IS '通知类型 1、钉钉 2、邮件 3、企业微信';
+COMMENT ON COLUMN notify_config.notify_attribute IS '配置属性';
+COMMENT ON COLUMN notify_config.notify_threshold IS '通知阈值';
+COMMENT ON COLUMN notify_config.notify_scene IS '通知场景';
+COMMENT ON COLUMN notify_config.rate_limiter_status IS '限流状态 0、未启用 1、启用';
+COMMENT ON COLUMN notify_config.rate_limiter_threshold IS '每秒限流阈值';
+COMMENT ON COLUMN notify_config.description IS '描述';
+COMMENT ON COLUMN notify_config.create_dt IS '创建时间';
+COMMENT ON COLUMN notify_config.update_dt IS '修改时间';
+COMMENT ON TABLE notify_config IS '通知配置';
+
+
+CREATE TABLE er_retry_dead_letter_0
+(
+    id            BIGSERIAL PRIMARY KEY,
+    unique_id     VARCHAR(64)  NOT NULL,
+    namespace_id  VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name    VARCHAR(64)  NOT NULL,
+    scene_name    VARCHAR(64)  NOT NULL,
+    idempotent_id VARCHAR(64)  NOT NULL,
+    biz_no        VARCHAR(64)  NOT NULL DEFAULT '',
+    executor_name VARCHAR(512) NOT NULL DEFAULT '',
+    args_str      TEXT         NOT NULL,
+    ext_attrs     TEXT         NOT NULL,
+    task_type     SMALLINT     NOT NULL DEFAULT 1,
+    create_dt     TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_namespace_id_group_name_unique_id_retry_dead_letter ON retry_dead_letter_0 (namespace_id, group_name, unique_id);
+CREATE INDEX idx_namespace_id_group_name_scene_name_retry_dead_letter ON retry_dead_letter_0 (namespace_id, group_name, scene_name);
+CREATE INDEX idx_idempotent_id_retry_dead_letter ON retry_dead_letter_0 (idempotent_id);
+CREATE INDEX idx_biz_no_retry_dead_letter ON retry_dead_letter_0 (biz_no);
+CREATE INDEX idx_create_dt_retry_dead_letter ON retry_dead_letter_0 (create_dt);
+
+COMMENT ON COLUMN retry_dead_letter_0.id IS '主键';
+COMMENT ON COLUMN retry_dead_letter_0.unique_id IS '同组下id唯一';
+COMMENT ON COLUMN retry_dead_letter_0.namespace_id IS '命名空间id';
+COMMENT ON COLUMN retry_dead_letter_0.group_name IS '组名称';
+COMMENT ON COLUMN retry_dead_letter_0.scene_name IS '场景名称';
+COMMENT ON COLUMN retry_dead_letter_0.idempotent_id IS '幂等id';
+COMMENT ON COLUMN retry_dead_letter_0.biz_no IS '业务编号';
+COMMENT ON COLUMN retry_dead_letter_0.executor_name IS '执行器名称';
+COMMENT ON COLUMN retry_dead_letter_0.args_str IS '执行方法参数';
+COMMENT ON COLUMN retry_dead_letter_0.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN retry_dead_letter_0.task_type IS '任务类型 1、重试数据 2、回调数据';
+COMMENT ON COLUMN retry_dead_letter_0.create_dt IS '创建时间';
+COMMENT ON TABLE retry_dead_letter_0 IS '死信队列表';
+
+CREATE TABLE er_retry_task_0
+(
+    id              BIGSERIAL PRIMARY KEY,
+    unique_id       VARCHAR(64)  NOT NULL,
+    namespace_id    VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name      VARCHAR(64)  NOT NULL,
+    scene_name      VARCHAR(64)  NOT NULL,
+    idempotent_id   VARCHAR(64)  NOT NULL,
+    biz_no          VARCHAR(64)  NOT NULL DEFAULT '',
+    executor_name   VARCHAR(512) NOT NULL DEFAULT '',
+    args_str        TEXT         NOT NULL,
+    ext_attrs       TEXT         NOT NULL,
+    next_trigger_at TIMESTAMP    NOT NULL,
+    retry_count     INT          NOT NULL DEFAULT 0,
+    retry_status    SMALLINT     NOT NULL DEFAULT 0,
+    task_type       SMALLINT     NOT NULL DEFAULT 1,
+    create_dt       TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt       TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_name_unique_id_retry_task ON retry_task_0 (namespace_id, group_name, unique_id);
+CREATE INDEX idx_namespace_id_group_name_scene_name_retry_task ON retry_task_0 (namespace_id, group_name, scene_name);
+CREATE INDEX idx_namespace_id_group_name_retry_status_retry_task ON retry_task_0 (namespace_id, group_name, retry_status);
+CREATE INDEX idx_idempotent_id_retry_task ON retry_task_0 (idempotent_id);
+CREATE INDEX idx_biz_no_retry_task ON retry_task_0 (biz_no);
+CREATE INDEX idx_create_dt_retry_task ON retry_task_0 (create_dt);
+
+COMMENT ON COLUMN retry_task_0.id IS '主键';
+COMMENT ON COLUMN retry_task_0.unique_id IS '同组下id唯一';
+COMMENT ON COLUMN retry_task_0.namespace_id IS '命名空间id';
+COMMENT ON COLUMN retry_task_0.group_name IS '组名称';
+COMMENT ON COLUMN retry_task_0.scene_name IS '场景名称';
+COMMENT ON COLUMN retry_task_0.idempotent_id IS '幂等id';
+COMMENT ON COLUMN retry_task_0.biz_no IS '业务编号';
+COMMENT ON COLUMN retry_task_0.executor_name IS '执行器名称';
+COMMENT ON COLUMN retry_task_0.args_str IS '执行方法参数';
+COMMENT ON COLUMN retry_task_0.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN retry_task_0.next_trigger_at IS '下次触发时间';
+COMMENT ON COLUMN retry_task_0.retry_count IS '重试次数';
+COMMENT ON COLUMN retry_task_0.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数';
+COMMENT ON COLUMN retry_task_0.task_type IS '任务类型 1、重试数据 2、回调数据';
+COMMENT ON COLUMN retry_task_0.create_dt IS '创建时间';
+COMMENT ON COLUMN retry_task_0.update_dt IS '修改时间';
+COMMENT ON TABLE retry_task_0 IS '任务表';
+
+CREATE TABLE er_retry_task_log
+(
+    id            BIGSERIAL PRIMARY KEY,
+    unique_id     VARCHAR(64)  NOT NULL,
+    namespace_id  VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name    VARCHAR(64)  NOT NULL,
+    scene_name    VARCHAR(64)  NOT NULL,
+    idempotent_id VARCHAR(64)  NOT NULL,
+    biz_no        VARCHAR(64)  NOT NULL DEFAULT '',
+    executor_name VARCHAR(512) NOT NULL DEFAULT '',
+    args_str      TEXT         NOT NULL,
+    ext_attrs     TEXT         NOT NULL,
+    retry_status  SMALLINT     NOT NULL DEFAULT 0,
+    task_type     SMALLINT     NOT NULL DEFAULT 1,
+    create_dt     TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt     TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
+
+);
+
+CREATE INDEX idx_group_name_scene_name_retry_task_log ON retry_task_log (namespace_id, group_name, scene_name);
+CREATE INDEX idx_retry_status_retry_task_log ON retry_task_log (retry_status);
+CREATE INDEX idx_idempotent_id_retry_task_log ON retry_task_log (idempotent_id);
+CREATE INDEX idx_unique_id ON retry_task_log (namespace_id, group_name, unique_id);
+CREATE INDEX idx_biz_no_retry_task_log ON retry_task_log (biz_no);
+CREATE INDEX idx_create_dt_retry_task_log ON retry_task_log (create_dt);
+
+COMMENT ON COLUMN retry_task_log.id IS '主键';
+COMMENT ON COLUMN retry_task_log.namespace_id IS '命名空间id';
+COMMENT ON COLUMN retry_task_log.unique_id IS '同组下id唯一';
+COMMENT ON COLUMN retry_task_log.group_name IS '组名称';
+COMMENT ON COLUMN retry_task_log.scene_name IS '场景名称';
+COMMENT ON COLUMN retry_task_log.idempotent_id IS '幂等id';
+COMMENT ON COLUMN retry_task_log.biz_no IS '业务编号';
+COMMENT ON COLUMN retry_task_log.executor_name IS '执行器名称';
+COMMENT ON COLUMN retry_task_log.args_str IS '执行方法参数';
+COMMENT ON COLUMN retry_task_log.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN retry_task_log.retry_status IS '重试状态 0、重试中 1、成功 2、最大次数';
+COMMENT ON COLUMN retry_task_log.task_type IS '任务类型 1、重试数据 2、回调数据';
+COMMENT ON COLUMN retry_task_log.create_dt IS '创建时间';
+COMMENT ON COLUMN retry_task_log.update_dt IS '修改时间';
+COMMENT ON TABLE retry_task_log IS '任务日志基础信息表';
+
+CREATE TABLE er_retry_task_log_message
+(
+    id           BIGSERIAL PRIMARY KEY,
+    namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name   VARCHAR(64) NOT NULL,
+    unique_id    VARCHAR(64) NOT NULL,
+    create_dt    TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    message      TEXT        NOT NULL,
+    log_num      INT         NOT NULL DEFAULT 1,
+    real_time    BIGINT      NOT NULL DEFAULT 0
+);
+
+CREATE INDEX idx_namespace_id_group_name_unique_id ON retry_task_log_message (namespace_id, group_name, unique_id);
+CREATE INDEX idx_create_dt ON retry_task_log_message (create_dt);
+COMMENT ON COLUMN retry_task_log_message.id IS '主键';
+COMMENT ON COLUMN retry_task_log_message.namespace_id IS '命名空间';
+COMMENT ON COLUMN retry_task_log_message.group_name IS '组名称';
+COMMENT ON COLUMN retry_task_log_message.unique_id IS '同组下id唯一';
+COMMENT ON COLUMN retry_task_log_message.create_dt IS '创建时间';
+COMMENT ON COLUMN retry_task_log_message.message IS '异常信息';
+COMMENT ON COLUMN retry_task_log_message.log_num IS '日志条数';
+COMMENT ON COLUMN retry_task_log_message.real_time IS '实际时间';
+COMMENT ON TABLE retry_task_log_message IS '任务调度日志信息记录表';
+
+CREATE TABLE er_scene_config
+(
+    id               BIGSERIAL PRIMARY KEY,
+    namespace_id     VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    scene_name       VARCHAR(64)  NOT NULL,
+    group_name       VARCHAR(64)  NOT NULL,
+    scene_status     SMALLINT     NOT NULL DEFAULT 0,
+    max_retry_count  INT          NOT NULL DEFAULT 5,
+    back_off         SMALLINT     NOT NULL DEFAULT 1,
+    trigger_interval VARCHAR(16)  NOT NULL DEFAULT '',
+    deadline_request BIGINT       NOT NULL DEFAULT 60000,
+    route_key        SMALLINT     NOT NULL DEFAULT 4,
+    executor_timeout INT          NOT NULL DEFAULT 5,
+    description      VARCHAR(256) NOT NULL DEFAULT '',
+    create_dt        TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt        TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_namespace_id_group_name_scene_name ON scene_config (namespace_id, group_name, scene_name);
+COMMENT ON COLUMN scene_config.id IS '主键';
+COMMENT ON COLUMN scene_config.namespace_id IS '命名空间id';
+COMMENT ON COLUMN scene_config.scene_name IS '场景名称';
+COMMENT ON COLUMN scene_config.group_name IS '组名称';
+COMMENT ON COLUMN scene_config.scene_status IS '组状态 0、未启用 1、启用';
+COMMENT ON COLUMN scene_config.max_retry_count IS '最大重试次数';
+COMMENT ON COLUMN scene_config.back_off IS '1、默认等级 2、固定间隔时间 3、CRON 表达式';
+COMMENT ON COLUMN scene_config.trigger_interval IS '间隔时长';
+COMMENT ON COLUMN scene_config.deadline_request IS 'Deadline Request 调用链超时 单位毫秒';
+COMMENT ON COLUMN scene_config.description IS '描述';
+COMMENT ON COLUMN scene_config.route_key IS '路由策略';
+COMMENT ON COLUMN scene_config.executor_timeout IS '超时时间';
+COMMENT ON COLUMN scene_config.create_dt IS '创建时间';
+COMMENT ON COLUMN scene_config.update_dt IS '修改时间';
+COMMENT ON TABLE scene_config IS '场景配置';
+
+CREATE TABLE er_server_node
+(
+    id           BIGSERIAL PRIMARY KEY,
+    namespace_id VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name   VARCHAR(64)  NOT NULL,
+    host_id      VARCHAR(64)  NOT NULL,
+    host_ip      VARCHAR(64)  NOT NULL,
+    context_path VARCHAR(256) NOT NULL DEFAULT '/',
+    host_port    INT          NOT NULL,
+    expire_at    TIMESTAMP    NOT NULL,
+    node_type    SMALLINT     NOT NULL,
+    ext_attrs    VARCHAR(256)          DEFAULT '',
+    create_dt    TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt    TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_host_id_host_ip ON server_node (host_id, host_ip);
+CREATE INDEX idx_expire_at_node_type ON server_node (expire_at, node_type);
+CREATE INDEX idx_namespace_id_group_name_server_node ON server_node (namespace_id, group_name);
+
+COMMENT ON COLUMN server_node.id IS '主键';
+COMMENT ON COLUMN server_node.group_name IS '组名称';
+COMMENT ON COLUMN server_node.namespace_id IS '命名空间id';
+COMMENT ON COLUMN server_node.host_id IS '主机id';
+COMMENT ON COLUMN server_node.host_ip IS '机器ip';
+COMMENT ON COLUMN server_node.context_path IS '客户端上下文路径 server.servlet.context-path';
+COMMENT ON COLUMN server_node.host_port IS '机器端口';
+COMMENT ON COLUMN server_node.expire_at IS '过期时间';
+COMMENT ON COLUMN server_node.node_type IS '节点类型 1、客户端 2、是服务端';
+COMMENT ON COLUMN server_node.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN server_node.create_dt IS '创建时间';
+COMMENT ON COLUMN server_node.update_dt IS '修改时间';
+COMMENT ON TABLE server_node IS '服务器节点';
+
+CREATE TABLE er_distributed_lock
+(
+    id         BIGSERIAL PRIMARY KEY,
+    name       VARCHAR(64)  NOT NULL,
+    lock_until TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    locked_at  TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    locked_by  VARCHAR(255) NOT NULL,
+    create_dt  TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt  TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+ALTER TABLE distributed_lock
+    ADD CONSTRAINT uk_name UNIQUE (name);
+
+COMMENT ON COLUMN distributed_lock.id IS '主键';
+COMMENT ON COLUMN distributed_lock.name IS '锁名称';
+COMMENT ON COLUMN distributed_lock.lock_until IS '锁定时长';
+COMMENT ON COLUMN distributed_lock.locked_at IS '锁定时间';
+COMMENT ON COLUMN distributed_lock.locked_by IS '锁定者';
+COMMENT ON COLUMN distributed_lock.create_dt IS '创建时间';
+COMMENT ON COLUMN distributed_lock.update_dt IS '修改时间';
+COMMENT ON TABLE distributed_lock IS '锁定表';
+
+
+CREATE TABLE er_system_user
+(
+    id        BIGSERIAL PRIMARY KEY,
+    username  VARCHAR(64)  NOT NULL,
+    password  VARCHAR(128) NOT NULL,
+    role      SMALLINT     NOT NULL DEFAULT 0,
+    create_dt TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_username ON system_user (username);
+COMMENT ON COLUMN system_user.id IS '主键';
+COMMENT ON COLUMN system_user.username IS '账号';
+COMMENT ON COLUMN system_user.password IS '密码';
+COMMENT ON COLUMN system_user.role IS '角色:1-普通用户、2-管理员';
+COMMENT ON COLUMN system_user.create_dt IS '创建时间';
+COMMENT ON COLUMN system_user.update_dt IS '修改时间';
+COMMENT ON TABLE system_user IS '系统用户表';
+
+-- pwd: admin
+INSERT INTO er_system_user VALUES (1, 'admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2, now(), now());
+
+CREATE TABLE er_system_user_permission
+(
+    id             BIGSERIAL PRIMARY KEY,
+    namespace_id   VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name     VARCHAR(64) NOT NULL,
+    system_user_id BIGINT      NOT NULL,
+    create_dt      TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt      TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_namespace_id_group_name_system_user_id ON system_user_permission (namespace_id, group_name, system_user_id);
+COMMENT ON COLUMN system_user_permission.id IS '主键';
+COMMENT ON COLUMN system_user_permission.namespace_id IS '命名空间id';
+COMMENT ON COLUMN system_user_permission.group_name IS '组名称';
+COMMENT ON COLUMN system_user_permission.system_user_id IS '系统用户id';
+COMMENT ON COLUMN system_user_permission.create_dt IS '创建时间';
+COMMENT ON COLUMN system_user_permission.update_dt IS '修改时间';
+COMMENT ON TABLE system_user_permission IS '系统用户权限表';
+
+
+CREATE TABLE er_sequence_alloc
+(
+    id           BIGSERIAL PRIMARY KEY,
+    namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name   VARCHAR(64) NOT NULL DEFAULT '',
+    max_id       BIGINT      NOT NULL DEFAULT 1,
+    step         INT         NOT NULL DEFAULT 100,
+    update_dt    TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_namespace_id_group_name ON sequence_alloc (namespace_id, group_name);
+
+COMMENT ON COLUMN sequence_alloc.id IS '主键';
+COMMENT ON COLUMN sequence_alloc.namespace_id IS '命名空间id';
+COMMENT ON COLUMN sequence_alloc.group_name IS '组名称';
+COMMENT ON COLUMN sequence_alloc.max_id IS '最大id';
+COMMENT ON COLUMN sequence_alloc.step IS '步长';
+COMMENT ON COLUMN sequence_alloc.update_dt IS '更新时间';
+COMMENT ON TABLE sequence_alloc IS '号段模式序号ID分配表';
+
+-- 分布式调度DDL
+CREATE TABLE er_job
+(
+    id               BIGSERIAL PRIMARY KEY,
+    namespace_id     VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name       VARCHAR(64)  NOT NULL,
+    job_name         VARCHAR(64)  NOT NULL,
+    args_str         TEXT         NOT NULL DEFAULT '',
+    args_type        SMALLINT     NOT NULL DEFAULT 1,
+    next_trigger_at  BIGINT       NOT NULL,
+    job_status       SMALLINT     NOT NULL DEFAULT 1,
+    task_type        SMALLINT     NOT NULL DEFAULT 1,
+    route_key        SMALLINT     NOT NULL DEFAULT 4,
+    executor_type    SMALLINT     NOT NULL DEFAULT 1,
+    executor_info    VARCHAR(255)          DEFAULT NULL,
+    trigger_type     SMALLINT     NOT NULL,
+    trigger_interval VARCHAR(255) NOT NULL,
+    block_strategy   SMALLINT     NOT NULL DEFAULT 1,
+    executor_timeout INT          NOT NULL DEFAULT 0,
+    max_retry_times  INT          NOT NULL DEFAULT 0,
+    parallel_num     INT          NOT NULL DEFAULT 1,
+    retry_interval   INT          NOT NULL DEFAULT 0,
+    bucket_index     INT          NOT NULL DEFAULT 0,
+    resident         SMALLINT     NOT NULL DEFAULT 0,
+    description      VARCHAR(256) NOT NULL DEFAULT '',
+    ext_attrs        VARCHAR(256)          DEFAULT NULL,
+    create_dt        TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt        TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    deleted          SMALLINT     NOT NULL DEFAULT 0
+);
+
+CREATE INDEX idx_namespace_id_group_name_job ON job (namespace_id, group_name);
+CREATE INDEX idx_job_status_bucket_index_job ON job (job_status, bucket_index);
+CREATE INDEX idx_create_dt_job ON job (create_dt);
+
+COMMENT ON COLUMN job.id IS '主键';
+COMMENT ON COLUMN job.namespace_id IS '命名空间id';
+COMMENT ON COLUMN job.group_name IS '组名称';
+COMMENT ON COLUMN job.job_name IS '名称';
+COMMENT ON COLUMN job.args_str IS '执行方法参数';
+COMMENT ON COLUMN job.args_type IS '参数类型';
+COMMENT ON COLUMN job.next_trigger_at IS '下次触发时间';
+COMMENT ON COLUMN job.job_status IS '重试状态 0、关闭、1、开启';
+COMMENT ON COLUMN job.task_type IS '任务类型 1、集群 2、广播 3、切片';
+COMMENT ON COLUMN job.route_key IS '路由策略';
+COMMENT ON COLUMN job.executor_type IS '执行器类型';
+COMMENT ON COLUMN job.executor_info IS '执行器名称';
+COMMENT ON COLUMN job.trigger_type IS '触发类型 1.CRON 表达式 2. 固定时间';
+COMMENT ON COLUMN job.trigger_interval IS '间隔时长';
+COMMENT ON COLUMN job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
+COMMENT ON COLUMN job.executor_timeout IS '任务执行超时时间,单位秒';
+COMMENT ON COLUMN job.max_retry_times IS '最大重试次数';
+COMMENT ON COLUMN job.parallel_num IS '并行数';
+COMMENT ON COLUMN job.retry_interval IS '更新重试间隔(s)';
+COMMENT ON COLUMN job.bucket_index IS 'bucket';
+COMMENT ON COLUMN job.resident IS '是否是常驻任务';
+COMMENT ON COLUMN job.description IS '描述';
+COMMENT ON COLUMN job.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN job.create_dt IS '创建时间';
+COMMENT ON COLUMN job.deleted IS '逻辑删除 1、删除';
+COMMENT ON COLUMN job.update_dt IS '更新时间';
+COMMENT ON TABLE job IS '任务信息';
+
+CREATE TABLE er_job_log_message
+(
+    id            BIGSERIAL PRIMARY KEY,
+    namespace_id  VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name    VARCHAR(64) NOT NULL,
+    job_id        BIGINT      NOT NULL,
+    task_batch_id BIGINT      NOT NULL,
+    task_id       BIGINT      NOT NULL,
+    message       TEXT        NOT NULL,
+    log_num       INT         NOT NULL DEFAULT 1,
+    real_time     BIGINT      NOT NULL DEFAULT 0,
+    ext_attrs     VARCHAR(256)         DEFAULT '',
+    create_dt     TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE INDEX idx_namespace_id_group_name_to_job_log_message ON job_log_message (namespace_id, group_name);
+CREATE INDEX idx_task_batch_id_task_id_to_job_log_message ON job_log_message (task_batch_id, task_id);
+CREATE INDEX idx_create_dt_to_job_log_message ON job_log_message (create_dt);
+
+COMMENT ON COLUMN job_log_message.id IS '主键';
+COMMENT ON COLUMN job_log_message.namespace_id IS '命名空间id';
+COMMENT ON COLUMN job_log_message.group_name IS '组名称';
+COMMENT ON COLUMN job_log_message.job_id IS '任务信息id';
+COMMENT ON COLUMN job_log_message.task_batch_id IS '任务批次id';
+COMMENT ON COLUMN job_log_message.task_id IS '调度任务id';
+COMMENT ON COLUMN job_log_message.message IS '调度信息';
+COMMENT ON COLUMN job_log_message.log_num IS '日志序号';
+COMMENT ON COLUMN job_log_message.real_time IS '实际时间';
+COMMENT ON COLUMN job_log_message.create_dt IS '创建时间';
+COMMENT ON COLUMN job_log_message.ext_attrs IS '扩展字段';
+COMMENT ON TABLE job_log_message IS '调度日志';
+
+CREATE TABLE er_job_task
+(
+    id             BIGSERIAL PRIMARY KEY,
+    namespace_id   VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name     VARCHAR(64) NOT NULL,
+    job_id         BIGINT      NOT NULL,
+    task_batch_id  BIGINT      NOT NULL,
+    parent_id      BIGINT      NOT NULL DEFAULT 0,
+    task_status    SMALLINT    NOT NULL DEFAULT 0,
+    retry_count    INT         NOT NULL DEFAULT 0,
+    client_info    VARCHAR(128)         DEFAULT NULL,
+    result_message TEXT        NOT NULL,
+    args_str       TEXT        NOT NULL,
+    args_type      SMALLINT    NOT NULL DEFAULT 1,
+    ext_attrs      VARCHAR(256)         DEFAULT '',
+    create_dt      TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt      TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+
+CREATE INDEX idx_namespace_id_group_name_to_job_task ON job_task (namespace_id, group_name);
+CREATE INDEX idx_task_batch_id_task_status_to_job_task ON job_task (task_batch_id, task_status);
+CREATE INDEX idx_create_dt_to_job_task ON job_task (create_dt);
+COMMENT ON COLUMN job_task.id IS '主键';
+COMMENT ON COLUMN job_task.namespace_id IS '命名空间id';
+COMMENT ON COLUMN job_task.group_name IS '组名称';
+COMMENT ON COLUMN job_task.job_id IS '任务信息id';
+COMMENT ON COLUMN job_task.task_batch_id IS '任务批次id';
+COMMENT ON COLUMN job_task.parent_id IS '父执行器id';
+COMMENT ON COLUMN job_task.task_status IS '执行的状态 0、失败 1、成功';
+COMMENT ON COLUMN job_task.retry_count IS '重试次数';
+COMMENT ON COLUMN job_task.client_info IS '客户端地址 clientId#ip:port';
+COMMENT ON COLUMN job_task.result_message IS '调度信息';
+COMMENT ON COLUMN job_task.args_str IS '执行方法参数';
+COMMENT ON COLUMN job_task.args_type IS '参数类型';
+COMMENT ON COLUMN job_task.create_dt IS '创建时间';
+COMMENT ON COLUMN job_task.update_dt IS '创建时间';
+COMMENT ON COLUMN job_task.ext_attrs IS '扩展字段';
+COMMENT ON TABLE job_task IS '任务实例';
+
+CREATE TABLE er_job_task_batch
+(
+    id                      BIGSERIAL PRIMARY KEY,
+    namespace_id            VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name              VARCHAR(64) NOT NULL,
+    job_id                  BIGINT      NOT NULL,
+    workflow_node_id        BIGINT      NOT NULL DEFAULT 0,
+    parent_workflow_node_id BIGINT      NOT NULL DEFAULT 0,
+    workflow_task_batch_id  BIGINT      NOT NULL DEFAULT 0,
+    parent_id               VARCHAR(64) NOT NULL DEFAULT '',
+    task_batch_status       SMALLINT    NOT NULL DEFAULT 0,
+    operation_reason        SMALLINT    NOT NULL DEFAULT 0,
+    execution_at            BIGINT      NOT NULL DEFAULT 0,
+    system_task_type        SMALLINT    NOT NULL DEFAULT 3,
+    ext_attrs               VARCHAR(256)         DEFAULT '',
+    deleted                 SMALLINT    NOT NULL DEFAULT 0,
+    create_dt               TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt               TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE INDEX idx_namespace_id_group_name_to_job_task_batch ON job_task_batch (namespace_id, group_name);
+CREATE INDEX idx_job_id_task_batch_status_to_job_task_batch ON job_task_batch (job_id, task_batch_status);
+CREATE INDEX idx_create_dt_to_job_task_batch ON job_task_batch (create_dt);
+CREATE INDEX idx_workflow_task_batch_id_workflow_node_id ON job_task_batch (workflow_task_batch_id, workflow_node_id);
+
+COMMENT ON COLUMN job_task_batch.id IS '主键';
+COMMENT ON COLUMN job_task_batch.namespace_id IS '命名空间id';
+COMMENT ON COLUMN job_task_batch.group_name IS '组名称';
+COMMENT ON COLUMN job_task_batch.job_id IS '任务信息id';
+COMMENT ON COLUMN job_task_batch.task_batch_status IS '任务批次状态 0、失败 1、成功';
+COMMENT ON COLUMN job_task_batch.operation_reason IS '操作原因';
+COMMENT ON COLUMN job_task_batch.workflow_node_id IS '工作流节点id';
+COMMENT ON COLUMN job_task_batch.parent_workflow_node_id IS '父节点';
+COMMENT ON COLUMN job_task_batch.workflow_task_batch_id IS '任务批次id';
+COMMENT ON COLUMN job_task_batch.system_task_type IS '任务类型 0、系统任务 1、业务任务';
+COMMENT ON COLUMN job_task_batch.execution_at IS '任务执行时间';
+COMMENT ON COLUMN job_task_batch.parent_id IS '父节点';
+COMMENT ON COLUMN job_task_batch.deleted IS '逻辑删除 1、删除';
+COMMENT ON COLUMN job_task_batch.create_dt IS '创建时间';
+COMMENT ON COLUMN job_task_batch.update_dt IS '创建时间';
+COMMENT ON COLUMN job_task_batch.ext_attrs IS '扩展字段';
+COMMENT ON TABLE job_task_batch IS '任务批次';
+
+CREATE TABLE er_job_notify_config
+(
+    id                     BIGSERIAL PRIMARY KEY,
+    namespace_id           VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name             VARCHAR(64)  NOT NULL,
+    job_id                 BIGINT       NOT NULL,
+    notify_status          SMALLINT     NOT NULL DEFAULT 0,
+    notify_type            SMALLINT     NOT NULL DEFAULT 0,
+    notify_attribute       VARCHAR(512) NOT NULL,
+    notify_threshold       INT          NOT NULL DEFAULT 0,
+    notify_scene           SMALLINT     NOT NULL DEFAULT 0,
+    rate_limiter_status    SMALLINT     NOT NULL DEFAULT 0,
+    rate_limiter_threshold INT          NOT NULL DEFAULT 0,
+    description            VARCHAR(256) NOT NULL DEFAULT '',
+    create_dt              TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt              TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE INDEX idx_namespace_id_group_name_job_id_job_notify_config ON job_notify_config (namespace_id, group_name, job_id);
+
+COMMENT ON COLUMN job_notify_config.id IS '主键';
+COMMENT ON COLUMN job_notify_config.namespace_id IS '命名空间id';
+COMMENT ON COLUMN job_notify_config.group_name IS '组名称';
+COMMENT ON COLUMN job_notify_config.job_id IS '任务信息id';
+COMMENT ON COLUMN job_notify_config.notify_status IS '通知状态 0、未启用 1、启用';
+COMMENT ON COLUMN job_notify_config.notify_type IS '通知类型 1、钉钉 2、邮件 3、企业微信';
+COMMENT ON COLUMN job_notify_config.notify_attribute IS '配置属性';
+COMMENT ON COLUMN job_notify_config.notify_threshold IS '通知阈值';
+COMMENT ON COLUMN job_notify_config.notify_scene IS '通知场景';
+COMMENT ON COLUMN job_notify_config.rate_limiter_status IS '限流状态 0、未启用 1、启用';
+COMMENT ON COLUMN job_notify_config.rate_limiter_threshold IS '每秒限流阈值';
+COMMENT ON COLUMN job_notify_config.description IS '描述';
+COMMENT ON COLUMN job_notify_config.create_dt IS '创建时间';
+COMMENT ON COLUMN job_notify_config.update_dt IS '修改时间';
+COMMENT ON TABLE job_notify_config IS '通知配置';
+
+CREATE TABLE er_retry_summary
+(
+    id            BIGSERIAL PRIMARY KEY,
+    namespace_id  VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name    VARCHAR(64) NOT NULL DEFAULT '',
+    scene_name    VARCHAR(50) NOT NULL DEFAULT '',
+    trigger_at    TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    running_num   INT         NOT NULL DEFAULT 0,
+    finish_num    INT         NOT NULL DEFAULT 0,
+    max_count_num INT         NOT NULL DEFAULT 0,
+    suspend_num   INT         NOT NULL DEFAULT 0,
+    create_dt     TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt     TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_scene_name_trigger_at ON retry_summary (namespace_id, group_name, scene_name, trigger_at);
+
+COMMENT ON COLUMN retry_summary.id IS '主键';
+COMMENT ON COLUMN retry_summary.namespace_id IS '命名空间id';
+COMMENT ON COLUMN retry_summary.group_name IS '组名称';
+COMMENT ON COLUMN retry_summary.scene_name IS '场景名称';
+COMMENT ON COLUMN retry_summary.trigger_at IS '统计时间';
+COMMENT ON COLUMN retry_summary.running_num IS '重试中-日志数量';
+COMMENT ON COLUMN retry_summary.finish_num IS '重试完成-日志数量';
+COMMENT ON COLUMN retry_summary.max_count_num IS '重试到达最大次数-日志数量';
+COMMENT ON COLUMN retry_summary.suspend_num IS '暂停重试-日志数量';
+COMMENT ON COLUMN retry_summary.create_dt IS '创建时间';
+COMMENT ON COLUMN retry_summary.update_dt IS '修改时间';
+COMMENT ON TABLE retry_summary IS 'DashBoard_Retry';
+
+CREATE TABLE er_job_summary
+(
+    id               BIGSERIAL PRIMARY KEY,
+    namespace_id     VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name       VARCHAR(64)  NOT NULL DEFAULT '',
+    business_id      BIGINT       NOT NULL,
+    system_task_type SMALLINT     NOT NULL DEFAULT '3',
+    trigger_at       TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    success_num      INT          NOT NULL DEFAULT 0,
+    fail_num         INT          NOT NULL DEFAULT 0,
+    fail_reason      VARCHAR(512) NOT NULL DEFAULT '',
+    stop_num         INT          NOT NULL DEFAULT 0,
+    stop_reason      VARCHAR(512) NOT NULL DEFAULT '',
+    cancel_num       INT          NOT NULL DEFAULT 0,
+    cancel_reason    VARCHAR(512) NOT NULL DEFAULT '',
+    create_dt        TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt        TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE UNIQUE INDEX uk_trigger_at_system_task_type_business_id ON job_summary (trigger_at, system_task_type, business_id);
+CREATE INDEX idx_namespace_id_group_name_job_id ON job_summary (namespace_id, group_name, business_id);
+
+COMMENT ON COLUMN job_summary.id IS '主键';
+COMMENT ON COLUMN job_summary.namespace_id IS '命名空间id';
+COMMENT ON COLUMN job_summary.group_name IS '组名称';
+COMMENT ON COLUMN job_summary.business_id IS '业务id (job_id或workflow_id)';
+COMMENT ON COLUMN job_summary.system_task_type IS '任务类型 3、JOB任务 4、WORKFLOW任务';
+COMMENT ON COLUMN job_summary.trigger_at IS '统计时间';
+COMMENT ON COLUMN job_summary.success_num IS '执行成功-日志数量';
+COMMENT ON COLUMN job_summary.fail_num IS '执行失败-日志数量';
+COMMENT ON COLUMN job_summary.fail_reason IS '失败原因';
+COMMENT ON COLUMN job_summary.stop_num IS '执行失败-日志数量';
+COMMENT ON COLUMN job_summary.stop_reason IS '失败原因';
+COMMENT ON COLUMN job_summary.cancel_num IS '执行失败-日志数量';
+COMMENT ON COLUMN job_summary.cancel_reason IS '失败原因';
+COMMENT ON TABLE job_summary IS 'DashBoard_Job';
+
+CREATE TABLE er_workflow
+(
+    id               BIGSERIAL PRIMARY KEY,
+    workflow_name    varchar(64)  NOT NULL,
+    namespace_id     varchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name       varchar(64)  NOT NULL,
+    workflow_status  smallint     NOT NULL DEFAULT 1,
+    trigger_type     smallint     NOT NULL,
+    trigger_interval varchar(255) NOT NULL,
+    next_trigger_at  BIGINT       NOT NULL,
+    block_strategy   smallint     NOT NULL DEFAULT 1,
+    executor_timeout INT          NOT NULL DEFAULT 0,
+    description      varchar(256) NOT NULL DEFAULT '',
+    flow_info        text                  DEFAULT NULL,
+    bucket_index     INT          NOT NULL DEFAULT 0,
+    version          INT          NOT NULL,
+    create_dt        timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt        timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    deleted          smallint     NOT NULL DEFAULT 0,
+    ext_attrs        varchar(256) NULL     DEFAULT ''
+);
+
+
+CREATE INDEX idx_create_dt_workflow ON workflow (create_dt);
+CREATE INDEX idx_namespace_id_group_name_workflow ON workflow (namespace_id, group_name);
+
+COMMENT ON TABLE workflow IS '工作流';
+COMMENT ON COLUMN workflow.id IS '主键';
+COMMENT ON COLUMN workflow.workflow_name IS '工作流名称';
+COMMENT ON COLUMN workflow.namespace_id IS '命名空间id';
+COMMENT ON COLUMN workflow.group_name IS '组名称';
+COMMENT ON COLUMN workflow.workflow_status IS '工作流状态 0、关闭、1、开启';
+COMMENT ON COLUMN workflow.trigger_type IS '触发类型 1.CRON 表达式 2. 固定时间';
+COMMENT ON COLUMN workflow.trigger_interval IS '间隔时长';
+COMMENT ON COLUMN workflow.next_trigger_at IS '下次触发时间';
+COMMENT ON COLUMN workflow.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
+COMMENT ON COLUMN workflow.executor_timeout IS '任务执行超时时间,单位秒';
+COMMENT ON COLUMN workflow.description IS '描述';
+COMMENT ON COLUMN workflow.flow_info IS '流程信息';
+COMMENT ON COLUMN workflow.bucket_index IS 'bucket';
+COMMENT ON COLUMN workflow.version IS '版本号';
+COMMENT ON COLUMN workflow.create_dt IS '创建时间';
+COMMENT ON COLUMN workflow.update_dt IS '修改时间';
+COMMENT ON COLUMN workflow.deleted IS '逻辑删除 1、删除';
+COMMENT ON COLUMN workflow.ext_attrs IS '扩展字段';
+
+CREATE TABLE er_workflow_node
+(
+    id                   BIGSERIAL PRIMARY KEY,
+    namespace_id         VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    node_name            VARCHAR(64)  NOT NULL,
+    group_name           VARCHAR(64)  NOT NULL,
+    job_id               BIGINT       NOT NULL,
+    workflow_id          BIGINT       NOT NULL,
+    node_type            SMALLINT     NOT NULL DEFAULT 1,
+    expression_type      SMALLINT     NOT NULL DEFAULT 0,
+    fail_strategy        SMALLINT     NOT NULL DEFAULT 1,
+    workflow_node_status SMALLINT     NOT NULL DEFAULT 1,
+    priority_level       INT          NOT NULL DEFAULT 1,
+    node_info            TEXT                  DEFAULT NULL,
+    version              INT          NOT NULL,
+    create_dt            TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt            TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    deleted              SMALLINT     NOT NULL DEFAULT 0,
+    ext_attrs            VARCHAR(256) NULL     DEFAULT ''
+);
+
+CREATE INDEX idx_create_dt_workflow_node ON workflow_node (create_dt);
+CREATE INDEX idx_namespace_id_group_name_workflow_node ON workflow_node (namespace_id, group_name);
+
+COMMENT ON TABLE workflow_node IS '工作流节点';
+COMMENT ON COLUMN workflow_node.id IS '主键';
+COMMENT ON COLUMN workflow_node.namespace_id IS '命名空间id';
+COMMENT ON COLUMN workflow_node.node_name IS '节点名称';
+COMMENT ON COLUMN workflow_node.group_name IS '组名称';
+COMMENT ON COLUMN workflow_node.job_id IS '任务信息id';
+COMMENT ON COLUMN workflow_node.workflow_id IS '工作流ID';
+COMMENT ON COLUMN workflow_node.node_type IS '1、任务节点 2、条件节点';
+COMMENT ON COLUMN workflow_node.expression_type IS '1、SpEl、2、Aviator 3、QL';
+COMMENT ON COLUMN workflow_node.fail_strategy IS '失败策略 1、跳过 2、阻塞';
+COMMENT ON COLUMN workflow_node.workflow_node_status IS '工作流节点状态 0、关闭、1、开启';
+COMMENT ON COLUMN workflow_node.priority_level IS '优先级';
+COMMENT ON COLUMN workflow_node.node_info IS '节点信息';
+COMMENT ON COLUMN workflow_node.version IS '版本号';
+COMMENT ON COLUMN workflow_node.create_dt IS '创建时间';
+COMMENT ON COLUMN workflow_node.update_dt IS '修改时间';
+COMMENT ON COLUMN workflow_node.deleted IS '逻辑删除 1、删除';
+COMMENT ON COLUMN workflow_node.ext_attrs IS '扩展字段';
+
+CREATE TABLE er_workflow_task_batch
+(
+    id                BIGSERIAL PRIMARY KEY,
+    namespace_id      VARCHAR(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name        VARCHAR(64)  NOT NULL,
+    workflow_id       BIGINT       NOT NULL,
+    task_batch_status SMALLINT     NOT NULL DEFAULT 0,
+    operation_reason  SMALLINT     NOT NULL DEFAULT 0,
+    flow_info         TEXT                  DEFAULT NULL,
+    execution_at      BIGINT       NOT NULL DEFAULT 0,
+    create_dt         TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt         TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    deleted           SMALLINT     NOT NULL DEFAULT 0,
+    ext_attrs         VARCHAR(256) NULL     DEFAULT ''
+);
+
+CREATE INDEX idx_job_id_task_batch_status_workflow_task_batch ON workflow_task_batch (workflow_id, task_batch_status);
+CREATE INDEX idx_create_dt_workflow_task_batch ON workflow_task_batch (create_dt);
+CREATE INDEX idx_namespace_id_group_name_workflow_task_batch ON workflow_task_batch (namespace_id, group_name);
+
+COMMENT ON TABLE workflow_task_batch IS '工作流批次';
+COMMENT ON COLUMN workflow_task_batch.id IS '主键';
+COMMENT ON COLUMN workflow_task_batch.namespace_id IS '命名空间id';
+COMMENT ON COLUMN workflow_task_batch.group_name IS '组名称';
+COMMENT ON COLUMN workflow_task_batch.workflow_id IS '工作流任务id';
+COMMENT ON COLUMN workflow_task_batch.task_batch_status IS '任务批次状态 0、失败 1、成功';
+COMMENT ON COLUMN workflow_task_batch.operation_reason IS '操作原因';
+COMMENT ON COLUMN workflow_task_batch.flow_info IS '流程信息';
+COMMENT ON COLUMN workflow_task_batch.execution_at IS '任务执行时间';
+COMMENT ON COLUMN workflow_task_batch.create_dt IS '创建时间';
+COMMENT ON COLUMN workflow_task_batch.update_dt IS '修改时间';
+COMMENT ON COLUMN workflow_task_batch.deleted IS '逻辑删除 1、删除';
+COMMENT ON COLUMN workflow_task_batch.ext_attrs IS '扩展字段';

+ 2749 - 0
script/sql/sqlserver/easy_retry_sqlserver.sql

@@ -0,0 +1,2749 @@
+-- er_distributed_lock
+CREATE TABLE er_distributed_lock
+(
+    id         bigint PRIMARY KEY IDENTITY,
+    name       nvarchar(64)  NOT NULL,
+    lock_until datetime2     NOT NULL DEFAULT GETDATE(),
+    locked_at  datetime2     NOT NULL DEFAULT GETDATE(),
+    locked_by  nvarchar(255) NOT NULL,
+    create_dt  datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt  datetime2     NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE UNIQUE NONCLUSTERED INDEX uk_name ON distributed_lock (name ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'distributed_lock',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'锁名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'distributed_lock',
+     'COLUMN', N'name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'锁定时长',
+     'SCHEMA', N'dbo',
+     'TABLE', N'distributed_lock',
+     'COLUMN', N'lock_until'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'锁定时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'distributed_lock',
+     'COLUMN', N'locked_at'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'锁定者',
+     'SCHEMA', N'dbo',
+     'TABLE', N'distributed_lock',
+     'COLUMN', N'locked_by'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'distributed_lock',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'distributed_lock',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'锁定表',
+     'SCHEMA', N'dbo',
+     'TABLE', N'distributed_lock'
+GO
+
+-- er_group_config
+CREATE TABLE er_group_config
+(
+    id                bigint PRIMARY KEY IDENTITY,
+    namespace_id      nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name        nvarchar(64)  NOT NULL DEFAULT '',
+    description       nvarchar(256) NOT NULL DEFAULT '',
+    token             nvarchar(64)  NOT NULL DEFAULT 'ER_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT',
+    group_status      tinyint       NOT NULL DEFAULT '0',
+    version           int           NOT NULL,
+    group_partition   int           NOT NULL,
+    id_generator_mode tinyint       NOT NULL DEFAULT '1',
+    init_scene        tinyint       NOT NULL DEFAULT '0',
+    bucket_index      int           NOT NULL DEFAULT '0',
+    create_dt         datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt         datetime2     NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE UNIQUE NONCLUSTERED INDEX uk_namespace_id_group_name ON group_config (namespace_id ASC, group_name ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组描述',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'description'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'token',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'token'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组状态 0、未启用 1、启用',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'group_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'版本号',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'version'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'分区',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'group_partition'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'唯一id生成模式 默认号段模式',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'id_generator_mode'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'是否初始化场景 0:否 1:是',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'init_scene'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'bucket',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'bucket_index'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组配置',
+     'SCHEMA', N'dbo',
+     'TABLE', N'group_config'
+GO
+
+INSERT INTO er_group_config VALUES (N'1', N'dev', N'ruoyi_group', N'', N'ER_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', N'4', getdate(), getdate());
+GO
+
+-- er_job
+CREATE TABLE er_job
+(
+    id               bigint PRIMARY KEY IDENTITY,
+    namespace_id     nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name       nvarchar(64)  NOT NULL,
+    job_name         nvarchar(64)  NOT NULL,
+    args_str         nvarchar(max) NULL,
+    args_type        tinyint       NOT NULL DEFAULT '1',
+    next_trigger_at  bigint        NOT NULL,
+    job_status       tinyint       NOT NULL DEFAULT '1',
+    task_type        tinyint       NOT NULL DEFAULT '1',
+    route_key        tinyint       NOT NULL DEFAULT '4',
+    executor_type    tinyint       NOT NULL DEFAULT '1',
+    executor_info    nvarchar(255) NULL     DEFAULT '',
+    trigger_type     tinyint       NOT NULL,
+    trigger_interval nvarchar(255) NOT NULL,
+    block_strategy   tinyint       NOT NULL DEFAULT '1',
+    executor_timeout int           NOT NULL DEFAULT '0',
+    max_retry_times  int           NOT NULL DEFAULT '0',
+    parallel_num     int           NOT NULL DEFAULT '1',
+    retry_interval   int           NOT NULL DEFAULT '0',
+    bucket_index     int           NOT NULL DEFAULT '0',
+    resident         tinyint       NOT NULL DEFAULT '0',
+    description      nvarchar(256) NOT NULL DEFAULT '',
+    ext_attrs        nvarchar(256) NULL     DEFAULT '',
+    create_dt        datetime2              DEFAULT GETDATE(),
+    update_dt        datetime2              DEFAULT GETDATE(),
+    deleted          BIT           NOT NULL DEFAULT 0
+)
+GO
+
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name ON job (namespace_id ASC, group_name ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_job_status_bucket_index ON job (job_status ASC, bucket_index ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_create_dt ON job (create_dt ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'job_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行方法参数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'args_str'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'参数类型 ',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'args_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'下次触发时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'next_trigger_at'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务状态 0、关闭、1、开启',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'job_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务类型 1、集群 2、广播 3、切片',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'task_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'路由策略',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'route_key'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行器类型',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'executor_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行器名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'executor_info'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'触发类型 1.CRON 表达式 2. 固定时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'trigger_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'间隔时长',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'trigger_interval'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'阻塞策略 1、丢弃 2、覆盖 3、并行',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'block_strategy'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务执行超时时间,单位秒',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'executor_timeout'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'最大重试次数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'max_retry_times'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'并行数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'parallel_num'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'重试间隔(s)',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'retry_interval'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'bucket',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'bucket_index'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'是否是常驻任务',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'resident'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'描述',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'description'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'扩展字段',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'ext_attrs'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'逻辑删除 1、删除',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job',
+     'COLUMN', N'deleted'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务信息',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job'
+GO
+
+
+-- er_job_log_message
+CREATE TABLE er_job_log_message
+(
+    id            bigint PRIMARY KEY IDENTITY,
+    namespace_id  nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name    nvarchar(64)  NOT NULL,
+    job_id        bigint        NOT NULL,
+    task_batch_id bigint        NOT NULL,
+    task_id       bigint        NOT NULL,
+    message       nvarchar(max) NOT NULL,
+    log_num       int           NOT NULL DEFAULT '1',
+    real_time     bigint        NOT NULL DEFAULT '0',
+    create_dt     datetime2     NOT NULL DEFAULT GETDATE(),
+    ext_attrs     nvarchar(256) NULL     DEFAULT ''
+)
+GO
+
+CREATE NONCLUSTERED INDEX idx_task_batch_id_task_id ON job_log_message (task_batch_id ASC, task_id ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_create_dt ON job_log_message (create_dt ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name ON job_log_message (namespace_id ASC, group_name ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_log_message',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_log_message',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_log_message',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务信息id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_log_message',
+     'COLUMN', N'job_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务批次id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_log_message',
+     'COLUMN', N'task_batch_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'调度任务id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_log_message',
+     'COLUMN', N'task_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'调度信息',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_log_message',
+     'COLUMN', N'message'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'日志数量',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_log_message',
+     'COLUMN', N'log_num'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'上报时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_log_message',
+     'COLUMN', N'real_time'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_log_message',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'扩展字段',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_log_message',
+     'COLUMN', N'ext_attrs'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'调度日志',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_log_message'
+GO
+
+
+-- er_job_notify_config
+CREATE TABLE er_job_notify_config
+(
+    id                     bigint PRIMARY KEY IDENTITY,
+    namespace_id           nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name             nvarchar(64)  NOT NULL,
+    job_id                 bigint        NOT NULL,
+    notify_status          tinyint       NOT NULL DEFAULT '0',
+    notify_type            tinyint       NOT NULL DEFAULT '0',
+    notify_attribute       nvarchar(512) NOT NULL,
+    notify_threshold       int           NOT NULL DEFAULT '0',
+    notify_scene           tinyint       NOT NULL DEFAULT '0',
+    rate_limiter_status    tinyint       NOT NULL DEFAULT '0',
+    rate_limiter_threshold int           NOT NULL DEFAULT '0',
+    description            nvarchar(256) NOT NULL DEFAULT '',
+    create_dt              datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt              datetime2     NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name_job_id ON job_notify_config (namespace_id ASC, group_name ASC, job_id ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'job_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'通知状态 0、未启用 1、启用',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'notify_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'通知类型 1、钉钉 2、邮件 3、企业微信',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'notify_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'配置属性',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'notify_attribute'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'通知阈值',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'notify_threshold'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'通知场景',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'notify_scene'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'限流状态 0、未启用 1、启用',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'rate_limiter_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'每秒限流阈值',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'rate_limiter_threshold'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'描述',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'description'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'job通知配置',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_notify_config'
+GO
+
+
+-- er_job_summary
+CREATE TABLE er_job_summary
+(
+    id               bigint PRIMARY KEY IDENTITY,
+    namespace_id     nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name       nvarchar(64)  NOT NULL,
+    business_id      bigint        NOT NULL,
+    system_task_type tinyint       NOT NULL DEFAULT '3',
+    trigger_at       datetime2     NOT NULL,
+    success_num      int           NOT NULL DEFAULT '0',
+    fail_num         int           NOT NULL DEFAULT '0',
+    fail_reason      nvarchar(512) NOT NULL DEFAULT '',
+    stop_num         int           NOT NULL DEFAULT '0',
+    stop_reason      nvarchar(512) NOT NULL DEFAULT '',
+    cancel_num       int           NOT NULL DEFAULT '0',
+    cancel_reason    nvarchar(512) NOT NULL DEFAULT '',
+    create_dt        datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt        datetime2     NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE UNIQUE NONCLUSTERED INDEX uk_trigger_at_system_task_type_business_id ON job_summary (trigger_at ASC, system_task_type ASC, business_id ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name_business_id ON job_summary (namespace_id ASC, group_name ASC, business_id ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'业务id (job_id或workflow_id)',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'business_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务类型 3、JOB任务 4、WORKFLOW任务',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'system_task_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'统计时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'trigger_at'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行成功-日志数量',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'success_num'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行失败-日志数量',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'fail_num'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'失败原因',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'fail_reason'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行失败-日志数量',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'stop_num'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'失败原因',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'stop_reason'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行失败-日志数量',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'cancel_num'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'失败原因',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'cancel_reason'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'DashBoard_Job',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_summary'
+GO
+
+
+-- er_job_task
+CREATE TABLE er_job_task
+(
+    id             bigint PRIMARY KEY IDENTITY,
+    namespace_id   nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name     nvarchar(64)  NOT NULL,
+    job_id         bigint        NOT NULL,
+    task_batch_id  bigint        NOT NULL,
+    parent_id      bigint        NOT NULL DEFAULT '0',
+    task_status    tinyint       NOT NULL DEFAULT '0',
+    retry_count    int           NOT NULL DEFAULT '0',
+    client_info    nvarchar(128) NULL,
+    result_message nvarchar(max) NOT NULL,
+    args_str       nvarchar(max) NULL,
+    args_type      tinyint       NOT NULL DEFAULT '1',
+    ext_attrs      nvarchar(256) NULL     DEFAULT '',
+    create_dt      datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt      datetime2     NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE NONCLUSTERED INDEX idx_task_batch_id_task_status ON job_task (task_batch_id ASC, task_status ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_create_dt ON job_task (create_dt ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name ON job_task (namespace_id ASC, group_name ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务信息id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'job_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'调度任务id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'task_batch_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'父执行器id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'parent_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行的状态 0、失败 1、成功',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'task_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'重试次数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'retry_count'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'客户端地址 clientId#ip:port',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'client_info'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行结果',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'result_message'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行方法参数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'args_str'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'参数类型 ',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'args_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'扩展字段',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'ext_attrs'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务实例',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task'
+GO
+
+-- er_job_task_batch
+CREATE TABLE er_job_task_batch
+(
+    id                      bigint PRIMARY KEY IDENTITY,
+    namespace_id            nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name              nvarchar(64)  NOT NULL,
+    job_id                  bigint        NOT NULL,
+    workflow_node_id        bigint        NOT NULL DEFAULT '0',
+    parent_workflow_node_id bigint        NOT NULL DEFAULT '0',
+    workflow_task_batch_id  bigint        NOT NULL DEFAULT '0',
+    task_batch_status       tinyint       NOT NULL DEFAULT '0',
+    operation_reason        tinyint       NOT NULL DEFAULT '0',
+    execution_at            bigint        NOT NULL DEFAULT '0',
+    system_task_type        tinyint       NOT NULL DEFAULT '3',
+    parent_id               nvarchar(64)  NOT NULL DEFAULT '',
+    create_dt               datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt               datetime2     NOT NULL DEFAULT GETDATE(),
+    deleted                 BIT                    DEFAULT 0,
+    ext_attrs               nvarchar(256) NULL     DEFAULT ''
+)
+GO
+
+CREATE NONCLUSTERED INDEX idx_job_id_task_batch_status ON job_task_batch (job_id ASC, task_batch_status ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_create_dt ON job_task_batch (create_dt ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name ON job_task_batch (namespace_id ASC, group_name ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_workflow_task_batch_id_workflow_node_id ON job_task_batch (workflow_task_batch_id ASC, workflow_node_id ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'job_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'工作流节点id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'workflow_node_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'工作流任务父批次id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'parent_workflow_node_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'工作流任务批次id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'workflow_task_batch_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务批次状态 0、失败 1、成功',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'task_batch_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'操作原因',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'operation_reason'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务执行时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'execution_at'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务类型 3、JOB任务 4、WORKFLOW任务',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'system_task_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'父节点',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'parent_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'逻辑删除 1、删除',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'deleted'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'扩展字段',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch',
+     'COLUMN', N'ext_attrs'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务批次',
+     'SCHEMA', N'dbo',
+     'TABLE', N'job_task_batch'
+GO
+
+-- er_namespace
+CREATE TABLE er_namespace
+(
+    id          bigint PRIMARY KEY IDENTITY,
+    name        nvarchar(64)  NOT NULL,
+    unique_id   nvarchar(64)  NOT NULL,
+    description nvarchar(256) NOT NULL DEFAULT '',
+    create_dt   datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt   datetime2     NOT NULL DEFAULT GETDATE(),
+    deleted     BIT           NOT NULL DEFAULT 0
+)
+GO
+
+CREATE UNIQUE NONCLUSTERED INDEX uk_unique_id ON namespace (unique_id ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_name ON namespace (name ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'namespace',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'namespace',
+     'COLUMN', N'name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'唯一id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'namespace',
+     'COLUMN', N'unique_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'描述',
+     'SCHEMA', N'dbo',
+     'TABLE', N'namespace',
+     'COLUMN', N'description'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'namespace',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'namespace',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'逻辑删除 1、删除',
+     'SCHEMA', N'dbo',
+     'TABLE', N'namespace',
+     'COLUMN', N'deleted'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'namespace'
+GO
+
+INSERT INTO er_namespace VALUES (N'1', N'Development', N'dev', N'', getdate(), getdate(), N'0');
+INSERT INTO er_namespace VALUES (N'2', N'Production', N'prod', N'', getdate(), getdate(), N'0');
+GO
+
+-- er_notify_config
+CREATE TABLE er_notify_config
+(
+    id                     bigint PRIMARY KEY IDENTITY,
+    namespace_id           nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name             nvarchar(64)  NOT NULL,
+    scene_name             nvarchar(64)  NOT NULL,
+    notify_status          tinyint       NOT NULL DEFAULT '0',
+    notify_type            tinyint       NOT NULL DEFAULT '0',
+    notify_attribute       nvarchar(512) NOT NULL,
+    notify_threshold       int           NOT NULL DEFAULT '0',
+    notify_scene           tinyint       NOT NULL DEFAULT '0',
+    rate_limiter_status    tinyint       NOT NULL DEFAULT '0',
+    rate_limiter_threshold int           NOT NULL DEFAULT '0',
+    description            nvarchar(256) NOT NULL DEFAULT '',
+    create_dt              datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt              datetime2     NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name_scene_name ON notify_config (namespace_id ASC, group_name ASC, scene_name ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'场景名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'scene_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'通知状态 0、未启用 1、启用',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'notify_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'通知类型 1、钉钉 2、邮件 3、企业微信',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'notify_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'配置属性',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'notify_attribute'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'通知阈值',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'notify_threshold'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'通知场景',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'notify_scene'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'限流状态 0、未启用 1、启用',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'rate_limiter_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'每秒限流阈值',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'rate_limiter_threshold'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'描述',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'description'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'通知配置',
+     'SCHEMA', N'dbo',
+     'TABLE', N'notify_config'
+GO
+
+-- er_retry_dead_letter_0
+CREATE TABLE er_retry_dead_letter_0
+(
+    id            bigint PRIMARY KEY IDENTITY,
+    namespace_id  nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    unique_id     nvarchar(64)  NOT NULL,
+    group_name    nvarchar(64)  NOT NULL,
+    scene_name    nvarchar(64)  NOT NULL,
+    idempotent_id nvarchar(64)  NOT NULL,
+    biz_no        nvarchar(64)  NOT NULL DEFAULT '',
+    executor_name nvarchar(512) NOT NULL DEFAULT '',
+    args_str      nvarchar(max) NOT NULL,
+    ext_attrs     nvarchar(max) NOT NULL,
+    task_type     tinyint       NOT NULL DEFAULT '1',
+    create_dt     datetime2     NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE UNIQUE NONCLUSTERED INDEX uk_namespace_id_group_name_unique_id ON retry_dead_letter_0 (namespace_id ASC, group_name ASC, unique_id ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name_scene_name ON retry_dead_letter_0 (namespace_id ASC, group_name ASC, scene_name ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_idempotent_id ON retry_dead_letter_0 (idempotent_id ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_biz_no ON retry_dead_letter_0 (biz_no ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_create_dt ON retry_dead_letter_0 (create_dt ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'同组下id唯一',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0',
+     'COLUMN', N'unique_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'场景名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0',
+     'COLUMN', N'scene_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'幂等id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0',
+     'COLUMN', N'idempotent_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'业务编号',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0',
+     'COLUMN', N'biz_no'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行器名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0',
+     'COLUMN', N'executor_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行方法参数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0',
+     'COLUMN', N'args_str'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'扩展字段',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0',
+     'COLUMN', N'ext_attrs'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务类型 1、重试数据 2、回调数据',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0',
+     'COLUMN', N'task_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'死信队列表',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_dead_letter_0'
+GO
+
+
+-- er_retry_summary
+CREATE TABLE er_retry_summary
+(
+    id            bigint PRIMARY KEY IDENTITY,
+    namespace_id  nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name    nvarchar(64) NOT NULL DEFAULT '',
+    scene_name    nvarchar(50) NOT NULL DEFAULT '',
+    trigger_at    datetime2    NOT NULL DEFAULT GETDATE(),
+    running_num   int          NOT NULL DEFAULT '0',
+    finish_num    int          NOT NULL DEFAULT '0',
+    max_count_num int          NOT NULL DEFAULT '0',
+    suspend_num   int          NOT NULL DEFAULT '0',
+    create_dt     datetime2    NOT NULL DEFAULT GETDATE(),
+    update_dt     datetime2    NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE UNIQUE NONCLUSTERED INDEX uk_scene_name_trigger_at ON retry_summary (namespace_id ASC, group_name ASC,
+                                                                            scene_name ASC, trigger_at ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_summary',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_summary',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_summary',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'场景名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_summary',
+     'COLUMN', N'scene_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'统计时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_summary',
+     'COLUMN', N'trigger_at'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'重试中-日志数量',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_summary',
+     'COLUMN', N'running_num'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'重试完成-日志数量',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_summary',
+     'COLUMN', N'finish_num'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'重试到达最大次数-日志数量',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_summary',
+     'COLUMN', N'max_count_num'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'暂停重试-日志数量',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_summary',
+     'COLUMN', N'suspend_num'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_summary',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_summary',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'DashBoard_Retry',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_summary'
+GO
+
+-- er_retry_task_0
+CREATE TABLE er_retry_task_0
+(
+    id              bigint PRIMARY KEY IDENTITY,
+    namespace_id    nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    unique_id       nvarchar(64)  NOT NULL,
+    group_name      nvarchar(64)  NOT NULL,
+    scene_name      nvarchar(64)  NOT NULL,
+    idempotent_id   nvarchar(64)  NOT NULL,
+    biz_no          nvarchar(64)  NOT NULL DEFAULT '',
+    executor_name   nvarchar(512) NOT NULL DEFAULT '',
+    args_str        nvarchar(max) NOT NULL,
+    ext_attrs       nvarchar(max) NOT NULL,
+    next_trigger_at datetime2     NOT NULL,
+    retry_count     int           NOT NULL DEFAULT '0',
+    retry_status    tinyint       NOT NULL DEFAULT '0',
+    task_type       tinyint       NOT NULL DEFAULT '1',
+    create_dt       datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt       datetime2     NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE UNIQUE NONCLUSTERED INDEX uk_name_unique_id ON retry_task_0 (namespace_id ASC, group_name ASC, unique_id ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name_scene_name ON retry_task_0 (namespace_id ASC, group_name ASC, scene_name ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name_task_type ON retry_task_0 (namespace_id ASC, group_name ASC, task_type ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name_retry_status ON retry_task_0 (namespace_id ASC, group_name ASC, retry_status ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_idempotent_id ON retry_task_0 (idempotent_id ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_biz_no ON retry_task_0 (biz_no ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_create_dt ON retry_task_0 (create_dt ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'同组下id唯一',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'unique_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'场景名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'scene_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'幂等id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'idempotent_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'业务编号',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'biz_no'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行器名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'executor_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行方法参数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'args_str'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'扩展字段',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'ext_attrs'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'下次触发时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'next_trigger_at'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'重试次数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'retry_count'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'重试状态 0、重试中 1、成功 2、最大重试次数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'retry_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务类型 1、重试数据 2、回调数据',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'task_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务表',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_0'
+GO
+
+-- er_retry_task_log
+CREATE TABLE er_retry_task_log
+(
+    id            bigint PRIMARY KEY IDENTITY,
+    namespace_id  nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    unique_id     nvarchar(64)  NOT NULL,
+    group_name    nvarchar(64)  NOT NULL,
+    scene_name    nvarchar(64)  NOT NULL,
+    idempotent_id nvarchar(64)  NOT NULL,
+    biz_no        nvarchar(64)  NOT NULL DEFAULT '',
+    executor_name nvarchar(512) NOT NULL DEFAULT '',
+    args_str      nvarchar(max) NOT NULL,
+    ext_attrs     nvarchar(max) NOT NULL,
+    retry_status  tinyint       NOT NULL DEFAULT '0',
+    task_type     tinyint       NOT NULL DEFAULT '1',
+    create_dt     datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt     datetime2     NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE NONCLUSTERED INDEX idx_group_name_scene_name ON retry_task_log (namespace_id ASC, group_name ASC, scene_name ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_retry_status ON retry_task_log (retry_status ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_idempotent_id ON retry_task_log (idempotent_id ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_unique_id ON retry_task_log (unique_id ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_biz_no ON retry_task_log (biz_no ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_create_dt ON retry_task_log (create_dt ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'同组下id唯一',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'unique_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'场景名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'scene_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'幂等id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'idempotent_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'业务编号',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'biz_no'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行器名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'executor_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'执行方法参数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'args_str'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'扩展字段',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'ext_attrs'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'重试状态 0、重试中 1、成功 2、最大次数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'retry_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务类型 1、重试数据 2、回调数据',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'task_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务日志基础信息表',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log'
+GO
+
+-- er_retry_task_log_message
+CREATE TABLE er_retry_task_log_message
+(
+    id           bigint PRIMARY KEY IDENTITY,
+    namespace_id nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name   nvarchar(64)  NOT NULL,
+    unique_id    nvarchar(64)  NOT NULL,
+    create_dt    datetime2     NOT NULL DEFAULT GETDATE(),
+    message      nvarchar(max) NOT NULL,
+    log_num      int           NOT NULL DEFAULT 1,
+    real_time    bigint        NOT NULL DEFAULT 0
+)
+GO
+
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name_scene_name ON retry_task_log_message (namespace_id ASC, group_name ASC, unique_id ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_create_dt ON retry_task_log_message (create_dt ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log_message',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log_message',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log_message',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'同组下id唯一',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log_message',
+     'COLUMN', N'unique_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log_message',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'异常信息',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log_message',
+     'COLUMN', N'message'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'日志数量',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log_message',
+     'COLUMN', N'log_num'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'上报时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log_message',
+     'COLUMN', N'real_time'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务调度日志信息记录表',
+     'SCHEMA', N'dbo',
+     'TABLE', N'retry_task_log_message'
+GO
+
+-- er_scene_config
+CREATE TABLE er_scene_config
+(
+    id               bigint IDENTITY,
+    namespace_id     nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    scene_name       nvarchar(64)  NOT NULL,
+    group_name       nvarchar(64)  NOT NULL,
+    scene_status     tinyint       NOT NULL DEFAULT '0',
+    max_retry_count  int           NOT NULL DEFAULT '5',
+    back_off         tinyint       NOT NULL DEFAULT '1',
+    trigger_interval nvarchar(16)  NOT NULL DEFAULT '',
+    deadline_request bigint        NOT NULL DEFAULT '60000',
+    executor_timeout int           NOT NULL DEFAULT '5',
+    route_key        tinyint       NOT NULL DEFAULT '4',
+    description      nvarchar(256) NOT NULL DEFAULT '',
+    create_dt        datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt        datetime2     NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE UNIQUE NONCLUSTERED INDEX uk_namespace_id_group_name_scene_name ON scene_config (namespace_id ASC, group_name ASC, scene_name ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'场景名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'scene_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组状态 0、未启用 1、启用',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'scene_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'最大重试次数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'max_retry_count'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'1、默认等级 2、固定间隔时间 3、CRON 表达式',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'back_off'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'间隔时长',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'trigger_interval'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'Deadline Request 调用链超时 单位毫秒',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'deadline_request'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务执行超时时间,单位秒',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'executor_timeout'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'路由策略',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'route_key'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'描述',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'description'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'场景配置',
+     'SCHEMA', N'dbo',
+     'TABLE', N'scene_config'
+GO
+
+-- er_sequence_alloc
+CREATE TABLE er_sequence_alloc
+(
+    id           bigint PRIMARY KEY IDENTITY,
+    namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name   nvarchar(64) NOT NULL DEFAULT '',
+    max_id       bigint       NOT NULL DEFAULT '1',
+    step         int          NOT NULL DEFAULT '100',
+    update_dt    datetime2    NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE UNIQUE NONCLUSTERED INDEX uk_namespace_id_group_name ON sequence_alloc (namespace_id ASC, group_name ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sequence_alloc',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sequence_alloc',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sequence_alloc',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'最大id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sequence_alloc',
+     'COLUMN', N'max_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'步长',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sequence_alloc',
+     'COLUMN', N'step'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'更新时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sequence_alloc',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'号段模式序号ID分配表',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sequence_alloc'
+GO
+
+-- er_server_node
+CREATE TABLE er_server_node
+(
+    id           bigint PRIMARY KEY IDENTITY,
+    namespace_id nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name   nvarchar(64)  NOT NULL,
+    host_id      nvarchar(64)  NOT NULL,
+    host_ip      nvarchar(64)  NOT NULL,
+    context_path nvarchar(256) NOT NULL DEFAULT '/',
+    host_port    int           NOT NULL,
+    expire_at    datetime2     NOT NULL,
+    node_type    tinyint       NOT NULL,
+    ext_attrs    nvarchar(256) NULL     DEFAULT '',
+    create_dt    datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt    datetime2     NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE UNIQUE NONCLUSTERED INDEX uk_host_id_host_ip ON server_node (host_id ASC, host_ip ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name ON server_node (namespace_id ASC, group_name ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_expire_at_node_type ON server_node (expire_at ASC, node_type ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主机id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node',
+     'COLUMN', N'host_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'机器ip',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node',
+     'COLUMN', N'host_ip'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'客户端上下文路径 server.servlet.context-path',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node',
+     'COLUMN', N'context_path'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'机器端口',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node',
+     'COLUMN', N'host_port'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'过期时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node',
+     'COLUMN', N'expire_at'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'节点类型 1、客户端 2、是服务端',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node',
+     'COLUMN', N'node_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'扩展字段',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node',
+     'COLUMN', N'ext_attrs'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'服务器节点',
+     'SCHEMA', N'dbo',
+     'TABLE', N'server_node'
+GO
+
+-- er_system_user_
+CREATE TABLE er_system_user_
+(
+    id        bigint PRIMARY KEY IDENTITY,
+    username  nvarchar(64)  NOT NULL,
+    password  nvarchar(128) NOT NULL,
+    role      tinyint       NOT NULL DEFAULT '0',
+    create_dt datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt datetime2     NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE UNIQUE NONCLUSTERED INDEX uk_username ON system_user_ (username ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'账号',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_',
+     'COLUMN', N'username'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'密码',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_',
+     'COLUMN', N'password'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'角色:1-普通用户、2-管理员',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_',
+     'COLUMN', N'role'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'系统用户表',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_'
+GO
+
+-- pwd: admin
+INSERT INTO er_system_user_ VALUES (N'1', N'admin', N'465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', N'2', getdate(), getdate());
+GO
+
+-- er_system_user_permission
+CREATE TABLE er_system_user_permission
+(
+    id             bigint PRIMARY KEY IDENTITY,
+    group_name     nvarchar(64) NOT NULL,
+    namespace_id   nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    system_user_id bigint       NOT NULL,
+    create_dt      datetime2    NOT NULL DEFAULT GETDATE(),
+    update_dt      datetime2    NOT NULL DEFAULT GETDATE()
+)
+GO
+
+CREATE UNIQUE NONCLUSTERED INDEX uk_namespace_id_group_name_system_user_id ON system_user_permission (namespace_id ASC, group_name ASC, system_user_id ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_permission',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_permission',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_permission',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'系统用户id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_permission',
+     'COLUMN', N'system_user_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_permission',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_permission',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'系统用户权限表',
+     'SCHEMA', N'dbo',
+     'TABLE', N'system_user_permission'
+GO
+
+
+-- er_workflow
+CREATE TABLE er_workflow
+(
+    id               bigint IDENTITY,
+    workflow_name    nvarchar(64)  NOT NULL,
+    namespace_id     nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name       nvarchar(64)  NOT NULL,
+    workflow_status  tinyint       NOT NULL DEFAULT '1',
+    trigger_type     tinyint       NOT NULL,
+    trigger_interval nvarchar(255) NOT NULL,
+    next_trigger_at  bigint        NOT NULL,
+    block_strategy   tinyint       NOT NULL DEFAULT '1',
+    executor_timeout int           NOT NULL DEFAULT '0',
+    description      nvarchar(256) NOT NULL DEFAULT '',
+    flow_info        nvarchar(max) NULL     DEFAULT NULL,
+    bucket_index     int           NOT NULL DEFAULT '0',
+    version          int           NOT NULL,
+    create_dt        datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt        datetime2     NOT NULL DEFAULT GETDATE(),
+    deleted          BIT                    DEFAULT 0,
+    ext_attrs        nvarchar(256) NULL
+)
+GO
+
+CREATE NONCLUSTERED INDEX idx_create_dt ON workflow (create_dt ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name ON workflow (namespace_id ASC, group_name ASC)
+GO
+
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'工作流名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'workflow_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'工作流状态 0、关闭、1、开启',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'workflow_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'触发类型 1.CRON 表达式 2. 固定时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'trigger_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'间隔时长',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'trigger_interval'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'下次触发时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'next_trigger_at'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'阻塞策略 1、丢弃 2、覆盖 3、并行',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'block_strategy'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务执行超时时间,单位秒',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'executor_timeout'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'描述',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'description'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'流程信息',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'flow_info'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'bucket',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'bucket_index'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'版本号',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'version'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'逻辑删除 1、删除',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'deleted'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'扩展字段',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow',
+     'COLUMN', N'ext_attrs'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'工作流',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow'
+GO
+
+-- er_workflow_node
+CREATE TABLE er_workflow_node
+(
+    id                   bigint PRIMARY KEY IDENTITY,
+    namespace_id         nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    node_name            nvarchar(64)  NOT NULL,
+    group_name           nvarchar(64)  NOT NULL,
+    job_id               bigint        NOT NULL,
+    workflow_id          bigint        NOT NULL,
+    node_type            tinyint       NOT NULL DEFAULT '1',
+    expression_type      tinyint       NOT NULL DEFAULT '0',
+    fail_strategy        tinyint       NOT NULL DEFAULT '1',
+    workflow_node_status tinyint       NOT NULL DEFAULT '1',
+    priority_level       int           NOT NULL DEFAULT '1',
+    node_info            nvarchar(max) NULL     DEFAULT NULL,
+    version              int           NOT NULL,
+    create_dt            datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt            datetime2     NOT NULL DEFAULT GETDATE(),
+    deleted              BIT                    DEFAULT 0,
+    ext_attrs            nvarchar(256) NULL     DEFAULT ''
+)
+GO
+
+CREATE NONCLUSTERED INDEX idx_create_dt ON workflow_node (create_dt ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name ON workflow_node (namespace_id ASC, group_name ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'节点名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'node_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务信息id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'job_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'工作流ID',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'workflow_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'1、任务节点 2、条件节点',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'node_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'1、SpEl、2、Aviator 3、QL',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'expression_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'失败策略 1、跳过 2、阻塞',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'fail_strategy'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'工作流节点状态 0、关闭、1、开启',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'workflow_node_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'优先级',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'priority_level'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'节点信息 ',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'node_info'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'版本号',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'version'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'逻辑删除 1、删除',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'deleted'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'扩展字段',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node',
+     'COLUMN', N'ext_attrs'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'工作流节点',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_node'
+GO
+
+-- er_workflow_task_batch
+CREATE TABLE er_workflow_task_batch
+(
+    id                bigint PRIMARY KEY IDENTITY,
+    namespace_id      nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name        nvarchar(64)  NOT NULL,
+    workflow_id       bigint        NOT NULL,
+    task_batch_status tinyint       NOT NULL DEFAULT '0',
+    operation_reason  tinyint       NOT NULL DEFAULT '0',
+    flow_info         nvarchar(max) NULL     DEFAULT NULL,
+    execution_at      bigint        NOT NULL DEFAULT '0',
+    create_dt         datetime2     NOT NULL DEFAULT GETDATE(),
+    update_dt         datetime2     NOT NULL DEFAULT GETDATE(),
+    deleted           BIT                    DEFAULT 0,
+    ext_attrs         nvarchar(256) NULL     DEFAULT ''
+)
+GO
+
+CREATE NONCLUSTERED INDEX idx_job_id_task_batch_status ON workflow_task_batch (workflow_id ASC, task_batch_status ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_create_dt ON workflow_task_batch (create_dt ASC)
+GO
+CREATE NONCLUSTERED INDEX idx_namespace_id_group_name ON workflow_task_batch (namespace_id ASC, group_name ASC)
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'主键',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch',
+     'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'命名空间id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch',
+     'COLUMN', N'namespace_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'组名称',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch',
+     'COLUMN', N'group_name'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'工作流任务id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch',
+     'COLUMN', N'workflow_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务批次状态 0、失败 1、成功',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch',
+     'COLUMN', N'task_batch_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'操作原因',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch',
+     'COLUMN', N'operation_reason'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'流程信息',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch',
+     'COLUMN', N'flow_info'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'任务执行时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch',
+     'COLUMN', N'execution_at'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'创建时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch',
+     'COLUMN', N'create_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'修改时间',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch',
+     'COLUMN', N'update_dt'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'逻辑删除 1、删除',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch',
+     'COLUMN', N'deleted'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'扩展字段',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch',
+     'COLUMN', N'ext_attrs'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'工作流批次',
+     'SCHEMA', N'dbo',
+     'TABLE', N'workflow_task_batch'
+GO