diff --git a/pom.xml b/pom.xml
index ba9ced2d7..80de1c6c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,7 @@
4.3.0
2.14.4
4.3.6
+ 3.1.0
1.3.6
0.2.0
1.18.30
@@ -308,6 +309,23 @@
${powerjob.version}
+
+
+ com.aizuda
+ easy-retry-client-starter
+ ${easyretry.version}
+
+
+ com.aizuda
+ easy-retry-client-core
+ ${easyretry.version}
+
+
+ com.aizuda
+ easy-retry-client-job-core
+ ${easyretry.version}
+
+
com.alibaba
transmittable-thread-local
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index cbf03ce36..155f594c6 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -97,6 +97,19 @@
JustAuth
+
+ com.aizuda
+ easy-retry-client-starter
+
+
+ com.aizuda
+ easy-retry-client-core
+
+
+ com.aizuda
+ easy-retry-client-job-core
+
+
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 5589e5864..b6d3db81c 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -24,6 +24,18 @@ powerjob:
server-address: 127.0.0.1:7700
store-strategy: disk
+--- # easy-retry 配置
+easy-retry:
+ enabled: true
+ # 需要在EasyRetry后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
+ group-name: "ruoyi_group"
+ server:
+ host: 127.0.0.1
+ port: 1788
+ # 详见 script/sql/easy_retry.sql `namespace` 表
+ namespace: ${spring.profiles.active}
+
+
--- # 数据源配置
spring:
datasource:
diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml
index b4f4040bd..69701fff8 100644
--- a/ruoyi-admin/src/main/resources/application-prod.yml
+++ b/ruoyi-admin/src/main/resources/application-prod.yml
@@ -27,6 +27,17 @@ powerjob:
server-address: 127.0.0.1:7700
store-strategy: disk
+--- # easy-retry 配置
+easy-retry:
+ enabled: false
+ # 需要在EasyRetry后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
+ group-name: "ruoyi_group"
+ server:
+ host: 127.0.0.1
+ port: 1788
+ # 详见 script/sql/easy_retry.sql `namespace` 表
+ namespace: ${spring.profiles.active}
+
--- # 数据源配置
spring:
datasource:
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 5cc67fa06..ad50248bc 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -123,6 +123,9 @@ security:
# actuator 监控配置
- /actuator
- /actuator/**
+ # EasyRetry Job 分派 @see com.aizuda.easy.retry.client.job.core.client.JobEndPoint
+ - /job/dispatch/v1
+ - /job/stop/v1
# 多租户配置
tenant:
diff --git a/ruoyi-common/ruoyi-common-job/pom.xml b/ruoyi-common/ruoyi-common-job/pom.xml
index 1a6e729b4..47bfc432e 100644
--- a/ruoyi-common/ruoyi-common-job/pom.xml
+++ b/ruoyi-common/ruoyi-common-job/pom.xml
@@ -38,6 +38,20 @@
powerjob-official-processors
+
+
+ com.aizuda
+ easy-retry-client-starter
+
+
+ com.aizuda
+ easy-retry-client-core
+
+
+ com.aizuda
+ easy-retry-client-job-core
+
+
org.projectlombok
lombok
diff --git a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/EasyRetryConfig.java b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/EasyRetryConfig.java
new file mode 100644
index 000000000..65d1472e8
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/EasyRetryConfig.java
@@ -0,0 +1,19 @@
+package org.dromara.common.job.config;
+
+import com.aizuda.easy.retry.client.starter.EnableEasyRetry;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * 启动定时任务
+ *
+ * @author dhb52
+ * @since 2024/3/12
+ */
+@Configuration
+@ConditionalOnProperty(prefix = "easy-retry", name = "enabled", havingValue = "true")
+@EnableScheduling
+@EnableEasyRetry(group = "${easy-retry.group-name}")
+public class EasyRetryConfig {
+}
diff --git a/ruoyi-extend/pom.xml b/ruoyi-extend/pom.xml
index f5348cc13..0e9533f18 100644
--- a/ruoyi-extend/pom.xml
+++ b/ruoyi-extend/pom.xml
@@ -14,6 +14,7 @@
ruoyi-monitor-admin
ruoyi-powerjob-server
+ ruoyi-easyretry-server
diff --git a/ruoyi-extend/ruoyi-easyretry-server/Dockerfile b/ruoyi-extend/ruoyi-easyretry-server/Dockerfile
new file mode 100644
index 000000000..7ad0a0776
--- /dev/null
+++ b/ruoyi-extend/ruoyi-easyretry-server/Dockerfile
@@ -0,0 +1,18 @@
+#FROM findepi/graalvm:java17-native
+FROM openjdk:17.0.2-oraclelinux8
+
+MAINTAINER Lion Li
+
+RUN mkdir -p /ruoyi/easyretry/logs
+
+WORKDIR /ruoyi/easyretry
+
+ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS="-Xms512m -Xmx1024m"
+
+EXPOSE 8800
+EXPOSE 1788
+
+ADD ./target/ruoyi-easyretry-server.jar ./app.jar
+
+ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar app.jar \
+ -XX:+HeapDumpOnOutOfMemoryError -Xlog:gc*,:time,tags,level -XX:+UseZGC ${JAVA_OPTS}
diff --git a/ruoyi-extend/ruoyi-easyretry-server/pom.xml b/ruoyi-extend/ruoyi-easyretry-server/pom.xml
new file mode 100644
index 000000000..0b1463b8a
--- /dev/null
+++ b/ruoyi-extend/ruoyi-easyretry-server/pom.xml
@@ -0,0 +1,46 @@
+
+
+
+ org.dromara
+ ruoyi-extend
+ ${revision}
+
+ 4.0.0
+ jar
+ ruoyi-easyretry-server
+
+
+
+ com.aizuda
+ easy-retry-server-starter
+ ${easyretry.version}
+
+
+
+ de.codecentric
+ spring-boot-admin-starter-client
+ ${spring-boot-admin.version}
+
+
+
+
+ ruoyi-easyretry-server
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+
+
+
+
+
diff --git a/ruoyi-extend/ruoyi-easyretry-server/src/main/java/org/dromara/easyretry/EasyRetryServerApplication.java b/ruoyi-extend/ruoyi-easyretry-server/src/main/java/org/dromara/easyretry/EasyRetryServerApplication.java
new file mode 100644
index 000000000..9d01bc05b
--- /dev/null
+++ b/ruoyi-extend/ruoyi-easyretry-server/src/main/java/org/dromara/easyretry/EasyRetryServerApplication.java
@@ -0,0 +1,18 @@
+package org.dromara.easyretry;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * EasyRetry Server 启动程序
+ *
+ * @author dhb52
+ */
+@SpringBootApplication
+public class EasyRetryServerApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(com.aizuda.easy.retry.server.EasyRetryServerApplication.class, args);
+ }
+
+}
diff --git a/ruoyi-extend/ruoyi-easyretry-server/src/main/resources/application.yml b/ruoyi-extend/ruoyi-easyretry-server/src/main/resources/application.yml
new file mode 100644
index 000000000..e81386369
--- /dev/null
+++ b/ruoyi-extend/ruoyi-easyretry-server/src/main/resources/application.yml
@@ -0,0 +1,66 @@
+server:
+ port: 8800
+ servlet:
+ context-path: /easy-retry
+spring:
+ application:
+ name: ruoyi-easyretry-server
+ profiles:
+ active: @profiles.active@
+ datasource:
+ name: ry-vue
+ url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
+ username: root
+ password: root
+ type: com.zaxxer.hikari.HikariDataSource
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ hikari:
+ connection-timeout: 30000
+ minimum-idle: 5
+ maximum-pool-size: 20
+ auto-commit: true
+ idle-timeout: 30000
+ pool-name: easy_retry
+ max-lifetime: 1800000
+ web:
+ resources:
+ static-locations: classpath:admin/
+
+mybatis-plus:
+ typeAliasesPackage: com.aizuda.easy.retry.template.datasource.persistence.po
+ global-config:
+ db-config:
+ where-strategy: NOT_EMPTY
+ capital-mode: false
+ logic-delete-value: 1
+ logic-not-delete-value: 0
+ configuration:
+ map-underscore-to-camel-case: true
+ cache-enabled: true
+logging:
+ config: classpath:logback-boot.xml
+
+easy-retry:
+ retry-pull-page-size: 1000 # 拉取重试数据的每批次的大小
+ job-pull-page-size: 1000 # 拉取重试数据的每批次的大小
+ netty-port: 1788 # 服务端netty端口
+ total-partition: 2 # 重试和死信表的分区总数
+ limiter: 1000 # 一个客户端每秒最多接收的重试数量指令
+ step: 100 # 号段模式下步长配置
+ log-storage: 90 # 日志保存时间(单位: day)
+ callback: # 回调配置
+ max-count: 288 #回调最大执行次数
+ trigger-interval: 900 #间隔时间
+ db-type: mysql #当前使用的数据库
+ mode: all
+ retry-max-pull-count: 10
+
+--- # 监控中心配置
+spring.boot.admin.client:
+ # 增加客户端开关
+ enabled: true
+ url: http://localhost:9090/admin
+ instance:
+ service-host-type: IP
+ username: ruoyi
+ password: 123456
diff --git a/ruoyi-extend/ruoyi-easyretry-server/src/main/resources/logback-boot.xml b/ruoyi-extend/ruoyi-easyretry-server/src/main/resources/logback-boot.xml
new file mode 100644
index 000000000..97ba0b02b
--- /dev/null
+++ b/ruoyi-extend/ruoyi-easyretry-server/src/main/resources/logback-boot.xml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{256} - %msg%n
+
+
+
+
+
+ ${log.base}/info.log
+
+ ${log.base}/info.%d{yyyy-MM-dd}.log
+ 30
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{256} - %msg%n
+
+
+ INFO
+ ACCEPT
+ DENY
+
+
+
+
+ ${log.base}/warn.log
+
+ ${log.base}/warn.%d{yyyy-MM-dd}.log
+
+ 30
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{256} - %msg%n
+
+
+ WARN
+ ACCEPT
+ DENY
+
+
+
+
+ ${log.base}/error.log
+
+ ${log.base}/error.%d{yyyy-MM-dd}.log
+
+ 30
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{256} - %msg%n
+
+
+ ERROR
+ ACCEPT
+ DENY
+
+
+
+
+ 100
+ 1024
+
+
+
+
+ 100
+ 1024
+
+
+
+
+ 100
+ 1024
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutor.java
new file mode 100644
index 000000000..8126b3e78
--- /dev/null
+++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutor.java
@@ -0,0 +1,20 @@
+package org.dromara.job.easyretry;
+
+import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor;
+import com.aizuda.easy.retry.client.job.core.dto.JobArgs;
+import com.aizuda.easy.retry.client.model.ExecuteResult;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author www.byteblogs.com
+ * @date 2023-09-28 22:54:07
+ * @since 2.4.0
+ */
+@Component
+@JobExecutor(name = "testJobExecutor")
+public class TestAnnoJobExecutor {
+
+ public ExecuteResult jobExecute(JobArgs jobArgs) {
+ return ExecuteResult.success("测试成功");
+ }
+}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep10s.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep10s.java
new file mode 100644
index 000000000..3d92bb3a0
--- /dev/null
+++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep10s.java
@@ -0,0 +1,27 @@
+package org.dromara.job.easyretry;
+
+import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor;
+import com.aizuda.easy.retry.client.job.core.dto.JobArgs;
+import com.aizuda.easy.retry.client.model.ExecuteResult;
+import com.aizuda.easy.retry.common.core.util.JsonUtil;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author www.byteblogs.com
+ * @date 2023-09-28 22:54:07
+ * @since 2.4.0
+ */
+@Component
+@JobExecutor(name = "testAnnoJobExecutorSleep10s")
+public class TestAnnoJobExecutorSleep10s {
+
+ public ExecuteResult jobExecute(JobArgs jobArgs) {
+ System.out.println(JsonUtil.toJsonString(jobArgs));
+ try {
+ Thread.sleep(10 * 1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ return ExecuteResult.success("测试成功");
+ }
+}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep1s.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep1s.java
new file mode 100644
index 000000000..89726ad4f
--- /dev/null
+++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep1s.java
@@ -0,0 +1,27 @@
+package org.dromara.job.easyretry;
+
+import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor;
+import com.aizuda.easy.retry.client.job.core.dto.JobArgs;
+import com.aizuda.easy.retry.client.model.ExecuteResult;
+import com.aizuda.easy.retry.common.core.util.JsonUtil;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author www.byteblogs.com
+ * @date 2023-09-28 22:54:07
+ * @since 2.4.0
+ */
+@Component
+@JobExecutor(name = "testAnnoJobExecutorSleep1s")
+public class TestAnnoJobExecutorSleep1s {
+
+ public ExecuteResult jobExecute(JobArgs jobArgs) {
+ System.out.println(JsonUtil.toJsonString(jobArgs));
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ return ExecuteResult.success("测试成功");
+ }
+}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep30s.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep30s.java
new file mode 100644
index 000000000..b7b35e4b9
--- /dev/null
+++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep30s.java
@@ -0,0 +1,27 @@
+package org.dromara.job.easyretry;
+
+import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor;
+import com.aizuda.easy.retry.client.job.core.dto.JobArgs;
+import com.aizuda.easy.retry.client.model.ExecuteResult;
+import com.aizuda.easy.retry.common.core.util.JsonUtil;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author www.byteblogs.com
+ * @date 2023-09-28 22:54:07
+ * @since 2.4.0
+ */
+@Component
+@JobExecutor(name = "testAnnoJobExecutorSleep30s")
+public class TestAnnoJobExecutorSleep30s {
+
+ public ExecuteResult jobExecute(JobArgs jobArgs) {
+ System.out.println(JsonUtil.toJsonString(jobArgs));
+ try {
+ Thread.sleep(30 * 1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ return ExecuteResult.success("测试成功");
+ }
+}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep5s.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep5s.java
new file mode 100644
index 000000000..7e44db5b8
--- /dev/null
+++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep5s.java
@@ -0,0 +1,30 @@
+package org.dromara.job.easyretry;
+
+import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor;
+import com.aizuda.easy.retry.client.job.core.dto.JobArgs;
+import com.aizuda.easy.retry.client.model.ExecuteResult;
+import com.aizuda.easy.retry.common.core.util.JsonUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author www.byteblogs.com
+ * @date 2023-09-28 22:54:07
+ * @since 2.4.0
+ */
+@Component
+@Slf4j
+@JobExecutor(name = "testAnnoJobExecutorSleep5s")
+public class TestAnnoJobExecutorSleep5s {
+
+ public ExecuteResult jobExecute(JobArgs jobArgs) {
+ log.info("testAnnoJobExecutorSleep5s. jobArgs:{}", JsonUtil.toJsonString(jobArgs));
+
+ try {
+ Thread.sleep(5 * 1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ return ExecuteResult.success("测试成功");
+ }
+}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestClassJobExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestClassJobExecutor.java
new file mode 100644
index 000000000..3a988c5ad
--- /dev/null
+++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestClassJobExecutor.java
@@ -0,0 +1,20 @@
+package org.dromara.job.easyretry;
+
+import com.aizuda.easy.retry.client.job.core.dto.JobArgs;
+import com.aizuda.easy.retry.client.job.core.executor.AbstractJobExecutor;
+import com.aizuda.easy.retry.client.model.ExecuteResult;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author www.byteblogs.com
+ * @date 2023-09-28 22:54:07
+ * @since 2.4.0
+ */
+@Component
+public class TestClassJobExecutor extends AbstractJobExecutor {
+
+ @Override
+ protected ExecuteResult doJobExecute(JobArgs jobArgs) {
+ return ExecuteResult.success("TestJobExecutor测试成功");
+ }
+}
diff --git a/script/docker/docker-compose.yml b/script/docker/docker-compose.yml
index 503d2e131..bbac441be 100644
--- a/script/docker/docker-compose.yml
+++ b/script/docker/docker-compose.yml
@@ -156,3 +156,16 @@ services:
privileged: true
network_mode: "host"
+ ruoyi-easyretry-server:
+ image: ruoyi/ruoyi-easyretry-server:5.2.0
+ container_name: ruoyi-easyretry-server
+ environment:
+ # 时区上海
+ TZ: Asia/Shanghai
+ ports:
+ - "8800:8800"
+ - "1788:1788"
+ volumes:
+ - /docker/easyretry/logs/:/ruoyi/easyretry/logs
+ privileged: true
+ network_mode: "host"
diff --git a/script/docker/nginx/conf/nginx.conf b/script/docker/nginx/conf/nginx.conf
index 0e9856abe..20b5594d9 100644
--- a/script/docker/nginx/conf/nginx.conf
+++ b/script/docker/nginx/conf/nginx.conf
@@ -35,6 +35,10 @@ http {
server 127.0.0.1:7700;
}
+ upstream easyretry-server {
+ server 127.0.0.1:8800;
+ }
+
server {
listen 80;
server_name localhost;
@@ -112,6 +116,14 @@ http {
proxy_pass http://powerjob-server;
}
+ location /easy-retry/ {
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header REMOTE-HOST $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_pass http://easyretry-server/;
+ }
+
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
diff --git a/script/sql/easy_retry.sql b/script/sql/easy_retry.sql
new file mode 100644
index 000000000..4f933552b
--- /dev/null
+++ b/script/sql/easy_retry.sql
@@ -0,0 +1,548 @@
+SET NAMES utf8mb4;
+
+DROP TABLE IF EXISTS `namespace`;
+CREATE TABLE `namespace`
+(
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `name` varchar(64) NOT NULL COMMENT '名称',
+ `unique_id` varchar(64) NOT NULL COMMENT '唯一id',
+ `description` varchar(256) 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 '修改时间',
+ `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除',
+ PRIMARY KEY (`id`),
+ KEY `idx_name` (`name`),
+ UNIQUE KEY `uk_unique_id` (`unique_id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4 COMMENT ='命名空间';
+
+INSERT INTO `namespace` (`id`, `name`, `unique_id`, `create_dt`, `update_dt`, `deleted`)
+VALUES (1, 'Development', 'dev', now(), now(), 0);
+INSERT INTO `namespace` (`id`, `name`, `unique_id`, `create_dt`, `update_dt`, `deleted`)
+VALUES (2, 'Production', 'prod', now(), now(), 0);
+
+DROP TABLE IF EXISTS `group_config`;
+CREATE TABLE `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 '组描述',
+ `group_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '组状态 0、未启用 1、启用',
+ `version` int(11) NOT NULL COMMENT '版本号',
+ `group_partition` int(11) NOT NULL COMMENT '分区',
+ `id_generator_mode` tinyint(4) NOT NULL DEFAULT '1' COMMENT '唯一id生成模式 默认号段模式',
+ `init_scene` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否初始化场景 0:否 1:是',
+ `bucket_index` int(11) NOT NULL DEFAULT '0' COMMENT 'bucket',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_namespace_id_group_name` (`namespace_id`, `group_name`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='组配置'
+;
+
+INSERT INTO `ry-vue`.group_config (id, namespace_id, group_name, description, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt)
+VALUES (1, 'dev', 'ruoyi_group', '', 1, 1, 0, 1, 1, 4, '2024-03-13 23:21:41', '2024-03-13 23:21:40');
+
+DROP TABLE IF EXISTS `notify_config`;
+CREATE TABLE `notify_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 COMMENT '组名称',
+ `scene_name` varchar(64) NOT NULL COMMENT '场景名称',
+ `notify_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '通知状态 0、未启用 1、启用',
+ `notify_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '通知类型 1、钉钉 2、邮件 3、企业微信',
+ `notify_attribute` varchar(512) NOT NULL COMMENT '配置属性',
+ `notify_threshold` int(11) NOT NULL DEFAULT '0' COMMENT '通知阈值',
+ `notify_scene` tinyint(4) NOT NULL DEFAULT '0' COMMENT '通知场景',
+ `rate_limiter_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '限流状态 0、未启用 1、启用',
+ `rate_limiter_threshold` int(11) NOT NULL DEFAULT '0' COMMENT '每秒限流阈值',
+ `description` varchar(256) 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_scene_name` (`namespace_id`, `group_name`, `scene_name`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='通知配置'
+;
+
+DROP TABLE IF EXISTS `retry_dead_letter_0`;
+CREATE TABLE `retry_dead_letter_0`
+(
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
+ `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
+ `group_name` varchar(64) NOT NULL COMMENT '组名称',
+ `scene_name` varchar(64) NOT NULL COMMENT '场景名称',
+ `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id',
+ `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号',
+ `executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称',
+ `args_str` text NOT NULL COMMENT '执行方法参数',
+ `ext_attrs` text NOT NULL COMMENT '扩展字段',
+ `task_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务类型 1、重试数据 2、回调数据',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ PRIMARY KEY (`id`),
+ KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
+ KEY `idx_idempotent_id` (`idempotent_id`),
+ KEY `idx_biz_no` (`biz_no`),
+ KEY `idx_create_dt` (`create_dt`),
+ UNIQUE KEY `uk_namespace_id_group_name_unique_id` (`namespace_id`, `group_name`, `unique_id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='死信队列表'
+;
+
+DROP TABLE IF EXISTS `retry_task_0`;
+CREATE TABLE `retry_task_0`
+(
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
+ `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
+ `group_name` varchar(64) NOT NULL COMMENT '组名称',
+ `scene_name` varchar(64) NOT NULL COMMENT '场景名称',
+ `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id',
+ `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号',
+ `executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称',
+ `args_str` text NOT NULL COMMENT '执行方法参数',
+ `ext_attrs` text NOT NULL COMMENT '扩展字段',
+ `next_trigger_at` datetime NOT NULL COMMENT '下次触发时间',
+ `retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '重试次数',
+ `retry_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '重试状态 0、重试中 1、成功 2、最大重试次数',
+ `task_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务类型 1、重试数据 2、回调数据',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+ PRIMARY KEY (`id`),
+ KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
+ KEY `idx_namespace_id_group_name_task_type` (`namespace_id`, `group_name`, `task_type`),
+ KEY `idx_namespace_id_group_name_retry_status` (`namespace_id`, `group_name`, `retry_status`),
+ KEY `idx_idempotent_id` (`idempotent_id`),
+ KEY `idx_biz_no` (`biz_no`),
+ KEY `idx_create_dt` (`create_dt`),
+ UNIQUE KEY `uk_name_unique_id` (`namespace_id`, `group_name`, `unique_id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='任务表'
+;
+
+DROP TABLE IF EXISTS `retry_task_log`;
+CREATE TABLE `retry_task_log`
+(
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
+ `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
+ `group_name` varchar(64) NOT NULL COMMENT '组名称',
+ `scene_name` varchar(64) NOT NULL COMMENT '场景名称',
+ `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id',
+ `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号',
+ `executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称',
+ `args_str` text NOT NULL COMMENT '执行方法参数',
+ `ext_attrs` text NOT NULL COMMENT '扩展字段',
+ `retry_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '重试状态 0、重试中 1、成功 2、最大次数',
+ `task_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务类型 1、重试数据 2、回调数据',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ PRIMARY KEY (`id`),
+ KEY `idx_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
+ KEY `idx_retry_status` (`retry_status`),
+ KEY `idx_idempotent_id` (`idempotent_id`),
+ KEY `idx_unique_id` (`unique_id`),
+ KEY `idx_biz_no` (`biz_no`),
+ KEY `idx_create_dt` (`create_dt`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='任务日志基础信息表'
+;
+
+DROP TABLE IF EXISTS `retry_task_log_message`;
+CREATE TABLE `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',
+ PRIMARY KEY (`id`),
+ KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `unique_id`),
+ KEY `idx_create_dt` (`create_dt`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='任务调度日志信息记录表'
+;
+
+DROP TABLE IF EXISTS `scene_config`;
+CREATE TABLE `scene_config`
+(
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
+ `scene_name` varchar(64) NOT NULL COMMENT '场景名称',
+ `group_name` varchar(64) NOT NULL COMMENT '组名称',
+ `scene_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '组状态 0、未启用 1、启用',
+ `max_retry_count` int(11) NOT NULL DEFAULT '5' COMMENT '最大重试次数',
+ `back_off` tinyint(4) NOT NULL DEFAULT '1' COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式',
+ `trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '间隔时长',
+ `deadline_request` bigint(20) unsigned NOT NULL DEFAULT '60000' COMMENT 'Deadline Request 调用链超时 单位毫秒',
+ `executor_timeout` int(11) unsigned NOT NULL DEFAULT '5' COMMENT '任务执行超时时间,单位秒',
+ `route_key` tinyint(4) NOT NULL DEFAULT '4' COMMENT '路由策略',
+ `description` varchar(256) 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`),
+ UNIQUE KEY `uk_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='场景配置'
+;
+
+DROP TABLE IF EXISTS `server_node`;
+CREATE TABLE `server_node`
+(
+ `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 '组名称',
+ `host_id` varchar(64) NOT NULL COMMENT '主机id',
+ `host_ip` varchar(64) NOT NULL COMMENT '机器ip',
+ `context_path` varchar(256) NOT NULL DEFAULT '/' COMMENT '客户端上下文路径 server.servlet.context-path',
+ `host_port` int(16) NOT NULL COMMENT '机器端口',
+ `expire_at` datetime NOT NULL COMMENT '过期时间',
+ `node_type` tinyint(4) NOT NULL COMMENT '节点类型 1、客户端 2、是服务端',
+ `ext_attrs` varchar(256) 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` (`namespace_id`, `group_name`),
+ KEY `idx_expire_at_node_type` (`expire_at`, `node_type`),
+ UNIQUE KEY `uk_host_id_host_ip` (`host_id`, `host_ip`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='服务器节点'
+;
+
+DROP TABLE IF EXISTS `distributed_lock`;
+CREATE TABLE `distributed_lock`
+(
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `name` varchar(64) NOT NULL COMMENT '锁名称',
+ `lock_until` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '锁定时长',
+ `locked_at` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '锁定时间',
+ `locked_by` varchar(255) NOT NULL COMMENT '锁定者',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_name` (`name`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='锁定表'
+;
+
+DROP TABLE IF EXISTS `system_user`;
+CREATE TABLE `system_user`
+(
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `username` varchar(64) NOT NULL COMMENT '账号',
+ `password` varchar(128) NOT NULL COMMENT '密码',
+ `role` tinyint(4) NOT NULL DEFAULT '0' COMMENT '角色:1-普通用户、2-管理员',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_username` (`username`) USING BTREE
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4 COMMENT ='系统用户表';
+
+-- pwd: admin
+INSERT INTO system_user (username, password, role)
+VALUES ('admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2);
+
+DROP TABLE IF EXISTS `system_user_permission`;
+CREATE TABLE `system_user_permission`
+(
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `group_name` varchar(64) NOT NULL COMMENT '组名称',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
+ `system_user_id` bigint(20) NOT NULL COMMENT '系统用户id',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_namespace_id_group_name_system_user_id` (`namespace_id`, `group_name`, `system_user_id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4 COMMENT ='系统用户权限表';
+
+DROP TABLE IF EXISTS `sequence_alloc`;
+CREATE TABLE `sequence_alloc`
+(
+ `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 '组名称',
+ `max_id` bigint(20) NOT NULL DEFAULT '1' COMMENT '最大id',
+ `step` int(11) NOT NULL DEFAULT '100' COMMENT '步长',
+ `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_namespace_id_group_name` (`namespace_id`, `group_name`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4 COMMENT ='号段模式序号ID分配表';
+
+-- 分布式调度DDL
+DROP TABLE IF EXISTS `job`;
+CREATE TABLE `job`
+(
+ `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 '组名称',
+ `job_name` varchar(64) NOT NULL COMMENT '名称',
+ `args_str` text DEFAULT NULL COMMENT '执行方法参数',
+ `args_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '参数类型 ',
+ `next_trigger_at` bigint(13) NOT NULL COMMENT '下次触发时间',
+ `job_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务状态 0、关闭、1、开启',
+ `task_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务类型 1、集群 2、广播 3、切片',
+ `route_key` tinyint(4) NOT NULL DEFAULT '4' COMMENT '路由策略',
+ `executor_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '执行器类型',
+ `executor_info` varchar(255) DEFAULT NULL COMMENT '执行器名称',
+ `trigger_type` tinyint(4) NOT NULL COMMENT '触发类型 1.CRON 表达式 2. 固定时间',
+ `trigger_interval` varchar(255) NOT NULL COMMENT '间隔时长',
+ `block_strategy` tinyint(4) NOT NULL DEFAULT '1' COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行',
+ `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒',
+ `max_retry_times` int(11) NOT NULL DEFAULT '0' COMMENT '最大重试次数',
+ `parallel_num` int(11) NOT NULL DEFAULT '1' COMMENT '并行数',
+ `retry_interval` int(11) NOT NULL DEFAULT '0' COMMENT '重试间隔(s)',
+ `bucket_index` int(11) NOT NULL DEFAULT '0' COMMENT 'bucket',
+ `resident` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否是常驻任务',
+ `description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述',
+ `ext_attrs` varchar(256) 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 '修改时间',
+ `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除',
+ PRIMARY KEY (`id`),
+ KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`),
+ KEY `idx_job_status_bucket_index` (`job_status`, `bucket_index`),
+ KEY `idx_create_dt` (`create_dt`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='任务信息';
+
+INSERT INTO job (id, namespace_id, group_name, job_name, args_str, args_type, next_trigger_at, job_status, task_type, route_key, executor_type, executor_info, trigger_type, trigger_interval, block_strategy, executor_timeout, max_retry_times, parallel_num, retry_interval, bucket_index, resident, description, ext_attrs, create_dt, update_dt, deleted)
+VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', '', '2024-03-13 22:59:39', '2024-03-13 23:32:52', 0);
+
+DROP TABLE IF EXISTS `job_log_message`;
+CREATE TABLE `job_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 '组名称',
+ `job_id` bigint(20) NOT NULL COMMENT '任务信息id',
+ `task_batch_id` bigint(20) NOT NULL COMMENT '任务批次id',
+ `task_id` bigint(20) NOT NULL COMMENT '调度任务id',
+ `message` longtext NOT NULL COMMENT '调度信息',
+ `log_num` int(11) NOT NULL DEFAULT 1 COMMENT '日志数量',
+ `real_time` bigint(13) NOT NULL DEFAULT 0 COMMENT '上报时间',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `ext_attrs` varchar(256) NULL default '' COMMENT '扩展字段',
+ PRIMARY KEY (`id`),
+ KEY `idx_task_batch_id_task_id` (`task_batch_id`, `task_id`),
+ KEY `idx_create_dt` (`create_dt`),
+ KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='调度日志';
+
+DROP TABLE IF EXISTS `job_task`;
+CREATE TABLE `job_task`
+(
+ `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 '组名称',
+ `job_id` bigint(20) NOT NULL COMMENT '任务信息id',
+ `task_batch_id` bigint(20) NOT NULL COMMENT '调度任务id',
+ `parent_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '父执行器id',
+ `task_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行的状态 0、失败 1、成功',
+ `retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '重试次数',
+ `client_info` varchar(128) DEFAULT NULL COMMENT '客户端地址 clientId#ip:port',
+ `result_message` text NOT NULL COMMENT '执行结果',
+ `args_str` text DEFAULT NULL COMMENT '执行方法参数',
+ `args_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '参数类型 ',
+ `ext_attrs` varchar(256) 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_task_batch_id_task_status` (`task_batch_id`, `task_status`),
+ KEY `idx_create_dt` (`create_dt`),
+ KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='任务实例';
+
+DROP TABLE IF EXISTS `job_task_batch`;
+CREATE TABLE `job_task_batch`
+(
+ `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 '组名称',
+ `job_id` bigint(20) NOT NULL COMMENT '任务id',
+ `workflow_node_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '工作流节点id',
+ `parent_workflow_node_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '工作流任务父批次id',
+ `workflow_task_batch_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '工作流任务批次id',
+ `task_batch_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '任务批次状态 0、失败 1、成功',
+ `operation_reason` tinyint(4) NOT NULL DEFAULT '0' COMMENT '操作原因',
+ `execution_at` bigint(13) NOT NULL DEFAULT '0' COMMENT '任务执行时间',
+ `system_task_type` tinyint(4) NOT NULL DEFAULT '3' COMMENT '任务类型 3、JOB任务 4、WORKFLOW任务',
+ `parent_id` varchar(64) 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 '修改时间',
+ `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除',
+ `ext_attrs` varchar(256) NULL default '' COMMENT '扩展字段',
+ PRIMARY KEY (`id`),
+ 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`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='任务批次';
+
+DROP TABLE IF EXISTS `job_notify_config`;
+CREATE TABLE `job_notify_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 COMMENT '组名称',
+ `job_id` bigint(20) NOT NULL COMMENT '任务id',
+ `notify_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '通知状态 0、未启用 1、启用',
+ `notify_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '通知类型 1、钉钉 2、邮件 3、企业微信',
+ `notify_attribute` varchar(512) NOT NULL COMMENT '配置属性',
+ `notify_threshold` int(11) NOT NULL DEFAULT '0' COMMENT '通知阈值',
+ `notify_scene` tinyint(4) NOT NULL DEFAULT '0' COMMENT '通知场景',
+ `rate_limiter_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '限流状态 0、未启用 1、启用',
+ `rate_limiter_threshold` int(11) NOT NULL DEFAULT '0' COMMENT '每秒限流阈值',
+ `description` varchar(256) 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)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 4
+ DEFAULT CHARSET = utf8mb4 COMMENT ='job通知配置';
+
+DROP TABLE IF EXISTS `job_summary`;
+CREATE TABLE `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 '修改时间',
+ 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
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 1
+ DEFAULT CHARSET = utf8mb4 COMMENT ='DashBoard_Job';
+
+DROP TABLE IF EXISTS `retry_summary`;
+CREATE TABLE `retry_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 '组名称',
+ `scene_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '场景名称',
+ `trigger_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '统计时间',
+ `running_num` int NOT NULL DEFAULT '0' COMMENT '重试中-日志数量',
+ `finish_num` int NOT NULL DEFAULT '0' COMMENT '重试完成-日志数量',
+ `max_count_num` int NOT NULL DEFAULT '0' COMMENT '重试到达最大次数-日志数量',
+ `suspend_num` int NOT NULL DEFAULT '0' COMMENT '暂停重试-日志数量',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_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`
+(
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `workflow_name` varchar(64) NOT NULL COMMENT '工作流名称',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
+ `group_name` varchar(64) NOT NULL COMMENT '组名称',
+ `workflow_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '工作流状态 0、关闭、1、开启',
+ `trigger_type` tinyint(4) NOT NULL COMMENT '触发类型 1.CRON 表达式 2. 固定时间',
+ `trigger_interval` varchar(255) NOT NULL COMMENT '间隔时长',
+ `next_trigger_at` bigint(13) NOT NULL COMMENT '下次触发时间',
+ `block_strategy` tinyint(4) NOT NULL DEFAULT '1' COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行',
+ `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒',
+ `description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述',
+ `flow_info` text DEFAULT NULL COMMENT '流程信息',
+ `bucket_index` int(11) NOT NULL DEFAULT '0' COMMENT 'bucket',
+ `version` int(11) NOT NULL COMMENT '版本号',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+ `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除',
+ `ext_attrs` varchar(256) NULL default '' COMMENT '扩展字段',
+ PRIMARY KEY (`id`),
+ KEY `idx_create_dt` (`create_dt`),
+ KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='工作流';
+
+DROP TABLE IF EXISTS `workflow_node`;
+CREATE TABLE `workflow_node`
+(
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
+ `node_name` varchar(64) NOT NULL COMMENT '节点名称',
+ `group_name` varchar(64) NOT NULL COMMENT '组名称',
+ `job_id` bigint(20) NOT NULL COMMENT '任务信息id',
+ `workflow_id` bigint(20) NOT NULL COMMENT '工作流ID',
+ `node_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、任务节点 2、条件节点',
+ `expression_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '1、SpEl、2、Aviator 3、QL',
+ `fail_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '失败策略 1、跳过 2、阻塞',
+ `workflow_node_status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '工作流节点状态 0、关闭、1、开启',
+ `priority_level` int(11) NOT NULL DEFAULT 1 COMMENT '优先级',
+ `node_info` text DEFAULT NULL COMMENT '节点信息 ',
+ `version` int(11) NOT NULL COMMENT '版本号',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+ `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除',
+ `ext_attrs` varchar(256) NULL default '' COMMENT '扩展字段',
+ PRIMARY KEY (`id`),
+ KEY `idx_create_dt` (`create_dt`),
+ KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='工作流节点';
+
+DROP TABLE IF EXISTS `workflow_task_batch`;
+CREATE TABLE `workflow_task_batch`
+(
+ `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 '组名称',
+ `workflow_id` bigint(20) NOT NULL COMMENT '工作流任务id',
+ `task_batch_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '任务批次状态 0、失败 1、成功',
+ `operation_reason` tinyint(4) NOT NULL DEFAULT '0' COMMENT '操作原因',
+ `flow_info` text DEFAULT NULL COMMENT '流程信息',
+ `execution_at` bigint(13) NOT NULL DEFAULT '0' COMMENT '任务执行时间',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+ `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除',
+ `ext_attrs` varchar(256) NULL default '' COMMENT '扩展字段',
+ PRIMARY KEY (`id`),
+ KEY `idx_job_id_task_batch_status` (`workflow_id`, `task_batch_status`),
+ KEY `idx_create_dt` (`create_dt`),
+ KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 0
+ DEFAULT CHARSET = utf8mb4 COMMENT ='工作流批次';
diff --git a/script/sql/postgres/easy_retry.sql b/script/sql/postgres/easy_retry.sql
new file mode 100644
index 000000000..9e5d072fd
--- /dev/null
+++ b/script/sql/postgres/easy_retry.sql
@@ -0,0 +1,804 @@
+-- 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 (name, unique_id, create_dt, update_dt, deleted)
+VALUES ('Default', '764d604ec6fc45f68cd92514c40e9e1a', 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 `namespace` (`id`, `name`, `unique_id`, `create_dt`, `update_dt`, `deleted`)
+VALUES (1, 'Development', 'dev', now(), now(), 0);
+INSERT INTO `namespace` (`id`, `name`, `unique_id`, `create_dt`, `update_dt`, `deleted`)
+VALUES (2, 'Production', 'prod', now(), now(), 0);
+
+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 (username, password, role)
+VALUES ('admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2);
+
+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 (id, namespace_id, group_name, job_name, args_str, args_type, next_trigger_at, job_status, task_type, route_key, executor_type, executor_info, trigger_type, trigger_interval, block_strategy, executor_timeout, max_retry_times, parallel_num, retry_interval, bucket_index, resident, description, ext_attrs, create_dt, update_dt, deleted)
+VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', '', '2024-03-13 22:59:39', '2024-03-13 23:32:52', 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 '扩展字段';
+
+
diff --git a/script/sql/ry_vue_5.X.sql b/script/sql/ry_vue_5.X.sql
index 252779151..b392d2459 100644
--- a/script/sql/ry_vue_5.X.sql
+++ b/script/sql/ry_vue_5.X.sql
@@ -293,7 +293,9 @@ insert into sys_menu values('117', 'Admin监控', '2', '5', 'Admin',
-- oss菜单
insert into sys_menu values('118', '文件管理', '1', '10', 'oss', 'system/oss/index', '', 1, 0, 'C', '0', '0', 'system:oss:list', 'upload', 103, 1, sysdate(), null, null, '文件管理菜单');
-- powerjob server控制台
-insert into sys_menu values('120', '任务调度中心', '2', '5', 'powerjob', 'monitor/powerjob/index', '', 1, 0, 'C', '0', '0', 'monitor:powerjob:list', 'job', 103, 1, sysdate(), null, null, 'PowerJob控制台菜单');
+insert into sys_menu values('120', '任务调度中心', '2', '5', 'powerjob', 'monitor/powerjob/index', '', 1, 0, 'C', '0', '0', 'monitor:powerjob:list', 'job', 103, 1, sysdate(), null, null, 'PowerJob控制台菜单');
+-- retry server控制台
+insert into sys_menu values('130', 'EasyRetry服务器', '2', '6', 'easyretry', 'monitor/easyretry/index', '', 1, 0, 'C', '0', '0', 'monitor:easyretry:list', 'job', 103, 1, sysdate(), null, null, 'EasyRetry控制台菜单');
-- 三级菜单
insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', '', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, sysdate(), null, null, '操作日志菜单');