diff --git a/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/controller/ProcessController.java b/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/controller/ProcessController.java
index a4c3d6c14..bd8b157bb 100644
--- a/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/controller/ProcessController.java
+++ b/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/controller/ProcessController.java
@@ -66,7 +66,7 @@ public class ProcessController {
* - delete: 删除流程(逻辑删除,可恢复)
* - 修改分组:传入groupId参数可将流程移动到其他分组
*
- *
+ *
* @param flowId 流程定义ID
* @param type 操作类型(stop/using/delete)
* @param groupId 流程分组ID(可选,用于修改流程所属分组)
@@ -78,4 +78,20 @@ public class ProcessController {
return processService.update(flowId, type, groupId);
}
+ /**
+ * 验证流程ID是否在所有IProcessInstanceStatusEventService实现类中存在
+ *
+ * 用于前端表单验证,检查用户输入的流程ID是否已在系统中注册。
+ * 流程ID必须在某个IProcessInstanceStatusEventService实现类的getFlowId()方法中返回,
+ * 才能被认为是有效的流程ID。
+ *
+ *
+ * @param flowId 流程定义ID
+ * @return 验证结果:true表示流程ID存在,false表示不存在
+ */
+ @GetMapping("validateFlowId")
+ public R validateFlowId(@RequestParam String flowId) {
+ return processService.validateFlowId(flowId);
+ }
+
}
diff --git a/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/IProcessService.java b/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/IProcessService.java
index 345df70e8..abfa1f3c7 100644
--- a/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/IProcessService.java
+++ b/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/IProcessService.java
@@ -61,7 +61,7 @@ public interface IProcessService extends IService {
/**
* 更新流程状态或分组
- *
+ *
* @param flowId 流程定义ID
* @param type 操作类型:stop(停用)、using(启用)、delete(删除)
* @param groupId 流程分组ID(可选,用于修改流程分组)
@@ -69,4 +69,12 @@ public interface IProcessService extends IService {
*/
R update(String flowId, String type, Long groupId);
+ /**
+ * 验证流程ID是否在所有IProcessInstanceStatusEventService实现类中存在
+ *
+ * @param flowId 流程定义ID
+ * @return 验证结果:true表示存在,false表示不存在
+ */
+ R validateFlowId(String flowId);
+
}
diff --git a/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/impl/ProcessServiceImpl.java b/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/impl/ProcessServiceImpl.java
index 08b48bf1b..3c67cef54 100644
--- a/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/impl/ProcessServiceImpl.java
+++ b/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/impl/ProcessServiceImpl.java
@@ -24,6 +24,7 @@ import com.pig4cloud.pigx.flow.dto.NodeUser;
import com.pig4cloud.pigx.flow.entity.Process;
import com.pig4cloud.pigx.flow.entity.ProcessStarter;
import com.pig4cloud.pigx.flow.mapper.ProcessMapper;
+import com.pig4cloud.pigx.flow.service.IProcessInstanceStatusEventService;
import com.pig4cloud.pigx.flow.service.IProcessService;
import com.pig4cloud.pigx.flow.service.IProcessStarterService;
import com.pig4cloud.pigx.flow.support.utils.ModelUtil;
@@ -42,6 +43,7 @@ import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Objects;
+import java.util.Optional;
/**
* 流程定义服务实现类
@@ -66,6 +68,8 @@ public class ProcessServiceImpl extends ServiceImpl impl
private final Sequence flowSequence;
+ private final Optional> processInstanceStatusEventServicesOptional;
+
/**
* 获取流程详细信息
*
@@ -295,4 +299,35 @@ public class ProcessServiceImpl extends ServiceImpl impl
return R.ok();
}
+ /**
+ * 验证流程ID是否在所有IProcessInstanceStatusEventService实现类中存在
+ *
+ * 遍历所有实现了IProcessInstanceStatusEventService接口的服务类,检查输入的flowId
+ * 是否与任意一个服务的getFlowId()返回值匹配。如果匹配则返回true,否则返回false。
+ *
+ *
+ * @param flowId 流程定义ID
+ * @return 验证结果:true表示存在,false表示不存在
+ */
+ @Override
+ public R validateFlowId(String flowId) {
+ // 如果flowId为空,直接返回false
+ if (StrUtil.isBlank(flowId)) {
+ return R.ok(false);
+ }
+
+ // 如果没有IProcessInstanceStatusEventService实现类,返回false
+ if (processInstanceStatusEventServicesOptional.isEmpty()) {
+ log.warn("未找到任何IProcessInstanceStatusEventService实现类");
+ return R.ok(false);
+ }
+
+ // 遍历所有实现类,检查flowId是否存在
+ List serviceList = processInstanceStatusEventServicesOptional.get();
+ boolean exists = serviceList.stream()
+ .anyMatch(service -> flowId.equals(service.getFlowId()));
+
+ return R.ok(exists);
+ }
+
}