From 71438543f68678dfe43918ac11cb6c87714bb3cf Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Sat, 3 Feb 2024 09:18:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=203.1.0=201.=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E8=8A=82=E7=82=B9=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/service/impl/WorkflowServiceImpl.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/WorkflowServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/WorkflowServiceImpl.java index 0a9441b43..85df07920 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/WorkflowServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/WorkflowServiceImpl.java @@ -49,6 +49,8 @@ import com.aizuda.easy.retry.template.datasource.persistence.po.WorkflowNode; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.google.common.collect.Lists; +import com.google.common.graph.ElementOrder; +import com.google.common.graph.Graph; import com.google.common.graph.GraphBuilder; import com.google.common.graph.MutableGraph; import lombok.RequiredArgsConstructor; @@ -85,7 +87,8 @@ public class WorkflowServiceImpl implements WorkflowService { @Transactional public boolean saveWorkflow(WorkflowRequestVO workflowRequestVO) { log.info("保存工作流信息:{}", JsonUtil.toJsonString(workflowRequestVO)); - MutableGraph graph = GraphBuilder.directed().allowsSelfLoops(false).build(); + MutableGraph graph = createGraph(); + // 添加虚拟头节点 graph.addNode(SystemConstants.ROOT); @@ -118,6 +121,17 @@ public class WorkflowServiceImpl implements WorkflowService { return true; } + private MutableGraph createGraph() { + return GraphBuilder.directed().nodeOrder(ElementOrder.sorted((Comparator) (o1, o2) -> { + if (o1 - o2 > 0) { + return 1; + } else if (o1 - o2 < 0) { + return -1; + } else { + return 0; + } + })).incidentEdgeOrder(ElementOrder.stable()).allowsSelfLoops(false).build(); + } private static Long calculateNextTriggerAt(final WorkflowRequestVO workflowRequestVO, Long time) { checkExecuteInterval(workflowRequestVO); @@ -231,7 +245,8 @@ public class WorkflowServiceImpl implements WorkflowService { Workflow workflow = workflowMapper.selectById(workflowRequestVO.getId()); Assert.notNull(workflow, () -> new EasyRetryServerException("工作流不存在")); - MutableGraph graph = GraphBuilder.directed().allowsSelfLoops(false).build(); + MutableGraph graph = createGraph(); + // 添加虚拟头节点 graph.addNode(SystemConstants.ROOT);