From 355df7437bc380f39bac23046947f411e181c139 Mon Sep 17 00:00:00 2001 From: dhb52 Date: Mon, 25 Mar 2024 00:50:57 +0000 Subject: [PATCH 1/2] =?UTF-8?q?!54=20=E2=9C=A8=E6=B7=BB=E5=8A=A0SQLServer?= =?UTF-8?q?=E6=94=AF=E6=8C=81=20*=20=E2=9C=A8SQLServer=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/docker/docker-compose.yaml | 15 + doc/docker/sqlserver/create_schema.sh | 5 + doc/sql/easy_retry_sqlserver.sql | 2717 +++++++++++++++++ .../access/config/AbstractConfigAccess.java | 6 +- .../access/task/AbstractTaskAccess.java | 6 +- .../template/datasource/enums/DbTypeEnum.java | 3 +- .../datasource/persistence/po/SystemUser.java | 7 +- .../.gitignore | 35 + .../easy-retry-sqlserver-datasource/pom.xml | 59 + .../EasyRetrySqlServerAutoConfiguration.java | 16 + ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../mapper/DistributedLockMapper.xml | 27 + .../sqlserver/mapper/GroupConfigMapper.xml | 22 + .../sqlserver/mapper/JobLogMessageMapper.xml | 38 + .../resources/sqlserver/mapper/JobMapper.xml | 41 + .../mapper/JobNotifyConfigMapper.xml | 46 + .../sqlserver/mapper/JobSummaryMapper.xml | 186 ++ .../sqlserver/mapper/JobTaskBatchMapper.xml | 89 + .../sqlserver/mapper/JobTaskMapper.xml | 18 + .../sqlserver/mapper/NamespaceMapper.xml | 15 + .../sqlserver/mapper/NotifyConfigMapper.xml | 21 + .../mapper/RetryDeadLetterMapper.xml | 44 + .../sqlserver/mapper/RetrySummaryMapper.xml | 198 ++ .../sqlserver/mapper/RetryTaskLogMapper.xml | 51 + .../sqlserver/mapper/RetryTaskMapper.xml | 64 + .../sqlserver/mapper/SceneConfigMapper.xml | 21 + .../sqlserver/mapper/SequenceAllocMapper.xml | 25 + .../sqlserver/mapper/ServerNodeMapper.xml | 67 + .../sqlserver/mapper/SystemUserMapper.xml | 15 + .../mapper/SystemUserPermissionMapper.xml | 14 + .../sqlserver/mapper/WorkflowMapper.xml | 31 + .../sqlserver/mapper/WorkflowNodeMapper.xml | 22 + .../mapper/WorkflowTaskBatchMapper.xml | 50 + easy-retry-datasource/pom.xml | 1 + .../lock/persistence/JdbcLockProvider.java | 6 +- .../RetryTaskMoreThresholdAlarmSchedule.java | 3 +- .../src/main/resources/application.yml | 5 + .../easy-retry-server-web/pom.xml | 4 + .../service/impl/DashBoardServiceImpl.java | 37 +- .../web/service/impl/JobServiceImpl.java | 3 +- .../web/service/impl/JobTaskServiceImpl.java | 1 + .../web/service/impl/WorkflowServiceImpl.java | 3 +- pom.xml | 5 + 43 files changed, 4015 insertions(+), 28 deletions(-) create mode 100755 doc/docker/sqlserver/create_schema.sh create mode 100644 doc/sql/easy_retry_sqlserver.sql create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/.gitignore create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/pom.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/java/com/aizuda/easy/retry/sqlserver/datasource/config/EasyRetrySqlServerAutoConfiguration.java create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/DistributedLockMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/GroupConfigMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobLogMessageMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobNotifyConfigMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobSummaryMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobTaskBatchMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobTaskMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/NamespaceMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/NotifyConfigMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetryDeadLetterMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetrySummaryMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetryTaskLogMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetryTaskMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SceneConfigMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SequenceAllocMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/ServerNodeMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SystemUserMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SystemUserPermissionMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/WorkflowMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/WorkflowNodeMapper.xml create mode 100644 easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/WorkflowTaskBatchMapper.xml diff --git a/doc/docker/docker-compose.yaml b/doc/docker/docker-compose.yaml index 0bc323fb..137e40b2 100644 --- a/doc/docker/docker-compose.yaml +++ b/doc/docker/docker-compose.yaml @@ -6,6 +6,7 @@ volumes: mysql: { } postgres: { } oracle: { } + sqlserver: { } services: mysql: @@ -54,3 +55,17 @@ services: # 创建app用户: root/root@//localhost/XEPDB1 - ./oracle/1_create_user.sql:/docker-entrypoint-initdb.d/1_create_user.sql:ro - ./oracle/2_create_schema.sh:/docker-entrypoint-initdb.d/2_create_schema.sh:ro + + sqlserver: + image: mcr.microsoft.com/mssql/server:2017-latest + environment: + TZ: Asia/Shanghai + ACCEPT_EULA: "Y" + SA_PASSWORD: "EasyRetry@24" + ports: + - "1433:1433" + volumes: + - sqlserver:/var/opt/mssql + - ../sql/easy_retry_sqlserver.sql:/tmp/schema.sql:ro + # docker compose exec sqlserver bash /tmp/create_schema.sh + - ./sqlserver/create_schema.sh:/tmp/create_schema.sh:ro diff --git a/doc/docker/sqlserver/create_schema.sh b/doc/docker/sqlserver/create_schema.sh new file mode 100755 index 00000000..d7037668 --- /dev/null +++ b/doc/docker/sqlserver/create_schema.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'EasyRetry@24' -Q "CREATE DATABASE easy_retry; +GO" +/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'EasyRetry@24' -d easy_retry -i /tmp/schema.sql diff --git a/doc/sql/easy_retry_sqlserver.sql b/doc/sql/easy_retry_sqlserver.sql new file mode 100644 index 00000000..60fee158 --- /dev/null +++ b/doc/sql/easy_retry_sqlserver.sql @@ -0,0 +1,2717 @@ +-- distributed_lock +CREATE TABLE [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 + +-- group_config +CREATE TABLE [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 '', + [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'组状态 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 + +-- job +CREATE TABLE [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 + + +-- job_log_message +CREATE TABLE [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 + + +-- job_notify_config +CREATE TABLE [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 + + +-- job_summary +CREATE TABLE [job_summary] +( + [id] bigint PRIMARY KEY IDENTITY, + [namespace_id] nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + [group_name] nvarchar(64) NOT NULL, + [job_id] bigint NOT NULL, + [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_job_id_trigger_at] ON [job_summary] ([job_id] ASC, [trigger_at] ASC) +GO +CREATE NONCLUSTERED INDEX [idx_namespace_id_group_name_job_id] ON [job_summary] ([namespace_id] ASC, [group_name] ASC, [job_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', + 'SCHEMA', N'dbo', + 'TABLE', N'job_summary', + 'COLUMN', N'job_id' +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 + + +-- job_task +CREATE TABLE [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 + +-- job_task_batch +CREATE TABLE [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 + +-- namespace +CREATE TABLE [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 [namespace] ([name], [unique_id], [description], [create_dt], [update_dt], [deleted]) +VALUES (N'Default', N'764d604ec6fc45f68cd92514c40e9e1a', N'', N'2024-03-16 10:27:36', N'2024-03-16 10:27:36', + N'0') +GO + +-- notify_config +CREATE TABLE [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 + +-- retry_dead_letter_0 +CREATE TABLE [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 + + +-- retry_summary +CREATE TABLE [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 + +-- retry_task_0 +CREATE TABLE [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 + +-- retry_task_log +CREATE TABLE [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() +) +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' +GO + +-- retry_task_log_message +CREATE TABLE [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, + [client_info] nvarchar(128) NULL +) +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'客户端地址 clientId#ip:port', + 'SCHEMA', N'dbo', + 'TABLE', N'retry_task_log_message', + 'COLUMN', N'client_info' +GO + +EXEC sp_addextendedproperty + 'MS_Description', N'任务调度日志信息记录表', + 'SCHEMA', N'dbo', + 'TABLE', N'retry_task_log_message' +GO + +-- scene_config +CREATE TABLE [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 + +-- sequence_alloc +CREATE TABLE [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 + +-- server_node +CREATE TABLE [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 + +-- system_user_ +CREATE TABLE [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 + + +INSERT INTO [system_user_] ([username], [password], [role], [create_dt], [update_dt]) +VALUES (N'admin', N'465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', N'2', + N'2024-03-16 10:27:36', N'2024-03-16 10:27:36') +GO + +-- system_user_permission +CREATE TABLE [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 + + +-- workflow +CREATE TABLE [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 + +-- workflow_node +CREATE TABLE [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 + +-- workflow_task_batch +CREATE TABLE [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 diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/access/config/AbstractConfigAccess.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/access/config/AbstractConfigAccess.java index 47d94edd..0123ec74 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/access/config/AbstractConfigAccess.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/access/config/AbstractConfigAccess.java @@ -37,10 +37,12 @@ public abstract class AbstractConfigAccess implements ConfigAccess { @Autowired protected Environment environment; - protected static final List ALLOW_DB = Arrays.asList(DbTypeEnum.MYSQL.getDb(), + protected static final List ALLOW_DB = Arrays.asList( + DbTypeEnum.MYSQL.getDb(), DbTypeEnum.MARIADB.getDb(), DbTypeEnum.POSTGRES.getDb(), - DbTypeEnum.ORACLE.getDb()); + DbTypeEnum.ORACLE.getDb(), + DbTypeEnum.SQLSERVER.getDb()); protected DbTypeEnum getDbType() { String dbType = environment.getProperty("easy-retry.db-type"); diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/access/task/AbstractTaskAccess.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/access/task/AbstractTaskAccess.java index 8ee7e46d..d634f549 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/access/task/AbstractTaskAccess.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/access/task/AbstractTaskAccess.java @@ -21,10 +21,12 @@ public abstract class AbstractTaskAccess implements TaskAccess { @Autowired protected Environment environment; - protected static final List ALLOW_DB = Arrays.asList(DbTypeEnum.MYSQL.getDb(), + protected static final List ALLOW_DB = Arrays.asList( + DbTypeEnum.MYSQL.getDb(), DbTypeEnum.MARIADB.getDb(), DbTypeEnum.POSTGRES.getDb(), - DbTypeEnum.ORACLE.getDb()); + DbTypeEnum.ORACLE.getDb(), + DbTypeEnum.SQLSERVER.getDb()); protected DbTypeEnum getDbType() { String dbType = environment.getProperty("easy-retry.db-type"); diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/enums/DbTypeEnum.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/enums/DbTypeEnum.java index 72dd585c..2051c1fb 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/enums/DbTypeEnum.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/enums/DbTypeEnum.java @@ -20,7 +20,8 @@ public enum DbTypeEnum { MYSQL("mysql", "MySql数据库", DbType.MYSQL), MARIADB("mariadb", "MariaDB数据库", DbType.MARIADB), POSTGRES("postgres", "Postgres数据库", DbType.POSTGRE_SQL), - ORACLE("oracle", "Oracle数据库", DbType.ORACLE_12C); + ORACLE("oracle", "Oracle数据库", DbType.ORACLE_12C), + SQLSERVER("sqlserver", "SQLServer数据库", DbType.SQL_SERVER); private final String db; private final String desc; diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SystemUser.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SystemUser.java index 1d8479fc..3a829624 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SystemUser.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SystemUser.java @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @author www.byteblogs.com * @since 2022-03-05 */ -@TableName("system_user") +@TableName("system_user") // NOTE: system_user表是SQL Server系统函数, 这里需要修改为 system_user_, [system_user]不支持子查询 @Data public class SystemUser implements Serializable { @@ -33,9 +33,4 @@ public class SystemUser implements Serializable { private LocalDateTime updateDt; - public Long getId() { - return id; - } - - } diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/.gitignore b/easy-retry-datasource/easy-retry-sqlserver-datasource/.gitignore new file mode 100644 index 00000000..a73f4141 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/.gitignore @@ -0,0 +1,35 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +.flattened-pom.xml diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/pom.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/pom.xml new file mode 100644 index 00000000..637f9b0a --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + com.aizuda + easy-retry-datasource + ${revision} + ../pom.xml + + + easy-retry-sqlserver-datasource + easy-retry-sqlserver-datasource + easy-retry-sqlserver-datasource + jar + + + 17 + 17 + 17 + + + + + org.projectlombok + lombok + true + + + com.microsoft.sqlserver + mssql-jdbc + + + com.aizuda + easy-retry-datasource-template + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + none + execute + + + + + repackage + + + + + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/java/com/aizuda/easy/retry/sqlserver/datasource/config/EasyRetrySqlServerAutoConfiguration.java b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/java/com/aizuda/easy/retry/sqlserver/datasource/config/EasyRetrySqlServerAutoConfiguration.java new file mode 100644 index 00000000..a9c140da --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/java/com/aizuda/easy/retry/sqlserver/datasource/config/EasyRetrySqlServerAutoConfiguration.java @@ -0,0 +1,16 @@ +package com.aizuda.easy.retry.sqlserver.datasource.config; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +/** + * @author: www.byteblogs.com + * @date : 2024-03-19 22:05 + */ +@Configuration +@ComponentScan("com.aizuda.easy.retry.sqlserver.datasource.*") +@ConditionalOnProperty(prefix = "easy-retry", name = "db-type", havingValue = "sqlserver") +public class EasyRetrySqlServerAutoConfiguration { + +} diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..cb288191 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.aizuda.easy.retry.sqlserver.datasource.config.EasyRetrySqlServerAutoConfiguration \ No newline at end of file diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/DistributedLockMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/DistributedLockMapper.xml new file mode 100644 index 00000000..29df3b13 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/DistributedLockMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + id, name, lock_until, locked_at, locked_by, create_dt, update_dt + + + + UPDATE distributed_lock SET locked_by = #{lockedBy}, + lock_until = #{lockUntil}, + locked_at = #{lockedAt} + WHERE name = #{name} AND lock_until #{lockedAt} + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/GroupConfigMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/GroupConfigMapper.xml new file mode 100644 index 00000000..5f12a346 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/GroupConfigMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, `group_name`, group_status, version, `group_partition`, route_key, id_generator_mode, init_scene, description, create_dt, update_dt + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobLogMessageMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobLogMessageMapper.xml new file mode 100644 index 00000000..5abf6d9d --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobLogMessageMapper.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + INSERT INTO job_log_message (namespace_id, group_name, job_id, task_batch_id, task_id, + log_num, message, create_dt, real_time) + VALUES + + ( + #{item.namespaceId}, + #{item.groupName}, + #{item.jobId}, + #{item.taskBatchId}, + #{item.taskId}, + #{item.logNum}, + #{item.message}, + #{item.createDt}, + #{item.realTime} + ) + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobMapper.xml new file mode 100644 index 00000000..205020f0 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE job + SET job.next_trigger_at = src.next_trigger_at + FROM job + JOIN ( + + SELECT + #{item.nextTriggerAt} AS next_trigger_at, + #{item.id} AS id + + ) AS src ON job.id = src.id; + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobNotifyConfigMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobNotifyConfigMapper.xml new file mode 100644 index 00000000..bb915da8 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobNotifyConfigMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + id,namespace_id, group_name,job_id,notify_status,notify_type, notify_attribute, notify_threshold, notify_scene,rate_limiter_status,rate_limiter_threshold, description, + create_dt, update_dt + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobSummaryMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobSummaryMapper.xml new file mode 100644 index 00000000..2a25e335 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobSummaryMapper.xml @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + MERGE INTO job_summary AS target + USING ( + VALUES + + ( + #{item.namespaceId}, + #{item.groupName}, + #{item.jobId}, + #{item.triggerAt}, + #{item.successNum}, + #{item.failNum}, + #{item.failReason}, + #{item.stopNum}, + #{item.stopReason}, + #{item.cancelNum}, + #{item.cancelReason} + ) + + ) AS source (namespace_id, group_name, job_id, trigger_at, + success_num, fail_num, fail_reason, stop_num, stop_reason, cancel_num, cancel_reason) + ON target.namespace_id = source.namespace_id + AND target.job_id = source.job_id + WHEN MATCHED THEN + UPDATE SET + target.success_num = source.success_num, + target.fail_num = source.fail_num, + target.fail_reason = source.fail_reason, + target.stop_num = source.stop_num, + target.stop_reason = source.stop_reason, + target.cancel_num = source.cancel_num, + target.cancel_reason = source.cancel_reason + WHEN NOT MATCHED THEN + INSERT (namespace_id, group_name, job_id, trigger_at, + success_num, fail_num, fail_reason, stop_num, stop_reason, cancel_num, cancel_reason) + VALUES (source.namespace_id, source.group_name, source.job_id, source.trigger_at, + source.success_num, source.fail_num, source.fail_reason, source.stop_num, source.stop_reason, + source.cancel_num, source.cancel_reason); + + + + + + + + + + + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobTaskBatchMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobTaskBatchMapper.xml new file mode 100644 index 00000000..883f1fbf --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobTaskBatchMapper.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobTaskMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobTaskMapper.xml new file mode 100644 index 00000000..fc8de3df --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobTaskMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/NamespaceMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/NamespaceMapper.xml new file mode 100644 index 00000000..d6effaa0 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/NamespaceMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/NotifyConfigMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/NotifyConfigMapper.xml new file mode 100644 index 00000000..e28fa3d5 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/NotifyConfigMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + id, group_name, notify_type, notify_attribute, notify_threshold, notify_scene, description, + create_dt, update_dt + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetryDeadLetterMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetryDeadLetterMapper.xml new file mode 100644 index 00000000..e76182c7 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetryDeadLetterMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + id, unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, create_dt, task_type + + + + INSERT INTO retry_dead_letter (namespace_id, unique_id, group_name, scene_name, + idempotent_id, biz_no, executor_name, args_str, + ext_attrs, create_dt) + values + + ( + #{retryDeadLetter.namespaceId,jdbcType=VARCHAR}, + #{retryDeadLetter.uniqueId,jdbcType=VARCHAR}, + #{retryDeadLetter.groupName,jdbcType=VARCHAR}, + #{retryDeadLetter.sceneName,jdbcType=VARCHAR}, + #{retryDeadLetter.idempotentId,jdbcType=VARCHAR}, + #{retryDeadLetter.bizNo,jdbcType=VARCHAR}, + #{retryDeadLetter.executorName,jdbcType=VARCHAR}, + #{retryDeadLetter.argsStr,jdbcType=VARCHAR}, + #{retryDeadLetter.extAttrs,jdbcType=VARCHAR}, + #{retryDeadLetter.createDt,jdbcType=TIMESTAMP} + ) + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetrySummaryMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetrySummaryMapper.xml new file mode 100644 index 00000000..0fed27de --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetrySummaryMapper.xml @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + MERGE INTO retry_summary AS target + USING ( + VALUES + + ( + #{item.namespaceId}, + #{item.groupName}, + #{item.sceneName}, + #{item.triggerAt}, + #{item.runningNum}, + #{item.finishNum}, + #{item.maxCountNum}, + #{item.suspendNum} + ) + + ) AS source (namespace_id, group_name, scene_name, trigger_at, + running_num, finish_num, max_count_num, suspend_num) + ON target.namespace_id = source.namespace_id + AND target.group_name = source.group_name + AND target.scene_name = source.scene_name + AND target.trigger_at = source.trigger_at + WHEN MATCHED THEN + UPDATE SET + target.running_num = source.running_num, + target.finish_num = source.finish_num, + target.max_count_num = source.max_count_num, + target.suspend_num = source.suspend_num + WHEN NOT MATCHED THEN + INSERT (namespace_id, group_name, scene_name, trigger_at, + running_num, finish_num, max_count_num, suspend_num) + VALUES (source.namespace_id, source.group_name, source.scene_name, source.trigger_at, + source.running_num, source.finish_num, source.max_count_num, source.suspend_num); + + + + + + + + + + + + + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetryTaskLogMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetryTaskLogMapper.xml new file mode 100644 index 00000000..4d2df8b4 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetryTaskLogMapper.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + id, unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, retry_status, + create_dt, task_type, namespace_id + + + + + INSERT INTO retry_task_log (unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, + args_str, ext_attrs, task_type, create_dt, namespace_id) + VALUES + + (#{item.uniqueId}, #{item.groupName}, #{item.sceneName}, #{item.idempotentId}, + #{item.bizNo}, #{item.executorName}, #{item.argsStr}, #{item.extAttrs}, + #{item.taskType}, #{item.createDt}, #{item.namespaceId}) + + + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetryTaskMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetryTaskMapper.xml new file mode 100644 index 00000000..2d615ae7 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/RetryTaskMapper.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, namespace_id, unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, next_trigger_at, retry_count, retry_status, + create_dt, update_dt, task_type + + + + + INSERT INTO retry_task (namespace_id, unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, next_trigger_at, task_type, retry_status, create_dt) + VALUES + + ( + #{item.namespaceId}, + #{item.uniqueId}, + #{item.groupName}, + #{item.sceneName}, + #{item.idempotentId}, + #{item.bizNo}, + #{item.executorName}, + #{item.argsStr}, + #{item.extAttrs}, + #{item.nextTriggerAt}, + #{item.taskType}, + #{item.retryStatus}, + #{item.createDt} + ) + + + + + UPDATE target + SET target.next_trigger_at = src.next_trigger_at + FROM retry_task_${partition} as target + JOIN ( + + SELECT + #{item.nextTriggerAt} AS next_trigger_at, + #{item.id} AS id + + ) AS src + ON target.id = src.id; + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SceneConfigMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SceneConfigMapper.xml new file mode 100644 index 00000000..acb2f092 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SceneConfigMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + id, scene_name, group_name, scene_status, max_retry_count, back_off, `trigger_interval`, deadline_request, description, create_dt, update_dt + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SequenceAllocMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SequenceAllocMapper.xml new file mode 100644 index 00000000..2131f9cd --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SequenceAllocMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + UPDATE sequence_alloc + SET max_id = max_id + #{step}, update_dt = now() + WHERE group_name = #{groupName} and namespace_id = #{namespaceId} + + + + UPDATE sequence_alloc + SET max_id = max_id + step, update_dt = now() + WHERE group_name = #{groupName} and namespace_id = #{namespaceId} + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/ServerNodeMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/ServerNodeMapper.xml new file mode 100644 index 00000000..d7a1d67f --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/ServerNodeMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + id, namespace_id, group_name, context_path, host_id, host_ip, host_port, expire_at, node_type,create_dt,update_dt + + + + MERGE INTO server_node AS target + USING ( + VALUES + + ( + #{item.namespaceId,jdbcType=VARCHAR}, #{item.groupName,jdbcType=VARCHAR}, + #{item.hostId,jdbcType=VARCHAR}, #{item.hostIp,jdbcType=VARCHAR}, #{item.hostPort,jdbcType=INTEGER}, + #{item.expireAt,jdbcType=TIMESTAMP}, #{item.nodeType,jdbcType=TINYINT}, #{item.extAttrs,jdbcType=VARCHAR}, + #{item.contextPath,jdbcType=VARCHAR}, #{item.createDt,jdbcType=TIMESTAMP} + ) + + ) AS source (namespace_id, group_name, host_id, host_ip, host_port, + expire_at, node_type, ext_attrs, context_path, create_dt) + ON target.namespace_id = source.namespace_id + AND target.group_name = source.group_name + AND target.host_id = source.host_id + WHEN MATCHED THEN + UPDATE SET + target.expire_at = source.expire_at, target.update_dt = GETDATE() + WHEN NOT MATCHED THEN + INSERT (namespace_id, group_name, host_id, host_ip, host_port, + expire_at, node_type, ext_attrs, context_path, create_dt, update_dt) + VALUES (source.namespace_id, source.group_name, source.host_id, source.host_ip, source.host_port, + source.expire_at, source.node_type, source.ext_attrs, source.context_path, source.create_dt, GETDATE()); + + + + DELETE FROM server_node + WHERE expire_at <= #{endTime,jdbcType=TIMESTAMP} + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SystemUserMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SystemUserMapper.xml new file mode 100644 index 00000000..651b54e1 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SystemUserMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SystemUserPermissionMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SystemUserPermissionMapper.xml new file mode 100644 index 00000000..cc26e118 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/SystemUserPermissionMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/WorkflowMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/WorkflowMapper.xml new file mode 100644 index 00000000..5448146c --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/WorkflowMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + UPDATE workflow + SET workflow.next_trigger_at = src.next_trigger_at + FROM workflow + JOIN ( + + SELECT + #{item.nextTriggerAt} AS next_trigger_at, + #{item.id} AS id + + ) AS src ON workflow.id = src.id; + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/WorkflowNodeMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/WorkflowNodeMapper.xml new file mode 100644 index 00000000..f0d72eff --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/WorkflowNodeMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/WorkflowTaskBatchMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/WorkflowTaskBatchMapper.xml new file mode 100644 index 00000000..419a0c74 --- /dev/null +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/WorkflowTaskBatchMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/easy-retry-datasource/pom.xml b/easy-retry-datasource/pom.xml index 00732c51..c70b8c6e 100644 --- a/easy-retry-datasource/pom.xml +++ b/easy-retry-datasource/pom.xml @@ -25,6 +25,7 @@ easy-retry-mysql-datasource easy-retry-postgres-datasource easy-retry-oracle-datasource + easy-retry-sqlserver-datasource easy-retry-datasource-template diff --git a/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/lock/persistence/JdbcLockProvider.java b/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/lock/persistence/JdbcLockProvider.java index 3d62c2e3..6c6740c1 100644 --- a/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/lock/persistence/JdbcLockProvider.java +++ b/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/lock/persistence/JdbcLockProvider.java @@ -39,10 +39,12 @@ import java.util.List; @RequiredArgsConstructor public class JdbcLockProvider implements LockStorage, Lifecycle { - protected static final List ALLOW_DB = Arrays.asList(DbTypeEnum.MYSQL.getDb(), + protected static final List ALLOW_DB = Arrays.asList( + DbTypeEnum.MYSQL.getDb(), DbTypeEnum.MARIADB.getDb(), DbTypeEnum.POSTGRES.getDb(), - DbTypeEnum.ORACLE.getDb()); + DbTypeEnum.ORACLE.getDb(), + DbTypeEnum.SQLSERVER.getDb()); private final DistributedLockMapper distributedLockMapper; diff --git a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/schedule/RetryTaskMoreThresholdAlarmSchedule.java b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/schedule/RetryTaskMoreThresholdAlarmSchedule.java index 7fe9fa0a..7be20818 100644 --- a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/schedule/RetryTaskMoreThresholdAlarmSchedule.java +++ b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/schedule/RetryTaskMoreThresholdAlarmSchedule.java @@ -105,7 +105,8 @@ public class RetryTaskMoreThresholdAlarmSchedule extends AbstractSchedule implem List notifyConfigs = accessTemplate.getNotifyConfigAccess() .listPage(new PageDTO<>(startId, 1000), new LambdaQueryWrapper() .eq(NotifyConfig::getNotifyStatus, StatusEnum.YES.getStatus()) - .eq(NotifyConfig::getNotifyScene, NotifySceneEnum.MAX_RETRY.getNotifyScene())) + .eq(NotifyConfig::getNotifyScene, NotifySceneEnum.MAX_RETRY.getNotifyScene()) + .orderByDesc(NotifyConfig::getId)) // SQLServer 分页必须 ORDER BY .getRecords(); return RetryTaskConverter.INSTANCE.toNotifyConfigPartitionTask(notifyConfigs); diff --git a/easy-retry-server/easy-retry-server-starter/src/main/resources/application.yml b/easy-retry-server/easy-retry-server-starter/src/main/resources/application.yml index 70b8a521..2d7f26ee 100644 --- a/easy-retry-server/easy-retry-server-starter/src/main/resources/application.yml +++ b/easy-retry-server/easy-retry-server-starter/src/main/resources/application.yml @@ -22,6 +22,11 @@ spring: # url: jdbc:oracle:thin:@//localhost:1521/XEPDB1 # username: root # password: root + ## SQL Server +# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver +# url: jdbc:sqlserver://localhost:1433;DatabaseName=easy_retry;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true +# username: SA +# password: EasyRetry@24 type: com.zaxxer.hikari.HikariDataSource hikari: connection-timeout: 30000 diff --git a/easy-retry-server/easy-retry-server-web/pom.xml b/easy-retry-server/easy-retry-server-web/pom.xml index 5087f948..a5bb1a98 100644 --- a/easy-retry-server/easy-retry-server-web/pom.xml +++ b/easy-retry-server/easy-retry-server-web/pom.xml @@ -59,6 +59,10 @@ com.aizuda easy-retry-oracle-datasource + + com.aizuda + easy-retry-sqlserver-datasource + org.mapstruct mapstruct diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/DashBoardServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/DashBoardServiceImpl.java index eaf85b37..ae5b916d 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/DashBoardServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/DashBoardServiceImpl.java @@ -2,10 +2,11 @@ package com.aizuda.easy.retry.server.web.service.impl; import cn.hutool.core.util.StrUtil; import com.aizuda.easy.retry.common.core.enums.NodeTypeEnum; -import com.aizuda.easy.retry.common.core.util.NetUtil; -import com.aizuda.easy.retry.common.log.EasyRetryLog; import com.aizuda.easy.retry.common.core.model.Result; import com.aizuda.easy.retry.common.core.util.JsonUtil; +import com.aizuda.easy.retry.common.core.util.NetUtil; +import com.aizuda.easy.retry.common.log.EasyRetryLog; +import com.aizuda.easy.retry.server.common.config.SystemProperties; import com.aizuda.easy.retry.server.common.dto.DistributeInstance; import com.aizuda.easy.retry.server.common.dto.ServerNodeExtAttrs; import com.aizuda.easy.retry.server.common.register.ServerRegister; @@ -21,6 +22,7 @@ import com.aizuda.easy.retry.server.web.model.response.ServerNodeResponseVO; import com.aizuda.easy.retry.server.web.service.DashBoardService; import com.aizuda.easy.retry.server.web.service.convert.*; import com.aizuda.easy.retry.server.web.util.UserSessionUtils; +import com.aizuda.easy.retry.template.datasource.enums.DbTypeEnum; import com.aizuda.easy.retry.template.datasource.persistence.dataobject.ActivePodQuantityResponseDO; import com.aizuda.easy.retry.template.datasource.persistence.dataobject.DashboardCardResponseDO; import com.aizuda.easy.retry.template.datasource.persistence.dataobject.DashboardLineResponseDO; @@ -37,12 +39,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.web.client.RestTemplate; -import java.text.MessageFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -59,11 +59,14 @@ import java.util.stream.Collectors; @Slf4j @RequiredArgsConstructor public class DashBoardServiceImpl implements DashBoardService { + + private static final String DASHBOARD_CONSUMER_BUCKET = "/dashboard/consumer/bucket"; + + private final SystemProperties systemProperties; private final ServerNodeMapper serverNodeMapper; private final RestTemplate restTemplate; private final JobSummaryMapper jobSummaryMapper; private final RetrySummaryMapper retrySummaryMapper; - private static final String DASHBOARD_CONSUMER_BUCKET = "/dashboard/consumer/bucket"; @Override public DashboardCardResponseVO taskRetryJob() { @@ -86,7 +89,7 @@ public class DashBoardServiceImpl implements DashBoardService { List retryTaskList = retrySummaryMapper.retryTaskBarList(namespaceId, groupNames); Map summaryStatisticsMap = retryTaskList.stream().collect(Collectors.groupingBy(DashboardCardResponseDO.RetryTask::getTriggerAt, - Collectors.summarizingLong(i -> i.getMaxCountNum() + i.getRunningNum() + i.getSuspendNum() + i.getFinishNum()))); + Collectors.summarizingLong(i -> i.getMaxCountNum() + i.getRunningNum() + i.getSuspendNum() + i.getFinishNum()))); for (Map.Entry map : summaryStatisticsMap.entrySet()) { if (retryTaskBarMap.containsKey(LocalDateTime.of(map.getKey().toLocalDate(), LocalTime.MIN))) { DashboardCardResponseVO.RetryTaskBar retryTaskBar = retryTaskBarMap.get(LocalDateTime.of(map.getKey().toLocalDate(), LocalTime.MIN)); @@ -115,7 +118,12 @@ public class DashBoardServiceImpl implements DashBoardService { List groupNames = userSessionVO.isUser() ? userSessionVO.getGroupNames() : new ArrayList<>(); DashboardRetryLineResponseVO dashboardRetryLineResponseVO = new DashboardRetryLineResponseVO(); // 重试任务列表 - IPage IPage = retrySummaryMapper.retryTaskList(namespaceId, groupNames, new Page<>(baseQueryVO.getPage(), baseQueryVO.getSize())); + Page pager = new Page<>(baseQueryVO.getPage(), baseQueryVO.getSize()); + // 针对SQL Server的分页COUNT, 自定义statement ID + if (DbTypeEnum.SQLSERVER.equals(systemProperties.getDbType())) { + pager.setCountId("sqlServer_jobTaskList_Count"); + } + IPage IPage = retrySummaryMapper.retryTaskList(namespaceId, groupNames, pager); List taskList = JobSummaryResponseVOConverter.INSTANCE.toDashboardRetryLineResponseVO(IPage.getRecords()); PageResult> pageResult = new PageResult<>(new PageDTO(IPage.getCurrent(), IPage.getSize(), IPage.getTotal()), taskList); dashboardRetryLineResponseVO.setTaskList(pageResult); @@ -146,7 +154,12 @@ public class DashBoardServiceImpl implements DashBoardService { List groupNames = userSessionVO.isUser() ? userSessionVO.getGroupNames() : new ArrayList<>(); DashboardRetryLineResponseVO dashboardRetryLineResponseVO = new DashboardRetryLineResponseVO(); // 重试任务列表 - IPage IPage = jobSummaryMapper.jobTaskList(namespaceId, groupNames, new Page<>(baseQueryVO.getPage(), baseQueryVO.getSize())); + Page pager = new Page<>(baseQueryVO.getPage(), baseQueryVO.getSize()); + // 针对SQL Server的分页COUNT, 自定义statement ID + if (DbTypeEnum.SQLSERVER.equals(systemProperties.getDbType())) { + pager.setCountId("sqlServer_jobTaskList_Count"); + } + IPage IPage = jobSummaryMapper.jobTaskList(namespaceId, groupNames, pager); List taskList = JobSummaryResponseVOConverter.INSTANCE.toDashboardRetryLineResponseVO(IPage.getRecords()); PageResult> pageResult = new PageResult<>(new PageDTO(IPage.getCurrent(), IPage.getSize(), IPage.getTotal()), taskList); dashboardRetryLineResponseVO.setTaskList(pageResult); @@ -174,7 +187,7 @@ public class DashBoardServiceImpl implements DashBoardService { LambdaQueryWrapper serverNodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); serverNodeLambdaQueryWrapper.in(ServerNode::getNamespaceId, Lists.newArrayList( - UserSessionUtils.currentUserSession().getNamespaceId(), ServerRegister.NAMESPACE_ID + UserSessionUtils.currentUserSession().getNamespaceId(), ServerRegister.NAMESPACE_ID )); if (StrUtil.isNotBlank(queryVO.getGroupName())) { serverNodeLambdaQueryWrapper.eq(ServerNode::getGroupName, queryVO.getGroupName()); @@ -201,13 +214,13 @@ public class DashBoardServiceImpl implements DashBoardService { ServerNodeExtAttrs serverNodeExtAttrs = JsonUtil.parseObject(serverNodeResponseVO.getExtAttrs(), ServerNodeExtAttrs.class); try { // 从远程节点取 - String url = NetUtil.getUrl(serverNodeResponseVO.getHostIp(), serverNodeExtAttrs.getWebPort(), serverNodeResponseVO.getContextPath()); + String url = NetUtil.getUrl(serverNodeResponseVO.getHostIp(), serverNodeExtAttrs.getWebPort(), serverNodeResponseVO.getContextPath()); Result> result = restTemplate.getForObject(url.concat(DASHBOARD_CONSUMER_BUCKET), Result.class); List data = result.getData(); if (!CollectionUtils.isEmpty(data)) { serverNodeResponseVO.setConsumerBuckets(data.stream() - .sorted(Integer::compareTo) - .collect(Collectors.toCollection(LinkedHashSet::new))); + .sorted(Integer::compareTo) + .collect(Collectors.toCollection(LinkedHashSet::new))); } } catch (Exception e) { EasyRetryLog.LOCAL.error("Failed to retrieve consumer group for node [{}:{}].", serverNodeResponseVO.getHostIp(), serverNodeExtAttrs.getWebPort()); diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java index 1a639b66..0055cf39 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java @@ -122,7 +122,8 @@ public class JobServiceImpl implements JobService { queryWrapper.eq(Job::getId, jobId); } - queryWrapper.eq(Job::getDeleted, StatusEnum.NO.getStatus()); + queryWrapper.eq(Job::getDeleted, StatusEnum.NO.getStatus()) + .orderByAsc(Job::getId); // SQLServer 分页必须 ORDER BY PageDTO pageDTO = new PageDTO<>(1, 20); PageDTO selectPage = jobMapper.selectPage(pageDTO, queryWrapper); return JobResponseVOConverter.INSTANCE.toJobResponseVOs(selectPage.getRecords()); diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobTaskServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobTaskServiceImpl.java index 24fea326..dfff84f4 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobTaskServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobTaskServiceImpl.java @@ -41,6 +41,7 @@ public class JobTaskServiceImpl implements JobTaskService { queryWrapper.eq(JobTask::getTaskBatchId, queryVO.getTaskBatchId()); } + queryWrapper.orderByAsc(JobTask::getJobId); // SQLServer 分页必须 ORDER BY PageDTO selectPage = jobTaskMapper.selectPage(pageDTO, queryWrapper); List jobTaskResponseVOs = JobTaskResponseVOConverter.INSTANCE.toJobTaskResponseVOs( diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/WorkflowServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/WorkflowServiceImpl.java index a7859874..016a5dac 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/WorkflowServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/WorkflowServiceImpl.java @@ -336,7 +336,8 @@ public class WorkflowServiceImpl implements WorkflowService { queryWrapper.eq(Workflow::getId, workflowId); } - queryWrapper.eq(Workflow::getDeleted, StatusEnum.NO.getStatus()); + queryWrapper.eq(Workflow::getDeleted, StatusEnum.NO.getStatus()) + .orderByAsc(Workflow::getId); // SQLServer 分页必须 ORDER BY PageDTO pageDTO = new PageDTO<>(1, 20); PageDTO selectPage = workflowMapper.selectPage(pageDTO, queryWrapper); diff --git a/pom.xml b/pom.xml index 20614885..798c62f4 100644 --- a/pom.xml +++ b/pom.xml @@ -95,6 +95,11 @@ easy-retry-oracle-datasource ${revision} + + com.aizuda + easy-retry-sqlserver-datasource + ${revision} + cn.hutool hutool-http From 0e6eec2ec63fcfa7e4f1e90da59038248e061f80 Mon Sep 17 00:00:00 2001 From: xlsea Date: Mon, 25 Mar 2024 09:18:39 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=203.2.0.=20=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=96=B0=E5=A2=9EIP=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/Log/index.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/frontend/src/components/Log/index.vue b/frontend/src/components/Log/index.vue index 8dd92a29..d3abc862 100644 --- a/frontend/src/components/Log/index.vue +++ b/frontend/src/components/Log/index.vue @@ -15,6 +15,12 @@
{{ log.level.length === 4 ? log.level + ' ' : log.level }}
+
+ [ + {{ log.host }} + + ] +
[{{ log.thread }}]
{{ log.location }}
: