Commit b6a9b5dda9f518b2cdc180759157b0562cb564a4
1 parent
4054e5fd
fix: 校验第一个用户任务节点的规则类型是否为“审批人自选”
Showing
1 changed file
with
8 additions
and
12 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelServiceImpl.java
| @@ -40,6 +40,7 @@ import org.springframework.stereotype.Service; | @@ -40,6 +40,7 @@ import org.springframework.stereotype.Service; | ||
| 40 | import org.springframework.transaction.annotation.Transactional; | 40 | import org.springframework.transaction.annotation.Transactional; |
| 41 | import org.springframework.validation.annotation.Validated; | 41 | import org.springframework.validation.annotation.Validated; |
| 42 | 42 | ||
| 43 | +import java.util.ArrayList; | ||
| 43 | import java.util.List; | 44 | import java.util.List; |
| 44 | import java.util.Map; | 45 | import java.util.Map; |
| 45 | import java.util.Objects; | 46 | import java.util.Objects; |
| @@ -243,24 +244,19 @@ public class BpmModelServiceImpl implements BpmModelService { | @@ -243,24 +244,19 @@ public class BpmModelServiceImpl implements BpmModelService { | ||
| 243 | if (startEvent == null) { | 244 | if (startEvent == null) { |
| 244 | throw exception(MODEL_DEPLOY_FAIL_BPMN_START_EVENT_NOT_EXISTS); | 245 | throw exception(MODEL_DEPLOY_FAIL_BPMN_START_EVENT_NOT_EXISTS); |
| 245 | } | 246 | } |
| 246 | - // 2. 校验第一个用户任务的规则类型是否为“审批人自选”,如果是则抛出异常。原因是,流程发起后,直接进入第一个用户任务,会出现无审批人的情况 | ||
| 247 | - List<SequenceFlow> outgoingFlows = startEvent.getOutgoingFlows(); | ||
| 248 | - // TODO @小北:可能极端情况下,startEvent 后面接了个 serviceTask,接着才是 userTask。。。 | ||
| 249 | - // TODO @小北:simple 因为第一个任务是发起人,可能要找第二个任务??? | ||
| 250 | - if (CollUtil.isNotEmpty(outgoingFlows)) { | ||
| 251 | - FlowElement targetFlowElement = outgoingFlows.get(0).getTargetFlowElement(); | ||
| 252 | - Integer candidateStrategy = parseCandidateStrategy(targetFlowElement); | ||
| 253 | - if (Objects.equals(candidateStrategy, BpmTaskCandidateStrategyEnum.APPROVE_USER_SELECT.getStrategy())) { | ||
| 254 | - throw exception(MODEL_DEPLOY_FAIL_FIRST_USER_TASK_CANDIDATE_STRATEGY_ERROR, targetFlowElement.getName()); | ||
| 255 | - } | ||
| 256 | - } | ||
| 257 | - // 3. 校验 UserTask 的 name 都配置了 | 247 | + // 2. 校验 UserTask 的 name 都配置了 |
| 258 | List<UserTask> userTasks = BpmnModelUtils.getBpmnModelElements(bpmnModel, UserTask.class); | 248 | List<UserTask> userTasks = BpmnModelUtils.getBpmnModelElements(bpmnModel, UserTask.class); |
| 259 | userTasks.forEach(userTask -> { | 249 | userTasks.forEach(userTask -> { |
| 260 | if (StrUtil.isEmpty(userTask.getName())) { | 250 | if (StrUtil.isEmpty(userTask.getName())) { |
| 261 | throw exception(MODEL_DEPLOY_FAIL_BPMN_USER_TASK_NAME_NOT_EXISTS, userTask.getId()); | 251 | throw exception(MODEL_DEPLOY_FAIL_BPMN_USER_TASK_NAME_NOT_EXISTS, userTask.getId()); |
| 262 | } | 252 | } |
| 263 | }); | 253 | }); |
| 254 | + // 3. 校验第一个用户任务节点的规则类型是否为“审批人自选” | ||
| 255 | + UserTask userTask = userTasks.get(0); | ||
| 256 | + Integer candidateStrategy = parseCandidateStrategy(userTask); | ||
| 257 | + if (Objects.equals(candidateStrategy, BpmTaskCandidateStrategyEnum.APPROVE_USER_SELECT.getStrategy())) { | ||
| 258 | + throw exception(MODEL_DEPLOY_FAIL_FIRST_USER_TASK_CANDIDATE_STRATEGY_ERROR, userTask.getName()); | ||
| 259 | + } | ||
| 264 | } | 260 | } |
| 265 | 261 | ||
| 266 | @Override | 262 | @Override |