mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-12 13:39:01 +08:00
feat(flow): 新增表达式分配用户策略支持
- 在Node DTO中添加assignExpress和assignExpressName字段 - 实现AssignExpressStrategyImpl表达式分配策略类 - 支持通过表达式动态计算任务执行人列表 - 优化NodeFormatUtil中的用户分配逻辑 - 更新ProcessInstanceConstant添加表达式分配类型常量
This commit is contained in:
1 parent
79b27b6d7d
commit
0eaa4b6d11
6 files changed
+1069
-14
No files matched your search
+130
@@ -0,0 +1,130 @@
|
||||
package com.pig4cloud.pigx.flow.constant;
|
||||
|
||||
/**
|
||||
* 流程实例常量定义
|
||||
* <p>
|
||||
* 定义流程实例执行过程中使用的各种常量,包括: - 无执行人处理策略 - 拒绝处理策略 - 多人审批模式 - 任务分配类型 - 表单权限
|
||||
* </p>
|
||||
*
|
||||
* @author pigx
|
||||
*/
|
||||
public class ProcessInstanceConstant {
|
||||
|
||||
/**
|
||||
* 空执行人默认ID 当节点没有找到合适的执行人时使用该默认值
|
||||
*/
|
||||
public static final Long DEFAULT_EMPTY_ASSIGN = -99999999L;
|
||||
|
||||
/**
|
||||
* 无执行人处理策略:自动通过 当任务节点没有找到执行人时,自动通过该节点
|
||||
*/
|
||||
public static final String USER_TASK_NOBODY_HANDLER_TO_PASS = "TO_PASS";
|
||||
|
||||
/**
|
||||
* 无执行人处理策略:转交给管理员 当任务节点没有找到执行人时,将任务转交给流程管理员处理
|
||||
*/
|
||||
public static final String USER_TASK_NOBODY_HANDLER_TO_ADMIN = "TO_ADMIN";
|
||||
|
||||
/**
|
||||
* 无执行人处理策略:指定人员 当任务节点没有找到执行人时,转交给预先指定的人员处理
|
||||
*/
|
||||
public static final String USER_TASK_NOBODY_HANDLER_TO_USER = "TO_USER";
|
||||
|
||||
/**
|
||||
* 无执行人处理策略:结束流程 当任务节点没有找到执行人时,直接结束整个流程
|
||||
*/
|
||||
public static final String USER_TASK_NOBODY_HANDLER_TO_END = "TO_END";
|
||||
|
||||
/**
|
||||
* 无执行人处理策略:拒绝 当任务节点没有找到执行人时,自动拒绝该任务
|
||||
*/
|
||||
public static final String USER_TASK_NOBODY_HANDLER_TO_REFUSE = "TO_REFUSE";
|
||||
|
||||
/**
|
||||
* 拒绝处理策略:结束流程 审批人拒绝后,直接结束整个流程
|
||||
*/
|
||||
public static final String USER_TASK_REFUSE_TYPE_TO_END = "TO_END";
|
||||
|
||||
/**
|
||||
* 拒绝处理策略:跳转到指定节点 审批人拒绝后,流程跳转到指定的节点继续执行
|
||||
*/
|
||||
public static final String USER_TASK_REFUSE_TYPE_TO_NODE = "TO_NODE";
|
||||
|
||||
/**
|
||||
* 多人审批模式:会签 所有审批人都必须同意才能通过,任何一人拒绝则不通过
|
||||
*/
|
||||
public static final int MULTIPLE_MODE_AL_SAME = 1;
|
||||
|
||||
/**
|
||||
* 多人审批模式:或签 只要有一个人同意即可通过,无需等待其他人审批
|
||||
*/
|
||||
public static final int MULTIPLE_MODE_ONE = 2;
|
||||
|
||||
/**
|
||||
* 多人审批模式:顺签 按照指定顺序依次审批,前一人通过后才能轮到下一人
|
||||
*/
|
||||
public static final int MULTIPLE_MODE_ALL_SORT = 3;
|
||||
|
||||
/**
|
||||
* 任务分配类型 定义审批节点的执行人分配方式
|
||||
*/
|
||||
public static class AssignedTypeClass {
|
||||
|
||||
/**
|
||||
* 指定用户 直接指定具体的用户作为执行人
|
||||
*/
|
||||
public static final int USER = 1;
|
||||
|
||||
/**
|
||||
* 部门主管 根据发起人或上一节点执行人的部门,找到对应的部门主管作为执行人
|
||||
*/
|
||||
public static final int LEADER = 2;
|
||||
|
||||
/**
|
||||
* 发起人自己 由流程发起人自己处理该节点
|
||||
*/
|
||||
public static final int SELF = 5;
|
||||
|
||||
/**
|
||||
* 表单人员 从表单中的用户选择字段获取执行人
|
||||
*/
|
||||
public static final int FORM_USER = 8;
|
||||
|
||||
/**
|
||||
* 发起人自选 发起流程时由发起人手动选择该节点的执行人
|
||||
*/
|
||||
public static final int SELF_SELECT = 4;
|
||||
|
||||
/**
|
||||
* 角色 指定拥有特定角色的所有用户作为执行人
|
||||
*/
|
||||
public static final int ROLE = 3;
|
||||
|
||||
/** 表达式常量值 */
|
||||
public static final int EXPRESSION = 10;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 表单权限类型 定义节点对表单字段的操作权限
|
||||
*/
|
||||
public static class FormPermClass {
|
||||
|
||||
/**
|
||||
* 隐藏 该字段对当前节点执行人不可见
|
||||
*/
|
||||
public static final String HIDE = "H";
|
||||
|
||||
/**
|
||||
* 只读 该字段对当前节点执行人可见但不可编辑
|
||||
*/
|
||||
public static final String READ = "R";
|
||||
|
||||
/**
|
||||
* 编辑 该字段对当前节点执行人可见且可编辑
|
||||
*/
|
||||
public static final String EDIT = "E";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
package com.pig4cloud.pigx.flow.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 流程节点数据传输对象
|
||||
* <p>
|
||||
* 用于流程定义的节点配置信息传输。该对象包含了节点的所有配置信息, 包括节点类型、审批人配置、表单权限、条件配置等。
|
||||
* 支持嵌套结构,可以表示复杂的流程结构(如条件分支、并行分支)。
|
||||
* </p>
|
||||
*
|
||||
* @author pigx
|
||||
*/
|
||||
@Data
|
||||
public class Node {
|
||||
|
||||
/**
|
||||
* 节点唯一标识
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 父节点ID 用于构建节点的层级关系
|
||||
*/
|
||||
private String parentId;
|
||||
|
||||
/**
|
||||
* 头节点ID 用于条件分支和并行分支的开始节点标识
|
||||
*/
|
||||
private String headId;
|
||||
|
||||
/**
|
||||
* 尾节点ID 用于条件分支和并行分支的结束节点标识
|
||||
*/
|
||||
private String tailId;
|
||||
|
||||
/**
|
||||
* 占位符文本 用于流程设计器中的显示
|
||||
*/
|
||||
private String placeHolder;
|
||||
|
||||
/**
|
||||
* 节点类型 对应NodeTypeEnum中的值
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 节点名称 节点的显示名称
|
||||
*/
|
||||
@JsonProperty(value = "nodeName")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 错误标识 标识节点配置是否有错误
|
||||
*/
|
||||
private Boolean error;
|
||||
|
||||
/**
|
||||
* 子节点 当前节点的下一个节点,用于构建节点链
|
||||
*/
|
||||
@JsonProperty("childNode")
|
||||
private Node children;
|
||||
|
||||
/**
|
||||
* 事件配置 JSON格式存储节点事件配置(如超时提醒、自动审批等)
|
||||
*/
|
||||
private String eventConfig;
|
||||
|
||||
/**
|
||||
* 执行人分配类型 对应AssignedTypeClass中的常量(指定用户、部门主管、角色等)
|
||||
*/
|
||||
private Integer assignedType;
|
||||
|
||||
/**
|
||||
* 是否多人审批 true=多人审批,false=单人审批
|
||||
*/
|
||||
private Boolean multiple;
|
||||
|
||||
/**
|
||||
* 多人审批模式 1=会签(所有人都同意),2=或签(一人同意即可),3=顺签(依次审批)
|
||||
*/
|
||||
private Integer multipleMode;
|
||||
|
||||
/**
|
||||
* 部门主管级别 当assignedType为LEADER时,指定查找第几级主管
|
||||
*/
|
||||
private Integer deptLeaderLevel;
|
||||
|
||||
/** 分配规则名称 */
|
||||
private String assignExpressName;
|
||||
|
||||
/** 分配表达式 */
|
||||
private String assignExpress;
|
||||
|
||||
/**
|
||||
* 表单用户字段ID 当assignedType为FORM_USER时,指定从哪个表单字段获取用户
|
||||
*/
|
||||
private String formUserId;
|
||||
|
||||
/**
|
||||
* 表单用户字段名称 用于显示
|
||||
*/
|
||||
private String formUserName;
|
||||
|
||||
/**
|
||||
* 节点执行人列表 当assignedType为USER或ROLE时,存储具体的用户或角色信息
|
||||
*/
|
||||
private List<NodeUser> nodeUserList;
|
||||
|
||||
/**
|
||||
* 条件节点列表 当节点类型为条件分支时,存储所有分支节点
|
||||
*/
|
||||
private List<Node> conditionNodes;
|
||||
|
||||
/**
|
||||
* 表单字段权限配置 key=表单字段ID,value=权限类型(H=隐藏,R=只读,E=编辑)
|
||||
*/
|
||||
private Map<String, String> formPerms;
|
||||
|
||||
/**
|
||||
* 无执行人处理配置 定义当节点找不到执行人时的处理策略
|
||||
*/
|
||||
private Nobody nobody;
|
||||
|
||||
/**
|
||||
* 分组模式标识 用于条件配置的分组模式
|
||||
*/
|
||||
private Boolean groupMode;
|
||||
|
||||
/**
|
||||
* 条件列表 当节点为条件分支时,定义各分支的执行条件
|
||||
*/
|
||||
private List<GroupCondition> conditionList;
|
||||
|
||||
/**
|
||||
* 拒绝配置 定义节点拒绝后的处理策略
|
||||
*/
|
||||
private Refuse refuse;
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user