From e7f37e4fd5e46c72cc43efdd16b0c7858c68c560 Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Sat, 3 Feb 2024 00:06:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=203.1.0=201.=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B7=A5=E4=BD=9C=E6=B5=81=E8=AF=A6=E6=83=85?= =?UTF-8?q?NPE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/web/service/handler/WorkflowHandler.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/handler/WorkflowHandler.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/handler/WorkflowHandler.java index b9e5e487..52be09d8 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/handler/WorkflowHandler.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/handler/WorkflowHandler.java @@ -23,6 +23,7 @@ import org.springframework.util.CollectionUtils; import java.util.*; import java.util.concurrent.LinkedBlockingDeque; +import java.util.stream.Collectors; /** * @author xiaowoniu @@ -62,7 +63,7 @@ public class WorkflowHandler { // 是否挂载子节点 boolean mount = false; - for (Long successor : successors) { + for (Long successor : Sets.newTreeSet(successors)) { Set predecessors = graph.predecessors(successor); WorkflowDetailResponseVO.NodeInfo nodeInfo = workflowNodeMap.get(successor); currentConfig.setNodeType(nodeInfo.getNodeType()); @@ -73,7 +74,7 @@ public class WorkflowHandler { // 查找predecessors的公共祖先节点 Map> sets = new HashMap<>(); for (final Long predecessor : predecessors) { - Set set = Sets.newHashSet(); + Set set = Sets.newTreeSet(); sets.put(predecessor, set); findCommonAncestor(predecessor, set, graph); } @@ -83,8 +84,9 @@ public class WorkflowHandler { intersection = Sets.intersection(value, intersection); } - Long commonAncestor = new ArrayList<>(intersection).get(intersection.size() - 1); - WorkflowDetailResponseVO.NodeConfig parentNodeConfig = nodeConfigMap.get(graph.successors(commonAncestor).stream().findFirst().get()); + Long commonAncestor = intersection.stream().toList().get(intersection.size() - 1); + WorkflowDetailResponseVO.NodeConfig parentNodeConfig = nodeConfigMap.get( + Sets.newTreeSet(graph.successors(commonAncestor)).stream().findFirst().get()); parentNodeConfig.setChildNode(currentConfig); mount = false; } else { @@ -136,6 +138,7 @@ public class WorkflowHandler { // 获取节点信息 List conditionNodes = nodeConfig.getConditionNodes(); if (!CollectionUtils.isEmpty(conditionNodes)) { + conditionNodes = conditionNodes.stream().sorted(Comparator.comparing(WorkflowRequestVO.NodeInfo::getPriorityLevel)).collect(Collectors.toList()); for (final WorkflowRequestVO.NodeInfo nodeInfo : conditionNodes) { WorkflowNode workflowNode = WorkflowConverter.INSTANCE.toWorkflowNode(nodeInfo); workflowNode.setWorkflowId(workflowId); @@ -146,7 +149,7 @@ public class WorkflowHandler { workflowNode.setJobId(SystemConstants.DECISION_JOB_ID); DecisionConfig decision = nodeInfo.getDecision(); Assert.notNull(decision, () -> new EasyRetryServerException("【{}】配置信息不能为空", nodeInfo.getNodeName())); - Assert.notBlank(decision.getNodeExpression(), ()-> new EasyRetryServerException("【{}】表达式不能为空", nodeInfo.getNodeName())); + Assert.notBlank(decision.getNodeExpression(), () -> new EasyRetryServerException("【{}】表达式不能为空", nodeInfo.getNodeName())); Assert.notNull(decision.getDefaultDecision(), () -> new EasyRetryServerException("【{}】默认决策不能为空", nodeInfo.getNodeName())); Assert.notNull(decision.getExpressionType(), () -> new EasyRetryServerException("【{}】表达式类型不能为空", nodeInfo.getNodeName())); workflowNode.setNodeInfo(JsonUtil.toJsonString(decision));