Commit cc61bb1a61e837ac62dee76045d3cd77ed4f303b
1 parent
2123d7c0
review: 校验流程设计器第一个用户任务节点的规则类型是否为“审批人自选”
Showing
1 changed file
with
11 additions
and
10 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelServiceImpl.java
| ... | ... | @@ -40,10 +40,7 @@ import org.springframework.stereotype.Service; |
| 40 | 40 | import org.springframework.transaction.annotation.Transactional; |
| 41 | 41 | import org.springframework.validation.annotation.Validated; |
| 42 | 42 | |
| 43 | -import java.util.ArrayList; | |
| 44 | -import java.util.List; | |
| 45 | -import java.util.Map; | |
| 46 | -import java.util.Objects; | |
| 43 | +import java.util.*; | |
| 47 | 44 | |
| 48 | 45 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 49 | 46 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; |
| ... | ... | @@ -210,11 +207,11 @@ public class BpmModelServiceImpl implements BpmModelService { |
| 210 | 207 | public void deployModel(Long userId, String id) { |
| 211 | 208 | // 1.1 校验流程模型存在 |
| 212 | 209 | Model model = validateModelManager(id, userId); |
| 210 | + BpmModelMetaInfoVO metaInfo = BpmModelConvert.INSTANCE.parseMetaInfo(model); | |
| 213 | 211 | // 1.2 校验流程图 |
| 214 | 212 | byte[] bpmnBytes = getModelBpmnXML(model.getId()); |
| 215 | - validateBpmnXml(bpmnBytes); | |
| 213 | + validateBpmnXml(bpmnBytes, metaInfo.getType()); | |
| 216 | 214 | // 1.3 校验表单已配 |
| 217 | - BpmModelMetaInfoVO metaInfo = BpmModelConvert.INSTANCE.parseMetaInfo(model); | |
| 218 | 215 | BpmFormDO form = validateFormConfig(metaInfo); |
| 219 | 216 | // 1.4 校验任务分配规则已配置 |
| 220 | 217 | taskCandidateInvoker.validateBpmnConfig(bpmnBytes); |
| ... | ... | @@ -234,7 +231,7 @@ public class BpmModelServiceImpl implements BpmModelService { |
| 234 | 231 | repositoryService.saveModel(model); |
| 235 | 232 | } |
| 236 | 233 | |
| 237 | - private void validateBpmnXml(byte[] bpmnBytes) { | |
| 234 | + private void validateBpmnXml(byte[] bpmnBytes, int type) { | |
| 238 | 235 | BpmnModel bpmnModel = BpmnModelUtils.getBpmnModel(bpmnBytes); |
| 239 | 236 | if (bpmnModel == null) { |
| 240 | 237 | throw exception(MODEL_NOT_EXISTS); |
| ... | ... | @@ -252,10 +249,14 @@ public class BpmModelServiceImpl implements BpmModelService { |
| 252 | 249 | } |
| 253 | 250 | }); |
| 254 | 251 | // 3. 校验第一个用户任务节点的规则类型是否为“审批人自选” |
| 255 | - UserTask userTask = userTasks.get(0); | |
| 256 | - Integer candidateStrategy = parseCandidateStrategy(userTask); | |
| 252 | + Map<Integer, UserTask> userTaskMap = new HashMap<>(); | |
| 253 | + // BPMN 设计器,校验第一个用户任务节点 | |
| 254 | + userTaskMap.put(BpmModelTypeEnum.BPMN.getType(), userTasks.get(0)); | |
| 255 | + // SIMPLE 设计器,第一个节点固定为发起人所以校验第二个用户任务节点 | |
| 256 | + userTaskMap.put(BpmModelTypeEnum.SIMPLE.getType(), userTasks.get(1)); | |
| 257 | + Integer candidateStrategy = parseCandidateStrategy(userTaskMap.get(type)); | |
| 257 | 258 | if (Objects.equals(candidateStrategy, BpmTaskCandidateStrategyEnum.APPROVE_USER_SELECT.getStrategy())) { |
| 258 | - throw exception(MODEL_DEPLOY_FAIL_FIRST_USER_TASK_CANDIDATE_STRATEGY_ERROR, userTask.getName()); | |
| 259 | + throw exception(MODEL_DEPLOY_FAIL_FIRST_USER_TASK_CANDIDATE_STRATEGY_ERROR, userTaskMap.get(type).getName()); | |
| 259 | 260 | } |
| 260 | 261 | } |
| 261 | 262 | ... | ... |