Merge remote-tracking branch 'origin/dev' into warm-flow-future
This commit is contained in:
commit
e9936334e5
@ -169,8 +169,8 @@ CCFlow 驰聘低代码-流程-表单 - https://gitee.com/opencc/RuoYi-JFlow <br>
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|
||||
|
||||
|
2
pom.xml
2
pom.xml
@ -31,7 +31,7 @@
|
||||
<redisson.version>3.39.0</redisson.version>
|
||||
<lock4j.version>2.2.7</lock4j.version>
|
||||
<dynamic-ds.version>4.3.1</dynamic-ds.version>
|
||||
<snailjob.version>1.2.0</snailjob.version>
|
||||
<snailjob.version>1.3.0-beta1</snailjob.version>
|
||||
<mapstruct-plus.version>1.4.5</mapstruct-plus.version>
|
||||
<mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version>
|
||||
<lombok.version>1.18.34</lombok.version>
|
||||
|
@ -16,17 +16,19 @@ snail-job:
|
||||
enabled: true
|
||||
# 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
|
||||
group: "ruoyi_group"
|
||||
# SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表
|
||||
# SnailJob 接入验证令牌 详见 script/sql/ry_job.sql `sj_group_config` 表
|
||||
token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT"
|
||||
server:
|
||||
host: 127.0.0.1
|
||||
port: 17888
|
||||
# 详见 script/sql/snail_job.sql `sj_namespace` 表
|
||||
# 命名空间UUID 详见 script/sql/ry_job.sql `sj_namespace`表`unique_id`字段
|
||||
namespace: ${spring.profiles.active}
|
||||
# 随主应用端口飘逸
|
||||
# 随主应用端口漂移
|
||||
port: 2${server.port}
|
||||
# 客户端ip指定
|
||||
host:
|
||||
# RPC类型: netty, grpc
|
||||
rpc-type: grpc
|
||||
|
||||
--- # 数据源配置
|
||||
spring:
|
||||
|
@ -19,17 +19,19 @@ snail-job:
|
||||
enabled: true
|
||||
# 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
|
||||
group: "ruoyi_group"
|
||||
# SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表
|
||||
# SnailJob 接入验证令牌 详见 script/sql/ry_job.sql `sj_group_config`表
|
||||
token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT"
|
||||
server:
|
||||
host: 127.0.0.1
|
||||
port: 17888
|
||||
# 详见 script/sql/snail_job.sql `sj_namespace` 表
|
||||
# 命名空间UUID 详见 script/sql/ry_job.sql `sj_namespace`表`unique_id`字段
|
||||
namespace: ${spring.profiles.active}
|
||||
# 随主应用端口飘逸
|
||||
# 随主应用端口漂移
|
||||
port: 2${server.port}
|
||||
# 客户端ip指定
|
||||
host:
|
||||
# RPC类型: netty, grpc
|
||||
rpc-type: grpc
|
||||
|
||||
--- # 数据源配置
|
||||
spring:
|
||||
|
@ -4,11 +4,13 @@ import jakarta.annotation.PreDestroy;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.concurrent.BasicThreadFactory;
|
||||
import org.dromara.common.core.config.properties.ThreadPoolProperties;
|
||||
import org.dromara.common.core.utils.SpringUtils;
|
||||
import org.dromara.common.core.utils.Threads;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.core.task.VirtualThreadTaskExecutor;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
@ -49,8 +51,15 @@ public class ThreadPoolConfig {
|
||||
*/
|
||||
@Bean(name = "scheduledExecutorService")
|
||||
protected ScheduledExecutorService scheduledExecutorService() {
|
||||
// daemon 必须为 true
|
||||
BasicThreadFactory.Builder builder = new BasicThreadFactory.Builder().daemon(true);
|
||||
if (SpringUtils.isVirtual()) {
|
||||
builder.namingPattern("virtual-schedule-pool-%d").wrappedFactory(new VirtualThreadTaskExecutor().getVirtualThreadFactory());
|
||||
} else {
|
||||
builder.namingPattern("schedule-pool-%d");
|
||||
}
|
||||
ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(core,
|
||||
new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build(),
|
||||
builder.build(),
|
||||
new ThreadPoolExecutor.CallerRunsPolicy()) {
|
||||
@Override
|
||||
protected void afterExecute(Runnable r, Throwable t) {
|
||||
|
@ -135,6 +135,27 @@ public class PlusDataPermissionHandler {
|
||||
context.setBeanResolver(beanResolver);
|
||||
DataPermissionHelper.getContext().forEach(context::setVariable);
|
||||
Set<String> conditions = new HashSet<>();
|
||||
// 优先设置变量
|
||||
List<String> keys = new ArrayList<>();
|
||||
Map<DataColumn, Boolean> ignoreMap = new HashMap<>();
|
||||
for (DataColumn dataColumn : dataPermission.value()) {
|
||||
if (dataColumn.key().length != dataColumn.value().length) {
|
||||
throw new ServiceException("角色数据范围异常 => key与value长度不匹配");
|
||||
}
|
||||
// 包含权限标识符 这直接跳过
|
||||
if (StringUtils.isNotBlank(dataColumn.permission()) &&
|
||||
CollUtil.contains(user.getMenuPermission(), dataColumn.permission())
|
||||
) {
|
||||
ignoreMap.put(dataColumn, Boolean.TRUE);
|
||||
continue;
|
||||
}
|
||||
// 设置注解变量 key 为表达式变量 value 为变量值
|
||||
for (int i = 0; i < dataColumn.key().length; i++) {
|
||||
context.setVariable(dataColumn.key()[i], dataColumn.value()[i]);
|
||||
}
|
||||
keys.addAll(Arrays.stream(dataColumn.key()).map(key -> "#" + key).toList());
|
||||
}
|
||||
|
||||
for (RoleDTO role : user.getRoles()) {
|
||||
user.setRoleId(role.getRoleId());
|
||||
// 获取角色权限泛型
|
||||
@ -144,34 +165,21 @@ public class PlusDataPermissionHandler {
|
||||
}
|
||||
// 全部数据权限直接返回
|
||||
if (type == DataScopeType.ALL) {
|
||||
return "";
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
boolean isSuccess = false;
|
||||
List<String> keys = new ArrayList<>();
|
||||
for (DataColumn dataColumn : dataPermission.value()) {
|
||||
if (dataColumn.key().length != dataColumn.value().length) {
|
||||
throw new ServiceException("角色数据范围异常 => key与value长度不匹配");
|
||||
}
|
||||
// 设置注解变量 key 为表达式变量 value 为变量值
|
||||
for (int i = 0; i < dataColumn.key().length; i++) {
|
||||
context.setVariable(dataColumn.key()[i], dataColumn.value()[i]);
|
||||
}
|
||||
keys.addAll(Arrays.stream(dataColumn.key()).map(key -> "#" + key).toList());
|
||||
}
|
||||
for (DataColumn dataColumn : dataPermission.value()) {
|
||||
// 不包含 key 变量 则不处理
|
||||
if (!StringUtils.containsAny(type.getSqlTemplate(), keys.toArray(String[]::new))) {
|
||||
continue;
|
||||
}
|
||||
// 包含权限标识符 这直接跳过
|
||||
if (StringUtils.isNotBlank(dataColumn.permission()) &&
|
||||
CollUtil.contains(user.getMenuPermission(), dataColumn.permission())
|
||||
) {
|
||||
if (ignoreMap.containsKey(dataColumn)) {
|
||||
// 修复多角色与权限标识符共用问题 https://gitee.com/dromara/RuoYi-Vue-Plus/issues/IB4CS4
|
||||
conditions.add(joinStr + " 1 = 1 ");
|
||||
isSuccess = true;
|
||||
continue;
|
||||
}
|
||||
// 不包含 key 变量 则不处理
|
||||
if (!StringUtils.containsAny(type.getSqlTemplate(), keys.toArray(String[]::new))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 忽略数据权限 防止spel表达式内有其他sql查询导致死循环调用
|
||||
String sql = DataPermissionHelper.ignore(() ->
|
||||
@ -191,7 +199,7 @@ public class PlusDataPermissionHandler {
|
||||
String sql = StreamUtils.join(conditions, Function.identity(), "");
|
||||
return sql.substring(joinStr.length());
|
||||
}
|
||||
return "";
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -59,10 +59,10 @@ public class SequenceUtils {
|
||||
stepValue = DEFAULT_STEP_VALUE;
|
||||
}
|
||||
RIdGenerator idGenerator = REDISSON_CLIENT.getIdGenerator(key);
|
||||
// 设置过期时间
|
||||
idGenerator.expire(expireTime);
|
||||
// 设置初始值和步长
|
||||
idGenerator.tryInit(initValue, stepValue);
|
||||
// 设置过期时间
|
||||
idGenerator.expire(expireTime);
|
||||
return idGenerator;
|
||||
}
|
||||
|
||||
|
@ -5,10 +5,12 @@ import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
|
||||
import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.constant.GlobalConstants;
|
||||
import org.dromara.common.core.utils.ServletUtils;
|
||||
import org.dromara.common.core.utils.SpringUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.reflect.ReflectUtils;
|
||||
@ -135,6 +137,7 @@ public class TenantHelper {
|
||||
}
|
||||
String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
|
||||
RedisUtils.setCacheObject(cacheKey, tenantId);
|
||||
ServletUtils.getRequest().setAttribute(cacheKey, tenantId);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -154,8 +157,15 @@ public class TenantHelper {
|
||||
if (StringUtils.isNotBlank(tenantId)) {
|
||||
return tenantId;
|
||||
}
|
||||
HttpServletRequest request = ServletUtils.getRequest();
|
||||
String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
|
||||
tenantId = (String) request.getAttribute(cacheKey);
|
||||
// 如果为 -1 说明已经查过redis并且不存在值 则直接返回null
|
||||
if (StringUtils.isNotBlank(tenantId)) {
|
||||
return tenantId.equals("-1") ? null : tenantId;
|
||||
}
|
||||
tenantId = RedisUtils.getCacheObject(cacheKey);
|
||||
request.setAttribute(cacheKey, StringUtils.isBlank(tenantId) ? "-1" : tenantId);
|
||||
return tenantId;
|
||||
}
|
||||
|
||||
@ -173,6 +183,7 @@ public class TenantHelper {
|
||||
TEMP_DYNAMIC_TENANT.remove();
|
||||
String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
|
||||
RedisUtils.deleteObject(cacheKey);
|
||||
ServletUtils.getRequest().removeAttribute(cacheKey);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -20,8 +20,8 @@ snail-job:
|
||||
retry-pull-page-size: 1000
|
||||
# 拉取重试数据的每批次的大小
|
||||
job-pull-page-size: 1000
|
||||
# 服务端netty端口
|
||||
netty-port: 17888
|
||||
# 服务器端口
|
||||
server-port: 17888
|
||||
# 一个客户端每秒最多接收的重试数量指令
|
||||
limiter: 1000
|
||||
# 号段模式下步长配置
|
||||
@ -34,7 +34,10 @@ snail-job:
|
||||
max-count: 288
|
||||
#间隔时间
|
||||
trigger-interval: 900
|
||||
# 重试每次拉取的次数
|
||||
retry-max-pull-count: 10
|
||||
# RPC通讯类型: netty,grpc
|
||||
rpc-type: grpc
|
||||
|
||||
--- # 监控中心配置
|
||||
spring.boot.admin.client:
|
||||
|
@ -20,8 +20,8 @@ snail-job:
|
||||
retry-pull-page-size: 1000
|
||||
# 拉取重试数据的每批次的大小
|
||||
job-pull-page-size: 1000
|
||||
# 服务端 netty 端口
|
||||
netty-port: 17888
|
||||
# 服务器端口
|
||||
server-port: 17888
|
||||
# 一个客户端每秒最多接收的重试数量指令
|
||||
limiter: 1000
|
||||
# 号段模式下步长配置
|
||||
@ -34,7 +34,10 @@ snail-job:
|
||||
max-count: 288
|
||||
#间隔时间
|
||||
trigger-interval: 900
|
||||
# 重试每次拉取的次数
|
||||
retry-max-pull-count: 10
|
||||
# RPC通讯类型: netty,grpc
|
||||
rpc-type: grpc
|
||||
|
||||
--- # 监控中心配置
|
||||
spring.boot.admin.client:
|
||||
|
@ -162,7 +162,8 @@ public class GenTableServiceImpl implements IGenTableService {
|
||||
GenTable gen = new GenTable();
|
||||
gen.setTableName(x.getName());
|
||||
gen.setTableComment(x.getComment());
|
||||
gen.setCreateTime(x.getCreateTime());
|
||||
// postgresql的表元数据没有创建时间这个东西(好奇葩) 只能new Date代替
|
||||
gen.setCreateTime(ObjectUtil.defaultIfNull(x.getCreateTime(), new Date()));
|
||||
gen.setUpdateTime(x.getUpdateTime());
|
||||
return gen;
|
||||
}).sorted(Comparator.comparing(GenTable::getCreateTime).reversed())
|
||||
|
@ -31,6 +31,7 @@ import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.cache.annotation.Caching;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@ -301,6 +302,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
||||
@CacheEvict(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, allEntries = true)
|
||||
})
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int updateDept(SysDeptBo bo) {
|
||||
SysDept dept = MapstructUtils.convert(bo, SysDept.class);
|
||||
SysDept oldDept = baseMapper.selectById(dept.getDeptId());
|
||||
|
@ -242,11 +242,14 @@ public class SysMenuServiceImpl implements ISysMenuService {
|
||||
if (CollUtil.isEmpty(menus)) {
|
||||
return CollUtil.newArrayList();
|
||||
}
|
||||
return TreeBuildUtils.build(menus, (menu, tree) ->
|
||||
tree.setId(menu.getMenuId())
|
||||
return TreeBuildUtils.build(menus, (menu, tree) -> {
|
||||
Tree<Long> menuTree = tree.setId(menu.getMenuId())
|
||||
.setParentId(menu.getParentId())
|
||||
.setName(menu.getMenuName())
|
||||
.setWeight(menu.getOrderNum()));
|
||||
.setWeight(menu.getOrderNum());
|
||||
menuTree.put("menuType", menu.getMenuType());
|
||||
menuTree.put("icon", menu.getIcon());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,7 +2,7 @@
|
||||
SnailJob Database Transfer Tool
|
||||
Source Server Type : MySQL
|
||||
Target Server Type : Oracle
|
||||
Date: 2024-07-06 12:49:36
|
||||
Date: 2024-12-27 22:22:15
|
||||
*/
|
||||
|
||||
|
||||
@ -82,7 +82,7 @@ CREATE TABLE sj_notify_config
|
||||
id number GENERATED ALWAYS AS IDENTITY,
|
||||
namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
|
||||
group_name varchar2(64) NULL,
|
||||
business_id varchar2(64) NULL,
|
||||
notify_name varchar2(64) DEFAULT '' NULL,
|
||||
system_task_type smallint DEFAULT 3 NOT NULL,
|
||||
notify_status smallint DEFAULT 0 NOT NULL,
|
||||
recipient_ids varchar2(128) NULL,
|
||||
@ -98,12 +98,12 @@ CREATE TABLE sj_notify_config
|
||||
ALTER TABLE sj_notify_config
|
||||
ADD CONSTRAINT pk_sj_notify_config PRIMARY KEY (id);
|
||||
|
||||
CREATE INDEX idx_sj_notify_config_01 ON sj_notify_config (namespace_id, group_name, business_id);
|
||||
CREATE INDEX idx_sj_notify_config_01 ON sj_notify_config (namespace_id, group_name);
|
||||
|
||||
COMMENT ON COLUMN sj_notify_config.id IS '主键';
|
||||
COMMENT ON COLUMN sj_notify_config.namespace_id IS '命名空间id';
|
||||
COMMENT ON COLUMN sj_notify_config.group_name IS '组名称';
|
||||
COMMENT ON COLUMN sj_notify_config.business_id IS '业务id ( job_id或workflow_id或scene_name ) ';
|
||||
COMMENT ON COLUMN sj_notify_config.notify_name IS '通知名称';
|
||||
COMMENT ON COLUMN sj_notify_config.system_task_type IS '任务类型 1. 重试任务 2. 重试回调 3、JOB任务 4、WORKFLOW任务';
|
||||
COMMENT ON COLUMN sj_notify_config.notify_status IS '通知状态 0、未启用 1、启用';
|
||||
COMMENT ON COLUMN sj_notify_config.recipient_ids IS '接收人id列表';
|
||||
@ -321,6 +321,7 @@ CREATE TABLE sj_retry_scene_config
|
||||
max_retry_count number DEFAULT 5 NOT NULL,
|
||||
back_off smallint DEFAULT 1 NOT NULL,
|
||||
trigger_interval varchar2(16) DEFAULT '' NULL,
|
||||
notify_ids varchar2(128) DEFAULT '' NULL,
|
||||
deadline_request number DEFAULT 60000 NOT NULL,
|
||||
executor_timeout number DEFAULT 5 NOT NULL,
|
||||
route_key smallint DEFAULT 4 NOT NULL,
|
||||
@ -342,6 +343,7 @@ COMMENT ON COLUMN sj_retry_scene_config.scene_status IS '组状态 0、未启用
|
||||
COMMENT ON COLUMN sj_retry_scene_config.max_retry_count IS '最大重试次数';
|
||||
COMMENT ON COLUMN sj_retry_scene_config.back_off IS '1、默认等级 2、固定间隔时间 3、CRON 表达式';
|
||||
COMMENT ON COLUMN sj_retry_scene_config.trigger_interval IS '间隔时长';
|
||||
COMMENT ON COLUMN sj_retry_scene_config.notify_ids IS '通知告警场景配置id列表';
|
||||
COMMENT ON COLUMN sj_retry_scene_config.deadline_request IS 'Deadline Request 调用链超时 单位毫秒';
|
||||
COMMENT ON COLUMN sj_retry_scene_config.executor_timeout IS '任务执行超时时间,单位秒';
|
||||
COMMENT ON COLUMN sj_retry_scene_config.route_key IS '路由策略';
|
||||
@ -506,6 +508,8 @@ CREATE TABLE sj_job
|
||||
retry_interval number DEFAULT 0 NOT NULL,
|
||||
bucket_index number DEFAULT 0 NOT NULL,
|
||||
resident smallint DEFAULT 0 NOT NULL,
|
||||
notify_ids varchar2(128) DEFAULT '' NULL,
|
||||
owner_id number NULL,
|
||||
description varchar2(256) DEFAULT '' NULL,
|
||||
ext_attrs varchar2(256) DEFAULT '' NULL,
|
||||
deleted smallint DEFAULT 0 NOT NULL,
|
||||
@ -541,6 +545,8 @@ COMMENT ON COLUMN sj_job.parallel_num IS '并行数';
|
||||
COMMENT ON COLUMN sj_job.retry_interval IS '重试间隔 ( s ) ';
|
||||
COMMENT ON COLUMN sj_job.bucket_index IS 'bucket';
|
||||
COMMENT ON COLUMN sj_job.resident IS '是否是常驻任务';
|
||||
COMMENT ON COLUMN sj_job.notify_ids IS '通知告警场景配置id列表';
|
||||
COMMENT ON COLUMN sj_job.owner_id IS '负责人id';
|
||||
COMMENT ON COLUMN sj_job.description IS '描述';
|
||||
COMMENT ON COLUMN sj_job.ext_attrs IS '扩展字段';
|
||||
COMMENT ON COLUMN sj_job.deleted IS '逻辑删除 1、删除';
|
||||
@ -548,7 +554,7 @@ COMMENT ON COLUMN sj_job.create_dt IS '创建时间';
|
||||
COMMENT ON COLUMN sj_job.update_dt IS '修改时间';
|
||||
COMMENT ON TABLE sj_job IS '任务信息';
|
||||
|
||||
INSERT INTO sj_job(namespace_id, group_name, job_name, args_str, args_type, next_trigger_at, job_status, task_type, route_key, executor_type, executor_info, trigger_type, trigger_interval, block_strategy,executor_timeout, max_retry_times, parallel_num, retry_interval, bucket_index, resident, description, ext_attrs, deleted, create_dt, update_dt) VALUES ('dev', 'ruoyi_group', 'demo-job', NULL, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', '', 0, sysdate, sysdate);
|
||||
INSERT INTO sj_job(namespace_id, group_name, job_name, args_str, args_type, next_trigger_at, job_status, task_type, route_key, executor_type, executor_info, trigger_type, trigger_interval, block_strategy,executor_timeout, max_retry_times, parallel_num, retry_interval, bucket_index, resident, notify_ids, owner_id, description, ext_attrs, deleted, create_dt, update_dt) VALUES ('dev', 'ruoyi_group', 'demo-job', NULL, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', 1,'', '', 0, sysdate, sysdate);
|
||||
|
||||
-- sj_job_log_message
|
||||
CREATE TABLE sj_job_log_message
|
||||
@ -781,6 +787,7 @@ CREATE TABLE sj_workflow
|
||||
description varchar2(256) DEFAULT '' NULL,
|
||||
flow_info clob DEFAULT NULL NULL,
|
||||
wf_context clob DEFAULT NULL NULL,
|
||||
notify_ids varchar2(128) DEFAULT '' NULL,
|
||||
bucket_index number DEFAULT 0 NOT NULL,
|
||||
version number NOT NULL,
|
||||
ext_attrs varchar2(256) DEFAULT '' NULL,
|
||||
@ -808,6 +815,7 @@ COMMENT ON COLUMN sj_workflow.executor_timeout IS '任务执行超时时间,
|
||||
COMMENT ON COLUMN sj_workflow.description IS '描述';
|
||||
COMMENT ON COLUMN sj_workflow.flow_info IS '流程信息';
|
||||
COMMENT ON COLUMN sj_workflow.wf_context IS '上下文';
|
||||
COMMENT ON COLUMN sj_workflow.notify_ids IS '通知告警场景配置id列表';
|
||||
COMMENT ON COLUMN sj_workflow.bucket_index IS 'bucket';
|
||||
COMMENT ON COLUMN sj_workflow.version IS '版本号';
|
||||
COMMENT ON COLUMN sj_workflow.ext_attrs IS '扩展字段';
|
||||
|
@ -2,7 +2,7 @@
|
||||
SnailJob Database Transfer Tool
|
||||
Source Server Type : MySQL
|
||||
Target Server Type : PostgreSQL
|
||||
Date: 2024-07-06 11:45:40
|
||||
Date: 2024-12-27 22:13:49
|
||||
*/
|
||||
|
||||
|
||||
@ -76,7 +76,7 @@ CREATE TABLE sj_notify_config
|
||||
id bigserial PRIMARY KEY,
|
||||
namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
|
||||
group_name varchar(64) NOT NULL,
|
||||
business_id varchar(64) NOT NULL,
|
||||
notify_name varchar(64) NOT NULL DEFAULT '',
|
||||
system_task_type smallint NOT NULL DEFAULT 3,
|
||||
notify_status smallint NOT NULL DEFAULT 0,
|
||||
recipient_ids varchar(128) NOT NULL,
|
||||
@ -89,12 +89,12 @@ CREATE TABLE sj_notify_config
|
||||
update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX idx_sj_notify_config_01 ON sj_notify_config (namespace_id, group_name, business_id);
|
||||
CREATE INDEX idx_sj_notify_config_01 ON sj_notify_config (namespace_id, group_name);
|
||||
|
||||
COMMENT ON COLUMN sj_notify_config.id IS '主键';
|
||||
COMMENT ON COLUMN sj_notify_config.namespace_id IS '命名空间id';
|
||||
COMMENT ON COLUMN sj_notify_config.group_name IS '组名称';
|
||||
COMMENT ON COLUMN sj_notify_config.business_id IS '业务id ( job_id或workflow_id或scene_name ) ';
|
||||
COMMENT ON COLUMN sj_notify_config.notify_name IS '通知名称';
|
||||
COMMENT ON COLUMN sj_notify_config.system_task_type IS '任务类型 1. 重试任务 2. 重试回调 3、JOB任务 4、WORKFLOW任务';
|
||||
COMMENT ON COLUMN sj_notify_config.notify_status IS '通知状态 0、未启用 1、启用';
|
||||
COMMENT ON COLUMN sj_notify_config.recipient_ids IS '接收人id列表';
|
||||
@ -297,6 +297,7 @@ CREATE TABLE sj_retry_scene_config
|
||||
max_retry_count int NOT NULL DEFAULT 5,
|
||||
back_off smallint NOT NULL DEFAULT 1,
|
||||
trigger_interval varchar(16) NOT NULL DEFAULT '',
|
||||
notify_ids varchar(128) NOT NULL DEFAULT '',
|
||||
deadline_request bigint NOT NULL DEFAULT 60000,
|
||||
executor_timeout int NOT NULL DEFAULT 5,
|
||||
route_key smallint NOT NULL DEFAULT 4,
|
||||
@ -315,6 +316,7 @@ COMMENT ON COLUMN sj_retry_scene_config.scene_status IS '组状态 0、未启用
|
||||
COMMENT ON COLUMN sj_retry_scene_config.max_retry_count IS '最大重试次数';
|
||||
COMMENT ON COLUMN sj_retry_scene_config.back_off IS '1、默认等级 2、固定间隔时间 3、CRON 表达式';
|
||||
COMMENT ON COLUMN sj_retry_scene_config.trigger_interval IS '间隔时长';
|
||||
COMMENT ON COLUMN sj_retry_scene_config.notify_ids IS '通知告警场景配置id列表';
|
||||
COMMENT ON COLUMN sj_retry_scene_config.deadline_request IS 'Deadline Request 调用链超时 单位毫秒';
|
||||
COMMENT ON COLUMN sj_retry_scene_config.executor_timeout IS '任务执行超时时间,单位秒';
|
||||
COMMENT ON COLUMN sj_retry_scene_config.route_key IS '路由策略';
|
||||
@ -464,6 +466,8 @@ CREATE TABLE sj_job
|
||||
retry_interval int NOT NULL DEFAULT 0,
|
||||
bucket_index int NOT NULL DEFAULT 0,
|
||||
resident smallint NOT NULL DEFAULT 0,
|
||||
notify_ids varchar(128) NOT NULL DEFAULT '',
|
||||
owner_id bigint NULL,
|
||||
description varchar(256) NOT NULL DEFAULT '',
|
||||
ext_attrs varchar(256) NULL DEFAULT '',
|
||||
deleted smallint NOT NULL DEFAULT 0,
|
||||
@ -496,6 +500,8 @@ COMMENT ON COLUMN sj_job.parallel_num IS '并行数';
|
||||
COMMENT ON COLUMN sj_job.retry_interval IS '重试间隔 ( s ) ';
|
||||
COMMENT ON COLUMN sj_job.bucket_index IS 'bucket';
|
||||
COMMENT ON COLUMN sj_job.resident IS '是否是常驻任务';
|
||||
COMMENT ON COLUMN sj_job.notify_ids IS '通知告警场景配置id列表';
|
||||
COMMENT ON COLUMN sj_job.owner_id IS '负责人id';
|
||||
COMMENT ON COLUMN sj_job.description IS '描述';
|
||||
COMMENT ON COLUMN sj_job.ext_attrs IS '扩展字段';
|
||||
COMMENT ON COLUMN sj_job.deleted IS '逻辑删除 1、删除';
|
||||
@ -503,7 +509,7 @@ COMMENT ON COLUMN sj_job.create_dt IS '创建时间';
|
||||
COMMENT ON COLUMN sj_job.update_dt IS '修改时间';
|
||||
COMMENT ON TABLE sj_job IS '任务信息';
|
||||
|
||||
INSERT INTO sj_job VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', '', 0, now(), now());
|
||||
INSERT INTO sj_job VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', 1, '', '', 0, now(), now());
|
||||
|
||||
-- sj_job_log_message
|
||||
CREATE TABLE sj_job_log_message
|
||||
@ -721,6 +727,7 @@ CREATE TABLE sj_workflow
|
||||
description varchar(256) NOT NULL DEFAULT '',
|
||||
flow_info text NULL DEFAULT NULL,
|
||||
wf_context text NULL DEFAULT NULL,
|
||||
notify_ids varchar(128) NOT NULL DEFAULT '',
|
||||
bucket_index int NOT NULL DEFAULT 0,
|
||||
version int NOT NULL,
|
||||
ext_attrs varchar(256) NULL DEFAULT '',
|
||||
@ -745,6 +752,7 @@ COMMENT ON COLUMN sj_workflow.executor_timeout IS '任务执行超时时间,
|
||||
COMMENT ON COLUMN sj_workflow.description IS '描述';
|
||||
COMMENT ON COLUMN sj_workflow.flow_info IS '流程信息';
|
||||
COMMENT ON COLUMN sj_workflow.wf_context IS '上下文';
|
||||
COMMENT ON COLUMN sj_workflow.notify_ids IS '通知告警场景配置id列表';
|
||||
COMMENT ON COLUMN sj_workflow.bucket_index IS 'bucket';
|
||||
COMMENT ON COLUMN sj_workflow.version IS '版本号';
|
||||
COMMENT ON COLUMN sj_workflow.ext_attrs IS '扩展字段';
|
||||
|
@ -47,7 +47,7 @@ CREATE TABLE `sj_notify_config`
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
|
||||
`group_name` varchar(64) NOT NULL COMMENT '组名称',
|
||||
`business_id` varchar(64) NOT NULL COMMENT '业务id (job_id或workflow_id或scene_name)',
|
||||
`notify_name` varchar(64) NOT NULL DEFAULT '' COMMENT '通知名称',
|
||||
`system_task_type` tinyint(4) NOT NULL DEFAULT 3 COMMENT '任务类型 1. 重试任务 2. 重试回调 3、JOB任务 4、WORKFLOW任务',
|
||||
`notify_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '通知状态 0、未启用 1、启用',
|
||||
`recipient_ids` varchar(128) NOT NULL COMMENT '接收人id列表',
|
||||
@ -59,7 +59,7 @@ CREATE TABLE `sj_notify_config`
|
||||
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `business_id`)
|
||||
KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`)
|
||||
) ENGINE = InnoDB
|
||||
AUTO_INCREMENT = 0
|
||||
DEFAULT CHARSET = utf8mb4 COMMENT ='通知配置';
|
||||
@ -188,6 +188,7 @@ CREATE TABLE `sj_retry_scene_config`
|
||||
`max_retry_count` int(11) NOT NULL DEFAULT 5 COMMENT '最大重试次数',
|
||||
`back_off` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式',
|
||||
`trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '间隔时长',
|
||||
`notify_ids` varchar(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表',
|
||||
`deadline_request` bigint(20) unsigned NOT NULL DEFAULT 60000 COMMENT 'Deadline Request 调用链超时 单位毫秒',
|
||||
`executor_timeout` int(11) unsigned NOT NULL DEFAULT 5 COMMENT '任务执行超时时间,单位秒',
|
||||
`route_key` tinyint(4) NOT NULL DEFAULT 4 COMMENT '路由策略',
|
||||
@ -300,6 +301,8 @@ CREATE TABLE `sj_job`
|
||||
`retry_interval` int(11) NOT NULL DEFAULT 0 COMMENT '重试间隔(s)',
|
||||
`bucket_index` int(11) NOT NULL DEFAULT 0 COMMENT 'bucket',
|
||||
`resident` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否是常驻任务',
|
||||
`notify_ids` varchar(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表',
|
||||
`owner_id` bigint(20) NULL COMMENT '负责人id',
|
||||
`description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述',
|
||||
`ext_attrs` varchar(256) NULL DEFAULT '' COMMENT '扩展字段',
|
||||
`deleted` tinyint(4) NOT NULL DEFAULT 0 COMMENT '逻辑删除 1、删除',
|
||||
@ -313,7 +316,7 @@ CREATE TABLE `sj_job`
|
||||
AUTO_INCREMENT = 0
|
||||
DEFAULT CHARSET = utf8mb4 COMMENT ='任务信息';
|
||||
|
||||
INSERT INTO `sj_job` VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', '', 0 , now(), now());
|
||||
INSERT INTO `sj_job` VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', 1, '', '', 0 , now(), now());
|
||||
|
||||
CREATE TABLE `sj_job_log_message`
|
||||
(
|
||||
@ -451,6 +454,7 @@ CREATE TABLE `sj_workflow`
|
||||
`description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述',
|
||||
`flow_info` text DEFAULT NULL COMMENT '流程信息',
|
||||
`wf_context` text DEFAULT NULL COMMENT '上下文',
|
||||
`notify_ids` varchar(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表',
|
||||
`bucket_index` int(11) NOT NULL DEFAULT 0 COMMENT 'bucket',
|
||||
`version` int(11) NOT NULL COMMENT '版本号',
|
||||
`ext_attrs` varchar(256) NULL DEFAULT '' COMMENT '扩展字段',
|
||||
|
@ -2,7 +2,7 @@
|
||||
SnailJob Database Transfer Tool
|
||||
Source Server Type : MySQL
|
||||
Target Server Type : Microsoft SQL Server
|
||||
Date: 2024-07-06 12:55:47
|
||||
Date: 2024-12-27 22:24:37
|
||||
*/
|
||||
|
||||
|
||||
@ -212,7 +212,7 @@ CREATE TABLE sj_notify_config
|
||||
id bigint NOT NULL PRIMARY KEY IDENTITY,
|
||||
namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
|
||||
group_name nvarchar(64) NOT NULL,
|
||||
business_id nvarchar(64) NOT NULL,
|
||||
notify_name nvarchar(64) NOT NULL DEFAULT '',
|
||||
system_task_type tinyint NOT NULL DEFAULT 3,
|
||||
notify_status tinyint NOT NULL DEFAULT 0,
|
||||
recipient_ids nvarchar(128) NOT NULL,
|
||||
@ -226,7 +226,7 @@ CREATE TABLE sj_notify_config
|
||||
)
|
||||
GO
|
||||
|
||||
CREATE INDEX idx_sj_notify_config_01 ON sj_notify_config (namespace_id, group_name, business_id)
|
||||
CREATE INDEX idx_sj_notify_config_01 ON sj_notify_config (namespace_id, group_name)
|
||||
GO
|
||||
|
||||
EXEC sp_addextendedproperty
|
||||
@ -251,10 +251,10 @@ EXEC sp_addextendedproperty
|
||||
GO
|
||||
|
||||
EXEC sp_addextendedproperty
|
||||
'MS_Description', N'业务id ( job_id或workflow_id或scene_name ) ',
|
||||
'MS_Description', N'通知名称',
|
||||
'SCHEMA', N'dbo',
|
||||
'TABLE', N'sj_notify_config',
|
||||
'COLUMN', N'business_id'
|
||||
'COLUMN', N'notify_name'
|
||||
GO
|
||||
|
||||
EXEC sp_addextendedproperty
|
||||
@ -917,6 +917,7 @@ CREATE TABLE sj_retry_scene_config
|
||||
max_retry_count int NOT NULL DEFAULT 5,
|
||||
back_off tinyint NOT NULL DEFAULT 1,
|
||||
trigger_interval nvarchar(16) NOT NULL DEFAULT '',
|
||||
notify_ids nvarchar(128) NOT NULL DEFAULT '',
|
||||
deadline_request bigint NOT NULL DEFAULT 60000,
|
||||
executor_timeout int NOT NULL DEFAULT 5,
|
||||
route_key tinyint NOT NULL DEFAULT 4,
|
||||
@ -985,6 +986,13 @@ EXEC sp_addextendedproperty
|
||||
'COLUMN', N'trigger_interval'
|
||||
GO
|
||||
|
||||
EXEC sp_addextendedproperty
|
||||
'MS_Description', N'通知告警场景配置id列表',
|
||||
'SCHEMA', N'dbo',
|
||||
'TABLE', N'sj_retry_scene_config',
|
||||
'COLUMN', N'notify_ids'
|
||||
GO
|
||||
|
||||
EXEC sp_addextendedproperty
|
||||
'MS_Description', N'Deadline Request 调用链超时 单位毫秒',
|
||||
'SCHEMA', N'dbo',
|
||||
@ -1415,6 +1423,8 @@ CREATE TABLE sj_job
|
||||
retry_interval int NOT NULL DEFAULT 0,
|
||||
bucket_index int NOT NULL DEFAULT 0,
|
||||
resident tinyint NOT NULL DEFAULT 0,
|
||||
notify_ids nvarchar(128) NOT NULL DEFAULT '',
|
||||
owner_id bigint NULL,
|
||||
description nvarchar(256) NOT NULL DEFAULT '',
|
||||
ext_attrs nvarchar(256) NULL DEFAULT '',
|
||||
deleted tinyint NOT NULL DEFAULT 0,
|
||||
@ -1577,6 +1587,20 @@ EXEC sp_addextendedproperty
|
||||
'COLUMN', N'resident'
|
||||
GO
|
||||
|
||||
EXEC sp_addextendedproperty
|
||||
'MS_Description', N'通知告警场景配置id列表',
|
||||
'SCHEMA', N'dbo',
|
||||
'TABLE', N'sj_job',
|
||||
'COLUMN', N'notify_ids'
|
||||
GO
|
||||
|
||||
EXEC sp_addextendedproperty
|
||||
'MS_Description', N'负责人id',
|
||||
'SCHEMA', N'dbo',
|
||||
'TABLE', N'sj_job',
|
||||
'COLUMN', N'owner_id'
|
||||
GO
|
||||
|
||||
EXEC sp_addextendedproperty
|
||||
'MS_Description', N'描述',
|
||||
'SCHEMA', N'dbo',
|
||||
@ -1618,7 +1642,7 @@ EXEC sp_addextendedproperty
|
||||
'TABLE', N'sj_job'
|
||||
GO
|
||||
|
||||
INSERT INTO sj_job (namespace_id, group_name, job_name, args_str, args_type, next_trigger_at, job_status, task_type, route_key, executor_type, executor_info, trigger_type, trigger_interval, block_strategy,executor_timeout, max_retry_times, parallel_num, retry_interval, bucket_index, resident, description, ext_attrs, deleted, create_dt, update_dt) VALUES (N'dev', N'ruoyi_group', N'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, N'testJobExecutor', 2, N'60', 1, 60, 3, 1, 1, 116, 0, N'', N'', 0, getdate(), getdate())
|
||||
INSERT INTO sj_job (namespace_id, group_name, job_name, args_str, args_type, next_trigger_at, job_status, task_type, route_key, executor_type, executor_info, trigger_type, trigger_interval, block_strategy,executor_timeout, max_retry_times, parallel_num, retry_interval, bucket_index, resident, notify_ids, owner_id, description, ext_attrs, deleted, create_dt, update_dt) VALUES (N'dev', N'ruoyi_group', N'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, N'testJobExecutor', 2, N'60', 1, 60, 3, 1, 1, 116, 0, N'', 1, N'', N'', 0, getdate(), getdate())
|
||||
GO
|
||||
|
||||
-- sj_job_log_message
|
||||
@ -2308,6 +2332,7 @@ CREATE TABLE sj_workflow
|
||||
description nvarchar(256) NOT NULL DEFAULT '',
|
||||
flow_info nvarchar(max) NULL DEFAULT NULL,
|
||||
wf_context nvarchar(max) NULL DEFAULT NULL,
|
||||
notify_ids nvarchar(128) NOT NULL DEFAULT '',
|
||||
bucket_index int NOT NULL DEFAULT 0,
|
||||
version int NOT NULL,
|
||||
ext_attrs nvarchar(256) NULL DEFAULT '',
|
||||
@ -2413,6 +2438,13 @@ EXEC sp_addextendedproperty
|
||||
'COLUMN', N'wf_context'
|
||||
GO
|
||||
|
||||
EXEC sp_addextendedproperty
|
||||
'MS_Description', N'通知告警场景配置id列表',
|
||||
'SCHEMA', N'dbo',
|
||||
'TABLE', N'sj_workflow',
|
||||
'COLUMN', N'notify_ids'
|
||||
GO
|
||||
|
||||
EXEC sp_addextendedproperty
|
||||
'MS_Description', N'bucket',
|
||||
'SCHEMA', N'dbo',
|
||||
@ -2744,4 +2776,3 @@ EXEC sp_addextendedproperty
|
||||
'SCHEMA', N'dbo',
|
||||
'TABLE', N'sj_workflow_task_batch'
|
||||
GO
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user