ref(flow-biz) 合并 flow-task 、flow-engine 模块

This commit is contained in:
pigcloud committed 2025-10-10 09:43:40 +08:00
1 parent 38916dda25
commit f53e542100
256 files changed
+7686 -7590

No files matched your search

@@ -0,0 +1,72 @@
package com.pig4cloud.pigx.flow.api.feign;
import com.pig4cloud.pigx.common.core.constant.ServiceNameConstants;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.flow.dto.ProcessInstanceParamDto;
import com.pig4cloud.pigx.flow.vo.FormGroupVo;
import com.pig4cloud.pigx.flow.vo.ProcessVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* 远程流程API服务接口
* <p>
* 通过Feign客户端调用流程服务的远程接口,提供流程相关的核心功能。
* 主要包括流程查询、流程启动等操作。该接口用于微服务间的远程调用,
* 使其他服务能够便捷地使用流程引擎的功能。
* </p>
*
* @author lengleng
* @date 2025/07/12
*/
@FeignClient(contextId = "remoteFlowApiFlowService", value = ServiceNameConstants.FLOW_SERVER)
public interface RemoteFlowApiFlowService {
/**
* 查询当前用户可发起的流程列表
* <p>
* 根据当前登录用户的权限,查询该用户有权发起的所有流程。
* 返回结果按分组组织,方便前端展示。
* </p>
*
* @return 分组后的流程列表,包含分组信息和各分组下的流程
*/
@GetMapping("/combination/group/listCurrentUserStartGroup")
R<List<FormGroupVo>> listCurrentUserStartGroup();
/**
* 获取流程详细信息
* <p>
* 根据流程ID获取流程的完整配置信息,包括:
* - 流程基本信息(名称、图标、描述等)
* - 表单配置(表单项定义、验证规则等)
* - 流程配置(节点定义、流转规则等)
* </p>
*
* @param flowId 流程定义ID
* @return 流程详细信息视图对象
*/
@GetMapping("/process/getDetail")
R<ProcessVO> getDetail(@RequestParam("flowId") String flowId);
/**
* 启动流程实例
* <p>
* 根据流程定义创建新的流程实例。启动流程时需要提供:
* - 流程ID
* - 表单数据
* - 需要自选的节点执行人信息
* </p>
*
* @param paramDto 流程实例启动参数,包含流程ID、表单数据等
* @return 启动成功后的流程实例ID
*/
@PostMapping("/process-instance/startProcessInstance")
R<String> startProcessInstance(@RequestBody ProcessInstanceParamDto paramDto);
}
@@ -0,0 +1,6 @@
/*
@author pigx archetype
* <p>
* feign client 存放目录,注意 @EnablePigxFeignClients 的扫描范围
*/
package com.pig4cloud.pigx.flow.api.feign;
@@ -0,0 +1,156 @@
package com.pig4cloud.pigx.flow.constant;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.ArrayList;
/**
* 表单类型枚举
* <p>
* 定义流程表单中支持的所有控件类型。每种类型对应不同的表单组件,
* 用于构建动态表单,收集流程执行过程中所需的各类数据。
* </p>
*
* @author pigx
* @since 2024/01/01
*/
@Getter
@RequiredArgsConstructor
public enum FormTypeEnum {
/**
* 单行文本输入框
* <p>
* 用于输入简短的文本内容,如姓名、标题等。
* 默认值为空字符串。
* </p>
*/
INPUT("Input", "单行文本", ""),
/**
* 多行文本输入框
* <p>
* 用于输入较长的文本内容,如描述、备注等。
* 支持换行输入,默认值为空字符串。
* </p>
*/
TEXTAREA("Textarea", "多行文本", ""),
/**
* 数字输入框
* <p>
* 用于输入数字类型的数据,支持整数和小数。
* 可设置最大值、最小值等限制。
* </p>
*/
NUMBER("Number", "数字", null),
/**
* 日期选择器
* <p>
* 用于选择日期,格式为 yyyy-MM-dd。
* 不包含时间部分。
* </p>
*/
DATE("Date", "日期", null),
/**
* 日期时间选择器
* <p>
* 用于选择日期和时间,格式为 yyyy-MM-dd HH:mm:ss。
* 包含完整的日期时间信息。
* </p>
*/
DATE_TIME("DateTime", "日期时间", null),
/**
* 序列号生成器
* <p>
* 自动生成唯一的序列号,如单据编号、流水号等。
* 支持自定义前缀、后缀和序列规则。
* </p>
*/
SEQUENCE("Sequence", "发号器", null),
/**
* 明细表格布局
* <p>
* 用于创建子表单,支持动态增减行。
* 适用于需要录入多条明细数据的场景,如报销明细、订单明细等。
* </p>
*/
LAYOUT("Layout", "明细", null),
/**
* 时间选择器
* <p>
* 用于选择时间,格式为 HH:mm:ss。
* 仅包含时间部分,不包含日期。
* </p>
*/
TIME("Time", "时间", null),
/**
* 金额输入框
* <p>
* 专门用于输入货币金额,支持千分位显示。
* 自动保留两位小数,支持大写金额转换。
* </p>
*/
MONEY("Money", "金额", null),
/**
* 单选下拉框
* <p>
* 从预定义选项中选择一个值。
* 默认值为空列表,需要配置选项数据。
* </p>
*/
SINGLE_SELECT("SingleSelect", "单选", new ArrayList<>()),
/**
* 部门选择器
* <p>
* 从组织架构中选择部门。
* 支持树形结构展示,可配置单选或多选。
* </p>
*/
SELECT_DEPT("SelectDept", "部门", new ArrayList<>()),
/**
* 用户选择器
* <p>
* 从系统用户中选择人员。
* 支持按部门、角色筛选,可配置单选或多选。
* </p>
*/
SELECT_USER("SelectUser", "用户", new ArrayList<>()),
;
/**
* 表单类型标识
* <p>
* 前端组件类型的唯一标识符
* </p>
*/
private final String type;
/**
* 表单类型名称
* <p>
* 用于界面显示的中文名称
* </p>
*/
private final String name;
/**
* 默认值
* <p>
* 该类型表单项的默认值,可以是字符串、数字、列表等
* </p>
*/
private final Object defaultValue;
}
@@ -0,0 +1,113 @@
package com.pig4cloud.pigx.flow.constant;
import cn.hutool.core.util.ObjectUtil;
import java.util.EnumSet;
import java.util.Objects;
/**
* 枚举通用接口
* <p>
* 为所有业务枚举提供统一的接口规范,实现枚举值和标签的标准化管理。
* 提供了根据值获取枚举、根据值获取标签、根据标签获取值等通用方法。
* 所有业务枚举类都应实现此接口,以保证枚举使用的一致性。
* </p>
*
* @param <T> 枚举值的类型,通常为Integer或String
* @author haoxr
* @since 2022/3/27 12:06
*/
public interface IBaseEnum<T> {
/**
* 获取枚举值
* <p>
* 返回枚举对应的实际值,通常用于数据库存储或接口传输
* </p>
*
* @return 枚举对应的值
*/
T getValue();
/**
* 获取枚举标签
* <p>
* 返回枚举对应的显示标签,通常用于界面展示
* </p>
*
* @return 枚举对应的中文标签
*/
String getLabel();
/**
* 根据值获取对应的枚举实例
* <p>
* 通过枚举值查找对应的枚举实例,常用于数据库查询结果的转换。
* 如果找不到匹配的枚举,返回null。
* </p>
*
* @param value 枚举值
* @param clazz 枚举类的Class对象
* @param <E> 枚举类型,必须实现IBaseEnum接口
* @return 匹配的枚举实例,如果没有找到返回null
*/
static <E extends Enum<E> & IBaseEnum> E getEnumByValue(Object value, Class<E> clazz) {
Objects.requireNonNull(value);
EnumSet<E> allEnums = EnumSet.allOf(clazz); // 获取类型下的所有枚举
E matchEnum = allEnums.stream().filter(e -> ObjectUtil.equal(e.getValue(), value)).findFirst().orElse(null);
return matchEnum;
}
/**
* 根据值获取对应的标签
* <p>
* 通过枚举值直接获取对应的显示标签,常用于列表展示时的值转换。
* 如果找不到匹配的枚举,返回null。
* </p>
*
* @param value 枚举值
* @param clazz 枚举类的Class对象
* @param <E> 枚举类型,必须实现IBaseEnum接口
* @return 枚举对应的标签,如果没有找到返回null
*/
static <E extends Enum<E> & IBaseEnum> String getLabelByValue(Object value, Class<E> clazz) {
Objects.requireNonNull(value);
EnumSet<E> allEnums = EnumSet.allOf(clazz); // 获取类型下的所有枚举
E matchEnum = allEnums.stream().filter(e -> ObjectUtil.equal(e.getValue(), value)).findFirst().orElse(null);
String label = null;
if (matchEnum != null) {
label = matchEnum.getLabel();
}
return label;
}
/**
* 根据标签获取对应的值
* <p>
* 通过枚举标签反向查找对应的枚举值,常用于表单提交时的数据转换。
* 如果找不到匹配的枚举,返回null。
* </p>
*
* @param label 枚举标签
* @param clazz 枚举类的Class对象
* @param <E> 枚举类型,必须实现IBaseEnum接口
* @return 枚举对应的值,如果没有找到返回null
*/
static <E extends Enum<E> & IBaseEnum> Object getValueByLabel(String label, Class<E> clazz) {
Objects.requireNonNull(label);
EnumSet<E> allEnums = EnumSet.allOf(clazz); // 获取类型下的所有枚举
String finalLabel = label;
E matchEnum = allEnums.stream()
.filter(e -> ObjectUtil.equal(e.getLabel(), finalLabel))
.findFirst()
.orElse(null);
Object value = null;
if (matchEnum != null) {
value = matchEnum.getValue();
}
return value;
}
}
@@ -0,0 +1,96 @@
package com.pig4cloud.pigx.flow.constant;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* 流程节点状态枚举
* <p>
* 定义流程节点的执行状态,用于追踪每个节点在流程实例中的处理进度。
* 状态变化遵循:未开始 -> 进行中 -> 已结束的生命周期。
* </p>
*
* @author pigx
* @since 2024/01/01
*/
@Getter
@RequiredArgsConstructor
public enum NodeStatusEnum {
/**
* 未开始
* <p>
* 节点已创建但尚未开始执行。
* 表示流程已到达该节点的前置节点,但该节点还未被激活。
* </p>
*/
WKS(0, "未开始"),
/**
* 进行中
* <p>
* 节点正在执行中,等待审批人处理或系统任务完成。
* 对于审批节点,表示已分配给审批人但尚未完成审批。
* </p>
*/
JXZ(1, "进行中"),
/**
* 已结束
* <p>
* 节点已完成执行,流程可以继续流转到下一节点。
* 包括正常完成、跳过、驳回等所有结束状态。
* </p>
*/
YJS(2, "已结束");
/**
* 状态编码
* <p>
* 节点状态的数字编码,用于数据库存储和状态比较
* </p>
*/
private final int code;
/**
* 状态名称
* <p>
* 节点状态的中文描述,用于界面显示
* </p>
*/
private final String name;
/**
* 根据状态编码获取枚举实例
*
* @param code 状态编码
* @return 对应的枚举实例,如果找不到返回null
*/
public static NodeStatusEnum getByCode(int code) {
for (NodeStatusEnum status : values()) {
if (status.getCode() == code) {
return status;
}
}
return null;
}
/**
* 判断节点是否可以处理
*
* @return true表示节点可以被处理,false表示不能处理
*/
public boolean canProcess() {
return this == JXZ;
}
/**
* 判断节点是否已完成
*
* @return true表示节点已完成,false表示未完成
*/
public boolean isFinished() {
return this == YJS;
}
}
@@ -0,0 +1,82 @@
package com.pig4cloud.pigx.flow.constant;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.Arrays;
/**
* 流程节点类型枚举
* <p>
* 定义流程中所有可用的节点类型,每种节点类型在流程中有不同的作用和行为。
* </p>
*
* @author pigx
*/
@Getter
@RequiredArgsConstructor
public enum NodeTypeEnum {
/**
* 根节点 - 流程的起始点,每个流程必须有且只有一个根节点
*/
ROOT("根节点", 0, false),
/**
* 结束节点 - 流程的终止点,标识流程执行完成
*/
END("结束节点", -1, false),
/**
* 审批节点 - 需要用户进行审批操作的节点,支持单人或多人审批
*/
APPROVAL("审批节点", 1, false),
/**
* 抄送节点 - 仅用于通知,不阻塞流程执行,抄送人只需查看无需审批
*/
CC("抄送节点", 2, false),
/**
* 条件分支 - 根据表单数据或表达式判断流程走向,只会选择一条分支执行
*/
EXCLUSIVE_GATEWAY("条件分支", 4, true),
/**
* 并行分支 - 同时执行多条分支,所有分支都完成后才能继续后续流程
*/
PARALLEL_GATEWAY("并行分支", 5, true),
/**
* 空节点 - 占位节点,用于流程设计时的过渡
*/
EMPTY("空", 3, false);
/**
* 节点名称
*/
private final String name;
/**
* 节点类型值
*/
private final Integer value;
/**
* 是否为分支节点
* true=分支节点(如条件分支、并行分支),false=普通节点
*/
private final Boolean branch;
/**
* 根据节点类型值获取枚举实例
*
* @param value 节点类型值
* @return 对应的节点类型枚举,找不到返回null
*/
public static NodeTypeEnum getByValue(int value) {
return Arrays.stream(NodeTypeEnum.values()).filter(w -> w.getValue() == value).findAny().orElse(null);
}
}
@@ -0,0 +1,19 @@
package com.pig4cloud.pigx.flow.constant;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* 用户节点类型枚举
*/
@Getter
@RequiredArgsConstructor
public enum NodeUserTypeEnum {
USER("user", "用户"), DEPT("dept", "部门"), ROLE("role", "角色"), POST("post", "岗位");
private final String key;
private final String name;
}
@@ -0,0 +1,6 @@
/*
* @author pigx archetype
* <p>
* 常量和枚举定义
*/
package com.pig4cloud.pigx.flow.constant;
@@ -0,0 +1,36 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
import java.util.List;
/**
* 子部门检查数据传输对象
* <p>
* 该DTO用于检查指定的子部门是否属于给定的父部门列表中的任意一个。
* 主要用于流程中判断审批人是否在指定部门范围内的场景。
* </p>
*
* @author pigx
*/
@Data
public class CheckChildDto {
/**
* 需要检查的子部门ID
* <p>
* 要验证是否为指定父部门子部门的部门ID
* </p>
*/
private Long childId;
/**
* 父部门ID列表
* <p>
* 包含所有需要检查的父部门ID。
* 如果childId是这个列表中任意一个部门的子部门(直接或间接),则检查通过。
* </p>
*/
private List<Long> deptIdList;
}
@@ -0,0 +1,36 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
import java.util.List;
/**
* 父部门检查数据传输对象
* <p>
* 该DTO用于检查指定的父部门是否为给定部门列表中任意一个的父部门。
* 主要用于流程中验证部门层级关系,判断审批人是否具有对某些部门的管辖权限。
* </p>
*
* @author pigx
*/
@Data
public class CheckParentDto {
/**
* 需要检查的父部门ID
* <p>
* 要验证是否为指定部门列表父部门的部门ID
* </p>
*/
private Long parentId;
/**
* 子部门ID列表
* <p>
* 包含所有需要检查的子部门ID。
* 如果parentId是这个列表中任意一个部门的父部门(直接或间接),则检查通过。
* </p>
*/
private List<Long> deptIdList;
}
@@ -0,0 +1,67 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
/**
* 流程条件数据传输对象
* <p>
* 该DTO用于定义流程节点的单个执行条件。条件由键、表达式和值组成,
* 用于判断流程是否满足某个分支或节点的执行要求。
* 常用于条件分支节点,根据表单数据判断流程走向。
* </p>
*
* @author pigx
*/
@Data
public class Condition {
/**
* 条件键(字段标识)
* <p>
* 对应表单中的字段ID或变量名,如 "amount"、"deptId" 等。
* 用于标识需要判断的数据字段。
* </p>
*/
private String key;
/**
* 条件表达式
* <p>
* 定义判断逻辑的表达式,支持的表达式类型包括:
* - EQ: 等于
* - NE: 不等于
* - GT: 大于
* - GE: 大于等于
* - LT: 小于
* - LE: 小于等于
* - IN: 包含在
* - NOT_IN: 不包含在
* - CONTAINS: 包含(字符串)
* - NOT_CONTAINS: 不包含(字符串)
* - EMPTY: 为空
* - NOT_EMPTY: 不为空
* </p>
*/
private String expression;
/**
* 条件值
* <p>
* 与表达式配合使用的比较值。
* 类型可以是字符串、数字、日期、数组等,具体取决于字段类型和表达式。
* 例如:金额大于1000时,value=1000;部门包含在[1,2,3]时,value=[1,2,3]
* </p>
*/
private Object value;
/**
* 字段类型
* <p>
* 标识条件键对应的数据类型,用于正确解析和比较数据。
* 常见类型:INPUT(输入框)、NUMBER(数字)、DATE(日期)、
* SELECT_USER(选择用户)、SELECT_DEPT(选择部门)等
* </p>
*/
private String keyType;
}
@@ -0,0 +1,40 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
import java.util.List;
/**
* 分组条件数据传输对象
* <p>
* 该DTO用于定义一组条件的逻辑关系。可以将多个条件组合在一起,
* 通过AND(与)或OR(或)的方式进行逻辑运算,用于复杂的流程条件判断。
* 常用于条件分支节点,支持构建复杂的条件表达式。
* </p>
*
* @author pigx
*/
@Data
public class GroupCondition {
/**
* 条件组合模式
* <p>
* 定义条件列表中各个条件之间的逻辑关系:
* - true: AND模式,所有条件都必须满足(与关系)
* - false: OR模式,满足任意一个条件即可(或关系)
* </p>
*/
private Boolean mode;
/**
* 条件列表
* <p>
* 包含该分组下的所有条件。
* 这些条件会根据mode字段指定的逻辑关系进行组合判断。
* 每个条件包含键、表达式、值等信息,用于具体的条件判断。
* </p>
*/
private List<Condition> conditionList;
}
@@ -0,0 +1,60 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 首页统计数据传输对象
* <p>
* 该DTO用于传输流程系统首页的统计数据,包括待办任务、已发起流程、
* 抄送任务和已完成任务的数量统计。主要用于首页仪表盘的数据展示,
* 帮助用户快速了解当前的工作状态和任务情况。
* </p>
*
* @author pigx
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class IndexPageStatistics {
/**
* 待办任务数量
* <p>
* 当前用户需要处理的待办任务总数。
* 包括所有分配给当前用户但尚未完成的审批任务。
* </p>
*/
private Long pendingNum;
/**
* 已发起流程数量
* <p>
* 当前用户发起的所有流程实例总数。
* 包括进行中、已完成和已终止的流程。
* </p>
*/
private Long startedNum;
/**
* 抄送任务数量
* <p>
* 抄送给当前用户的任务总数。
* 这些任务仅供查看,不需要用户进行审批操作。
* </p>
*/
private Long copyNum;
/**
* 已完成任务数量
* <p>
* 当前用户已经完成的任务总数。
* 包括所有已审批(同意或拒绝)的任务。
* </p>
*/
private Long completedNum;
}
@@ -0,0 +1,43 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
import java.util.List;
/**
* 无执行人处理策略数据传输对象
* <p>
* 该DTO用于定义当流程节点找不到执行人时的处理策略。
* 在实际流程执行中,可能因为人员离职、角色变更等原因导致节点无法找到执行人,
* 此时需要根据预定义的策略进行处理,如自动通过、转交管理员、指定默认审批人等。
* </p>
*
* @author pigx
*/
@Data
public class Nobody {
/**
* 处理策略
* <p>
* 定义当节点找不到执行人时的处理方式:
* - TO_PASS: 自动通过,节点自动完成
* - TO_REFUSE: 自动拒绝,节点自动拒绝
* - TO_ADMIN: 转交给管理员处理
* - TO_USER: 转交给指定用户处理
* - TO_END: 直接结束流程
* </p>
*/
private String handler;
/**
* 指定的处理人列表
* <p>
* 当handler为TO_USER时,指定接收任务的用户列表。
* 包含用户的ID、名称、类型等信息。
* 如果handler为其他值,此字段可为空。
* </p>
*/
private List<NodeUser> assignedUser;
}
@@ -141,4 +141,13 @@ public class Node {
*/
private Refuse refuse;
/** 条件类型 */
private Integer conditionType;
/** 表达式文本 */
private String expressionText;
/** 规则名称 */
private String ruleName;
}
@@ -0,0 +1,40 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
import java.util.Map;
/**
* 节点HTTP请求结果数据传输对象
* <p>
* 该DTO用于封装流程节点执行HTTP请求后的返回结果。
* 在流程执行过程中,某些节点可能需要调用外部系统的接口(如获取审批人、
* 验证业务数据等),此对象用于统一封装这些HTTP请求的响应结果。
* </p>
*
* @author pigx
*/
@Data
public class NodeHttpResultVO {
/**
* 请求是否成功
* <p>
* 标识HTTP请求是否执行成功:
* - true: 请求成功,data字段包含返回的业务数据
* - false: 请求失败,data字段可能包含错误信息
* </p>
*/
private Boolean ok;
/**
* 返回的数据内容
* <p>
* HTTP请求返回的业务数据,以Map形式存储,便于灵活处理各种数据结构。
* 成功时包含业务数据,失败时可能包含错误码、错误信息等。
* 具体内容取决于调用的接口定义。
* </p>
*/
private Map<String, Object> data;
}
@@ -0,0 +1,74 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 节点用户数据传输对象
* <p>
* 该DTO用于表示流程节点的执行人信息。可以代表具体的用户、角色或部门,
* 用于流程节点的审批人配置、抄送人配置等场景。
* 支持多种类型的执行人,如指定用户、角色成员、部门成员等。
* </p>
*
* @author pigx
*/
@NoArgsConstructor
@Data
@Builder
@AllArgsConstructor
public class NodeUser {
/**
* 用户/角色/部门ID
* <p>
* 根据type字段的不同,此ID可能代表:
* - 用户ID(当type为USER时)
* - 角色ID(当type为ROLE时)
* - 部门ID(当type为DEPT时)
* </p>
*/
private Long id;
/**
* 名称
* <p>
* 显示名称,如用户姓名、角色名称、部门名称等。
* 用于在界面上展示给用户看。
* </p>
*/
private String name;
/**
* 类型标识
* <p>
* 标识该对象的类型:
* - USER: 用户
* - ROLE: 角色
* - DEPT: 部门
* - VARIABLE: 流程变量
* </p>
*/
private String type;
/**
* 是否选中
* <p>
* 在用户界面中标识该项是否被选中。
* 主要用于前端交互,如在审批人选择列表中标记已选项。
* </p>
*/
private Boolean selected;
/**
* 用户头像URL
* <p>
* 用户的头像地址,仅当type为USER时有效。
* 用于在界面上展示用户头像,提升用户体验。
* </p>
*/
private String avatar;
}
@@ -0,0 +1,92 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 流程抄送数据传输对象
* <p>
* 该DTO用于创建流程抄送记录。当流程执行到某个节点时,
* 可以将该节点的信息抄送给相关人员,抄送人员可以查看但不需要审批。
* 常用于让相关人员了解流程进展,保持信息透明。
* </p>
*
* @author pigx
*/
@Data
public class ProcessCopyDto {
/**
* 抄送时间
* <p>
* 记录抄送动作发生的时间,即当前节点的执行时间。
* 用于追溯抄送记录的时间线。
* </p>
*/
private LocalDateTime nodeTime;
/**
* 流程发起人ID
* <p>
* 发起该流程实例的用户ID。
* 用于标识流程的发起者,便于抄送人了解流程来源。
* </p>
*/
private Long startUserId;
/**
* 流程定义ID
* <p>
* 流程定义的唯一标识,标识这是哪个流程模板。
* 如:leave_process(请假流程)、purchase_process(采购流程)等。
* </p>
*/
private String flowId;
/**
* 流程实例ID
* <p>
* 当前运行的流程实例的唯一标识。
* 用于关联到具体的流程实例,便于查看详情。
* </p>
*/
private String processInstanceId;
/**
* 节点ID
* <p>
* 触发抄送的流程节点ID。
* 标识是在哪个节点产生的抄送记录。
* </p>
*/
private String nodeId;
/**
* 节点名称
* <p>
* 触发抄送的流程节点名称,如"部门经理审批"、"财务审核"等。
* 用于在界面上显示,让抄送人了解流程进展到哪一步。
* </p>
*/
private String nodeName;
/**
* 表单数据
* <p>
* JSON格式的表单数据,包含流程实例的业务数据。
* 如请假流程的请假事由、天数等信息,便于抄送人查看具体内容。
* </p>
*/
private String formData;
/**
* 抄送接收人ID
* <p>
* 接收抄送通知的用户ID。
* 该用户将在抄送列表中看到此流程的信息。
* </p>
*/
private Long userId;
}
@@ -0,0 +1,68 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Getter;
import lombok.Setter;
/**
* 流程实例记录参数数据传输对象
* <p>
* 该DTO用于创建或更新流程实例的执行记录。
* 记录流程实例的基本信息和表单数据,用于流程历史追溯和数据存储。
* 支持主流程和子流程的记录创建。
* </p>
*
* @author Vincent
* @since 2023-05-07
*/
@Getter
@Setter
public class ProcessInstanceRecordParamDto {
/**
* 用户ID
* <p>
* 执行此操作的用户ID,通常是流程发起人或当前任务处理人。
* 用于记录操作人信息,便于审计和追溯。
* </p>
*/
private Long userId;
/**
* 流程定义ID
* <p>
* 流程模板的唯一标识。
* 标识这条记录属于哪个流程定义。
* </p>
*/
private String flowId;
/**
* 流程实例ID
* <p>
* 当前流程实例的唯一标识。
* 用于关联流程实例的所有相关记录。
* </p>
*/
private String processInstanceId;
/**
* 父流程实例ID
* <p>
* 如果当前流程是子流程,此字段存储父流程的实例ID。
* 用于建立流程间的父子关系,支持流程嵌套场景。
* 如果是主流程,此字段为空。
* </p>
*/
private String parentProcessInstanceId;
/**
* 表单数据
* <p>
* JSON格式的表单数据,存储流程实例的业务数据。
* 包含用户填写的所有表单字段值,如申请内容、金额、日期等。
* 这些数据会在流程执行过程中被各节点使用和展示。
* </p>
*/
private String formData;
}
@@ -0,0 +1,50 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
/**
* 流程节点数据传输对象
* <p>
* 该DTO用于存储和传输流程节点的配置数据。
* 每个流程节点可能有特定的配置信息,如审批人设置、表单权限、条件配置等,
* 这些配置数据以JSON格式存储在data字段中。
* </p>
*
* @author pigx
*/
@Data
public class ProcessNodeDataDto {
/**
* 流程定义ID
* <p>
* 节点所属的流程定义唯一标识。
* 标识该节点配置属于哪个流程模板。
* </p>
*/
private String flowId;
/**
* 节点ID
* <p>
* 流程节点的唯一标识。
* 用于定位具体的节点,每个流程中的节点ID是唯一的。
* </p>
*/
private String nodeId;
/**
* 节点配置数据
* <p>
* JSON格式的节点配置信息,可能包含:
* - 审批人配置:指定用户、角色、部门主管等
* - 表单权限:各字段的读写权限设置
* - 条件配置:分支条件、跳转条件等
* - 事件配置:超时提醒、自动处理等
* - 其他自定义配置
* 具体内容根据节点类型和业务需求而定。
* </p>
*/
private String data;
}
@@ -0,0 +1,120 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
/**
* 流程节点记录执行人参数数据传输对象
* <p>
* 该DTO用于记录流程节点的执行人信息。当任务分配给用户或用户处理任务时,
* 创建相应的执行人记录,用于追踪任务的处理过程和审批历史。
* 包含任务执行的完整上下文信息。
* </p>
*
* @author pigx
*/
@Data
public class ProcessNodeRecordAssignUserParamDto {
/**
* 流程定义ID
* <p>
* 流程模板的唯一标识。
* 标识该记录所属的流程定义。
* </p>
*/
private String flowId;
/**
* 流程实例ID
* <p>
* 运行中的流程实例唯一标识。
* 用于关联到具体的流程实例。
* </p>
*/
private String processInstanceId;
/**
* 表单数据
* <p>
* JSON格式的表单数据,包含流程实例的业务数据。
* 记录任务执行时的表单内容,便于历史查看。
* </p>
*/
private String data;
/**
* 节点本地数据
* <p>
* 节点级别的局部数据,仅在当前节点范围内有效。
* 可能包含节点特定的配置或临时数据。
* </p>
*/
private String localData;
/**
* 节点ID
* <p>
* 流程节点的唯一标识。
* 标识任务所在的节点。
* </p>
*/
private String nodeId;
/**
* 执行人用户ID
* <p>
* 被分配执行该任务的用户ID。
* 记录谁负责处理这个任务。
* </p>
*/
private Long userId;
/**
* 执行ID
* <p>
* Flowable引擎的执行ID。
* 用于关联流程引擎中的执行实例。
* </p>
*/
private String executionId;
/**
* 任务ID
* <p>
* Flowable引擎生成的任务ID。
* 用于唯一标识一个用户任务实例。
* </p>
*/
private String taskId;
/**
* 审批意见
* <p>
* 用户处理任务时填写的审批意见或备注。
* 记录审批理由、建议等信息。
* </p>
*/
private String approveDesc;
/**
* 节点名称
* <p>
* 流程节点的显示名称,如"部门经理审批"。
* 用于在界面上展示,提高可读性。
* </p>
*/
private String nodeName;
/**
* 任务类型
* <p>
* 标识任务的类型:
* - APPROVAL: 审批任务
* - COPY: 抄送任务
* - NOTIFY: 通知任务
* - CUSTOM: 自定义任务
* </p>
*/
private String taskType;
}
@@ -0,0 +1,41 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
/**
* 拒绝处理策略数据传输对象
* <p>
* 该DTO用于定义流程节点被拒绝后的处理策略。
* 当审批人拒绝某个节点时,系统需要根据预定义的策略决定流程的后续走向,
* 如回退到指定节点、直接结束流程、转交其他人处理等。
* </p>
*
* @author pigx
*/
@Data
public class Refuse {
/**
* 拒绝处理策略
* <p>
* 定义节点被拒绝后的处理方式:
* - TO_END: 直接结束流程
* - TO_NODE: 回退到指定节点
* - TO_BEFORE: 回退到上一个节点
* - TO_START: 回退到发起人
* - CONTINUE: 继续流程(忽略拒绝)
* </p>
*/
private String handler;
/**
* 目标节点ID
* <p>
* 当handler为TO_NODE时,指定要回退到的目标节点ID。
* 流程将回退到该节点重新执行。
* 如果handler为其他值,此字段可为空。
* </p>
*/
private String nodeId;
}
@@ -0,0 +1,37 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
/**
* 选择项数据传输对象
* <p>
* 该DTO用于表示下拉选择、单选、多选等表单控件的选项。
* 提供键值对的数据结构,key用于存储和逻辑处理,value用于界面显示。
* 常用于表单配置、条件选择、数据字典等场景。
* </p>
*
* @author Huijun Zhao
* @date 2023-07-28 10:36
*/
@Data
public class SelectValue {
/**
* 选项键
* <p>
* 选项的唯一标识,用于数据存储和逻辑处理。
* 通常是编码、ID等不会改变的值,如"1"、"APPROVED"、"DEPT_001"等。
* </p>
*/
private String key;
/**
* 选项显示值
* <p>
* 选项的显示文本,用于在界面上展示给用户。
* 通常是描述性的文字,如"已批准"、"销售部"、"紧急"等。
* </p>
*/
private String value;
}
@@ -0,0 +1,176 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.Map;
/**
* 任务数据传输对象
* <p>
* 该DTO用于传输流程任务的详细信息。包含任务的基本信息、
* 执行信息、关联的流程信息等。主要用于任务列表展示、
* 任务详情查看、任务处理等场景。
* </p>
*
* @author pigx
*/
@Data
public class TaskDto {
/**
* 流程定义ID
* <p>
* 任务所属的流程定义唯一标识。
* 标识该任务属于哪个流程模板。
* </p>
*/
private String flowId;
/**
* 流程变量集合
* <p>
* 存储流程执行过程中的各种变量。
* 包含表单数据、控制变量、业务数据等。
* 这些变量可用于任务处理和决策。
* </p>
*/
private Map<String, Object> paramMap;
/**
* 流程实例ID
* <p>
* 任务所属的流程实例唯一标识。
* 用于关联到具体的流程实例。
* </p>
*/
private String processInstanceId;
/**
* 执行ID
* <p>
* Flowable引擎的执行ID。
* 用于关联流程引擎中的执行实例。
* </p>
*/
private String executionId;
/**
* 任务耗时
* <p>
* 任务从创建到完成的时间,单位为毫秒。
* 用于统计任务处理效率。
* </p>
*/
private Long durationInMillis;
/**
* 任务ID
* <p>
* Flowable引擎生成的任务唯一标识。
* 用于任务的查询和操作。
* </p>
*/
private String taskId;
/**
* 任务执行人
* <p>
* 当前任务的执行人用户标识。
* 可能是用户ID或用户名,取决于系统配置。
* </p>
*/
private String assign;
/**
* 任务名称
* <p>
* 任务的显示名称,如"部门经理审批"。
* 对应流程节点的名称。
* </p>
*/
private String taskName;
/**
* 节点ID
* <p>
* 任务对应的流程节点ID。
* 用于定位任务在流程中的位置。
* </p>
*/
private String nodeId;
/**
* 任务创建时间
* <p>
* 任务在流程引擎中的创建时间。
* 标记任务何时产生。
* </p>
*/
private Date taskCreateTime;
/**
* 任务结束时间
* <p>
* 任务完成或终止的时间。
* 用于计算任务处理时长。
* </p>
*/
private Date taskEndTime;
/**
* 流程组名称
* <p>
* 流程所属分组的名称,如"行政类流程"、"财务类流程"。
* 用于流程分类展示。
* </p>
*/
private String groupName;
/**
* 流程发起人ID
* <p>
* 发起该流程实例的用户ID。
* 用于显示流程的发起者信息。
* </p>
*/
private Long rootUserId;
/**
* 流程发起人姓名
* <p>
* 发起该流程实例的用户姓名。
* 用于界面显示,提高可读性。
* </p>
*/
private String rootUserName;
/**
* 流程发起人头像URL
* <p>
* 发起人的头像地址。
* 用于在界面上展示发起人头像,提升用户体验。
* </p>
*/
private String rootUserAvatarUrl;
/**
* 流程发起时间
* <p>
* 流程实例的创建时间。
* 记录流程何时开始。
* </p>
*/
private LocalDateTime startTime;
/**
* 流程名称
* <p>
* 流程定义的名称,如"请假申请流程"、"报销流程"。
* 用于界面显示,便于用户理解。
* </p>
*/
private String processName;
}
@@ -0,0 +1,112 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* 任务操作参数数据传输对象
* <p>
* 该DTO用于任务操作时传递参数,如完成任务、转办任务、委派任务等。 包含任务标识、操作人信息、流程变量、目标节点等信息。 支持单个任务操作和批量任务操作。
* </p>
*
* @author pigx
*/
@Data
public class TaskParamDto {
/**
* 流程实例ID
* <p>
* 单个流程实例的唯一标识。 用于定位要操作的流程实例。
* </p>
*/
private String processInstanceId;
/**
* 流程实例ID列表
* <p>
* 批量操作时使用,包含多个流程实例ID。 支持批量完成、批量转办等操作。
* </p>
*/
private List<String> processInstanceIdList;
/**
* 节点ID
* <p>
* 当前操作的节点ID。 用于标识任务所在的流程节点。
* </p>
*/
private String nodeId;
/**
* 是否添加子流程发起人
* <p>
* 标识是否需要在子流程中记录主流程的发起人信息。 true: 子流程会继承主流程的发起人信息 false: 子流程独立记录发起人
* </p>
*/
private Boolean appendChildProcessRootId;
/**
* 任务ID
* <p>
* Flowable引擎的任务唯一标识。 用于定位要操作的具体任务。
* </p>
*/
private String taskId;
/**
* 操作用户ID
* <p>
* 执行任务操作的用户ID。 记录是谁在操作这个任务。
* </p>
*/
private String userId;
/**
* 目标用户ID(已废弃)
* <p>
* 单个目标用户ID,用于转办等操作。 建议使用targetUserIdList代替。
* </p>
*/
private String targetUserId;
/**
* 流程变量参数
* <p>
* 任务完成时设置的流程变量。 这些变量会存储在流程实例中,供后续节点使用。 如审批意见、审批结果、业务数据等。
* </p>
*/
private Map<String, Object> paramMap;
/**
* 任务本地变量
* <p>
* 仅在当前任务范围内有效的变量。 任务完成后这些变量会被清除,不会传递到后续节点。 用于存储临时数据或任务特定的配置。
* </p>
*/
private Map<String, Object> taskLocalParamMap;
/**
* 表单数据
*/
private Map<String, Object> formData;
/**
* 目标节点ID
* <p>
* 指定跳转的目标节点ID。 用于实现流程跳转、回退等功能。 如驳回到指定节点、跳过某些节点等。
* </p>
*/
private String targetNodeId;
/**
* 转办目标用户ID列表
* <p>
* 任务转办时的目标用户ID列表。 支持将任务转办给一个或多个用户。 转办后原执行人不再拥有该任务。
* </p>
*/
private List<Long> targetUserIdList;
}
@@ -0,0 +1,81 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 用户任务查询参数数据传输对象
* <p>
* 该DTO用于查询用户任务列表时传递查询条件。
* 支持按执行人、流程名称、时间范围、任务状态等条件进行查询,
* 并支持分页功能。主要用于任务列表、待办事项等功能。
* </p>
*
* @author pigx
*/
@Data
public class TaskQueryParamDto {
/**
* 任务执行人
* <p>
* 用于查询指定用户的任务。
* 可以是用户ID或用户名,取决于系统实现。
* 为空时查询所有用户的任务。
* </p>
*/
private String assign;
/**
* 当前页码
* <p>
* 分页查询的页码,从1开始。
* 用于实现分页功能。
* </p>
*/
private Integer current;
/**
* 每页记录数
* <p>
* 分页查询时每页显示的记录数量。
* 用于控制返回数据的大小。
* </p>
*/
private Integer size;
/**
* 流程名称
* <p>
* 用于按流程名称过滤任务。
* 支持模糊查询,如输入"请假"可查询所有请假相关流程的任务。
* </p>
*/
private String processName;
/**
* 任务时间范围
* <p>
* 用于按任务创建时间范围查询。
* 数组包含两个元素:[开始时间, 结束时间]。
* 可用于查询特定时间段内的任务。
* </p>
*/
private LocalDateTime[] taskTime;
/**
* 任务状态
* <p>
* 用于按任务状态过滤:
* - 0: 待处理
* - 1: 已完成
* - 2: 已拒绝
* - 3: 已撤回
* - 4: 已转办
* 为空时查询所有状态的任务。
* </p>
*/
private Integer status;
}
@@ -0,0 +1,100 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
import java.util.Map;
/**
* 任务结果数据传输对象
* <p>
* 该DTO用于返回任务的详细信息和执行结果。
* 包含任务的当前状态、节点配置、流程变量、委派状态等信息。
* 主要用于任务详情展示、任务处理页面的数据渲染。
* </p>
*
* @author pigx
*/
@Data
public class TaskResultDto {
/**
* 是否为当前任务
* <p>
* 标识该任务是否为流程的当前活动任务。
* true: 任务正在等待处理
* false: 任务已完成或不是当前节点
* </p>
*/
private Boolean currentTask;
/**
* 流程定义ID
* <p>
* 任务所属的流程定义唯一标识。
* 用于获取流程模板信息。
* </p>
*/
private String flowId;
/**
* 任务节点配置
* <p>
* 包含任务节点的完整配置信息。
* 如节点类型、审批人设置、表单权限、条件配置等。
* 用于渲染任务处理界面。
* </p>
*/
private Node taskNode;
/**
* 节点ID
* <p>
* 任务对应的流程节点ID。
* 用于定位任务在流程中的位置。
* </p>
*/
private String nodeId;
/**
* 流程实例ID
* <p>
* 任务所属的流程实例唯一标识。
* 用于关联到具体的流程实例。
* </p>
*/
private String processInstanceId;
/**
* 委派状态
* <p>
* 标识任务的委派状态:
* - PENDING: 待处理,委派任务等待被委派人处理
* - RESOLVED: 已解决,委派任务已完成并返回给委派人
* - null: 非委派任务
* </p>
*/
private String delegationState;
/**
* 是否允许继续委派
* <p>
* 控制任务是否可以被继续委派给其他人。
* true: 允许当前处理人将任务委派给其他人
* false: 不允许继续委派
* </p>
*/
private Boolean delegate;
/**
* 所有流程变量
* <p>
* 包含流程实例的所有变量,包括:
* - 表单数据:用户填写的业务数据
* - 系统变量:流程引擎设置的变量
* - 控制变量:用于流程控制的变量
* 这些变量可用于任务处理和页面展示。
* </p>
*/
private Map<String, Object> variableAll;
}
@@ -0,0 +1,51 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
import java.util.List;
/**
* 变量查询参数数据传输对象
* <p>
* 该DTO用于查询流程变量或任务变量。
* 支持按任务ID或执行ID查询指定的变量,可以查询单个或多个变量。
* 主要用于获取流程执行过程中的数据,如表单数据、控制变量等。
* </p>
*
* @author pigx
*/
@Data
public class VariableQueryParamDto {
/**
* 任务ID
* <p>
* Flowable引擎的任务唯一标识。
* 用于查询特定任务的变量。
* 与executionId二选一,优先使用taskId。
* </p>
*/
private String taskId;
/**
* 变量键列表
* <p>
* 需要查询的变量名称列表。
* 如果为空,则查询所有变量;
* 如果指定了具体的键,则只返回这些键对应的变量值。
* 例如:["amount", "reason", "approver"]
* </p>
*/
private List<String> keyList;
/**
* 执行ID
* <p>
* Flowable引擎的执行实例ID。
* 用于查询特定执行实例的变量。
* 当没有taskId时使用此字段查询。
* </p>
*/
private String executionId;
}
@@ -0,0 +1,6 @@
/*
* @author pigx archetype
* <p>
* DTO 存放目录
*/
package com.pig4cloud.pigx.flow.dto;
@@ -0,0 +1,139 @@
package com.pig4cloud.pigx.flow.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* 流程抄送记录实体类
* <p>
* 记录流程执行过程中的抄送信息。抄送是指将流程信息通知给相关人员,
* 但这些人员不需要进行审批操作,仅供查看和了解流程进展。
* 一个流程节点可以抄送给多个人员,每个抄送生成一条记录。
* </p>
*
* @author Vincent
* @since 2023-07-06
*/
@Getter
@Setter
@TenantTable
@Accessors(chain = true)
@TableName("process_copy")
public class ProcessCopy {
/**
* 主键ID
* 使用雪花算法生成的分布式ID
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 流程发起时间
* 记录流程实例的创建时间,用于追踪流程的开始时刻
*/
@TableField("start_time")
private LocalDateTime startTime;
/**
* 抄送节点执行时间
* 记录产生抄送的节点执行时间,即何时触发的抄送通知
*/
@TableField("node_time")
private LocalDateTime nodeTime;
/**
* 流程发起人ID
* 记录启动流程实例的用户ID,方便追溯流程的发起者
*/
@TableField("start_user_id")
private Long startUserId;
/**
* 流程定义ID
* 关联process表的flow_id,标识该抄送属于哪个流程定义
*/
@TableField("flow_id")
private String flowId;
/**
* 流程实例ID
* 关联process_instance_record表,标识该抄送属于哪个流程实例
*/
@TableField("process_instance_id")
private String processInstanceId;
/**
* 流程节点ID
* 标识在哪个节点产生的抄送,对应流程定义中的节点标识
*/
@TableField("node_id")
private String nodeId;
/**
* 流程分组ID
* 流程所属的分组ID,继承自流程定义
*/
@TableField("group_id")
private Long groupId;
/**
* 流程分组名称
* 缓存流程分组的名称,方便查询展示,避免关联查询
*/
@TableField("group_name")
private String groupName;
/**
* 流程名称
* 缓存流程定义的名称,方便在抄送列表中直接展示
*/
@TableField("process_name")
private String processName;
/**
* 抄送节点名称
* 产生抄送的节点名称,如"部门经理审批"、"财务审核"等
*/
@TableField("node_name")
private String nodeName;
/**
* 表单数据快照
* JSON格式存储抄送时的表单数据,确保抄送人看到的是当时的数据状态
*/
@TableField("form_data")
private String formData;
/**
* 抄送接收人ID
* 接收抄送通知的用户ID,该用户可以查看但不能操作流程
*/
@TableField("user_id")
private Long userId;
/**
* 逻辑删除字段
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
private String delFlag;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
@@ -0,0 +1,88 @@
package com.pig4cloud.pigx.flow.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* 流程分组实体类
* <p>
* 用于对流程进行分类管理,将相关的流程归类到同一个分组中,便于用户查找和管理。
* 支持按照分组名称和排序顺序来组织流程的展示结构。
* </p>
*
* @author Vincent
* @since 2023-07-06
*/
@Getter
@Setter
@TenantTable
@Accessors(chain = true)
@TableName("process_group")
public class ProcessGroup {
/**
* 分组名称
* <p>
* 流程分组的显示名称,用于标识该分组的用途或类型。
* 例如:人事管理、财务审批、行政事务等。
* </p>
*/
@TableField("group_name")
private String groupName;
/**
* 排序序号
* <p>
* 用于控制分组在列表中的显示顺序,数值越小越靠前。
* 可以根据业务重要性或使用频率来设置排序值。
* </p>
*/
@TableField("sort")
private Integer sort;
/**
* 分组ID
* <p>
* 分组的唯一标识符,采用雪花算法生成。
* 在Process实体中通过groupId字段引用此ID,建立流程与分组的关联关系。
* </p>
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 逻辑删除标记
* <p>
* 用于软删除功能,删除时不会真正从数据库中移除记录,而是标记为已删除。
* 0-正常,1-已删除。这样可以保留历史数据,便于数据恢复和审计。
* </p>
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
private String delFlag;
/**
* 创建时间
* <p>
* 记录分组的创建时间,自动填充,用于数据审计和追踪。
* </p>
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新时间
* <p>
* 记录分组信息的最后更新时间,在创建和更新时自动填充。
* 用于跟踪数据的变更历史。
* </p>
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
@@ -0,0 +1,141 @@
package com.pig4cloud.pigx.flow.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import lombok.experimental.FieldNameConstants;
import java.time.LocalDateTime;
import java.util.Date;
/**
* 流程实例记录实体类
* <p>
* 该实体记录每个流程实例的执行情况,包括发起人、表单数据、执行状态等。
* 一个流程定义(Process)可以创建多个流程实例记录。
* </p>
*
* @author Vincent
* @since 2023-07-06
*/
@Getter
@Setter
@TenantTable
@Accessors(chain = true)
@FieldNameConstants
@TableName("process_instance_record")
public class ProcessInstanceRecord {
/**
* 流程实例名称
* 通常继承自流程定义的名称,也可以在创建时自定义
*/
@TableField("name")
private String name;
/**
* 流程图标
* 继承自流程定义的图标配置
*/
@TableField("logo")
private String logo;
/**
* 流程发起人ID
* 记录该流程实例的创建者用户ID
*/
@TableField("user_id")
private Long userId;
/**
* 流程定义ID
* 关联process表的flow_id,指明该实例属于哪个流程定义
*/
@TableField("flow_id")
private String flowId;
/**
* Flowable引擎流程实例ID
* 对应Flowable引擎中的流程实例ID,用于与引擎交互
*/
@TableField("process_instance_id")
private String processInstanceId;
/**
* 表单数据
* JSON格式存储用户提交的表单数据,在流程执行过程中使用
*/
@TableField("form_data")
private String formData;
/**
* 流程分组ID
* 继承自流程定义的分组ID
*/
@TableField("group_id")
private Long groupId;
/**
* 流程分组名称
* 缓存流程所属分组的名称,方便查询展示
*/
@TableField("group_name")
private String groupName;
/**
* 流程实例状态
* 1=进行中,2=已完成,3=已取消,4=已中止
*/
@TableField("status")
private Integer status;
/**
* 流程结束原因
* 记录流程完成、取消或中止的具体原因
*/
@TableField("finish_reason")
private String finishReason;
/**
* 流程结束时间
* 记录流程实例的完成、取消或中止时间
*/
@TableField("end_time")
private Date endTime;
/**
* 父流程实例ID
* 当前流程是子流程时,记录父流程的实例ID,支持流程嵌套
*/
@TableField("parent_process_instance_id")
private String parentProcessInstanceId;
/**
* 主键ID
* 使用雪花算法生成的分布式ID
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 逻辑删除字段
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
private String delFlag;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
@@ -0,0 +1,100 @@
package com.pig4cloud.pigx.flow.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* 流程节点数据实体类
* <p>
* 用于存储流程节点的表单数据和配置信息。当流程实例运行时,每个节点可能需要填写表单或提交数据,
* 这些数据通过本实体进行持久化存储。支持JSON格式的灵活数据结构,可以适应不同类型节点的数据需求。
* </p>
*
* @author Vincent
* @since 2023-07-06
*/
@Getter
@Setter
@TenantTable
@Accessors(chain = true)
@TableName("process_node_data")
public class ProcessNodeData {
/**
* 流程实例ID
* <p>
* 关联到具体的流程实例,标识这些节点数据属于哪个流程实例。
* 对应ProcessInstanceRecord表的flowId字段。
* </p>
*/
@TableField("flow_id")
private String flowId;
/**
* 节点表单数据
* <p>
* 以JSON格式存储的节点表单数据,包含用户在该节点填写的所有表单字段值。
* 数据结构根据节点配置的表单项动态变化,支持文本、数字、日期、选择等多种表单类型。
* 例如:{"amount": 5000, "reason": "采购办公用品", "approver": "user123"}
* </p>
*/
@TableField("data")
private String data;
/**
* 节点ID
* <p>
* 流程定义中的节点标识符,用于关联到具体的流程节点。
* 通过此ID可以确定数据属于流程的哪个环节,如发起节点、审批节点、抄送节点等。
* 与Node对象中的id字段对应。
* </p>
*/
@TableField("node_id")
private String nodeId;
/**
* 主键ID
* <p>
* 节点数据记录的唯一标识符,采用雪花算法生成。
* </p>
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 逻辑删除标记
* <p>
* 用于软删除功能,删除时不会真正从数据库中移除记录,而是标记为已删除。
* 0-正常,1-已删除。保留历史数据便于审计和数据恢复。
* </p>
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
private String delFlag;
/**
* 创建时间
* <p>
* 记录节点数据的创建时间,通常是用户提交表单的时间。
* 自动填充,用于数据审计和流程追踪。
* </p>
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新时间
* <p>
* 记录节点数据的最后更新时间,在创建和更新时自动填充。
* 用于跟踪数据的修改历史,如表单数据的补充或修正。
* </p>
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
@@ -0,0 +1,125 @@
package com.pig4cloud.pigx.flow.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
* 流程节点记录实体类
* <p>
* 记录流程实例中每个节点的执行情况。
* 一个流程实例在执行过程中会产生多个节点记录,用于跟踪和审计流程执行路径。
* </p>
*
* @author Vincent
* @since 2023-07-06
*/
@Getter
@Setter
@TenantTable
@Accessors(chain = true)
@TableName("process_node_record")
public class ProcessNodeRecord {
/**
* 流程定义ID
* 关联process表的flow_id
*/
@TableField("flow_id")
private String flowId;
/**
* 流程实例ID
* 关联process_instance_record表,标识该节点记录属于哪个流程实例
*/
@TableField("process_instance_id")
private String processInstanceId;
/**
* 节点执行时的表单数据
* JSON格式存储节点执行时的表单数据快照,用于记录和审计
*/
@TableField("data")
private String data;
/**
* 节点ID
* 流程定义中的节点唯一标识
*/
@TableField("node_id")
private String nodeId;
/**
* 节点类型
* 对应NodeTypeEnum中的值(审批节点、抄送节点、条件分支等)
*/
@TableField("node_type")
private String nodeType;
/**
* 节点名称
* 节点的显示名称,如“部门经理审批”、“财务审核”等
*/
@TableField("node_name")
private String nodeName;
/**
* 节点执行状态
* 1=进行中,2=已完成,3=已取消,4=已跳过
*/
@TableField("status")
private Integer status;
/**
* 节点开始执行时间
* 记录节点开始执行的时间
*/
@TableField("start_time")
private Date startTime;
/**
* 节点结束执行时间
* 记录节点完成、取消或跳过的时间
*/
@TableField("end_time")
private Date endTime;
/**
* Flowable引擎执行ID
* 对应Flowable引擎中的execution_id,用于与引擎交互
*/
@TableField("execution_id")
private String executionId;
/**
* 主键ID
* 使用雪花算法生成的分布式ID
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 逻辑删除字段
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
private String delFlag;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
@@ -0,0 +1,198 @@
package com.pig4cloud.pigx.flow.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* 流程节点记录分配用户实体类
* <p>
* 记录流程节点的执行人信息和执行详情。当一个流程节点需要由特定用户处理时, 系统会为每个被分配的用户创建一条记录。这个实体保存了用户的任务执行状态、
* 处理时间、审批意见等核心信息,是流程执行过程中的重要审计记录。
* </p>
* <p>
* 与ProcessNodeRecord的关系:ProcessNodeRecord记录节点的整体执行情况, 而本实体记录该节点分配给具体用户的执行情况。一个节点可能分配给多个用户
* (如会签、或签场景),因此一个ProcessNodeRecord可对应多个ProcessNodeRecordAssignUser。
* </p>
*
* @author Vincent
* @since 2023-07-06
*/
@Getter
@Setter
@TenantTable
@Accessors(chain = true)
@TableName("process_node_record_assign_user")
public class ProcessNodeRecordAssignUser {
/**
* 流程定义ID
* <p>
* 关联到流程定义,标识该任务属于哪个流程模板。 对应Process表的flowId字段,用于追溯任务的流程来源。
* </p>
*/
@TableField("flow_id")
private String flowId;
/**
* 流程实例ID
* <p>
* Flowable引擎中的流程实例标识符,用于关联到具体的流程实例。 通过此ID可以在Flowable引擎中查询流程实例的详细信息和运行状态。
* </p>
*/
@TableField("process_instance_id")
private String processInstanceId;
/**
* 节点表单数据
* <p>
* JSON格式存储的表单数据,记录用户在处理该节点时提交的所有表单信息。 与ProcessNodeData中的data字段类似,但这里专门记录该执行人提交的数据。
* 在会签场景下,不同执行人可能提交不同的表单数据。
* </p>
*/
@TableField("data")
private String data;
/**
* 节点ID
* <p>
* 流程定义中的节点标识符,标识任务属于哪个流程节点。 与Node对象的id字段对应,用于定位流程图中的具体位置。
* </p>
*/
@TableField("node_id")
private String nodeId;
/**
* 执行用户ID
* <p>
* 被分配处理该节点任务的用户标识符。 对应系统用户表的用户ID,标识谁负责处理这个任务。 在任务分配时设置,用于权限控制和任务查询。
* </p>
*/
@TableField("user_id")
private Long userId;
/**
* 任务执行状态
* <p>
* 记录该用户对任务的处理状态,对应NodeStatusEnum枚举值: 0-待处理:任务已分配但用户还未处理 1-同意:用户已审批通过 2-拒绝:用户已审批拒绝
* 3-撤销:任务已被撤销 4-转办:任务已转交他人处理 5-终止:流程已终止 6-跳过:任务被自动跳过 7-待执行:等待执行中
* </p>
*/
@TableField("status")
private Integer status;
/**
* 任务开始时间
* <p>
* 记录任务分配给用户的时间,即用户开始拥有该任务处理权的时间。 用于计算任务处理时长和监控任务时效性。
* </p>
*/
@TableField("start_time")
private LocalDateTime startTime;
/**
* 任务结束时间
* <p>
* 记录用户完成任务处理的时间,包括同意、拒绝、转办等操作的时间。 与startTime配合可计算任务处理耗时,用于绩效分析和流程优化。
* </p>
*/
@TableField("end_time")
private LocalDateTime endTime;
/**
* 流程执行ID
* <p>
* Flowable引擎中的执行实例标识符,用于精确定位流程执行路径。 在并行网关、子流程等复杂场景下,一个流程实例可能有多个执行实例。
* </p>
*/
@TableField("execution_id")
private String executionId;
/**
* Flowable任务ID
* <p>
* Flowable引擎中的任务实例标识符,是任务在工作流引擎中的唯一标识。 通过此ID可以调用Flowable API完成任务、查询任务详情等操作。
* </p>
*/
@TableField("task_id")
private String taskId;
/**
* 审批意见
* <p>
* 用户在处理任务时填写的文字意见或备注,如批准理由、拒绝原因等。 这是流程审批的重要记录,用于后续的审计追踪和决策参考。
* </p>
*/
@TableField("approve_desc")
private String approveDesc;
/**
* 节点名称
* <p>
* 流程节点的显示名称,如"部门经理审批"、"财务审核"等。 冗余存储以提高查询效率,避免每次都需要关联查询节点配置。
* </p>
*/
@TableField("node_name")
private String nodeName;
/**
* 任务类型
* <p>
* 标识任务的类型,对应NodeTypeEnum枚举值: 0-发起人节点、1-审批人节点、2-抄送人节点、3-条件节点、4-并行节点等。
* 不同类型的任务有不同的处理逻辑和界面展示。
* </p>
*/
@TableField("task_type")
private String taskType;
/**
* 表单本地数据
* <p>
* 存储与该任务相关的本地化数据或临时数据,JSON格式。 可用于保存用户的草稿数据、中间计算结果或其他不需要提交到流程的辅助信息。
* </p>
*/
@TableField("local_data")
private String localData;
/**
* 主键ID
* <p>
* 任务分配记录的唯一标识符,采用雪花算法生成。
* </p>
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 逻辑删除标记
* <p>
* 用于软删除功能,删除时不会真正从数据库中移除记录。 0-正常,1-已删除。保留完整的任务处理记录用于审计。
* </p>
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
private String delFlag;
/**
* 创建时间
* <p>
* 记录任务分配的创建时间,通常与startTime相同或接近。 自动填充,用于数据审计。
* </p>
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新时间
* <p>
* 记录最后更新时间,在任务状态变更、审批意见填写等操作时更新。 用于跟踪任务处理的最新动态。
* </p>
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
@@ -0,0 +1,107 @@
package com.pig4cloud.pigx.flow.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* 流程发起人配置实体类
* <p>
* 用于配置哪些用户或部门可以发起特定的流程。通过本实体,可以灵活控制流程的发起权限,
* 支持按用户或按部门进行权限配置。这是流程权限管理的重要组成部分,确保只有授权的
* 人员才能发起相应的流程申请。
* </p>
* <p>
* 与Process实体的关系:多个ProcessStarter可以关联到同一个Process,
* 表示该流程可以由多个用户或部门发起。通过processId字段与Process表建立关联。
* </p>
*
* @author Vincent
* @since 2023-07-06
*/
@Getter
@Setter
@TenantTable
@Accessors(chain = true)
@TableName("process_starter")
public class ProcessStarter {
/**
* 类型关联ID
* <p>
* 根据type字段的值,此ID可能代表不同的含义:
* - 当type为"user"时:表示用户ID,对应系统用户表的用户标识
* - 当type为"dept"时:表示部门ID,对应组织架构中的部门标识
* 通过这种设计,可以灵活配置个人权限或部门权限。
* </p>
*/
@TableField("type_id")
private Long typeId;
/**
* 发起人类型
* <p>
* 标识发起人的类型,支持以下值:
* - "user":表示按用户配置,typeId为具体的用户ID
* - "dept":表示按部门配置,typeId为部门ID,该部门下的所有用户都有发起权限
* 这种设计支持精细化的权限控制和批量授权。
* </p>
*/
@TableField("type")
private String type;
/**
* 流程ID
* <p>
* 关联到Process表的主键ID,标识这个发起人配置属于哪个流程。
* 通过此字段建立与流程定义的关联关系,一个流程可以配置多个发起人。
* </p>
*/
@TableField("process_id")
private Long processId;
/**
* 主键ID
* <p>
* 流程发起人配置的唯一标识符,采用雪花算法生成。
* </p>
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 逻辑删除标记
* <p>
* 用于软删除功能,删除时不会真正从数据库中移除记录,而是标记为已删除。
* 0-正常,1-已删除。保留历史配置数据便于审计和恢复。
* </p>
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
private String delFlag;
/**
* 创建时间
* <p>
* 记录发起人配置的创建时间,自动填充。
* 用于追踪权限配置的时间线,便于审计和问题排查。
* </p>
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新时间
* <p>
* 记录配置的最后更新时间,在创建和更新时自动填充。
* 用于跟踪权限配置的变更历史。
* </p>
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
@@ -0,0 +1,6 @@
/*
* @author pigx archetype
* <p>
* 实体 存放目录
*/
package com.pig4cloud.pigx.flow.entity;
@@ -0,0 +1,121 @@
package com.pig4cloud.pigx.flow.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
/**
* 流程表单分组视图对象
* <p>
* 用于在流程列表页面按分组展示流程,提供流程的分类管理和展示功能。
* 支持将多个相关流程归类到同一分组中,便于用户查找和使用。
* </p>
*
* @author : willian fu
* @date : 2020/9/21
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FormGroupVo {
/**
* 分组ID
* <p>
* 流程分组的唯一标识符
* </p>
*/
private Long id;
/**
* 分组名称
* <p>
* 流程分组的显示名称,如"人事管理"、"财务审批"等
* </p>
*/
private String name;
/**
* 流程列表
* <p>
* 该分组下包含的所有流程信息
* </p>
*/
private List<FlowVo> items;
/**
* 流程视图对象
* <p>
* 表示单个流程的基本信息,用于在分组中展示流程列表
* </p>
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class FlowVo {
/**
* 流程ID
* <p>
* 流程的唯一标识符
* </p>
*/
private String flowId;
/**
* 发起范围描述
* <p>
* 描述哪些用户或角色可以发起该流程,用于前端展示
* </p>
*/
private String rangeShow;
/**
* 流程名称
* <p>
* 流程的显示名称,如"请假申请"、"报销申请"等
* </p>
*/
private String name;
/**
* 流程图标
* <p>
* 流程的图标标识,用于在列表中展示
* </p>
*/
private String logo;
/**
* 停用标识
* <p>
* 标识流程是否已停用,"1"表示已停用,其他表示正常
* </p>
*/
private String stop;
/**
* 流程备注
* <p>
* 流程的详细说明或使用说明
* </p>
*/
private String remark;
/**
* 更新时间
* <p>
* 流程最后更新的时间戳
* </p>
*/
private LocalDateTime updated;
}
}
@@ -0,0 +1,240 @@
package com.pig4cloud.pigx.flow.vo;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldNameConstants;
/**
* 表单项视图对象
* <p>
* 用于定义流程表单中的各种表单项配置,包括输入框、选择框、日期选择器等各种表单控件。
* 支持动态表单的构建和渲染,提供丰富的表单项属性配置。
* </p>
*/
@Data
@NoArgsConstructor
@FieldNameConstants
public class FormItemVO {
/**
* 表单项ID
* <p>
* 表单项的唯一标识符,用于表单数据的提交和绑定
* </p>
*/
private String id;
/**
* 权限标识
* <p>
* 表单项的权限控制标识,如"write"(可写)、"read"(只读)、"hidden"(隐藏)
* </p>
*/
private String perm;
/**
* 表单项图标
* <p>
* 表单项的图标类名,用于在界面上展示对应的图标
* </p>
*/
private String icon;
/**
* 表单项名称
* <p>
* 表单项的显示名称,如"姓名"、"部门"、"金额"等
* </p>
*/
private String name;
/**
* 表单项类型
* <p>
* 表单项的控件类型,如"input"(输入框)、"select"(选择框)、"date"(日期选择)等
* </p>
*/
private String type;
/**
* 是否必填
* <p>
* 标识该表单项是否为必填项,true表示必填,false表示选填
* </p>
*/
private Boolean required;
/**
* 类型名称
* <p>
* 表单项类型的中文名称,用于前端展示
* </p>
*/
private String typeName;
/**
* 占位提示文本
* <p>
* 表单项的输入提示信息,显示在输入框内
* </p>
*/
private String placeholder;
/**
* 表单项属性配置
* <p>
* 包含表单项的各种扩展属性配置
* </p>
*/
private Props props = new Props();
/**
* 表单项属性配置对象
* <p>
* 封装了表单项的各种属性配置,支持不同类型表单项的特定属性
* </p>
*/
@Data
@NoArgsConstructor
@FieldNameConstants
public static class Props {
/**
* 表单项默认值
* <p>
* 表单项的默认值,可以是字符串、数字、数组等类型
* </p>
*/
private Object value;
/**
* 字典值
* <p>
* 当表单项类型为选择框时,指定使用的数据字典
* </p>
*/
private Object dictValue;
/**
* 选项列表
* <p>
* 选择类表单项的选项数据,通常为数组格式
* </p>
*/
private Object options;
/**
* 是否自定义
* <p>
* 标识是否允许用户自定义输入,通常用于选择框支持自定义选项
* </p>
*/
private Boolean self;
/**
* 是否多选
* <p>
* 标识选择类表单项是否支持多选
* </p>
*/
private Boolean multi;
/**
* 原始表单配置
* <p>
* 保存原始的表单配置信息,用于表单的动态生成
* </p>
*/
private Object oriForm;
/**
* 最大长度
* <p>
* 输入类表单项的最大输入长度限制
* </p>
*/
private Object maxLength;
/**
* 最小长度
* <p>
* 输入类表单项的最小输入长度限制
* </p>
*/
private Object minLength;
/**
* 正则表达式
* <p>
* 用于输入验证的正则表达式
* </p>
*/
private Object regex;
/**
* 正则验证说明
* <p>
* 正则表达式验证失败时的提示信息
* </p>
*/
private Object regexDesc;
/**
* 前缀文本
* <p>
* 显示在输入框前的文本,如货币符号"¥"
* </p>
*/
private String prefix;
/**
* 最小值
* <p>
* 数字类表单项的最小值限制
* </p>
*/
private Long min;
/**
* 最大值
* <p>
* 数字类表单项的最大值限制
* </p>
*/
private Long max;
/**
* 单位
* <p>
* 数字类表单项的单位,如"元"、"天"等
* </p>
*/
private String unit;
/**
* 小数位数
* <p>
* 数字类表单项允许的小数位数
* </p>
*/
private Integer radixNum;
/**
* 最大文件大小
* <p>
* 文件上传类表单项的文件大小限制,单位为MB
* </p>
*/
private Integer maxSize;
/**
* 允许的文件后缀
* <p>
* 文件上传类表单项允许的文件类型后缀数组,如["jpg", "png", "pdf"]
* </p>
*/
private String[] suffixArray;
}
}
@@ -0,0 +1,50 @@
package com.pig4cloud.pigx.flow.vo;
import lombok.Data;
import java.util.Map;
/**
* 节点格式化参数视图对象
* <p>
* 用于传递流程节点格式化所需的参数信息,包含流程实例、任务和动态参数等信息。
* 主要用于节点展示时的数据格式化和条件判断。
* </p>
*/
@Data
public class NodeFormatParamVo {
/**
* 流程ID
* <p>
* 流程定义的唯一标识符
* </p>
*/
private String flowId;
/**
* 流程实例ID
* <p>
* 流程实例的唯一标识符,用于定位具体的流程实例
* </p>
*/
private String processInstanceId;
/**
* 任务ID
* <p>
* 当前任务的唯一标识符,用于定位具体的待办任务
* </p>
*/
private String taskId;
/**
* 参数映射表
* <p>
* 包含节点格式化所需的动态参数,key为参数名,value为参数值。
* 可用于条件判断、动态展示等场景。
* </p>
*/
private Map<String, Object> paramMap;
}
@@ -0,0 +1,98 @@
package com.pig4cloud.pigx.flow.vo;
import lombok.Data;
import java.util.List;
/**
* 流程节点显示视图对象
* <p>
* 用于在前端展示流程节点的详细信息,包括节点的基本属性、审批人员、状态等。
* 支持树形结构和分支结构的节点展示,可用于流程图的渲染和流程进度的追踪。
* </p>
*/
@Data
public class NodeVo {
/**
* 节点ID
* <p>
* 流程节点的唯一标识符,对应流程定义中的节点ID
* </p>
*/
private String id;
/**
* 节点审批人列表
* <p>
* 该节点的审批人员信息列表,包含已审批和待审批的人员
* </p>
*/
private List<UserVo> userVoList;
/**
* 节点占位提示
* <p>
* 用于在节点上显示的提示信息,如"请选择审批人"等
* </p>
*/
private String placeholder;
/**
* 节点状态
* <p>
* 节点的执行状态:1-进行中,2-已完成
* </p>
*/
private Integer status;
/**
* 节点名称
* <p>
* 节点的显示名称,如"部门经理审批"、"财务审核"等
* </p>
*/
private String name;
/**
* 节点类型
* <p>
* 节点的类型标识,如"审批节点"、"抄送节点"、"条件节点"等。
* 使用Object类型以支持不同的类型表示方式
* </p>
*/
private Object type;
/**
* 是否需要发起人选择审批人
* <p>
* 标识该节点是否需要流程发起人指定审批人员
* </p>
*/
private Boolean selectUser;
/**
* 是否支持多选
* <p>
* 当需要选择审批人时,标识是否允许选择多个审批人
* </p>
*/
private Boolean multiple;
/**
* 子节点列表
* <p>
* 该节点的直接子节点列表,用于构建节点的树形结构
* </p>
*/
private List<NodeVo> children;
/**
* 分支节点列表
* <p>
* 条件分支或并行分支的节点列表,用于表示分支流程
* </p>
*/
private List<NodeVo> branch;
}
@@ -0,0 +1,25 @@
package com.pig4cloud.pigx.flow.vo;
import com.pig4cloud.pigx.flow.entity.ProcessCopy;
import lombok.Data;
/**
* 流程抄送视图对象
* <p>
* 继承自ProcessCopy实体类,用于展示流程抄送信息时的扩展字段。
* 主要用于抄送列表的展示,包含抄送的基本信息和扩展的显示信息。
* </p>
*/
@Data
public class ProcessCopyVo extends ProcessCopy {
/**
* 发起人姓名
* <p>
* 流程发起人的姓名,用于在抄送列表中显示流程是由谁发起的。
* 该字段是对基础实体的扩展,便于前端直接展示发起人信息。
* </p>
*/
private String startUserName;
}
@@ -0,0 +1,47 @@
package com.pig4cloud.pigx.flow.vo;
import com.pig4cloud.pigx.flow.entity.Process;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* 流程视图对象
* <p>
* 继承自Process实体类,用于流程发起和展示时的扩展信息。
* 包含了流程发起时需要的额外配置信息,如需要选择审批人的节点、流程变量、表单权限等。
* </p>
*/
@Data
public class ProcessVO extends Process {
/**
* 需要发起人选择审批人的节点ID列表
* <p>
* 包含所有需要流程发起人指定审批人的节点ID。
* 在流程发起时,前端需要根据这个列表展示审批人选择界面。
* </p>
*/
private List<String> selectUserNodeId;
/**
* 流程变量映射表
* <p>
* 包含流程运行时的变量信息,key为变量名,value为变量值。
* 这些变量可用于流程条件判断、表单数据传递等场景。
* </p>
*/
private Map<String, Object> variableMap;
/**
* 发起人节点的表单权限配置
* <p>
* 定义了发起人在填写表单时各个字段的权限。
* key为表单字段ID,value为权限标识(如"write"、"read"、"hidden")。
* 用于控制发起人对表单字段的操作权限。
* </p>
*/
private Map<String,String> formPerms;
}
@@ -0,0 +1,79 @@
package com.pig4cloud.pigx.flow.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* 用户视图对象
* <p>
* 用于在流程处理过程中展示用户信息,包括审批人、抄送人等角色的信息展示。
* 主要用于流程节点的用户列表、审批记录等场景。
* </p>
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserVo {
/**
* 用户ID
* <p>
* 用户的唯一标识符
* </p>
*/
private Long id;
/**
* 用户姓名
* <p>
* 用户的显示名称,通常为真实姓名
* </p>
*/
private String name;
/**
* 操作时间
* <p>
* 用户执行操作的时间,如审批时间、查看时间等
* </p>
*/
private LocalDateTime showTime;
/**
* 用户头像
* <p>
* 用户头像的URL地址,用于在界面上展示用户头像
* </p>
*/
private String avatar;
/**
* 审批意见
* <p>
* 用户在审批时填写的意见或备注信息
* </p>
*/
private String approveDesc;
/**
* 操作类型
* <p>
* 用户执行的操作类型,如"同意"、"拒绝"、"转办"、"加签"等
* </p>
*/
private String operType;
/**
* 处理状态
* <p>
* 用户的处理状态:0-待处理,1-处理中,2-已完成。默认为0
* </p>
*/
private Integer status = 0;
}
@@ -0,0 +1 @@
com.pig4cloud.pigx.flow.api.feign.RemoteFlowApiFlowService