反序列化问题。
This commit is contained in:
parent
6dbfb2c878
commit
35b19e1198
@ -9,31 +9,16 @@ import java.util.Arrays;
|
||||
/**
|
||||
* 工作流节点类型枚举
|
||||
* 定义了工作流中所有可用的节点类型及其UI配置
|
||||
*
|
||||
* 节点类型说明:
|
||||
* 1. 事件类节点(Event):用于标记流程的开始和结束
|
||||
* 2. 任务类节点(Task):执行具体的业务操作
|
||||
* 3. 网关类节点(Gateway):控制流程的流转方向
|
||||
* 4. 容器类节点:包含子流程或调用其他流程
|
||||
*/
|
||||
@Getter
|
||||
public enum NodeTypeEnums {
|
||||
|
||||
/**
|
||||
* 开始节点 - 流程的起点
|
||||
* 功能:
|
||||
* - 标记流程的开始位置
|
||||
* - 可以定义流程启动条件
|
||||
* - 可以初始化流程变量
|
||||
*
|
||||
* 使用场景:
|
||||
* - 用户手动启动流程
|
||||
* - 定时触发流程
|
||||
* - 外部系统调用启动
|
||||
*
|
||||
* 限制:
|
||||
* - 每个流程必须有且仅有一个开始节点
|
||||
* 开始节点
|
||||
* 工作流的起点,每个流程必须有且仅有一个开始节点
|
||||
* 特点:
|
||||
* - 只能有出边,不能有入边
|
||||
* - 用于触发工作流的执行
|
||||
*/
|
||||
START_EVENT("START_EVENT", "开始节点", new NodeUiConfig()
|
||||
.setShape("circle")
|
||||
@ -42,20 +27,11 @@ public enum NodeTypeEnums {
|
||||
.setPorts(Arrays.asList("out"))),
|
||||
|
||||
/**
|
||||
* 结束节点 - 流程的终点
|
||||
* 功能:
|
||||
* - 标记流程的结束位置
|
||||
* - 可以定义流程结束时的清理操作
|
||||
* - 可以设置流程结果和返回值
|
||||
*
|
||||
* 使用场景:
|
||||
* - 流程正常结束
|
||||
* - 流程异常终止
|
||||
* - 需要返回处理结果
|
||||
*
|
||||
* 限制:
|
||||
* - 每个流程必须有且仅有一个结束节点
|
||||
* 结束节点
|
||||
* 工作流的终点,每个流程必须有且仅有一个结束节点
|
||||
* 特点:
|
||||
* - 只能有入边,不能有出边
|
||||
* - 标志着工作流的结束
|
||||
*/
|
||||
END_EVENT("END_EVENT", "结束节点", new NodeUiConfig()
|
||||
.setShape("circle")
|
||||
@ -64,24 +40,12 @@ public enum NodeTypeEnums {
|
||||
.setPorts(Arrays.asList("in"))),
|
||||
|
||||
/**
|
||||
* 用户任务节点 - 需要人工处理的任务
|
||||
* 功能:
|
||||
* - 分配任务给指定用户或角色
|
||||
* - 支持任务表单的填写
|
||||
* - 可以设置处理期限和提醒
|
||||
* - 支持任务的转办、委托、退回
|
||||
*
|
||||
* 使用场景:
|
||||
* - 审批流程
|
||||
* - 表单填写
|
||||
* - 人工审核
|
||||
* - 数据确认
|
||||
*
|
||||
* 配置项:
|
||||
* - 处理人/角色
|
||||
* - 表单定义
|
||||
* - 处理期限
|
||||
* - 催办规则
|
||||
* 用户任务节点
|
||||
* 需要人工处理的任务节点
|
||||
* 特点:
|
||||
* - 需要用户交互
|
||||
* - 可以分配给特定用户或角色
|
||||
* - 支持审批、填写表单等操作
|
||||
*/
|
||||
USER_TASK("USER_TASK", "用户任务", new NodeUiConfig()
|
||||
.setShape("rectangle")
|
||||
@ -90,24 +54,12 @@ public enum NodeTypeEnums {
|
||||
.setPorts(Arrays.asList("in", "out"))),
|
||||
|
||||
/**
|
||||
* 服务任务节点 - 自动执行的系统服务
|
||||
* 功能:
|
||||
* - 调用系统服务或外部接口
|
||||
* - 执行自动化操作
|
||||
* - 支持异步执行和结果回调
|
||||
* - 可以进行数据转换和处理
|
||||
*
|
||||
* 使用场景:
|
||||
* - 调用外部系统API
|
||||
* - 发送通知消息
|
||||
* - 数据同步处理
|
||||
* - 自动化操作
|
||||
*
|
||||
* 配置项:
|
||||
* - 服务类型
|
||||
* - 接口参数
|
||||
* - 超时设置
|
||||
* - 重试策略
|
||||
* 服务任务节点
|
||||
* 自动执行的系统服务任务
|
||||
* 特点:
|
||||
* - 自动执行,无需人工干预
|
||||
* - 可以调用外部服务或系统API
|
||||
* - 支持异步执行
|
||||
*/
|
||||
SERVICE_TASK("SERVICE_TASK", "服务任务", new NodeUiConfig()
|
||||
.setShape("rectangle")
|
||||
@ -116,24 +68,12 @@ public enum NodeTypeEnums {
|
||||
.setPorts(Arrays.asList("in", "out"))),
|
||||
|
||||
/**
|
||||
* 脚本任务节点 - 执行自定义脚本
|
||||
* 功能:
|
||||
* - 执行自定义脚本代码
|
||||
* - 支持多种脚本语言
|
||||
* - 可以访问流程变量
|
||||
* - 支持复杂的业务逻辑
|
||||
*
|
||||
* 使用场景:
|
||||
* - 数据处理和转换
|
||||
* - 条件判断
|
||||
* - 自定义业务规则
|
||||
* - 系统集成
|
||||
*
|
||||
* 配置项:
|
||||
* - 脚本语言类型
|
||||
* - 脚本内容
|
||||
* - 资源限制
|
||||
* - 超时设置
|
||||
* 脚本任务节点
|
||||
* 执行自定义脚本的任务节点
|
||||
* 特点:
|
||||
* - 支持多种脚本语言(如Shell、Python等)
|
||||
* - 可以执行自定义业务逻辑
|
||||
* - 适合复杂的数据处理和计算
|
||||
*/
|
||||
SCRIPT_TASK("SCRIPT_TASK", "脚本任务", new NodeUiConfig()
|
||||
.setShape("rectangle")
|
||||
@ -142,25 +82,12 @@ public enum NodeTypeEnums {
|
||||
.setPorts(Arrays.asList("in", "out"))),
|
||||
|
||||
/**
|
||||
* 排他网关 - 条件分支
|
||||
* 功能:
|
||||
* - 根据条件选择一个分支执行
|
||||
* - 支持复杂的条件表达式
|
||||
* - 可以设置默认分支
|
||||
*
|
||||
* 使用场景:
|
||||
* - 条件判断
|
||||
* - 分支选择
|
||||
* - 业务规则路由
|
||||
*
|
||||
* 配置项:
|
||||
* - 分支条件表达式
|
||||
* - 默认分支设置
|
||||
* - 条件优先级
|
||||
*
|
||||
* 限制:
|
||||
* - 必须至少有两个出口
|
||||
* - 条件必须互斥
|
||||
* 排他网关
|
||||
* 基于条件的分支控制
|
||||
* 特点:
|
||||
* - 只会选择一个分支执行
|
||||
* - 需要设置分支条件
|
||||
* - 适合互斥的业务场景
|
||||
*/
|
||||
EXCLUSIVE_GATEWAY("EXCLUSIVE_GATEWAY", "排他网关", new NodeUiConfig()
|
||||
.setShape("diamond")
|
||||
@ -169,25 +96,12 @@ public enum NodeTypeEnums {
|
||||
.setPorts(Arrays.asList("in", "out"))),
|
||||
|
||||
/**
|
||||
* 并行网关 - 并行分支
|
||||
* 功能:
|
||||
* - 将流程分成多个并行分支
|
||||
* - 等待所有分支完成后合并
|
||||
* - 支持复杂的并行处理
|
||||
*
|
||||
* 使用场景:
|
||||
* - 并行审批
|
||||
* - 多任务同时处理
|
||||
* - 并行数据处理
|
||||
*
|
||||
* 配置项:
|
||||
* - 分支数量
|
||||
* - 合并策略
|
||||
* - 超时设置
|
||||
*
|
||||
* 限制:
|
||||
* - 必须有对应的合并节点
|
||||
* - 所有分支都必须完成才能继续
|
||||
* 并行网关
|
||||
* 并行执行多个分支
|
||||
* 特点:
|
||||
* - 所有分支同时执行
|
||||
* - 等待所有分支完成才继续
|
||||
* - 适合并行处理的业务场景
|
||||
*/
|
||||
PARALLEL_GATEWAY("PARALLEL_GATEWAY", "并行网关", new NodeUiConfig()
|
||||
.setShape("diamond")
|
||||
@ -196,24 +110,12 @@ public enum NodeTypeEnums {
|
||||
.setPorts(Arrays.asList("in", "out"))),
|
||||
|
||||
/**
|
||||
* 子流程节点 - 嵌入式子流程
|
||||
* 功能:
|
||||
* - 在当前流程中嵌入子流程
|
||||
* - 可以重用流程片段
|
||||
* - 支持事务处理
|
||||
* - 可以有自己的变量范围
|
||||
*
|
||||
* 使用场景:
|
||||
* - 流程复用
|
||||
* - 模块化处理
|
||||
* - 事务管理
|
||||
* - 错误处理
|
||||
*
|
||||
* 配置项:
|
||||
* - 子流程定义
|
||||
* - 输入参数映射
|
||||
* - 输出参数映射
|
||||
* - 错误处理策略
|
||||
* 子流程节点
|
||||
* 嵌套的子流程
|
||||
* 特点:
|
||||
* - 可以包含完整的子流程
|
||||
* - 支持流程的模块化和复用
|
||||
* - 可以独立部署和版本控制
|
||||
*/
|
||||
SUBPROCESS("SUB_PROCESS", "子流程", new NodeUiConfig()
|
||||
.setShape("rectangle")
|
||||
@ -222,24 +124,12 @@ public enum NodeTypeEnums {
|
||||
.setPorts(Arrays.asList("in", "out"))),
|
||||
|
||||
/**
|
||||
* 调用活动节点 - 外部流程调用
|
||||
* 功能:
|
||||
* - 调用外部定义的流程
|
||||
* - 支持跨系统流程调用
|
||||
* - 可以传递和接收参数
|
||||
* - 支持异步调用
|
||||
*
|
||||
* 使用场景:
|
||||
* - 跨系统流程集成
|
||||
* - 公共流程复用
|
||||
* - 分布式流程处理
|
||||
* - 大型流程解耦
|
||||
*
|
||||
* 配置项:
|
||||
* - 目标流程定义
|
||||
* - 版本控制
|
||||
* - 参数映射
|
||||
* - 调用方式(同步/异步)
|
||||
* 调用活动节点
|
||||
* 调用外部定义的流程
|
||||
* 特点:
|
||||
* - 可以调用其他已定义的流程
|
||||
* - 支持流程的复用
|
||||
* - 可以传递参数和接收返回值
|
||||
*/
|
||||
CALL_ACTIVITY("CALL_ACTIVITY", "调用活动", new NodeUiConfig()
|
||||
.setShape("rectangle")
|
||||
@ -248,13 +138,13 @@ public enum NodeTypeEnums {
|
||||
.setPorts(Arrays.asList("in", "out")));
|
||||
|
||||
@JsonValue
|
||||
private final String value;
|
||||
private final String description;
|
||||
private final String code;
|
||||
private final String name;
|
||||
private final NodeUiConfig uiConfig;
|
||||
|
||||
NodeTypeEnums(String value, String description, NodeUiConfig uiConfig) {
|
||||
this.value = value;
|
||||
this.description = description;
|
||||
this.code = value;
|
||||
this.name = description;
|
||||
this.uiConfig = uiConfig;
|
||||
}
|
||||
|
||||
@ -267,7 +157,7 @@ public enum NodeTypeEnums {
|
||||
*/
|
||||
public static NodeTypeEnums fromValue(String value) {
|
||||
for (NodeTypeEnums type : values()) {
|
||||
if (type.value.equals(value)) {
|
||||
if (type.code.equals(value)) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
|
||||
@ -71,8 +71,8 @@ public class SchemaGenerator {
|
||||
|
||||
// 设置基本信息
|
||||
node.put("code", nodeType.getCode());
|
||||
node.put("name", nodeType.getDescription());
|
||||
node.put("description", nodeType.getDescription());
|
||||
node.put("name", nodeType.getName());
|
||||
node.put("description", nodeType.getName());
|
||||
|
||||
// 生成配置schema并设置到configSchema字段
|
||||
ObjectNode configSchema = generateConfigSchema(configClass);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user