mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-10 21:19:00 +08:00
feat(process): 新增流程ID有效性验证功能
- 在IProcessService接口添加validateFlowId方法声明 - 在ProcessServiceImpl实现流程ID验证逻辑 - 在ProcessController添加validateFlowId接口供前端调用 - 支持检查流程ID是否在IProcessInstanceStatusEventService实现类中注册
This commit is contained in:
1 parent
d6c1a0aad1
commit
0ad5864476
3 files changed
+61
-2
No files matched your search
+17
-1
@@ -66,7 +66,7 @@ public class ProcessController {
|
||||
* - delete: 删除流程(逻辑删除,可恢复)
|
||||
* - 修改分组:传入groupId参数可将流程移动到其他分组
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @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实现类中存在
|
||||
* <p>
|
||||
* 用于前端表单验证,检查用户输入的流程ID是否已在系统中注册。
|
||||
* 流程ID必须在某个IProcessInstanceStatusEventService实现类的getFlowId()方法中返回,
|
||||
* 才能被认为是有效的流程ID。
|
||||
* </p>
|
||||
*
|
||||
* @param flowId 流程定义ID
|
||||
* @return 验证结果:true表示流程ID存在,false表示不存在
|
||||
*/
|
||||
@GetMapping("validateFlowId")
|
||||
public R<Boolean> validateFlowId(@RequestParam String flowId) {
|
||||
return processService.validateFlowId(flowId);
|
||||
}
|
||||
|
||||
}
|
||||
+9
-1
@@ -61,7 +61,7 @@ public interface IProcessService extends IService<Process> {
|
||||
|
||||
/**
|
||||
* 更新流程状态或分组
|
||||
*
|
||||
*
|
||||
* @param flowId 流程定义ID
|
||||
* @param type 操作类型:stop(停用)、using(启用)、delete(删除)
|
||||
* @param groupId 流程分组ID(可选,用于修改流程分组)
|
||||
@@ -69,4 +69,12 @@ public interface IProcessService extends IService<Process> {
|
||||
*/
|
||||
R update(String flowId, String type, Long groupId);
|
||||
|
||||
/**
|
||||
* 验证流程ID是否在所有IProcessInstanceStatusEventService实现类中存在
|
||||
*
|
||||
* @param flowId 流程定义ID
|
||||
* @return 验证结果:true表示存在,false表示不存在
|
||||
*/
|
||||
R<Boolean> validateFlowId(String flowId);
|
||||
|
||||
}
|
||||
+35
@@ -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<ProcessMapper, Process> impl
|
||||
|
||||
private final Sequence flowSequence;
|
||||
|
||||
private final Optional<List<IProcessInstanceStatusEventService>> processInstanceStatusEventServicesOptional;
|
||||
|
||||
/**
|
||||
* 获取流程详细信息
|
||||
* <p>
|
||||
@@ -295,4 +299,35 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证流程ID是否在所有IProcessInstanceStatusEventService实现类中存在
|
||||
* <p>
|
||||
* 遍历所有实现了IProcessInstanceStatusEventService接口的服务类,检查输入的flowId
|
||||
* 是否与任意一个服务的getFlowId()返回值匹配。如果匹配则返回true,否则返回false。
|
||||
* </p>
|
||||
*
|
||||
* @param flowId 流程定义ID
|
||||
* @return 验证结果:true表示存在,false表示不存在
|
||||
*/
|
||||
@Override
|
||||
public R<Boolean> 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<IProcessInstanceStatusEventService> serviceList = processInstanceStatusEventServicesOptional.get();
|
||||
boolean exists = serviceList.stream()
|
||||
.anyMatch(service -> flowId.equals(service.getFlowId()));
|
||||
|
||||
return R.ok(exists);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user