!661 发布 5.3.1-BETA2 公测版本

Merge pull request !661 from 疯狂的狮子Li/dev
This commit is contained in:
疯狂的狮子Li 2025-03-21 07:25:25 +00:00 committed by Gitee
commit 159e30c982
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
45 changed files with 799 additions and 755 deletions

View File

@ -2,7 +2,7 @@
<configuration default="false" name="ruoyi-monitor-admin" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-monitor-admin:5.3.1-BETA" />
<option name="imageTag" value="ruoyi/ruoyi-monitor-admin:5.3.1-BETA2" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-extend/ruoyi-monitor-admin/Dockerfile" />
</settings>

View File

@ -2,7 +2,7 @@
<configuration default="false" name="ruoyi-server" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-server:5.3.1-BETA" />
<option name="imageTag" value="ruoyi/ruoyi-server:5.3.1-BETA2" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-admin/Dockerfile" />
</settings>

View File

@ -2,7 +2,7 @@
<configuration default="false" name="ruoyi-snailjob-server" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-snailjob-server:5.3.1-BETA" />
<option name="imageTag" value="ruoyi/ruoyi-snailjob-server:5.3.1-BETA2" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-extend/ruoyi-snailjob-server/Dockerfile" />
</settings>

View File

@ -10,7 +10,7 @@
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://gitee.com/dromara/RuoYi-Vue-Plus/blob/master/LICENSE)
[![使用IntelliJ IDEA开发维护](https://img.shields.io/badge/IntelliJ%20IDEA-提供支持-blue.svg)](https://www.jetbrains.com/?from=RuoYi-Vue-Plus)
<br>
[![RuoYi-Vue-Plus](https://img.shields.io/badge/RuoYi_Vue_Plus-5.3.0--BETA-success.svg)](https://gitee.com/dromara/RuoYi-Vue-Plus)
[![RuoYi-Vue-Plus](https://img.shields.io/badge/RuoYi_Vue_Plus-5.3.0--BETA2-success.svg)](https://gitee.com/dromara/RuoYi-Vue-Plus)
[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.4-blue.svg)]()
[![JDK-17](https://img.shields.io/badge/JDK-17-green.svg)]()
[![JDK-21](https://img.shields.io/badge/JDK-21-green.svg)]()

16
pom.xml
View File

@ -13,8 +13,8 @@
<description>Dromara RuoYi-Vue-Plus多租户管理系统</description>
<properties>
<revision>5.3.1-BETA</revision>
<spring-boot.version>3.4.3</spring-boot.version>
<revision>5.3.1-BETA2</revision>
<spring-boot.version>3.4.4</spring-boot.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version>
@ -27,11 +27,11 @@
<mybatis-plus.version>3.5.10.1</mybatis-plus.version>
<p6spy.version>3.9.1</p6spy.version>
<hutool.version>5.8.35</hutool.version>
<spring-boot-admin.version>3.4.2</spring-boot-admin.version>
<redisson.version>3.44.0</redisson.version>
<spring-boot-admin.version>3.4.5</spring-boot-admin.version>
<redisson.version>3.45.1</redisson.version>
<lock4j.version>2.2.7</lock4j.version>
<dynamic-ds.version>4.3.1</dynamic-ds.version>
<snailjob.version>1.3.0</snailjob.version>
<snailjob.version>1.4.0-beta2</snailjob.version>
<mapstruct-plus.version>1.4.6</mapstruct-plus.version>
<mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version>
<lombok.version>1.18.36</lombok.version>
@ -43,13 +43,13 @@
<!-- OSS 配置 -->
<aws.sdk.version>2.28.22</aws.sdk.version>
<!-- SMS 配置 -->
<sms4j.version>3.3.3</sms4j.version>
<sms4j.version>3.3.4</sms4j.version>
<!-- 限制框架中的fastjson版本 -->
<fastjson.version>1.2.83</fastjson.version>
<!-- 面向运行时的D-ORM依赖 -->
<anyline.version>8.7.2-20250101</anyline.version>
<!--工作流配置-->
<warm-flow.version>1.6.7</warm-flow.version>
<warm-flow.version>1.6.8</warm-flow.version>
<!-- 插件版本 -->
<maven-jar-plugin.version>3.2.2</maven-jar-plugin.version>
@ -57,6 +57,8 @@
<maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
<maven-surefire-plugin.version>3.1.2</maven-surefire-plugin.version>
<flatten-maven-plugin.version>1.3.0</flatten-maven-plugin.version>
<!-- 打包默认跳过测试 -->
<skipTests>true</skipTests>
</properties>
<profiles>

View File

@ -14,7 +14,7 @@
</description>
<properties>
<revision>5.3.1-BETA</revision>
<revision>5.3.1-BETA2</revision>
</properties>
<dependencyManagement>

View File

@ -35,6 +35,7 @@ import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.util.ClassUtils;
import java.lang.reflect.Method;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
@ -229,10 +230,7 @@ public class PlusDataPermissionHandler {
// 获取资源对应的类对象
Class<?> clazz = Resources.classForName(classMetadata.getClassName());
// 查找类中的特定注解
if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) {
DataPermission dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class);
dataPermissionCacheMap.put(clazz.getName(), dataPermission);
}
findAnnotation(clazz);
}
}
} catch (Exception e) {
@ -240,6 +238,29 @@ public class PlusDataPermissionHandler {
}
}
/**
* 在指定的类中查找特定的注解 DataPermission并将带有这个注解的方法或类存储到 dataPermissionCacheMap
*
* @param clazz 要查找的类
*/
private void findAnnotation(Class<?> clazz) {
DataPermission dataPermission;
for (Method method : clazz.getMethods()) {
if (method.isDefault() || method.isVarArgs()) {
continue;
}
String mappedStatementId = clazz.getName() + "." + method.getName();
if (AnnotationUtil.hasAnnotation(method, DataPermission.class)) {
dataPermission = AnnotationUtil.getAnnotation(method, DataPermission.class);
dataPermissionCacheMap.put(mappedStatementId, dataPermission);
}
}
if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) {
dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class);
dataPermissionCacheMap.put(clazz.getName(), dataPermission);
}
}
/**
* 根据映射语句 ID 或类名获取对应的 DataPermission 注解对象
*
@ -251,6 +272,10 @@ public class PlusDataPermissionHandler {
if (DataPermissionHelper.getPermission() != null) {
return DataPermissionHelper.getPermission();
}
// 检查缓存中是否包含映射语句 ID 对应的 DataPermission 注解对象
if (dataPermissionCacheMap.containsKey(mapperId)) {
return dataPermissionCacheMap.get(mapperId);
}
// 如果缓存中不包含映射语句 ID 对应的 DataPermission 注解对象则尝试使用类名作为键查找
String clazzName = mapperId.substring(0, mapperId.lastIndexOf("."));
if (dataPermissionCacheMap.containsKey(clazzName)) {

View File

@ -8,7 +8,7 @@ import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.file.FileUtils;
import org.dromara.common.oss.constant.OssConstant;
import org.dromara.common.oss.entity.UploadResult;
import org.dromara.common.oss.enumd.AccessPolicyType;
import org.dromara.common.oss.enums.AccessPolicyType;
import org.dromara.common.oss.exception.OssException;
import org.dromara.common.oss.properties.OssProperties;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;

View File

@ -1,4 +1,4 @@
package org.dromara.common.oss.enumd;
package org.dromara.common.oss.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;

View File

@ -26,7 +26,7 @@ public class SseMessageUtils {
}
/**
* 向指定的WebSocket会话发送消息
* 向指定的SSE会话发送消息
*
* @param userId 要发送消息的用户id
* @param message 要发送的消息内容

View File

@ -22,21 +22,10 @@ snail-job:
job-pull-page-size: 1000
# 服务器端口
server-port: 17888
# 一个客户端每秒最多接收的重试数量指令
limiter: 1000
# 号段模式下步长配置
step: 100
# 日志保存时间(单位: day)
log-storage: 90
# 回调配置
callback:
#回调最大执行次数
max-count: 288
#间隔时间
trigger-interval: 900
# 重试每次拉取的次数
retry-max-pull-count: 10
# RPC通讯类型: netty,grpc
rpc-type: grpc
--- # 监控中心配置

View File

@ -22,21 +22,10 @@ snail-job:
job-pull-page-size: 1000
# 服务器端口
server-port: 17888
# 一个客户端每秒最多接收的重试数量指令
limiter: 1000
# 号段模式下步长配置
step: 100
# 日志保存时间(单位: day)
log-storage: 90
# 回调配置
callback:
#回调最大执行次数
max-count: 288
#间隔时间
trigger-interval: 900
# 重试每次拉取的次数
retry-max-pull-count: 10
# RPC通讯类型: netty,grpc
rpc-type: grpc
--- # 监控中心配置

View File

@ -87,6 +87,6 @@ public class SysDept extends TenantEntity {
* 子部门
*/
@TableField(exist = false)
private List<SysMenu> children = new ArrayList<>();
private List<SysDept> children = new ArrayList<>();
}

View File

@ -73,4 +73,9 @@ public class SysDeptBo extends BaseEntity {
*/
private String status;
/**
* 归属部门id部门树
*/
private Long belongDeptId;
}

View File

@ -7,7 +7,6 @@ import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.system.domain.SysDept;
import org.dromara.system.domain.SysMenu;
import java.io.Serial;
import java.io.Serializable;
@ -105,6 +104,6 @@ public class SysDeptVo implements Serializable {
/**
* 子部门
*/
private List<SysMenu> children = new ArrayList<>();
private List<SysDept> children = new ArrayList<>();
}

View File

@ -1,6 +1,8 @@
package org.dromara.system.service;
import cn.hutool.core.lang.tree.Tree;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.system.domain.bo.SysDeptBo;
import org.dromara.system.domain.vo.SysDeptVo;
@ -12,6 +14,16 @@ import java.util.List;
* @author Lion Li
*/
public interface ISysDeptService {
/**
* 分页查询部门管理数据
*
* @param dept 部门信息
* @param pageQuery 分页对象
* @return 部门信息集合
*/
TableDataInfo<SysDeptVo> selectPageDeptList(SysDeptBo dept, PageQuery pageQuery);
/**
* 查询部门管理数据
*

View File

@ -8,6 +8,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.constant.SystemConstants;
@ -15,6 +16,8 @@ import org.dromara.common.core.domain.dto.DeptDTO;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.service.DeptService;
import org.dromara.common.core.utils.*;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.helper.DataBaseHelper;
import org.dromara.common.redis.utils.CacheUtils;
import org.dromara.common.satoken.utils.LoginHelper;
@ -50,6 +53,19 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
private final SysRoleMapper roleMapper;
private final SysUserMapper userMapper;
/**
* 分页查询部门管理数据
*
* @param dept 部门信息
* @param pageQuery 分页对象
* @return 部门信息集合
*/
@Override
public TableDataInfo<SysDeptVo> selectPageDeptList(SysDeptBo dept, PageQuery pageQuery) {
Page<SysDeptVo> page = baseMapper.selectPageDeptList(pageQuery.build(), buildQueryWrapper(dept));
return TableDataInfo.build(page);
}
/**
* 查询部门管理数据
*
@ -87,6 +103,16 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
lqw.orderByAsc(SysDept::getParentId);
lqw.orderByAsc(SysDept::getOrderNum);
lqw.orderByAsc(SysDept::getDeptId);
if (ObjectUtil.isNotNull(bo.getBelongDeptId())) {
//部门树搜索
lqw.and(x -> {
Long parentId = bo.getBelongDeptId();
List<SysDept> deptList = baseMapper.selectListByParentId(parentId);
List<Long> deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
deptIds.add(parentId);
x.in(SysDept::getDeptId, deptIds);
});
}
return lqw;
}

View File

@ -33,10 +33,7 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -265,7 +262,12 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService
@Override
public Map<String, String> getAllDictByDictType(String dictType) {
List<SysDictDataVo> list = SpringUtils.getAopProxy(this).selectDictDataByType(dictType);
return StreamUtils.toMap(list, SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel);
// 保证顺序
LinkedHashMap<String, String> map = new LinkedHashMap<>();
for (SysDictDataVo vo : list) {
map.put(vo.getDictValue(), vo.getDictLabel());
}
return map;
}
/**

View File

@ -21,7 +21,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.oss.core.OssClient;
import org.dromara.common.oss.entity.UploadResult;
import org.dromara.common.oss.enumd.AccessPolicyType;
import org.dromara.common.oss.enums.AccessPolicyType;
import org.dromara.common.oss.factory.OssFactory;
import org.dromara.system.domain.SysOss;
import org.dromara.system.domain.bo.SysOssBo;

View File

@ -1,32 +1,28 @@
package org.dromara.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.hutool.core.convert.Convert;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.core.domain.dto.TaskAssigneeDTO;
import org.dromara.common.core.domain.model.TaskAssigneeBody;
import org.dromara.common.core.service.TaskAssigneeService;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.system.domain.SysDept;
import org.dromara.system.domain.SysPost;
import org.dromara.system.domain.SysRole;
import org.dromara.system.domain.SysUser;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.system.domain.bo.SysDeptBo;
import org.dromara.system.domain.bo.SysPostBo;
import org.dromara.system.domain.bo.SysRoleBo;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.domain.vo.SysPostVo;
import org.dromara.system.domain.vo.SysRoleVo;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.mapper.SysDeptMapper;
import org.dromara.system.mapper.SysPostMapper;
import org.dromara.system.mapper.SysRoleMapper;
import org.dromara.system.mapper.SysUserMapper;
import org.dromara.system.service.ISysDeptService;
import org.dromara.system.service.ISysPostService;
import org.dromara.system.service.ISysRoleService;
import org.dromara.system.service.ISysUserService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* 工作流设计器获取任务执行人
@ -37,10 +33,11 @@ import java.util.List;
@Service
public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
private final SysPostMapper postMapper;
private final SysDeptMapper deptMapper;
private final SysUserMapper userMapper;
private final SysRoleMapper roleMapper;
// 上级Service注入下级Service 其他Service永远不可能注入当前类 避免循环注入
private final ISysPostService postService;
private final ISysDeptService deptService;
private final ISysUserService userService;
private final ISysRoleService roleService;
/**
* 查询角色并返回任务指派的列表支持分页
@ -51,17 +48,15 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
@Override
public TaskAssigneeDTO selectRolesByTaskAssigneeList(TaskAssigneeBody taskQuery) {
PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum());
QueryWrapper<SysRole> wrapper = Wrappers.query();
wrapper.eq("r.del_flag", SystemConstants.NORMAL)
.eq("r.status", SystemConstants.NORMAL)
.like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), "r.role_name", taskQuery.getHandlerCode())
.like(StringUtils.isNotBlank(taskQuery.getHandlerName()), "r.role_key", taskQuery.getHandlerName())
.between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()),
"r.create_time", taskQuery.getBeginTime(), taskQuery.getEndTime())
.orderByAsc("r.role_sort").orderByAsc("r.create_time");
Page<SysRoleVo> page = roleMapper.selectPageRoleList(pageQuery.build(), wrapper);
SysRoleBo bo = new SysRoleBo();
bo.setRoleName(taskQuery.getHandlerCode());
bo.setRoleKey(taskQuery.getHandlerName());
Map<String, Object> params = bo.getParams();
params.put("beginTime", taskQuery.getBeginTime());
params.put("endTime", taskQuery.getEndTime());
TableDataInfo<SysRoleVo> page = roleService.selectPageRoleList(bo, pageQuery);
// 使用封装的字段映射方法进行转换
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(),
SysRoleVo::getRoleId, SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime);
return new TaskAssigneeDTO(page.getTotal(), handlers);
}
@ -75,24 +70,16 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
@Override
public TaskAssigneeDTO selectPostsByTaskAssigneeList(TaskAssigneeBody taskQuery) {
PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum());
LambdaQueryWrapper<SysPost> wrapper = Wrappers.<SysPost>lambdaQuery()
.eq(SysPost::getStatus, SystemConstants.NORMAL)
.like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysPost::getPostCategory, taskQuery.getHandlerCode())
.like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysPost::getPostName, taskQuery.getHandlerName())
.between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()),
SysPost::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime());
if (StringUtils.isNotBlank(taskQuery.getGroupId())) {
Long belongDeptId = Long.valueOf(taskQuery.getGroupId());
wrapper.and(x -> {
List<SysDept> deptList = deptMapper.selectListByParentId(belongDeptId);
List<Long> deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
deptIds.add(belongDeptId);
x.in(SysPost::getDeptId, deptIds);
});
}
Page<SysPostVo> page = postMapper.selectPagePostList(pageQuery.build(), wrapper);
SysPostBo bo = new SysPostBo();
bo.setPostCategory(taskQuery.getHandlerCode());
bo.setPostName(taskQuery.getHandlerName());
Map<String, Object> params = bo.getParams();
params.put("beginTime", taskQuery.getBeginTime());
params.put("endTime", taskQuery.getEndTime());
bo.setBelongDeptId(Convert.toLong(taskQuery.getGroupId()));
TableDataInfo<SysPostVo> page = postService.selectPagePostList(bo, pageQuery);
// 使用封装的字段映射方法进行转换
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(),
SysPostVo::getPostId, SysPostVo::getPostCategory, SysPostVo::getPostName, SysPostVo::getDeptId, SysPostVo::getCreateTime);
return new TaskAssigneeDTO(page.getTotal(), handlers);
}
@ -106,30 +93,16 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
@Override
public TaskAssigneeDTO selectDeptsByTaskAssigneeList(TaskAssigneeBody taskQuery) {
PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum());
LambdaQueryWrapper<SysDept> wrapper = Wrappers.<SysDept>lambdaQuery()
.eq(SysDept::getDelFlag, SystemConstants.NORMAL)
.eq(SysDept::getStatus, SystemConstants.NORMAL)
.like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysDept::getDeptCategory, taskQuery.getHandlerCode())
.like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysDept::getDeptName, taskQuery.getHandlerName())
.between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()),
SysDept::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime())
.orderByAsc(SysDept::getAncestors)
.orderByAsc(SysDept::getParentId)
.orderByAsc(SysDept::getOrderNum)
.orderByAsc(SysDept::getDeptId);
if (StringUtils.isNotBlank(taskQuery.getGroupId())) {
//部门树搜索
wrapper.and(x -> {
Long parentId = Long.valueOf(taskQuery.getGroupId());
List<SysDept> deptList = deptMapper.selectListByParentId(parentId);
List<Long> deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
deptIds.add(parentId);
x.in(SysDept::getDeptId, deptIds);
});
}
Page<SysDeptVo> page = deptMapper.selectPageDeptList(pageQuery.build(), wrapper);
SysDeptBo bo = new SysDeptBo();
bo.setDeptCategory(taskQuery.getHandlerCode());
bo.setDeptName(taskQuery.getHandlerName());
Map<String, Object> params = bo.getParams();
params.put("beginTime", taskQuery.getBeginTime());
params.put("endTime", taskQuery.getEndTime());
bo.setBelongDeptId(Convert.toLong(taskQuery.getGroupId()));
TableDataInfo<SysDeptVo> page = deptService.selectPageDeptList(bo, pageQuery);
// 使用封装的字段映射方法进行转换
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(),
SysDeptVo::getDeptId, SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, SysDeptVo::getParentId, SysDeptVo::getCreateTime);
return new TaskAssigneeDTO(page.getTotal(), handlers);
}
@ -144,27 +117,16 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService {
@Override
public TaskAssigneeDTO selectUsersByTaskAssigneeList(TaskAssigneeBody taskQuery) {
PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum());
QueryWrapper<SysUser> wrapper = Wrappers.query();
wrapper.eq("u.del_flag", SystemConstants.NORMAL)
.eq("u.status", SystemConstants.NORMAL)
.like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), "u.user_name", taskQuery.getHandlerCode())
.like(StringUtils.isNotBlank(taskQuery.getHandlerName()), "u.nick_name", taskQuery.getHandlerName())
.between(taskQuery.getBeginTime() != null && taskQuery.getEndTime() != null,
"u.create_time", taskQuery.getBeginTime(), taskQuery.getEndTime())
.orderByAsc("u.user_id");
if (StringUtils.isNotBlank(taskQuery.getGroupId())) {
//部门树搜索
wrapper.and(x -> {
Long parentId = Long.valueOf(taskQuery.getGroupId());
List<SysDept> deptList = deptMapper.selectListByParentId(parentId);
List<Long> deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
deptIds.add(parentId);
x.in("u.dept_id", deptIds);
});
}
Page<SysUserVo> page = userMapper.selectPageUserList(pageQuery.build(), wrapper);
SysUserBo bo = new SysUserBo();
bo.setUserName(taskQuery.getHandlerCode());
bo.setNickName(taskQuery.getHandlerName());
Map<String, Object> params = bo.getParams();
params.put("beginTime", taskQuery.getBeginTime());
params.put("endTime", taskQuery.getEndTime());
bo.setDeptId(Convert.toLong(taskQuery.getGroupId()));
TableDataInfo<SysUserVo> page = userService.selectPageUserList(bo, pageQuery);
// 使用封装的字段映射方法进行转换
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(),
SysUserVo::getUserId, SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptId, SysUserVo::getCreateTime);
return new TaskAssigneeDTO(page.getTotal(), handlers);
}

View File

@ -21,7 +21,7 @@ public class FlowNextNodeBo implements Serializable {
/**
* 任务id
*/
private String taskId;
private Long taskId;
/**
* 流程变量

View File

@ -186,7 +186,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deleteByBusinessIds(List<Long> businessIds) {
List<FlowInstance> flowInstances = flowInstanceMapper.selectList(new LambdaQueryWrapper<FlowInstance>().in(FlowInstance::getBusinessId, businessIds));
List<FlowInstance> flowInstances = flowInstanceMapper.selectList(new LambdaQueryWrapper<FlowInstance>().in(FlowInstance::getBusinessId, StreamUtils.toList(businessIds,Convert::toStr)));
if (CollUtil.isEmpty(flowInstances)) {
log.warn("未找到对应的流程实例信息,无法执行删除操作。");
return false;

View File

@ -6,7 +6,6 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.dto.DictTypeDTO;
import org.dromara.common.core.service.DictService;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.warm.flow.ui.service.NodeExtService;
import org.dromara.warm.flow.ui.vo.NodeExt;
import org.dromara.workflow.common.ConditionalOnEnable;
@ -37,11 +36,6 @@ public class FlwNodeExtServiceImpl implements NodeExtService {
*/
private static final String PERMISSION_TAB_NAME = "权限";
/**
* 枚举类型标识
*/
private static final String ENUM_TYPE_PREFIX = "enum:";
/**
* 基础设置
*/
@ -58,7 +52,7 @@ public class FlwNodeExtServiceImpl implements NodeExtService {
private static final Map<String, Map<String, Object>> CHILD_NODE_MAP = new HashMap<>();
static {
CHILD_NODE_MAP.put(ButtonPermissionEnum.class.getName(),
CHILD_NODE_MAP.put(ButtonPermissionEnum.class.getSimpleName(),
Map.of("label", "权限按钮", "type", 4, "must", false, "multiple", true));
}
@ -67,33 +61,41 @@ public class FlwNodeExtServiceImpl implements NodeExtService {
/**
* 获取节点扩展属性
*
* @return 结果
* @return 节点扩展属性列表
*/
@Override
public List<NodeExt> getNodeExt() {
List<NodeExt> nodeExtList = new ArrayList<>();
// 构建按钮权限页面
nodeExtList.add(buildNodeExt(PERMISSION_TAB, PERMISSION_TAB_NAME, TYPE_NEW_TAB,
ENUM_TYPE_PREFIX + ButtonPermissionEnum.class.getName()));
List.of(ButtonPermissionEnum.class)));
return nodeExtList;
}
/**
* 构建一个 NodeExt 对象
* 构建一个 `NodeExt` 对象
*
* @param code 编码此json中唯一
* @param name 名称如果type为新页签时作为页签名称
* @param type 节点类型1基础设置2新页签
* @param sourceTypes 字典/枚举类型来源逗号分隔
* @return 返回构建 NodeExt 对象
* @param code 唯一编码
* @param name 名称新页签时作为页签名称
* @param type 节点类型1: 基础设置2: 新页签
* @param sources 数据来源枚举类或字典类型
* @return 构建的 `NodeExt` 对象
*/
private NodeExt buildNodeExt(String code, String name, int type, String sourceTypes) {
@SuppressWarnings("unchecked cast")
private NodeExt buildNodeExt(String code, String name, int type, List<Object> sources) {
NodeExt nodeExt = new NodeExt();
nodeExt.setCode(code);
nodeExt.setType(type);
nodeExt.setName(name);
nodeExt.setChilds(StringUtils.splitList(sourceTypes)
.stream().map(this::buildChildNode)
nodeExt.setChilds(sources.stream()
.map(source -> {
if (source instanceof Class<?> clazz && NodeExtEnum.class.isAssignableFrom(clazz)) {
return buildChildNode((Class<? extends NodeExtEnum>) clazz);
} else if (source instanceof String dictType) {
return buildChildNode(dictType);
}
return null;
})
.filter(ObjectUtil::isNotNull)
.toList()
);
@ -101,52 +103,35 @@ public class FlwNodeExtServiceImpl implements NodeExtService {
}
/**
* 构建一个 ChildNode 对象
* 根据枚举类型构建一个 `ChildNode` 对象
*
* @param sourceType 字典类型
* @return 返回构建 ChildNode 对象
* @param enumClass 枚举类必须实现 `NodeExtEnum` 接口
* @return 构建的 `ChildNode` 对象
*/
private NodeExt.ChildNode buildChildNode(String sourceType) {
return sourceType.startsWith(ENUM_TYPE_PREFIX) ?
buildChildNodeFromEnum(sourceType.substring(ENUM_TYPE_PREFIX.length())) : buildChildNodeFromDict(sourceType);
}
/**
* 根据枚举构建一个 ChildNode 对象
*
* @param enumClassName 枚举名称
* @return 返回构建好的 ChildNode 对象
*/
private NodeExt.ChildNode buildChildNodeFromEnum(String enumClassName) {
try {
Class<?> enumClass = Class.forName(enumClassName);
if (!enumClass.isEnum()) {
return null;
}
NodeExt.ChildNode childNode = buildChildNodeMap(enumClassName);
// 编码此json中唯
childNode.setCode(ENUM_TYPE_PREFIX + enumClassName);
// 字典下拉框和复选框时用到
childNode.setDict(Arrays.stream(enumClass.getEnumConstants())
.filter(NodeExtEnum.class::isInstance)
.map(NodeExtEnum.class::cast)
.map(x ->
new NodeExt.DictItem(x.getLabel(), x.getValue(), x.isSelected())
).toList());
return childNode;
} catch (ClassNotFoundException e) {
log.error("Enum class not found: {}", enumClassName, e);
private NodeExt.ChildNode buildChildNode(Class<? extends NodeExtEnum> enumClass) {
if (!enumClass.isEnum()) {
return null;
}
return null;
String simpleName = enumClass.getSimpleName();
NodeExt.ChildNode childNode = buildChildNodeMap(simpleName);
// 编码此json中唯
childNode.setCode(simpleName);
// 字典下拉框和复选框时用到
childNode.setDict(Arrays.stream(enumClass.getEnumConstants())
.map(NodeExtEnum.class::cast)
.map(x ->
new NodeExt.DictItem(x.getLabel(), x.getValue(), x.isSelected())
).toList());
return childNode;
}
/**
* 根据字典构建一个 ChildNode 对象
* 根据字典类型构建 `ChildNode` 对象
*
* @param dictType 字典类型
* @return 返回构建好的 ChildNode 对象
* @return 构建的 `ChildNode` 对象
*/
private NodeExt.ChildNode buildChildNodeFromDict(String dictType) {
private NodeExt.ChildNode buildChildNode(String dictType) {
DictTypeDTO dictTypeDTO = dictService.getDictType(dictType);
if (ObjectUtil.isNull(dictTypeDTO)) {
return null;

View File

@ -1,6 +1,7 @@
package org.dromara.workflow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -25,9 +26,7 @@ import org.dromara.workflow.common.enums.TaskAssigneeEnum;
import org.dromara.workflow.service.IFlwTaskAssigneeService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.*;
/**
* 流程设计器-获取办理人权限设置列表
@ -132,15 +131,26 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
@Override
public List<UserDTO> fetchUsersByStorageId(String storageId) {
List<UserDTO> list = new ArrayList<>();
Map<TaskAssigneeEnum, List<Long>> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class);
for (String str : storageId.split(StrUtil.COMMA)) {
String[] parts = str.split(StrUtil.COLON, 2);
TaskAssigneeEnum type;
Long id;
if (parts.length < 2) {
list.addAll(getUsersByType(TaskAssigneeEnum.USER, List.of(Long.valueOf(parts[0]))));
// 无前缀时默认是用户类型
type = TaskAssigneeEnum.USER;
id = Long.valueOf(parts[0]);
} else {
list.addAll(getUsersByType(TaskAssigneeEnum.fromCode(parts[0] + StrUtil.COLON), List.of(Long.valueOf(parts[1]))));
// 根据前缀解析类型 "role:123" -> ROLE 类型
type = TaskAssigneeEnum.fromCode(parts[0] + StrUtil.COLON);
id = Long.valueOf(parts[1]);
}
typeIdMap.computeIfAbsent(type, k -> new ArrayList<>()).add(id);
}
return list;
typeIdMap.entrySet().stream()
.filter(entry -> CollUtil.isNotEmpty(entry.getValue()))
.forEach(entry -> list.addAll(getUsersByType(entry.getKey(), entry.getValue())));
return list.stream().distinct().toList();
}
/**

View File

@ -575,7 +575,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
*/
@Override
public List<FlowNode> getNextNodeList(FlowNextNodeBo bo) {
String taskId = bo.getTaskId();
Long taskId = bo.getTaskId();
Map<String, Object> variables = bo.getVariables();
Task task = taskService.getById(taskId);
Instance instance = insService.getById(task.getInstanceId());

View File

@ -54,7 +54,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
* @return boolean
*/
public boolean eval(Integer leaveDays) {
if (leaveDays < 2) {
if (leaveDays <= 2) {
return true;
}
return false;

View File

@ -98,7 +98,7 @@ services:
network_mode: "host"
ruoyi-server1:
image: ruoyi/ruoyi-server:5.3.1-BETA
image: ruoyi/ruoyi-server:5.3.1-BETA2
container_name: ruoyi-server1
environment:
# 时区上海
@ -113,7 +113,7 @@ services:
network_mode: "host"
ruoyi-server2:
image: ruoyi/ruoyi-server:5.3.1-BETA
image: ruoyi/ruoyi-server:5.3.1-BETA2
container_name: ruoyi-server2
environment:
# 时区上海
@ -128,7 +128,7 @@ services:
network_mode: "host"
ruoyi-monitor-admin:
image: ruoyi/ruoyi-monitor-admin:5.3.1-BETA
image: ruoyi/ruoyi-monitor-admin:5.3.1-BETA2
container_name: ruoyi-monitor-admin
environment:
# 时区上海
@ -140,7 +140,7 @@ services:
network_mode: "host"
ruoyi-snailjob-server:
image: ruoyi/ruoyi-snailjob-server:5.3.1-BETA
image: ruoyi/ruoyi-snailjob-server:5.3.1-BETA2
container_name: ruoyi-snailjob-server
environment:
# 时区上海

View File

@ -1,7 +1,7 @@
{
"flowCode" : "leave1",
"flowName" : "请假申请-普通",
"category" : "1",
"category" : "100",
"version" : "1",
"formCustom" : "N",
"formPath" : "/workflow/leaveEdit/index",
@ -11,8 +11,8 @@
"nodeName" : "开始",
"nodeRatio" : 0.000,
"coordinate" : "200,200|200,200",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "d5ee3ddf-3968-4379-a86f-9ceabde5faac",
"nextNodeCode" : "dd515cdd-59f6-446f-94ca-25ca062afb42",
@ -25,8 +25,8 @@
"nodeName" : "申请人",
"nodeRatio" : 0.000,
"coordinate" : "360,200|360,200",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "dd515cdd-59f6-446f-94ca-25ca062afb42",
"nextNodeCode" : "78fa8e5b-e809-44ed-978a-41092409ebcf",
@ -40,8 +40,8 @@
"permissionFlag" : "role:1",
"nodeRatio" : 0.000,
"coordinate" : "540,200|540,200",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"skipList" : [ {
"nowNodeCode" : "78fa8e5b-e809-44ed-978a-41092409ebcf",
"nextNodeCode" : "a8abf15f-b83e-428a-86cc-033555ea9bbe",
@ -55,8 +55,8 @@
"permissionFlag" : "role:3,role:4",
"nodeRatio" : 0.000,
"coordinate" : "720,200|720,200",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"skipList" : [ {
"nowNodeCode" : "a8abf15f-b83e-428a-86cc-033555ea9bbe",
"nextNodeCode" : "8b82b7d7-8660-455e-b880-d6d22ea3eb6d",
@ -69,7 +69,7 @@
"nodeName" : "结束",
"nodeRatio" : 0.000,
"coordinate" : "900,200|900,200",
"skipAnyNode" : "N",
"formCustom" : "N"
"formCustom" : "N",
"ext" : "[]"
} ]
}

View File

@ -1,7 +1,7 @@
{
"flowCode" : "leave2",
"flowName" : "请假申请-排他网关",
"category" : "1",
"category" : "100",
"version" : "1",
"formCustom" : "N",
"formPath" : "/workflow/leaveEdit/index",
@ -11,8 +11,8 @@
"nodeName" : "开始",
"nodeRatio" : 0.000,
"coordinate" : "300,240|300,240",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "cef3895c-f7d8-4598-8bf3-8ec2ef6ce84a",
"nextNodeCode" : "fdcae93b-b69c-498a-b231-09255e74bcbd",
@ -25,8 +25,8 @@
"nodeName" : "申请人",
"nodeRatio" : 0.000,
"coordinate" : "440,240|440,240",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "fdcae93b-b69c-498a-b231-09255e74bcbd",
"nextNodeCode" : "7b8c7ead-7dc8-4951-a7f3-f0c41995909e",
@ -38,8 +38,8 @@
"nodeCode" : "7b8c7ead-7dc8-4951-a7f3-f0c41995909e",
"nodeRatio" : 0.000,
"coordinate" : "560,240",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "7b8c7ead-7dc8-4951-a7f3-f0c41995909e",
"nextNodeCode" : "b3528155-dcb7-4445-bbdf-3d00e3499e86",
@ -61,8 +61,8 @@
"permissionFlag" : "3,4",
"nodeRatio" : 0.000,
"coordinate" : "720,320|720,320",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"skipList" : [ {
"nowNodeCode" : "b3528155-dcb7-4445-bbdf-3d00e3499e86",
"nextNodeCode" : "c9fa6d7d-2a74-4e78-b947-0cad8a6af869",
@ -76,8 +76,8 @@
"permissionFlag" : "role:1",
"nodeRatio" : 0.000,
"coordinate" : "860,240|860,240",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "c9fa6d7d-2a74-4e78-b947-0cad8a6af869",
"nextNodeCode" : "40aa65fd-0712-4d23-b6f7-d0432b920fd1",
@ -90,8 +90,8 @@
"nodeName" : "结束",
"nodeRatio" : 0.000,
"coordinate" : "1000,240|1000,240",
"skipAnyNode" : "N",
"formCustom" : "N"
"formCustom" : "N",
"ext" : "[]"
}, {
"nodeType" : 1,
"nodeCode" : "5ed2362b-fc0c-4d52-831f-95208b830605",
@ -99,8 +99,8 @@
"permissionFlag" : "role:1",
"nodeRatio" : 0.000,
"coordinate" : "720,160|720,160",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"skipList" : [ {
"nowNodeCode" : "5ed2362b-fc0c-4d52-831f-95208b830605",
"nextNodeCode" : "c9fa6d7d-2a74-4e78-b947-0cad8a6af869",
@ -108,4 +108,4 @@
"coordinate" : "770,160;860,160;860,200"
} ]
} ]
}
}

View File

@ -1,7 +1,7 @@
{
"flowCode" : "leave3",
"flowName" : "请假申请-并行网关",
"category" : "1",
"category" : "100",
"version" : "1",
"formCustom" : "N",
"formPath" : "/workflow/leaveEdit/index",
@ -11,8 +11,8 @@
"nodeName" : "开始",
"nodeRatio" : 0.000,
"coordinate" : "380,220|380,220",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "a80ecf9f-f465-4ae5-a429-e30ec5d0f957",
"nextNodeCode" : "b7bbb571-06de-455c-8083-f83c07bf0b99",
@ -25,8 +25,8 @@
"nodeName" : "申请人",
"nodeRatio" : 0.000,
"coordinate" : "520,220|520,220",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "b7bbb571-06de-455c-8083-f83c07bf0b99",
"nextNodeCode" : "84d7ed24-bb44-4ba1-bf1f-e6f5092d3f0a",
@ -38,8 +38,8 @@
"nodeCode" : "84d7ed24-bb44-4ba1-bf1f-e6f5092d3f0a",
"nodeRatio" : 0.000,
"coordinate" : "680,220",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "84d7ed24-bb44-4ba1-bf1f-e6f5092d3f0a",
"nextNodeCode" : "4b7743cd-940c-431b-926f-e7b614fbf1fe",
@ -58,8 +58,8 @@
"permissionFlag" : "role:1",
"nodeRatio" : 0.000,
"coordinate" : "800,140|800,140",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "4b7743cd-940c-431b-926f-e7b614fbf1fe",
"nextNodeCode" : "b66b6563-f9fe-41cc-a782-f7837bb6f3d2",
@ -71,8 +71,8 @@
"nodeCode" : "b66b6563-f9fe-41cc-a782-f7837bb6f3d2",
"nodeRatio" : 0.000,
"coordinate" : "920,220",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "b66b6563-f9fe-41cc-a782-f7837bb6f3d2",
"nextNodeCode" : "23e7429e-2b47-4431-b93e-40db7c431ce6",
@ -86,8 +86,8 @@
"permissionFlag" : "1",
"nodeRatio" : 0.000,
"coordinate" : "1040,220|1040,220",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "23e7429e-2b47-4431-b93e-40db7c431ce6",
"nextNodeCode" : "f5ace37f-5a5e-4e64-a6f6-913ab9a71cd1",
@ -100,8 +100,8 @@
"nodeName" : "结束",
"nodeRatio" : 0.000,
"coordinate" : "1160,220|1160,220",
"skipAnyNode" : "N",
"formCustom" : "N"
"formCustom" : "N",
"ext" : "[]"
}, {
"nodeType" : 1,
"nodeCode" : "762cb975-37d8-4276-b6db-79a4c3606394",
@ -109,8 +109,8 @@
"permissionFlag" : "role:3,role:4",
"nodeRatio" : 0.000,
"coordinate" : "800,300|800,300",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "762cb975-37d8-4276-b6db-79a4c3606394",
"nextNodeCode" : "b66b6563-f9fe-41cc-a782-f7837bb6f3d2",

View File

@ -1,7 +1,7 @@
{
"flowCode" : "leave4",
"flowName" : "请假申请-会签",
"category" : "1",
"category" : "100",
"version" : "1",
"formCustom" : "N",
"formPath" : "/workflow/leaveEdit/index",
@ -11,8 +11,8 @@
"nodeName" : "开始",
"nodeRatio" : 0.000,
"coordinate" : "320,240|320,240",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "9ce8bf00-f25b-4fc6-91b8-827082fc4876",
"nextNodeCode" : "e90b98ef-35b4-410c-a663-bae8b7624b9f",
@ -25,8 +25,8 @@
"nodeName" : "申请人",
"nodeRatio" : 0.000,
"coordinate" : "460,240|460,240",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "e90b98ef-35b4-410c-a663-bae8b7624b9f",
"nextNodeCode" : "768b5b1a-6726-4d67-8853-4cc70d5b1045",
@ -40,8 +40,8 @@
"permissionFlag" : "${userList}",
"nodeRatio" : 60.000,
"coordinate" : "640,240|640,240",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "768b5b1a-6726-4d67-8853-4cc70d5b1045",
"nextNodeCode" : "2f9f2e21-9bcf-42a3-a07c-13037aad22d1",
@ -55,8 +55,8 @@
"permissionFlag" : "role:1,role:3",
"nodeRatio" : 100.000,
"coordinate" : "820,240|820,240",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "2f9f2e21-9bcf-42a3-a07c-13037aad22d1",
"nextNodeCode" : "27461e01-3d9f-4530-8fe3-bd5ec7f9571f",
@ -70,8 +70,8 @@
"permissionFlag" : "1",
"nodeRatio" : 0.000,
"coordinate" : "1000,240|1000,240",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "27461e01-3d9f-4530-8fe3-bd5ec7f9571f",
"nextNodeCode" : "b62b88c3-8d8d-4969-911e-2aaea219e7fc",
@ -84,7 +84,7 @@
"nodeName" : "结束",
"nodeRatio" : 0.000,
"coordinate" : "1120,240|1120,240",
"skipAnyNode" : "N",
"formCustom" : "N"
"formCustom" : "N",
"ext" : "[]"
} ]
}

View File

@ -1,7 +1,7 @@
{
"flowCode" : "leave5",
"flowName" : "请假申请-并行会签网关",
"category" : "1",
"category" : "100",
"version" : "1",
"formCustom" : "N",
"formPath" : "/workflow/leaveEdit/index",
@ -11,8 +11,8 @@
"nodeName" : "开始",
"nodeRatio" : 0.000,
"coordinate" : "300,220|300,220",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "ebebaf26-9cb6-497e-8119-4c9fed4c597c",
"nextNodeCode" : "e1b04e96-dc81-4858-a309-2fe945d2f374",
@ -25,8 +25,8 @@
"nodeName" : "申请人",
"nodeRatio" : 0.000,
"coordinate" : "420,220|420,220",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "e1b04e96-dc81-4858-a309-2fe945d2f374",
"nextNodeCode" : "3e743f4f-51ca-41d4-8e94-21f5dd9b59c9",
@ -38,8 +38,8 @@
"nodeCode" : "3e743f4f-51ca-41d4-8e94-21f5dd9b59c9",
"nodeRatio" : 0.000,
"coordinate" : "560,220",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "3e743f4f-51ca-41d4-8e94-21f5dd9b59c9",
"nextNodeCode" : "c80f273e-1f17-4bd8-9ad1-04a4a94ea862",
@ -58,8 +58,8 @@
"permissionFlag" : "role:1,role:3",
"nodeRatio" : 100.000,
"coordinate" : "700,320|700,320",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "c80f273e-1f17-4bd8-9ad1-04a4a94ea862",
"nextNodeCode" : "1a20169e-3d82-4926-a151-e2daad28de1b",
@ -71,8 +71,8 @@
"nodeCode" : "1a20169e-3d82-4926-a151-e2daad28de1b",
"nodeRatio" : 0.000,
"coordinate" : "860,220",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "1a20169e-3d82-4926-a151-e2daad28de1b",
"nextNodeCode" : "7a8f0473-e409-442e-a843-5c2b813d00e9",
@ -86,8 +86,8 @@
"permissionFlag" : "1",
"nodeRatio" : 0.000,
"coordinate" : "1000,220|1000,220",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "7a8f0473-e409-442e-a843-5c2b813d00e9",
"nextNodeCode" : "03c4d2bc-58b5-4408-a2e4-65afb046f169",
@ -100,8 +100,8 @@
"nodeName" : "结束",
"nodeRatio" : 0.000,
"coordinate" : "1140,220|1140,220",
"skipAnyNode" : "N",
"formCustom" : "N"
"formCustom" : "N",
"ext" : "[]"
}, {
"nodeType" : 1,
"nodeCode" : "1e3e8d3b-18ae-4d6c-a814-ce0d724adfa4",
@ -109,8 +109,8 @@
"permissionFlag" : "${userList}",
"nodeRatio" : 60.000,
"coordinate" : "700,120|700,120",
"skipAnyNode" : "N",
"formCustom" : "N",
"ext" : "[]",
"skipList" : [ {
"nowNodeCode" : "1e3e8d3b-18ae-4d6c-a814-ce0d724adfa4",
"nextNodeCode" : "1a20169e-3d82-4926-a151-e2daad28de1b",

View File

@ -2,7 +2,7 @@
"flowCode" : "leave6",
"flowName" : "请假申请-排他并行会签",
"category" : "100",
"version" : "4",
"version" : "1",
"formCustom" : "N",
"formPath" : "/workflow/leaveEdit/index",
"nodeList" : [ {
@ -25,7 +25,8 @@
"nodeName" : "申请人",
"nodeRatio" : 0.000,
"coordinate" : "400,300|400,300",
"ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"formCustom" : "N",
"ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"skipList" : [ {
"nowNodeCode" : "c25a0e86-fdd1-4f03-8e22-14db70389dbd",
"nextNodeCode" : "07ecda1d-7a0a-47b5-8a91-6186c9473742",
@ -39,7 +40,8 @@
"permissionFlag" : "role:1@@role:3@@role:4",
"nodeRatio" : 0.000,
"coordinate" : "860,200|860,200",
"ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"formCustom" : "N",
"ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"skipList" : [ {
"nowNodeCode" : "2bfa3919-78cf-4bc1-b59b-df463a4546f9",
"nextNodeCode" : "394e1cc8-b8b2-4189-9f81-44448e88ac32",
@ -54,7 +56,7 @@
"nodeRatio" : 0.000,
"coordinate" : "860,400|860,400",
"formCustom" : "N",
"ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"skipList" : [ {
"nowNodeCode" : "ec17f60e-94e0-4d96-a3ce-3417e9d32d60",
"nextNodeCode" : "394e1cc8-b8b2-4189-9f81-44448e88ac32",
@ -68,7 +70,8 @@
"permissionFlag" : "1",
"nodeRatio" : 0.000,
"coordinate" : "560,300|560,300",
"ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination,copy,trust,transfer\"}]",
"formCustom" : "N",
"ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination,transfer,copy,pop\"}]",
"skipList" : [ {
"nowNodeCode" : "07ecda1d-7a0a-47b5-8a91-6186c9473742",
"nextNodeCode" : "48117e2c-6328-406b-b102-c4a9d115bb13",
@ -117,7 +120,7 @@
"nodeRatio" : 100.000,
"coordinate" : "1180,300|1180,300",
"formCustom" : "N",
"ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination,pop,addSign,subSign\"}]",
"ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination,pop,addSign,subSign\"}]",
"skipList" : [ {
"nowNodeCode" : "9c93a195-cff2-4e17-ab0a-a4f264191496",
"nextNodeCode" : "a1a42056-afd1-4e90-88bc-36cbf5a66992",
@ -150,7 +153,7 @@
"nodeRatio" : 0.000,
"coordinate" : "1480,200|1480,200",
"formCustom" : "N",
"ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"skipList" : [ {
"nowNodeCode" : "350dfa0c-a77c-4efa-8527-10efa02d8be4",
"nextNodeCode" : "c36a46ef-04f9-463f-bad7-4b395c818519",
@ -165,7 +168,7 @@
"nodeRatio" : 0.000,
"coordinate" : "1480,400|1480,400",
"formCustom" : "N",
"ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"skipList" : [ {
"nowNodeCode" : "fcfdd9f6-f526-4c1a-b71d-88afa31aebc5",
"nextNodeCode" : "c36a46ef-04f9-463f-bad7-4b395c818519",
@ -193,7 +196,7 @@
"nodeRatio" : 0.000,
"coordinate" : "1820,300|1820,300",
"formCustom" : "N",
"ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]",
"skipList" : [ {
"nowNodeCode" : "3fcea762-b53a-4ae1-8365-7bec90444828",
"nextNodeCode" : "9cfbfd3e-6c04-41d6-9fc2-6787a7d2cd31",
@ -209,4 +212,4 @@
"formCustom" : "N",
"ext" : "[]"
} ]
}
}

View File

@ -1,8 +1,9 @@
/*
SnailJob Database Transfer Tool
Source Server Type : MySQL
Target Server Type : Oracle
Date: 2024-12-27 22:22:15
Date: 2025-02-25 22:16:28
*/
@ -48,7 +49,6 @@ CREATE TABLE sj_group_config
group_partition number NOT NULL,
id_generator_mode smallint DEFAULT 1 NOT NULL,
init_scene smallint DEFAULT 0 NOT NULL,
bucket_index number DEFAULT 0 NOT NULL,
create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL,
update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL
);
@ -68,13 +68,12 @@ COMMENT ON COLUMN sj_group_config.version IS '版本号';
COMMENT ON COLUMN sj_group_config.group_partition IS '分区';
COMMENT ON COLUMN sj_group_config.id_generator_mode IS '唯一id生成模式 默认号段模式';
COMMENT ON COLUMN sj_group_config.init_scene IS '是否初始化场景 0:否 1:是';
COMMENT ON COLUMN sj_group_config.bucket_index IS 'bucket';
COMMENT ON COLUMN sj_group_config.create_dt IS '创建时间';
COMMENT ON COLUMN sj_group_config.update_dt IS '修改时间';
COMMENT ON TABLE sj_group_config IS '组配置';
INSERT INTO sj_group_config (namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) VALUES ('dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, sysdate, sysdate);
INSERT INTO sj_group_config (namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) VALUES ('prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, sysdate, sysdate);
INSERT INTO sj_group_config (namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, create_dt, update_dt) VALUES ('dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, sysdate, sysdate);
INSERT INTO sj_group_config (namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, create_dt, update_dt) VALUES ('prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, sysdate, sysdate);
-- sj_notify_config
CREATE TABLE sj_notify_config
@ -144,12 +143,11 @@ COMMENT ON COLUMN sj_notify_recipient.create_dt IS '创建时间';
COMMENT ON COLUMN sj_notify_recipient.update_dt IS '修改时间';
COMMENT ON TABLE sj_notify_recipient IS '告警通知接收人';
-- sj_retry_dead_letter_0
CREATE TABLE sj_retry_dead_letter_0
-- sj_retry_dead_letter
CREATE TABLE sj_retry_dead_letter
(
id number GENERATED ALWAYS AS IDENTITY,
namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
unique_id varchar2(64) NULL,
group_name varchar2(64) NULL,
scene_name varchar2(64) NULL,
idempotent_id varchar2(64) NULL,
@ -157,40 +155,34 @@ CREATE TABLE sj_retry_dead_letter_0
executor_name varchar2(512) DEFAULT '' NULL,
args_str clob NULL,
ext_attrs clob NULL,
task_type smallint DEFAULT 1 NOT NULL,
create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL
);
ALTER TABLE sj_retry_dead_letter_0
ADD CONSTRAINT pk_sj_retry_dead_letter_0 PRIMARY KEY (id);
ALTER TABLE sj_retry_dead_letter
ADD CONSTRAINT pk_sj_retry_dead_letter PRIMARY KEY (id);
CREATE UNIQUE INDEX uk_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, unique_id);
CREATE INDEX idx_sj_retry_dead_letter_01 ON sj_retry_dead_letter (namespace_id, group_name, scene_name);
CREATE INDEX idx_sj_retry_dead_letter_02 ON sj_retry_dead_letter (idempotent_id);
CREATE INDEX idx_sj_retry_dead_letter_03 ON sj_retry_dead_letter (biz_no);
CREATE INDEX idx_sj_retry_dead_letter_04 ON sj_retry_dead_letter (create_dt);
CREATE INDEX idx_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, scene_name);
CREATE INDEX idx_sj_retry_dead_letter_0_02 ON sj_retry_dead_letter_0 (idempotent_id);
CREATE INDEX idx_sj_retry_dead_letter_0_03 ON sj_retry_dead_letter_0 (biz_no);
CREATE INDEX idx_sj_retry_dead_letter_0_04 ON sj_retry_dead_letter_0 (create_dt);
COMMENT ON COLUMN sj_retry_dead_letter.id IS '主键';
COMMENT ON COLUMN sj_retry_dead_letter.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_dead_letter.group_name IS '组名称';
COMMENT ON COLUMN sj_retry_dead_letter.scene_name IS '场景名称';
COMMENT ON COLUMN sj_retry_dead_letter.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry_dead_letter.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry_dead_letter.executor_name IS '执行器名称';
COMMENT ON COLUMN sj_retry_dead_letter.args_str IS '执行方法参数';
COMMENT ON COLUMN sj_retry_dead_letter.ext_attrs IS '扩展字段';
COMMENT ON COLUMN sj_retry_dead_letter.create_dt IS '创建时间';
COMMENT ON TABLE sj_retry_dead_letter IS '死信队列表';
COMMENT ON COLUMN sj_retry_dead_letter_0.id IS '主键';
COMMENT ON COLUMN sj_retry_dead_letter_0.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_dead_letter_0.unique_id IS '同组下id唯一';
COMMENT ON COLUMN sj_retry_dead_letter_0.group_name IS '组名称';
COMMENT ON COLUMN sj_retry_dead_letter_0.scene_name IS '场景名称';
COMMENT ON COLUMN sj_retry_dead_letter_0.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry_dead_letter_0.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry_dead_letter_0.executor_name IS '执行器名称';
COMMENT ON COLUMN sj_retry_dead_letter_0.args_str IS '执行方法参数';
COMMENT ON COLUMN sj_retry_dead_letter_0.ext_attrs IS '扩展字段';
COMMENT ON COLUMN sj_retry_dead_letter_0.task_type IS '任务类型 1、重试数据 2、回调数据';
COMMENT ON COLUMN sj_retry_dead_letter_0.create_dt IS '创建时间';
COMMENT ON TABLE sj_retry_dead_letter_0 IS '死信队列表';
-- sj_retry_task_0
CREATE TABLE sj_retry_task_0
-- sj_retry
CREATE TABLE sj_retry
(
id number GENERATED ALWAYS AS IDENTITY,
namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
unique_id varchar2(64) NULL,
group_name varchar2(64) NULL,
scene_name varchar2(64) NULL,
idempotent_id varchar2(64) NULL,
@ -198,112 +190,113 @@ CREATE TABLE sj_retry_task_0
executor_name varchar2(512) DEFAULT '' NULL,
args_str clob NULL,
ext_attrs clob NULL,
next_trigger_at date NOT NULL,
next_trigger_at number NOT NULL,
retry_count number DEFAULT 0 NOT NULL,
retry_status smallint DEFAULT 0 NOT NULL,
task_type smallint DEFAULT 1 NOT NULL,
bucket_index number DEFAULT 0 NOT NULL,
parent_id number DEFAULT 0 NOT NULL,
deleted number DEFAULT 0 NOT NULL,
create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL,
update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL
);
ALTER TABLE sj_retry_task_0
ADD CONSTRAINT pk_sj_retry_task_0 PRIMARY KEY (id);
ALTER TABLE sj_retry
ADD CONSTRAINT pk_sj_retry PRIMARY KEY (id);
CREATE UNIQUE INDEX uk_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, unique_id);
CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (namespace_id, group_name, task_type, idempotent_id, deleted);
CREATE INDEX idx_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, scene_name);
CREATE INDEX idx_sj_retry_task_0_02 ON sj_retry_task_0 (namespace_id, group_name, task_type);
CREATE INDEX idx_sj_retry_task_0_03 ON sj_retry_task_0 (namespace_id, group_name, retry_status);
CREATE INDEX idx_sj_retry_task_0_04 ON sj_retry_task_0 (idempotent_id);
CREATE INDEX idx_sj_retry_task_0_05 ON sj_retry_task_0 (biz_no);
CREATE INDEX idx_sj_retry_task_0_06 ON sj_retry_task_0 (create_dt);
CREATE INDEX idx_sj_retry_01 ON sj_retry (namespace_id, group_name, scene_name);
CREATE INDEX idx_sj_retry_02 ON sj_retry (namespace_id, group_name, retry_status);
CREATE INDEX idx_sj_retry_03 ON sj_retry (idempotent_id);
CREATE INDEX idx_sj_retry_04 ON sj_retry (biz_no);
CREATE INDEX idx_sj_retry_05 ON sj_retry (parent_id);
CREATE INDEX idx_sj_retry_06 ON sj_retry (create_dt);
COMMENT ON COLUMN sj_retry_task_0.id IS '主键';
COMMENT ON COLUMN sj_retry_task_0.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_task_0.unique_id IS '同组下id唯一';
COMMENT ON COLUMN sj_retry_task_0.group_name IS '组名称';
COMMENT ON COLUMN sj_retry_task_0.scene_name IS '场景名称';
COMMENT ON COLUMN sj_retry_task_0.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry_task_0.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry_task_0.executor_name IS '执行器名称';
COMMENT ON COLUMN sj_retry_task_0.args_str IS '执行方法参数';
COMMENT ON COLUMN sj_retry_task_0.ext_attrs IS '扩展字段';
COMMENT ON COLUMN sj_retry_task_0.next_trigger_at IS '下次触发时间';
COMMENT ON COLUMN sj_retry_task_0.retry_count IS '重试次数';
COMMENT ON COLUMN sj_retry_task_0.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数';
COMMENT ON COLUMN sj_retry_task_0.task_type IS '任务类型 1、重试数据 2、回调数据';
COMMENT ON COLUMN sj_retry_task_0.create_dt IS '创建时间';
COMMENT ON COLUMN sj_retry_task_0.update_dt IS '修改时间';
COMMENT ON TABLE sj_retry_task_0 IS '任务表';
COMMENT ON COLUMN sj_retry.id IS '主键';
COMMENT ON COLUMN sj_retry.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry.group_name IS '组名称';
COMMENT ON COLUMN sj_retry.scene_name IS '场景名称';
COMMENT ON COLUMN sj_retry.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry.executor_name IS '执行器名称';
COMMENT ON COLUMN sj_retry.args_str IS '执行方法参数';
COMMENT ON COLUMN sj_retry.ext_attrs IS '扩展字段';
COMMENT ON COLUMN sj_retry.next_trigger_at IS '下次触发时间';
COMMENT ON COLUMN sj_retry.retry_count IS '重试次数';
COMMENT ON COLUMN sj_retry.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数';
COMMENT ON COLUMN sj_retry.task_type IS '任务类型 1、重试数据 2、回调数据';
COMMENT ON COLUMN sj_retry.bucket_index IS 'bucket';
COMMENT ON COLUMN sj_retry.parent_id IS '父节点id';
COMMENT ON COLUMN sj_retry.deleted IS '逻辑删除';
COMMENT ON COLUMN sj_retry.create_dt IS '创建时间';
COMMENT ON COLUMN sj_retry.update_dt IS '修改时间';
COMMENT ON TABLE sj_retry IS '重试信息表';
-- sj_retry_task_log
CREATE TABLE sj_retry_task_log
-- sj_retry_task
CREATE TABLE sj_retry_task
(
id number GENERATED ALWAYS AS IDENTITY,
namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
unique_id varchar2(64) NULL,
group_name varchar2(64) NULL,
scene_name varchar2(64) NULL,
idempotent_id varchar2(64) NULL,
biz_no varchar2(64) DEFAULT '' NULL,
executor_name varchar2(512) DEFAULT '' NULL,
args_str clob NULL,
ext_attrs clob NULL,
retry_status smallint DEFAULT 0 NOT NULL,
task_type smallint DEFAULT 1 NOT NULL,
create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL,
update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL
id number GENERATED ALWAYS AS IDENTITY,
namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
group_name varchar2(64) NULL,
scene_name varchar2(64) NULL,
retry_id number NOT NULL,
ext_attrs clob NULL,
task_status smallint DEFAULT 1 NOT NULL,
task_type smallint DEFAULT 1 NOT NULL,
operation_reason smallint DEFAULT 0 NOT NULL,
client_info varchar2(128) DEFAULT NULL NULL,
create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL,
update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL
);
ALTER TABLE sj_retry_task_log
ADD CONSTRAINT pk_sj_retry_task_log PRIMARY KEY (id);
ALTER TABLE sj_retry_task
ADD CONSTRAINT pk_sj_retry_task PRIMARY KEY (id);
CREATE INDEX idx_sj_retry_task_log_01 ON sj_retry_task_log (namespace_id, group_name, scene_name);
CREATE INDEX idx_sj_retry_task_log_02 ON sj_retry_task_log (retry_status);
CREATE INDEX idx_sj_retry_task_log_03 ON sj_retry_task_log (idempotent_id);
CREATE INDEX idx_sj_retry_task_log_04 ON sj_retry_task_log (unique_id);
CREATE INDEX idx_sj_retry_task_log_05 ON sj_retry_task_log (biz_no);
CREATE INDEX idx_sj_retry_task_log_06 ON sj_retry_task_log (create_dt);
CREATE INDEX idx_sj_retry_task_01 ON sj_retry_task (namespace_id, group_name, scene_name);
CREATE INDEX idx_sj_retry_task_02 ON sj_retry_task (task_status);
CREATE INDEX idx_sj_retry_task_03 ON sj_retry_task (create_dt);
CREATE INDEX idx_sj_retry_task_04 ON sj_retry_task (retry_id);
COMMENT ON COLUMN sj_retry_task_log.id IS '主键';
COMMENT ON COLUMN sj_retry_task_log.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_task_log.unique_id IS '同组下id唯一';
COMMENT ON COLUMN sj_retry_task_log.group_name IS '组名称';
COMMENT ON COLUMN sj_retry_task_log.scene_name IS '场景名称';
COMMENT ON COLUMN sj_retry_task_log.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry_task_log.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry_task_log.executor_name IS '执行器名称';
COMMENT ON COLUMN sj_retry_task_log.args_str IS '执行方法参数';
COMMENT ON COLUMN sj_retry_task_log.ext_attrs IS '扩展字段';
COMMENT ON COLUMN sj_retry_task_log.retry_status IS '重试状态 0、重试中 1、成功 2、最大次数';
COMMENT ON COLUMN sj_retry_task_log.task_type IS '任务类型 1、重试数据 2、回调数据';
COMMENT ON COLUMN sj_retry_task_log.create_dt IS '创建时间';
COMMENT ON COLUMN sj_retry_task_log.update_dt IS '修改时间';
COMMENT ON TABLE sj_retry_task_log IS '任务日志基础信息表';
COMMENT ON COLUMN sj_retry_task.id IS '主键';
COMMENT ON COLUMN sj_retry_task.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_task.group_name IS '组名称';
COMMENT ON COLUMN sj_retry_task.scene_name IS '场景名称';
COMMENT ON COLUMN sj_retry_task.retry_id IS '重试信息Id';
COMMENT ON COLUMN sj_retry_task.ext_attrs IS '扩展字段';
COMMENT ON COLUMN sj_retry_task.task_status IS '重试状态';
COMMENT ON COLUMN sj_retry_task.task_type IS '任务类型 1、重试数据 2、回调数据';
COMMENT ON COLUMN sj_retry_task.operation_reason IS '操作原因';
COMMENT ON COLUMN sj_retry_task.client_info IS '客户端地址 clientId#ip:port';
COMMENT ON COLUMN sj_retry_task.create_dt IS '创建时间';
COMMENT ON COLUMN sj_retry_task.update_dt IS '修改时间';
COMMENT ON TABLE sj_retry_task IS '重试任务表';
-- sj_retry_task_log_message
CREATE TABLE sj_retry_task_log_message
(
id number GENERATED ALWAYS AS IDENTITY,
namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
group_name varchar2(64) NULL,
unique_id varchar2(64) NULL,
message clob NULL,
log_num number DEFAULT 1 NOT NULL,
real_time number DEFAULT 0 NOT NULL,
create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL
id number GENERATED ALWAYS AS IDENTITY,
namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
group_name varchar2(64) NULL,
retry_id number NOT NULL,
retry_task_id number NOT NULL,
message clob NULL,
log_num number DEFAULT 1 NOT NULL,
real_time number DEFAULT 0 NOT NULL,
create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL
);
ALTER TABLE sj_retry_task_log_message
ADD CONSTRAINT pk_sj_retry_task_log_message PRIMARY KEY (id);
CREATE INDEX idx_sj_rt_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, unique_id);
CREATE INDEX idx_sj_rt_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, retry_task_id);
CREATE INDEX idx_sj_rt_log_message_02 ON sj_retry_task_log_message (create_dt);
COMMENT ON COLUMN sj_retry_task_log_message.id IS '主键';
COMMENT ON COLUMN sj_retry_task_log_message.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_task_log_message.group_name IS '组名称';
COMMENT ON COLUMN sj_retry_task_log_message.unique_id IS '同组下id唯一';
COMMENT ON COLUMN sj_retry_task_log_message.retry_id IS '重试信息Id';
COMMENT ON COLUMN sj_retry_task_log_message.retry_task_id IS '重试任务Id';
COMMENT ON COLUMN sj_retry_task_log_message.message IS '异常信息';
COMMENT ON COLUMN sj_retry_task_log_message.log_num IS '日志数量';
COMMENT ON COLUMN sj_retry_task_log_message.real_time IS '上报时间';
@ -313,21 +306,26 @@ COMMENT ON TABLE sj_retry_task_log_message IS '任务调度日志信息记录表
-- sj_retry_scene_config
CREATE TABLE sj_retry_scene_config
(
id number GENERATED ALWAYS AS IDENTITY,
namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
scene_name varchar2(64) NULL,
group_name varchar2(64) NULL,
scene_status smallint DEFAULT 0 NOT NULL,
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,
description varchar2(256) DEFAULT '' NULL,
create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL,
update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL
id number GENERATED ALWAYS AS IDENTITY,
namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
scene_name varchar2(64) NULL,
group_name varchar2(64) NULL,
scene_status smallint DEFAULT 0 NOT NULL,
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,
block_strategy smallint DEFAULT 1 NOT NULL,
cb_status smallint DEFAULT 0 NOT NULL,
cb_trigger_type smallint DEFAULT 1 NOT NULL,
cb_max_count number DEFAULT 16 NOT NULL,
cb_trigger_interval varchar2(16) DEFAULT '' NULL,
description varchar2(256) DEFAULT '' NULL,
create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL,
update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL
);
ALTER TABLE sj_retry_scene_config
@ -347,6 +345,11 @@ COMMENT ON COLUMN sj_retry_scene_config.notify_ids IS '通知告警场景配置i
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 '路由策略';
COMMENT ON COLUMN sj_retry_scene_config.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
COMMENT ON COLUMN sj_retry_scene_config.cb_status IS '回调状态 0、不开启 1、开启';
COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_type IS '1、默认等级 2、固定间隔时间 3、CRON 表达式';
COMMENT ON COLUMN sj_retry_scene_config.cb_max_count IS '回调的最大执行次数';
COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_interval IS '回调的最大执行次数';
COMMENT ON COLUMN sj_retry_scene_config.description IS '描述';
COMMENT ON COLUMN sj_retry_scene_config.create_dt IS '创建时间';
COMMENT ON COLUMN sj_retry_scene_config.update_dt IS '修改时间';
@ -538,11 +541,11 @@ COMMENT ON COLUMN sj_job.executor_type IS '执行器类型';
COMMENT ON COLUMN sj_job.executor_info IS '执行器名称';
COMMENT ON COLUMN sj_job.trigger_type IS '触发类型 1.CRON 表达式 2. 固定时间';
COMMENT ON COLUMN sj_job.trigger_interval IS '间隔时长';
COMMENT ON COLUMN sj_job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
COMMENT ON COLUMN sj_job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复';
COMMENT ON COLUMN sj_job.executor_timeout IS '任务执行超时时间,单位秒';
COMMENT ON COLUMN sj_job.max_retry_times IS '最大重试次数';
COMMENT ON COLUMN sj_job.parallel_num IS '并行数';
COMMENT ON COLUMN sj_job.retry_interval IS '重试间隔 ( s ) ';
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列表';
@ -721,7 +724,7 @@ CREATE INDEX idx_sj_job_summary_01 ON sj_job_summary (namespace_id, group_name,
COMMENT ON COLUMN sj_job_summary.id IS '主键';
COMMENT ON COLUMN sj_job_summary.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_job_summary.group_name IS '组名称';
COMMENT ON COLUMN sj_job_summary.business_id IS '业务id ( job_id或workflow_id ) ';
COMMENT ON COLUMN sj_job_summary.business_id IS '业务id ( job_id或workflow_id)';
COMMENT ON COLUMN sj_job_summary.system_task_type IS '任务类型 3、JOB任务 4、WORKFLOW任务';
COMMENT ON COLUMN sj_job_summary.trigger_at IS '统计时间';
COMMENT ON COLUMN sj_job_summary.success_num IS '执行成功-日志数量';

View File

@ -278,6 +278,7 @@ comment on column FLOW_USER.DEL_FLAG is '删除标志';
comment on column FLOW_USER.TENANT_ID is '租户id';
create index USER_PROCESSED_TYPE on FLOW_USER (PROCESSED_BY, TYPE);
create index USER_ASSOCIATED_IDX on FLOW_USER (ASSOCIATED);
-- ----------------------------
-- 流程分类表

View File

@ -2,7 +2,7 @@
SnailJob Database Transfer Tool
Source Server Type : MySQL
Target Server Type : PostgreSQL
Date: 2024-12-27 22:13:49
Date: 2025-02-25 22:15:32
*/
@ -45,7 +45,6 @@ CREATE TABLE sj_group_config
group_partition int NOT NULL,
id_generator_mode smallint NOT NULL DEFAULT 1,
init_scene smallint NOT NULL DEFAULT 0,
bucket_index int NOT NULL DEFAULT 0,
create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
@ -62,13 +61,12 @@ COMMENT ON COLUMN sj_group_config.version IS '版本号';
COMMENT ON COLUMN sj_group_config.group_partition IS '分区';
COMMENT ON COLUMN sj_group_config.id_generator_mode IS '唯一id生成模式 默认号段模式';
COMMENT ON COLUMN sj_group_config.init_scene IS '是否初始化场景 0:否 1:是';
COMMENT ON COLUMN sj_group_config.bucket_index IS 'bucket';
COMMENT ON COLUMN sj_group_config.create_dt IS '创建时间';
COMMENT ON COLUMN sj_group_config.update_dt IS '修改时间';
COMMENT ON TABLE sj_group_config IS '组配置';
INSERT INTO sj_group_config VALUES (1, 'dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now());
INSERT INTO sj_group_config VALUES (2, 'prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now());
INSERT INTO sj_group_config VALUES (1, 'dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, now(), now());
INSERT INTO sj_group_config VALUES (2, 'prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, now(), now());
-- sj_notify_config
CREATE TABLE sj_notify_config
@ -132,12 +130,11 @@ COMMENT ON COLUMN sj_notify_recipient.create_dt IS '创建时间';
COMMENT ON COLUMN sj_notify_recipient.update_dt IS '修改时间';
COMMENT ON TABLE sj_notify_recipient IS '告警通知接收人';
-- sj_retry_dead_letter_0
CREATE TABLE sj_retry_dead_letter_0
-- sj_retry_dead_letter
CREATE TABLE sj_retry_dead_letter
(
id bigserial PRIMARY KEY,
namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
unique_id varchar(64) NOT NULL,
group_name varchar(64) NOT NULL,
scene_name varchar(64) NOT NULL,
idempotent_id varchar(64) NOT NULL,
@ -145,37 +142,31 @@ CREATE TABLE sj_retry_dead_letter_0
executor_name varchar(512) NOT NULL DEFAULT '',
args_str text NOT NULL,
ext_attrs text NOT NULL,
task_type smallint NOT NULL DEFAULT 1,
create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE UNIQUE INDEX uk_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, unique_id);
CREATE INDEX idx_sj_retry_dead_letter_01 ON sj_retry_dead_letter (namespace_id, group_name, scene_name);
CREATE INDEX idx_sj_retry_dead_letter_02 ON sj_retry_dead_letter (idempotent_id);
CREATE INDEX idx_sj_retry_dead_letter_03 ON sj_retry_dead_letter (biz_no);
CREATE INDEX idx_sj_retry_dead_letter_04 ON sj_retry_dead_letter (create_dt);
CREATE INDEX idx_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, scene_name);
CREATE INDEX idx_sj_retry_dead_letter_0_02 ON sj_retry_dead_letter_0 (idempotent_id);
CREATE INDEX idx_sj_retry_dead_letter_0_03 ON sj_retry_dead_letter_0 (biz_no);
CREATE INDEX idx_sj_retry_dead_letter_0_04 ON sj_retry_dead_letter_0 (create_dt);
COMMENT ON COLUMN sj_retry_dead_letter.id IS '主键';
COMMENT ON COLUMN sj_retry_dead_letter.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_dead_letter.group_name IS '组名称';
COMMENT ON COLUMN sj_retry_dead_letter.scene_name IS '场景名称';
COMMENT ON COLUMN sj_retry_dead_letter.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry_dead_letter.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry_dead_letter.executor_name IS '执行器名称';
COMMENT ON COLUMN sj_retry_dead_letter.args_str IS '执行方法参数';
COMMENT ON COLUMN sj_retry_dead_letter.ext_attrs IS '扩展字段';
COMMENT ON COLUMN sj_retry_dead_letter.create_dt IS '创建时间';
COMMENT ON TABLE sj_retry_dead_letter IS '死信队列表';
COMMENT ON COLUMN sj_retry_dead_letter_0.id IS '主键';
COMMENT ON COLUMN sj_retry_dead_letter_0.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_dead_letter_0.unique_id IS '同组下id唯一';
COMMENT ON COLUMN sj_retry_dead_letter_0.group_name IS '组名称';
COMMENT ON COLUMN sj_retry_dead_letter_0.scene_name IS '场景名称';
COMMENT ON COLUMN sj_retry_dead_letter_0.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry_dead_letter_0.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry_dead_letter_0.executor_name IS '执行器名称';
COMMENT ON COLUMN sj_retry_dead_letter_0.args_str IS '执行方法参数';
COMMENT ON COLUMN sj_retry_dead_letter_0.ext_attrs IS '扩展字段';
COMMENT ON COLUMN sj_retry_dead_letter_0.task_type IS '任务类型 1、重试数据 2、回调数据';
COMMENT ON COLUMN sj_retry_dead_letter_0.create_dt IS '创建时间';
COMMENT ON TABLE sj_retry_dead_letter_0 IS '死信队列表';
-- sj_retry_task_0
CREATE TABLE sj_retry_task_0
-- sj_retry
CREATE TABLE sj_retry
(
id bigserial PRIMARY KEY,
namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
unique_id varchar(64) NOT NULL,
group_name varchar(64) NOT NULL,
scene_name varchar(64) NOT NULL,
idempotent_id varchar(64) NOT NULL,
@ -183,103 +174,104 @@ CREATE TABLE sj_retry_task_0
executor_name varchar(512) NOT NULL DEFAULT '',
args_str text NOT NULL,
ext_attrs text NOT NULL,
next_trigger_at timestamp NOT NULL,
next_trigger_at bigint NOT NULL,
retry_count int NOT NULL DEFAULT 0,
retry_status smallint NOT NULL DEFAULT 0,
task_type smallint NOT NULL DEFAULT 1,
bucket_index int NOT NULL DEFAULT 0,
parent_id bigint NOT NULL DEFAULT 0,
deleted bigint NOT NULL DEFAULT 0,
create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE UNIQUE INDEX uk_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, unique_id);
CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (namespace_id, group_name, task_type, idempotent_id, deleted);
CREATE INDEX idx_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, scene_name);
CREATE INDEX idx_sj_retry_task_0_02 ON sj_retry_task_0 (namespace_id, group_name, task_type);
CREATE INDEX idx_sj_retry_task_0_03 ON sj_retry_task_0 (namespace_id, group_name, retry_status);
CREATE INDEX idx_sj_retry_task_0_04 ON sj_retry_task_0 (idempotent_id);
CREATE INDEX idx_sj_retry_task_0_05 ON sj_retry_task_0 (biz_no);
CREATE INDEX idx_sj_retry_task_0_06 ON sj_retry_task_0 (create_dt);
CREATE INDEX idx_sj_retry_01 ON sj_retry (namespace_id, group_name, scene_name);
CREATE INDEX idx_sj_retry_02 ON sj_retry (namespace_id, group_name, retry_status);
CREATE INDEX idx_sj_retry_03 ON sj_retry (idempotent_id);
CREATE INDEX idx_sj_retry_04 ON sj_retry (biz_no);
CREATE INDEX idx_sj_retry_05 ON sj_retry (parent_id);
CREATE INDEX idx_sj_retry_06 ON sj_retry (create_dt);
COMMENT ON COLUMN sj_retry_task_0.id IS '主键';
COMMENT ON COLUMN sj_retry_task_0.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_task_0.unique_id IS '同组下id唯一';
COMMENT ON COLUMN sj_retry_task_0.group_name IS '组名称';
COMMENT ON COLUMN sj_retry_task_0.scene_name IS '场景名称';
COMMENT ON COLUMN sj_retry_task_0.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry_task_0.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry_task_0.executor_name IS '执行器名称';
COMMENT ON COLUMN sj_retry_task_0.args_str IS '执行方法参数';
COMMENT ON COLUMN sj_retry_task_0.ext_attrs IS '扩展字段';
COMMENT ON COLUMN sj_retry_task_0.next_trigger_at IS '下次触发时间';
COMMENT ON COLUMN sj_retry_task_0.retry_count IS '重试次数';
COMMENT ON COLUMN sj_retry_task_0.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数';
COMMENT ON COLUMN sj_retry_task_0.task_type IS '任务类型 1、重试数据 2、回调数据';
COMMENT ON COLUMN sj_retry_task_0.create_dt IS '创建时间';
COMMENT ON COLUMN sj_retry_task_0.update_dt IS '修改时间';
COMMENT ON TABLE sj_retry_task_0 IS '任务表';
COMMENT ON COLUMN sj_retry.id IS '主键';
COMMENT ON COLUMN sj_retry.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry.group_name IS '组名称';
COMMENT ON COLUMN sj_retry.scene_name IS '场景名称';
COMMENT ON COLUMN sj_retry.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry.executor_name IS '执行器名称';
COMMENT ON COLUMN sj_retry.args_str IS '执行方法参数';
COMMENT ON COLUMN sj_retry.ext_attrs IS '扩展字段';
COMMENT ON COLUMN sj_retry.next_trigger_at IS '下次触发时间';
COMMENT ON COLUMN sj_retry.retry_count IS '重试次数';
COMMENT ON COLUMN sj_retry.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数';
COMMENT ON COLUMN sj_retry.task_type IS '任务类型 1、重试数据 2、回调数据';
COMMENT ON COLUMN sj_retry.bucket_index IS 'bucket';
COMMENT ON COLUMN sj_retry.parent_id IS '父节点id';
COMMENT ON COLUMN sj_retry.deleted IS '逻辑删除';
COMMENT ON COLUMN sj_retry.create_dt IS '创建时间';
COMMENT ON COLUMN sj_retry.update_dt IS '修改时间';
COMMENT ON TABLE sj_retry IS '重试信息表';
-- sj_retry_task_log
CREATE TABLE sj_retry_task_log
-- sj_retry_task
CREATE TABLE sj_retry_task
(
id bigserial PRIMARY KEY,
namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
unique_id varchar(64) NOT NULL,
group_name varchar(64) NOT NULL,
scene_name varchar(64) NOT NULL,
idempotent_id varchar(64) NOT NULL,
biz_no varchar(64) NOT NULL DEFAULT '',
executor_name varchar(512) NOT NULL DEFAULT '',
args_str text NOT NULL,
ext_attrs text NOT NULL,
retry_status smallint NOT NULL DEFAULT 0,
task_type smallint NOT NULL DEFAULT 1,
create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
id bigserial PRIMARY KEY,
namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
group_name varchar(64) NOT NULL,
scene_name varchar(64) NOT NULL,
retry_id bigint NOT NULL,
ext_attrs text NOT NULL,
task_status smallint NOT NULL DEFAULT 1,
task_type smallint NOT NULL DEFAULT 1,
operation_reason smallint NOT NULL DEFAULT 0,
client_info varchar(128) NULL DEFAULT NULL,
create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_sj_retry_task_log_01 ON sj_retry_task_log (namespace_id, group_name, scene_name);
CREATE INDEX idx_sj_retry_task_log_02 ON sj_retry_task_log (retry_status);
CREATE INDEX idx_sj_retry_task_log_03 ON sj_retry_task_log (idempotent_id);
CREATE INDEX idx_sj_retry_task_log_04 ON sj_retry_task_log (unique_id);
CREATE INDEX idx_sj_retry_task_log_05 ON sj_retry_task_log (biz_no);
CREATE INDEX idx_sj_retry_task_log_06 ON sj_retry_task_log (create_dt);
CREATE INDEX idx_sj_retry_task_01 ON sj_retry_task (namespace_id, group_name, scene_name);
CREATE INDEX idx_sj_retry_task_02 ON sj_retry_task (task_status);
CREATE INDEX idx_sj_retry_task_03 ON sj_retry_task (create_dt);
CREATE INDEX idx_sj_retry_task_04 ON sj_retry_task (retry_id);
COMMENT ON COLUMN sj_retry_task_log.id IS '主键';
COMMENT ON COLUMN sj_retry_task_log.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_task_log.unique_id IS '同组下id唯一';
COMMENT ON COLUMN sj_retry_task_log.group_name IS '组名称';
COMMENT ON COLUMN sj_retry_task_log.scene_name IS '场景名称';
COMMENT ON COLUMN sj_retry_task_log.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry_task_log.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry_task_log.executor_name IS '执行器名称';
COMMENT ON COLUMN sj_retry_task_log.args_str IS '执行方法参数';
COMMENT ON COLUMN sj_retry_task_log.ext_attrs IS '扩展字段';
COMMENT ON COLUMN sj_retry_task_log.retry_status IS '重试状态 0、重试中 1、成功 2、最大次数';
COMMENT ON COLUMN sj_retry_task_log.task_type IS '任务类型 1、重试数据 2、回调数据';
COMMENT ON COLUMN sj_retry_task_log.create_dt IS '创建时间';
COMMENT ON COLUMN sj_retry_task_log.update_dt IS '修改时间';
COMMENT ON TABLE sj_retry_task_log IS '任务日志基础信息表';
COMMENT ON COLUMN sj_retry_task.id IS '主键';
COMMENT ON COLUMN sj_retry_task.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_task.group_name IS '组名称';
COMMENT ON COLUMN sj_retry_task.scene_name IS '场景名称';
COMMENT ON COLUMN sj_retry_task.retry_id IS '重试信息Id';
COMMENT ON COLUMN sj_retry_task.ext_attrs IS '扩展字段';
COMMENT ON COLUMN sj_retry_task.task_status IS '重试状态';
COMMENT ON COLUMN sj_retry_task.task_type IS '任务类型 1、重试数据 2、回调数据';
COMMENT ON COLUMN sj_retry_task.operation_reason IS '操作原因';
COMMENT ON COLUMN sj_retry_task.client_info IS '客户端地址 clientId#ip:port';
COMMENT ON COLUMN sj_retry_task.create_dt IS '创建时间';
COMMENT ON COLUMN sj_retry_task.update_dt IS '修改时间';
COMMENT ON TABLE sj_retry_task IS '重试任务表';
-- sj_retry_task_log_message
CREATE TABLE sj_retry_task_log_message
(
id bigserial PRIMARY KEY,
namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
group_name varchar(64) NOT NULL,
unique_id varchar(64) NOT NULL,
message text NOT NULL,
log_num int NOT NULL DEFAULT 1,
real_time bigint NOT NULL DEFAULT 0,
create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
id bigserial PRIMARY KEY,
namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
group_name varchar(64) NOT NULL,
retry_id bigint NOT NULL,
retry_task_id bigint NOT NULL,
message text NOT NULL,
log_num int NOT NULL DEFAULT 1,
real_time bigint NOT NULL DEFAULT 0,
create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, unique_id);
CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, retry_task_id);
CREATE INDEX idx_sj_retry_task_log_message_02 ON sj_retry_task_log_message (create_dt);
COMMENT ON COLUMN sj_retry_task_log_message.id IS '主键';
COMMENT ON COLUMN sj_retry_task_log_message.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_task_log_message.group_name IS '组名称';
COMMENT ON COLUMN sj_retry_task_log_message.unique_id IS '同组下id唯一';
COMMENT ON COLUMN sj_retry_task_log_message.retry_id IS '重试信息Id';
COMMENT ON COLUMN sj_retry_task_log_message.retry_task_id IS '重试任务Id';
COMMENT ON COLUMN sj_retry_task_log_message.message IS '异常信息';
COMMENT ON COLUMN sj_retry_task_log_message.log_num IS '日志数量';
COMMENT ON COLUMN sj_retry_task_log_message.real_time IS '上报时间';
@ -289,21 +281,26 @@ COMMENT ON TABLE sj_retry_task_log_message IS '任务调度日志信息记录表
-- sj_retry_scene_config
CREATE TABLE sj_retry_scene_config
(
id bigserial PRIMARY KEY,
namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
scene_name varchar(64) NOT NULL,
group_name varchar(64) NOT NULL,
scene_status smallint NOT NULL DEFAULT 0,
max_retry_count int NOT NULL DEFAULT 5,
back_off smallint NOT NULL DEFAULT 1,
trigger_interval varchar(16) NOT NULL DEFAULT '',
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,
description varchar(256) NOT NULL DEFAULT '',
create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
id bigserial PRIMARY KEY,
namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
scene_name varchar(64) NOT NULL,
group_name varchar(64) NOT NULL,
scene_status smallint NOT NULL DEFAULT 0,
max_retry_count int NOT NULL DEFAULT 5,
back_off smallint NOT NULL DEFAULT 1,
trigger_interval varchar(16) NOT NULL DEFAULT '',
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,
block_strategy smallint NOT NULL DEFAULT 1,
cb_status smallint NOT NULL DEFAULT 0,
cb_trigger_type smallint NOT NULL DEFAULT 1,
cb_max_count int NOT NULL DEFAULT 16,
cb_trigger_interval varchar(16) NOT NULL DEFAULT '',
description varchar(256) NOT NULL DEFAULT '',
create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE UNIQUE INDEX uk_sj_retry_scene_config_01 ON sj_retry_scene_config (namespace_id, group_name, scene_name);
@ -320,6 +317,11 @@ COMMENT ON COLUMN sj_retry_scene_config.notify_ids IS '通知告警场景配置i
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 '路由策略';
COMMENT ON COLUMN sj_retry_scene_config.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
COMMENT ON COLUMN sj_retry_scene_config.cb_status IS '回调状态 0、不开启 1、开启';
COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_type IS '1、默认等级 2、固定间隔时间 3、CRON 表达式';
COMMENT ON COLUMN sj_retry_scene_config.cb_max_count IS '回调的最大执行次数';
COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_interval IS '回调的最大执行次数';
COMMENT ON COLUMN sj_retry_scene_config.description IS '描述';
COMMENT ON COLUMN sj_retry_scene_config.create_dt IS '创建时间';
COMMENT ON COLUMN sj_retry_scene_config.update_dt IS '修改时间';
@ -362,7 +364,7 @@ COMMENT ON TABLE sj_server_node IS '服务器节点';
-- sj_distributed_lock
CREATE TABLE sj_distributed_lock
(
name varchar(64) PRIMARY KEY,
name varchar(64) NOT NULL,
lock_until timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
locked_at timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
locked_by varchar(255) NOT NULL,
@ -493,11 +495,11 @@ COMMENT ON COLUMN sj_job.executor_type IS '执行器类型';
COMMENT ON COLUMN sj_job.executor_info IS '执行器名称';
COMMENT ON COLUMN sj_job.trigger_type IS '触发类型 1.CRON 表达式 2. 固定时间';
COMMENT ON COLUMN sj_job.trigger_interval IS '间隔时长';
COMMENT ON COLUMN sj_job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
COMMENT ON COLUMN sj_job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复';
COMMENT ON COLUMN sj_job.executor_timeout IS '任务执行超时时间,单位秒';
COMMENT ON COLUMN sj_job.max_retry_times IS '最大重试次数';
COMMENT ON COLUMN sj_job.parallel_num IS '并行数';
COMMENT ON COLUMN sj_job.retry_interval IS '重试间隔 ( s ) ';
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列表';
@ -664,7 +666,7 @@ CREATE INDEX idx_sj_job_summary_01 ON sj_job_summary (namespace_id, group_name,
COMMENT ON COLUMN sj_job_summary.id IS '主键';
COMMENT ON COLUMN sj_job_summary.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_job_summary.group_name IS '组名称';
COMMENT ON COLUMN sj_job_summary.business_id IS '业务id ( job_id或workflow_id ) ';
COMMENT ON COLUMN sj_job_summary.business_id IS '业务id ( job_id或workflow_id)';
COMMENT ON COLUMN sj_job_summary.system_task_type IS '任务类型 3、JOB任务 4、WORKFLOW任务';
COMMENT ON COLUMN sj_job_summary.trigger_at IS '统计时间';
COMMENT ON COLUMN sj_job_summary.success_num IS '执行成功-日志数量';

View File

@ -262,6 +262,8 @@ CREATE TABLE flow_user
CONSTRAINT flow_user_pk PRIMARY KEY (id)
);
CREATE INDEX user_processed_type ON flow_user USING btree (processed_by, type);
CREATE INDEX user_associated_idx ON FLOW_USER USING btree (associated);
COMMENT ON TABLE flow_user IS '流程用户表';
COMMENT ON COLUMN flow_user.id IS '主键id';

View File

@ -30,7 +30,6 @@ CREATE TABLE `sj_group_config`
`group_partition` int(11) NOT NULL COMMENT '分区',
`id_generator_mode` tinyint(4) NOT NULL DEFAULT 1 COMMENT '唯一id生成模式 默认号段模式',
`init_scene` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否初始化场景 0:否 1:是',
`bucket_index` int(11) NOT NULL DEFAULT 0 COMMENT 'bucket',
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
@ -39,8 +38,8 @@ CREATE TABLE `sj_group_config`
AUTO_INCREMENT = 0
DEFAULT CHARSET = utf8mb4 COMMENT ='组配置';
INSERT INTO `sj_group_config` VALUES (1, 'dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now());
INSERT INTO `sj_group_config` VALUES (2, 'prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now());
INSERT INTO `sj_group_config` VALUES (1, 'dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, now(), now());
INSERT INTO `sj_group_config` VALUES (2, 'prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, now(), now());
CREATE TABLE `sj_notify_config`
(
@ -80,11 +79,10 @@ CREATE TABLE `sj_notify_recipient`
AUTO_INCREMENT = 0
DEFAULT CHARSET = utf8mb4 COMMENT ='告警通知接收人';
CREATE TABLE `sj_retry_dead_letter_0`
CREATE TABLE `sj_retry_dead_letter`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
`idempotent_id` varchar(64) NOT NULL COMMENT '幂等id',
@ -92,23 +90,20 @@ CREATE TABLE `sj_retry_dead_letter_0`
`executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称',
`args_str` text NOT NULL COMMENT '执行方法参数',
`ext_attrs` text NOT NULL COMMENT '扩展字段',
`task_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据',
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
KEY `idx_idempotent_id` (`idempotent_id`),
KEY `idx_biz_no` (`biz_no`),
KEY `idx_create_dt` (`create_dt`),
UNIQUE KEY `uk_namespace_id_group_name_unique_id` (`namespace_id`, `group_name`, `unique_id`)
KEY `idx_create_dt` (`create_dt`)
) ENGINE = InnoDB
AUTO_INCREMENT = 0
DEFAULT CHARSET = utf8mb4 COMMENT ='死信队列表';
CREATE TABLE `sj_retry_task_0`
CREATE TABLE `sj_retry`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
`idempotent_id` varchar(64) NOT NULL COMMENT '幂等id',
@ -116,63 +111,63 @@ CREATE TABLE `sj_retry_task_0`
`executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称',
`args_str` text NOT NULL COMMENT '执行方法参数',
`ext_attrs` text NOT NULL COMMENT '扩展字段',
`next_trigger_at` datetime NOT NULL COMMENT '下次触发时间',
`next_trigger_at` bigint(13) NOT NULL COMMENT '下次触发时间',
`retry_count` int(11) NOT NULL DEFAULT 0 COMMENT '重试次数',
`retry_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '重试状态 0、重试中 1、成功 2、最大重试次数',
`task_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据',
`bucket_index` int(11) NOT NULL DEFAULT 0 COMMENT 'bucket',
`parent_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '父节点id',
`deleted` bigint(20) NOT NULL DEFAULT 0 COMMENT '逻辑删除',
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
KEY `idx_namespace_id_group_name_task_type` (`namespace_id`, `group_name`, `task_type`),
KEY `idx_namespace_id_group_name_retry_status` (`namespace_id`, `group_name`, `retry_status`),
KEY `idx_idempotent_id` (`idempotent_id`),
KEY `idx_biz_no` (`biz_no`),
KEY `idx_parent_id` (`parent_id`),
KEY `idx_create_dt` (`create_dt`),
UNIQUE KEY `uk_name_unique_id` (`namespace_id`, `group_name`, `unique_id`)
UNIQUE KEY `uk_name_task_type_idempotent_id_deleted` (`namespace_id`, `group_name`, `task_type`, `idempotent_id`, `deleted`)
) ENGINE = InnoDB
AUTO_INCREMENT = 0
DEFAULT CHARSET = utf8mb4 COMMENT ='任务';
DEFAULT CHARSET = utf8mb4 COMMENT ='重试信息';
CREATE TABLE `sj_retry_task_log`
CREATE TABLE `sj_retry_task`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
`idempotent_id` varchar(64) NOT NULL COMMENT '幂等id',
`biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号',
`executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称',
`args_str` text NOT NULL COMMENT '执行方法参数',
`ext_attrs` text NOT NULL COMMENT '扩展字段',
`retry_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '重试状态 0、重试中 1、成功 2、最大次数',
`task_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据',
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
`retry_id` bigint(20) NOT NULL COMMENT '重试信息Id',
`ext_attrs` text NOT NULL COMMENT '扩展字段',
`task_status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '重试状态',
`task_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据',
`operation_reason` tinyint(4) NOT NULL DEFAULT 0 COMMENT '操作原因',
`client_info` varchar(128) DEFAULT NULL COMMENT '客户端地址 clientId#ip:port',
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
KEY `idx_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
KEY `idx_retry_status` (`retry_status`),
KEY `idx_idempotent_id` (`idempotent_id`),
KEY `idx_unique_id` (`unique_id`),
KEY `idx_biz_no` (`biz_no`),
KEY `idx_create_dt` (`create_dt`)
KEY `task_status` (`task_status`),
KEY `idx_create_dt` (`create_dt`),
KEY `idx_retry_id` (`retry_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 0
DEFAULT CHARSET = utf8mb4 COMMENT ='任务日志基础信息';
DEFAULT CHARSET = utf8mb4 COMMENT ='重试任务表';
CREATE TABLE `sj_retry_task_log_message`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
`message` longtext NOT NULL COMMENT '异常信息',
`log_num` int(11) NOT NULL DEFAULT 1 COMMENT '日志数量',
`real_time` bigint(13) NOT NULL DEFAULT 0 COMMENT '上报时间',
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`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 '组名称',
`retry_id` bigint(20) NOT NULL COMMENT '重试信息Id',
`retry_task_id` bigint(20) NOT NULL COMMENT '重试任务Id',
`message` longtext NOT NULL COMMENT '异常信息',
`log_num` int(11) NOT NULL DEFAULT 1 COMMENT '日志数量',
`real_time` bigint(13) NOT NULL DEFAULT 0 COMMENT '上报时间',
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `unique_id`),
KEY `idx_namespace_id_group_name_retry_task_id` (`namespace_id`, `group_name`, `retry_task_id`),
KEY `idx_create_dt` (`create_dt`)
) ENGINE = InnoDB
AUTO_INCREMENT = 0
@ -180,21 +175,26 @@ CREATE TABLE `sj_retry_task_log_message`
CREATE TABLE `sj_retry_scene_config`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`scene_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '组状态 0、未启用 1、启用',
`max_retry_count` int(11) NOT NULL DEFAULT 5 COMMENT '最大重试次数',
`back_off` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式',
`trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '间隔时长',
`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 '路由策略',
`description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述',
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`scene_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '组状态 0、未启用 1、启用',
`max_retry_count` int(11) NOT NULL DEFAULT 5 COMMENT '最大重试次数',
`back_off` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式',
`trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '间隔时长',
`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 '路由策略',
`block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行',
`cb_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '回调状态 0、不开启 1、开启',
`cb_trigger_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式',
`cb_max_count` int(11) NOT NULL DEFAULT 16 COMMENT '回调的最大执行次数',
`cb_trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '回调的最大执行次数',
`description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述',
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`)
) ENGINE = InnoDB
@ -249,7 +249,8 @@ CREATE TABLE `sj_system_user`
DEFAULT CHARSET = utf8mb4 COMMENT ='系统用户表';
-- pwd: admin
INSERT INTO `sj_system_user` VALUES (1, 'admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2, now(), now());
INSERT INTO `sj_system_user` (username, password, role)
VALUES ('admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2);
CREATE TABLE `sj_system_user_permission`
(
@ -294,7 +295,7 @@ CREATE TABLE `sj_job`
`executor_info` varchar(255) DEFAULT NULL COMMENT '执行器名称',
`trigger_type` tinyint(4) NOT NULL COMMENT '触发类型 1.CRON 表达式 2. 固定时间',
`trigger_interval` varchar(255) NOT NULL COMMENT '间隔时长',
`block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行',
`block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复',
`executor_timeout` int(11) NOT NULL DEFAULT 0 COMMENT '任务执行超时时间,单位秒',
`max_retry_times` int(11) NOT NULL DEFAULT 0 COMMENT '最大重试次数',
`parallel_num` int(11) NOT NULL DEFAULT 1 COMMENT '并行数',
@ -448,7 +449,7 @@ CREATE TABLE `sj_workflow`
`workflow_status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '工作流状态 0、关闭、1、开启',
`trigger_type` tinyint(4) NOT NULL COMMENT '触发类型 1.CRON 表达式 2. 固定时间',
`trigger_interval` varchar(255) NOT NULL COMMENT '间隔时长',
`next_trigger_at` bigint(13) NOT NULL COMMENT '下次触发时间',
`next_trigger_at` bigint NOT NULL COMMENT '下次触发时间',
`block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行',
`executor_timeout` int(11) NOT NULL DEFAULT 0 COMMENT '任务执行超时时间,单位秒',
`description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述',

View File

@ -146,7 +146,8 @@ CREATE TABLE `flow_user`
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
`tenant_id` varchar(40) DEFAULT NULL COMMENT '租户id',
PRIMARY KEY (`id`) USING BTREE,
KEY `user_processed_type` (`processed_by`, `type`)
KEY `user_processed_type` (`processed_by`, `type`),
KEY `user_associated` (`associated`) USING BTREE
) ENGINE = InnoDB COMMENT ='流程用户表';
-- ----------------------------

View File

@ -2,7 +2,7 @@
SnailJob Database Transfer Tool
Source Server Type : MySQL
Target Server Type : Microsoft SQL Server
Date: 2024-12-27 22:24:37
Date: 2025-02-25 22:16:48
*/
@ -95,7 +95,6 @@ CREATE TABLE sj_group_config
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 CURRENT_TIMESTAMP,
update_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP
)
@ -174,13 +173,6 @@ EXEC sp_addextendedproperty
'COLUMN', N'init_scene'
GO
EXEC sp_addextendedproperty
'MS_Description', N'bucket',
'SCHEMA', N'dbo',
'TABLE', N'sj_group_config',
'COLUMN', N'bucket_index'
GO
EXEC sp_addextendedproperty
'MS_Description', N'创建时间',
'SCHEMA', N'dbo',
@ -201,9 +193,9 @@ EXEC sp_addextendedproperty
'TABLE', N'sj_group_config'
GO
INSERT INTO sj_group_config(namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) VALUES (N'dev', N'ruoyi_group', N'', N'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', N'4', getdate(), getdate())
INSERT INTO sj_group_config(namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, create_dt, update_dt) VALUES (N'dev', N'ruoyi_group', N'', N'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', getdate(), getdate())
GO
INSERT INTO sj_group_config(namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) VALUES (N'prod', N'ruoyi_group', N'', N'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', N'4', getdate(), getdate())
INSERT INTO sj_group_config(namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, create_dt, update_dt) VALUES (N'prod', N'ruoyi_group', N'', N'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', getdate(), getdate())
GO
-- sj_notify_config
@ -412,12 +404,11 @@ EXEC sp_addextendedproperty
'TABLE', N'sj_notify_recipient'
GO
-- sj_retry_dead_letter_0
CREATE TABLE sj_retry_dead_letter_0
-- sj_retry_dead_letter
CREATE TABLE sj_retry_dead_letter
(
id bigint NOT NULL 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,
@ -425,119 +416,100 @@ CREATE TABLE sj_retry_dead_letter_0
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 CURRENT_TIMESTAMP
)
GO
CREATE UNIQUE INDEX uk_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, unique_id)
CREATE INDEX idx_sj_retry_dead_letter_01 ON sj_retry_dead_letter (namespace_id, group_name, scene_name)
GO
CREATE INDEX idx_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, scene_name)
CREATE INDEX idx_sj_retry_dead_letter_02 ON sj_retry_dead_letter (idempotent_id)
GO
CREATE INDEX idx_sj_retry_dead_letter_0_02 ON sj_retry_dead_letter_0 (idempotent_id)
CREATE INDEX idx_sj_retry_dead_letter_03 ON sj_retry_dead_letter (biz_no)
GO
CREATE INDEX idx_sj_retry_dead_letter_0_03 ON sj_retry_dead_letter_0 (biz_no)
GO
CREATE INDEX idx_sj_retry_dead_letter_0_04 ON sj_retry_dead_letter_0 (create_dt)
CREATE INDEX idx_sj_retry_dead_letter_04 ON sj_retry_dead_letter (create_dt)
GO
EXEC sp_addextendedproperty
'MS_Description', N'主键',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0',
'TABLE', N'sj_retry_dead_letter',
'COLUMN', N'id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'命名空间id',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0',
'TABLE', N'sj_retry_dead_letter',
'COLUMN', N'namespace_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'同组下id唯一',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0',
'COLUMN', N'unique_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'组名称',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0',
'TABLE', N'sj_retry_dead_letter',
'COLUMN', N'group_name'
GO
EXEC sp_addextendedproperty
'MS_Description', N'场景名称',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0',
'TABLE', N'sj_retry_dead_letter',
'COLUMN', N'scene_name'
GO
EXEC sp_addextendedproperty
'MS_Description', N'幂等id',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0',
'TABLE', N'sj_retry_dead_letter',
'COLUMN', N'idempotent_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'业务编号',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0',
'TABLE', N'sj_retry_dead_letter',
'COLUMN', N'biz_no'
GO
EXEC sp_addextendedproperty
'MS_Description', N'执行器名称',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0',
'TABLE', N'sj_retry_dead_letter',
'COLUMN', N'executor_name'
GO
EXEC sp_addextendedproperty
'MS_Description', N'执行方法参数',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0',
'TABLE', N'sj_retry_dead_letter',
'COLUMN', N'args_str'
GO
EXEC sp_addextendedproperty
'MS_Description', N'扩展字段',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0',
'TABLE', N'sj_retry_dead_letter',
'COLUMN', N'ext_attrs'
GO
EXEC sp_addextendedproperty
'MS_Description', N'任务类型 1、重试数据 2、回调数据',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0',
'COLUMN', N'task_type'
GO
EXEC sp_addextendedproperty
'MS_Description', N'创建时间',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0',
'TABLE', N'sj_retry_dead_letter',
'COLUMN', N'create_dt'
GO
EXEC sp_addextendedproperty
'MS_Description', N'死信队列表',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_dead_letter_0'
'TABLE', N'sj_retry_dead_letter'
GO
-- sj_retry_task_0
CREATE TABLE sj_retry_task_0
-- sj_retry
CREATE TABLE sj_retry
(
id bigint NOT NULL 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,
@ -545,301 +517,299 @@ CREATE TABLE sj_retry_task_0
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,
next_trigger_at bigint NOT NULL,
retry_count int NOT NULL DEFAULT 0,
retry_status tinyint NOT NULL DEFAULT 0,
task_type tinyint NOT NULL DEFAULT 1,
bucket_index int NOT NULL DEFAULT 0,
parent_id bigint NOT NULL DEFAULT 0,
deleted bigint NOT NULL DEFAULT 0,
create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP
)
GO
CREATE UNIQUE INDEX uk_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, unique_id)
CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (namespace_id, group_name, task_type, idempotent_id, deleted)
GO
CREATE INDEX idx_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, scene_name)
CREATE INDEX idx_sj_retry_01 ON sj_retry (namespace_id, group_name, scene_name)
GO
CREATE INDEX idx_sj_retry_task_0_02 ON sj_retry_task_0 (namespace_id, group_name, task_type)
CREATE INDEX idx_sj_retry_02 ON sj_retry (namespace_id, group_name, retry_status)
GO
CREATE INDEX idx_sj_retry_task_0_03 ON sj_retry_task_0 (namespace_id, group_name, retry_status)
CREATE INDEX idx_sj_retry_03 ON sj_retry (idempotent_id)
GO
CREATE INDEX idx_sj_retry_task_0_04 ON sj_retry_task_0 (idempotent_id)
CREATE INDEX idx_sj_retry_04 ON sj_retry (biz_no)
GO
CREATE INDEX idx_sj_retry_task_0_05 ON sj_retry_task_0 (biz_no)
CREATE INDEX idx_sj_retry_05 ON sj_retry (parent_id)
GO
CREATE INDEX idx_sj_retry_task_0_06 ON sj_retry_task_0 (create_dt)
CREATE INDEX idx_sj_retry_06 ON sj_retry (create_dt)
GO
EXEC sp_addextendedproperty
'MS_Description', N'主键',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'命名空间id',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'namespace_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'同组下id唯一',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'COLUMN', N'unique_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'组名称',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'group_name'
GO
EXEC sp_addextendedproperty
'MS_Description', N'场景名称',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'scene_name'
GO
EXEC sp_addextendedproperty
'MS_Description', N'幂等id',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'idempotent_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'业务编号',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'biz_no'
GO
EXEC sp_addextendedproperty
'MS_Description', N'执行器名称',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'executor_name'
GO
EXEC sp_addextendedproperty
'MS_Description', N'执行方法参数',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'args_str'
GO
EXEC sp_addextendedproperty
'MS_Description', N'扩展字段',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'ext_attrs'
GO
EXEC sp_addextendedproperty
'MS_Description', N'下次触发时间',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'next_trigger_at'
GO
EXEC sp_addextendedproperty
'MS_Description', N'重试次数',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'retry_count'
GO
EXEC sp_addextendedproperty
'MS_Description', N'重试状态 0、重试中 1、成功 2、最大重试次数',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'retry_status'
GO
EXEC sp_addextendedproperty
'MS_Description', N'任务类型 1、重试数据 2、回调数据',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'task_type'
GO
EXEC sp_addextendedproperty
'MS_Description', N'bucket',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry',
'COLUMN', N'bucket_index'
GO
EXEC sp_addextendedproperty
'MS_Description', N'父节点id',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry',
'COLUMN', N'parent_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'逻辑删除',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry',
'COLUMN', N'deleted'
GO
EXEC sp_addextendedproperty
'MS_Description', N'创建时间',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'create_dt'
GO
EXEC sp_addextendedproperty
'MS_Description', N'修改时间',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0',
'TABLE', N'sj_retry',
'COLUMN', N'update_dt'
GO
EXEC sp_addextendedproperty
'MS_Description', N'任务表',
'MS_Description', N'重试信息',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_0'
'TABLE', N'sj_retry'
GO
-- sj_retry_task_log
CREATE TABLE sj_retry_task_log
-- sj_retry_task
CREATE TABLE sj_retry_task
(
id bigint NOT NULL 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 CURRENT_TIMESTAMP,
update_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP
id bigint NOT NULL PRIMARY KEY IDENTITY,
namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
group_name nvarchar(64) NOT NULL,
scene_name nvarchar(64) NOT NULL,
retry_id bigint NOT NULL,
ext_attrs nvarchar(max) NOT NULL,
task_status tinyint NOT NULL DEFAULT 1,
task_type tinyint NOT NULL DEFAULT 1,
operation_reason tinyint NOT NULL DEFAULT 0,
client_info nvarchar(128) NULL DEFAULT NULL,
create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP
)
GO
CREATE INDEX idx_sj_retry_task_log_01 ON sj_retry_task_log (namespace_id, group_name, scene_name)
CREATE INDEX idx_sj_retry_task_01 ON sj_retry_task (namespace_id, group_name, scene_name)
GO
CREATE INDEX idx_sj_retry_task_log_02 ON sj_retry_task_log (retry_status)
CREATE INDEX idx_sj_retry_task_02 ON sj_retry_task (task_status)
GO
CREATE INDEX idx_sj_retry_task_log_03 ON sj_retry_task_log (idempotent_id)
CREATE INDEX idx_sj_retry_task_03 ON sj_retry_task (create_dt)
GO
CREATE INDEX idx_sj_retry_task_log_04 ON sj_retry_task_log (unique_id)
GO
CREATE INDEX idx_sj_retry_task_log_05 ON sj_retry_task_log (biz_no)
GO
CREATE INDEX idx_sj_retry_task_log_06 ON sj_retry_task_log (create_dt)
CREATE INDEX idx_sj_retry_task_04 ON sj_retry_task (retry_id)
GO
EXEC sp_addextendedproperty
'MS_Description', N'主键',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'TABLE', N'sj_retry_task',
'COLUMN', N'id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'命名空间id',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'TABLE', N'sj_retry_task',
'COLUMN', N'namespace_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'同组下id唯一',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'COLUMN', N'unique_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'组名称',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'TABLE', N'sj_retry_task',
'COLUMN', N'group_name'
GO
EXEC sp_addextendedproperty
'MS_Description', N'场景名称',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'TABLE', N'sj_retry_task',
'COLUMN', N'scene_name'
GO
EXEC sp_addextendedproperty
'MS_Description', N'幂等id',
'MS_Description', N'重试信息Id',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'COLUMN', N'idempotent_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'业务编号',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'COLUMN', N'biz_no'
GO
EXEC sp_addextendedproperty
'MS_Description', N'执行器名称',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'COLUMN', N'executor_name'
GO
EXEC sp_addextendedproperty
'MS_Description', N'执行方法参数',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'COLUMN', N'args_str'
'TABLE', N'sj_retry_task',
'COLUMN', N'retry_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'扩展字段',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'TABLE', N'sj_retry_task',
'COLUMN', N'ext_attrs'
GO
EXEC sp_addextendedproperty
'MS_Description', N'重试状态 0、重试中 1、成功 2、最大次数',
'MS_Description', N'重试状态',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'COLUMN', N'retry_status'
'TABLE', N'sj_retry_task',
'COLUMN', N'task_status'
GO
EXEC sp_addextendedproperty
'MS_Description', N'任务类型 1、重试数据 2、回调数据',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'TABLE', N'sj_retry_task',
'COLUMN', N'task_type'
GO
EXEC sp_addextendedproperty
'MS_Description', N'操作原因',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task',
'COLUMN', N'operation_reason'
GO
EXEC sp_addextendedproperty
'MS_Description', N'客户端地址 clientId#ip:port',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task',
'COLUMN', N'client_info'
GO
EXEC sp_addextendedproperty
'MS_Description', N'创建时间',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'TABLE', N'sj_retry_task',
'COLUMN', N'create_dt'
GO
EXEC sp_addextendedproperty
'MS_Description', N'修改时间',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log',
'TABLE', N'sj_retry_task',
'COLUMN', N'update_dt'
GO
EXEC sp_addextendedproperty
'MS_Description', N'任务日志基础信息',
'MS_Description', N'重试任务表',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log'
'TABLE', N'sj_retry_task'
GO
-- sj_retry_task_log_message
CREATE TABLE sj_retry_task_log_message
(
id bigint NOT NULL PRIMARY KEY IDENTITY,
namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
group_name nvarchar(64) NOT NULL,
unique_id nvarchar(64) 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 CURRENT_TIMESTAMP
id bigint NOT NULL PRIMARY KEY IDENTITY,
namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
group_name nvarchar(64) NOT NULL,
retry_id bigint NOT NULL,
retry_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 CURRENT_TIMESTAMP
)
GO
CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, unique_id)
CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, retry_task_id)
GO
CREATE INDEX idx_sj_retry_task_log_message_02 ON sj_retry_task_log_message (create_dt)
GO
@ -866,10 +836,17 @@ EXEC sp_addextendedproperty
GO
EXEC sp_addextendedproperty
'MS_Description', N'同组下id唯一',
'MS_Description', N'重试信息Id',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log_message',
'COLUMN', N'unique_id'
'COLUMN', N'retry_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'重试任务Id',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_task_log_message',
'COLUMN', N'retry_task_id'
GO
EXEC sp_addextendedproperty
@ -909,21 +886,26 @@ GO
-- sj_retry_scene_config
CREATE TABLE sj_retry_scene_config
(
id bigint NOT NULL PRIMARY KEY 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 '',
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,
description nvarchar(256) NOT NULL DEFAULT '',
create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP
id bigint NOT NULL PRIMARY KEY 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 '',
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,
block_strategy tinyint NOT NULL DEFAULT 1,
cb_status tinyint NOT NULL DEFAULT 0,
cb_trigger_type tinyint NOT NULL DEFAULT 1,
cb_max_count int NOT NULL DEFAULT 16,
cb_trigger_interval nvarchar(16) NOT NULL DEFAULT '',
description nvarchar(256) NOT NULL DEFAULT '',
create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP
)
GO
@ -1014,6 +996,41 @@ EXEC sp_addextendedproperty
'COLUMN', N'route_key'
GO
EXEC sp_addextendedproperty
'MS_Description', N'阻塞策略 1、丢弃 2、覆盖 3、并行',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_scene_config',
'COLUMN', N'block_strategy'
GO
EXEC sp_addextendedproperty
'MS_Description', N'回调状态 0、不开启 1、开启',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_scene_config',
'COLUMN', N'cb_status'
GO
EXEC sp_addextendedproperty
'MS_Description', N'1、默认等级 2、固定间隔时间 3、CRON 表达式',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_scene_config',
'COLUMN', N'cb_trigger_type'
GO
EXEC sp_addextendedproperty
'MS_Description', N'回调的最大执行次数',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_scene_config',
'COLUMN', N'cb_max_count'
GO
EXEC sp_addextendedproperty
'MS_Description', N'回调的最大执行次数',
'SCHEMA', N'dbo',
'TABLE', N'sj_retry_scene_config',
'COLUMN', N'cb_trigger_interval'
GO
EXEC sp_addextendedproperty
'MS_Description', N'描述',
'SCHEMA', N'dbo',
@ -1152,7 +1169,7 @@ GO
-- sj_distributed_lock
CREATE TABLE sj_distributed_lock
(
name nvarchar(64) NOT NULL PRIMARY KEY,
name nvarchar(64) NOT NULL,
lock_until datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP,
locked_at datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP,
locked_by nvarchar(255) NOT NULL,
@ -1539,7 +1556,7 @@ EXEC sp_addextendedproperty
GO
EXEC sp_addextendedproperty
'MS_Description', N'阻塞策略 1、丢弃 2、覆盖 3、并行',
'MS_Description', N'阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复',
'SCHEMA', N'dbo',
'TABLE', N'sj_job',
'COLUMN', N'block_strategy'
@ -1567,7 +1584,7 @@ EXEC sp_addextendedproperty
GO
EXEC sp_addextendedproperty
'MS_Description', N'重试间隔 ( s ) ',
'MS_Description', N'重试间隔 ( s)',
'SCHEMA', N'dbo',
'TABLE', N'sj_job',
'COLUMN', N'retry_interval'
@ -2121,7 +2138,7 @@ EXEC sp_addextendedproperty
GO
EXEC sp_addextendedproperty
'MS_Description', N'业务id ( job_id或workflow_id ) ',
'MS_Description', N'业务id ( job_id或workflow_id)',
'SCHEMA', N'dbo',
'TABLE', N'sj_job_summary',
'COLUMN', N'business_id'

View File

@ -918,6 +918,8 @@ GO
CREATE NONCLUSTERED INDEX user_processed_type ON flow_user (processed_by ASC, type ASC)
GO
CREATE NONCLUSTERED INDEX user_associated_idx ON flow_user (associated ASC)
GO
EXEC sp_addextendedproperty
'MS_Description', N'主键id',

View File

@ -1,6 +1,7 @@
ALTER TABLE flow_node DROP COLUMN skip_any_node;
ALTER TABLE flow_node ADD (ext VARCHAR2(500));
COMMENT ON COLUMN flow_node.ext IS '扩展属性';
create index USER_ASSOCIATED_IDX on FLOW_USER (ASSOCIATED);
ALTER TABLE sys_oss ADD (ext1 VARCHAR2(500));
COMMENT ON COLUMN sys_oss.ext1 IS '扩展属性';

View File

@ -1,6 +1,7 @@
ALTER TABLE flow_node DROP COLUMN skip_any_node;
ALTER TABLE flow_node ADD COLUMN ext varchar(500);
COMMENT ON COLUMN flow_node.ext IS '扩展属性';
CREATE INDEX user_associated_idx ON FLOW_USER USING btree (associated);
ALTER TABLE sys_oss ADD COLUMN ext1 varchar(500));
COMMENT ON COLUMN sys_oss.ext1 IS '扩展属性';

View File

@ -8,6 +8,9 @@ EXEC sp_addextendedproperty
'COLUMN', N'ext'
GO
CREATE NONCLUSTERED INDEX user_associated_idx ON flow_user (associated ASC)
GO
ALTER TABLE sys_oss ADD ext1 nvarchar(500) NULL;
EXEC sp_addextendedproperty

View File

@ -1,6 +1,7 @@
ALTER TABLE `flow_node` DROP COLUMN `skip_any_node`;
ALTER TABLE `flow_node`
ADD COLUMN `ext` text NULL COMMENT '扩展属性' AFTER `update_time`;
ALTER TABLE `flow_user` ADD INDEX `user_associated`(`associated`) USING BTREE
ALTER TABLE `sys_oss`
ADD COLUMN `ext1` text NULL COMMENT '扩展属性' AFTER `url`;