fix: 校验第一个用户任务节点的规则类型是否为“审批人自选”
This commit is contained in:
parent
4054e5fdec
commit
b6a9b5dda9
|
@ -40,6 +40,7 @@ import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@ -243,24 +244,19 @@ public class BpmModelServiceImpl implements BpmModelService {
|
||||||
if (startEvent == null) {
|
if (startEvent == null) {
|
||||||
throw exception(MODEL_DEPLOY_FAIL_BPMN_START_EVENT_NOT_EXISTS);
|
throw exception(MODEL_DEPLOY_FAIL_BPMN_START_EVENT_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
// 2. 校验第一个用户任务的规则类型是否为“审批人自选”,如果是则抛出异常。原因是,流程发起后,直接进入第一个用户任务,会出现无审批人的情况
|
// 2. 校验 UserTask 的 name 都配置了
|
||||||
List<SequenceFlow> outgoingFlows = startEvent.getOutgoingFlows();
|
|
||||||
// TODO @小北:可能极端情况下,startEvent 后面接了个 serviceTask,接着才是 userTask。。。
|
|
||||||
// TODO @小北:simple 因为第一个任务是发起人,可能要找第二个任务???
|
|
||||||
if (CollUtil.isNotEmpty(outgoingFlows)) {
|
|
||||||
FlowElement targetFlowElement = outgoingFlows.get(0).getTargetFlowElement();
|
|
||||||
Integer candidateStrategy = parseCandidateStrategy(targetFlowElement);
|
|
||||||
if (Objects.equals(candidateStrategy, BpmTaskCandidateStrategyEnum.APPROVE_USER_SELECT.getStrategy())) {
|
|
||||||
throw exception(MODEL_DEPLOY_FAIL_FIRST_USER_TASK_CANDIDATE_STRATEGY_ERROR, targetFlowElement.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 3. 校验 UserTask 的 name 都配置了
|
|
||||||
List<UserTask> userTasks = BpmnModelUtils.getBpmnModelElements(bpmnModel, UserTask.class);
|
List<UserTask> userTasks = BpmnModelUtils.getBpmnModelElements(bpmnModel, UserTask.class);
|
||||||
userTasks.forEach(userTask -> {
|
userTasks.forEach(userTask -> {
|
||||||
if (StrUtil.isEmpty(userTask.getName())) {
|
if (StrUtil.isEmpty(userTask.getName())) {
|
||||||
throw exception(MODEL_DEPLOY_FAIL_BPMN_USER_TASK_NAME_NOT_EXISTS, userTask.getId());
|
throw exception(MODEL_DEPLOY_FAIL_BPMN_USER_TASK_NAME_NOT_EXISTS, userTask.getId());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
// 3. 校验第一个用户任务节点的规则类型是否为“审批人自选”
|
||||||
|
UserTask userTask = userTasks.get(0);
|
||||||
|
Integer candidateStrategy = parseCandidateStrategy(userTask);
|
||||||
|
if (Objects.equals(candidateStrategy, BpmTaskCandidateStrategyEnum.APPROVE_USER_SELECT.getStrategy())) {
|
||||||
|
throw exception(MODEL_DEPLOY_FAIL_FIRST_USER_TASK_CANDIDATE_STRATEGY_ERROR, userTask.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue