From 845252a2b9a108085d8a80705389a9c88d709bb2 Mon Sep 17 00:00:00 2001 From: daihw <928874202@qq.com> Date: Fri, 12 May 2023 17:01:17 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Revert=20"fix:=20workflow=E6=9C=AA=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E5=BC=80=E5=A7=8B/=E7=BB=93=E6=9D=9F=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E5=AD=98=E5=9C=A8=20[https://gitee.com/jianmu-dev/jia?= =?UTF-8?q?nmu/issues/I72O84]"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 77f4704d --- .../java/dev/jianmu/application/dsl/DslParser.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/application/src/main/java/dev/jianmu/application/dsl/DslParser.java b/application/src/main/java/dev/jianmu/application/dsl/DslParser.java index d604eb510..ce7bbb37e 100644 --- a/application/src/main/java/dev/jianmu/application/dsl/DslParser.java +++ b/application/src/main/java/dev/jianmu/application/dsl/DslParser.java @@ -690,16 +690,6 @@ public class DslParser { private void workflowSyntaxCheck() { var flow = this.workflow; var treeMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); - var nodeList = flow.entrySet().stream() - .filter(entry -> entry.getValue() instanceof Map) - .map(entry -> (Map) entry.getValue()) - .collect(Collectors.toList()); - if (nodeList.stream().noneMatch(node -> Objects.equals(node.get("type"), "start"))) { - throw new DslException("未设置开始节点"); - } - if (nodeList.stream().noneMatch(node -> Objects.equals(node.get("type"), "end"))) { - throw new DslException("未设置结束节点"); - } flow.forEach((key, val) -> { if (val instanceof Map) { this.checkNode(key, (Map) val); -- Gitee From b441d37ab121dead76587ae0cbda043c38beebd2 Mon Sep 17 00:00:00 2001 From: daihw <928874202@qq.com> Date: Fri, 12 May 2023 17:12:04 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20workflow=E6=9C=AA=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=BC=80=E5=A7=8B/=E7=BB=93=E6=9D=9F=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=20[https://gitee.com/jianmu-dev/jianmu/issue?= =?UTF-8?q?s/I72O84]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aggregate/definition/Workflow.java | 8 ++-- .../aggregate/definition/WorkflowTest.java | 38 +++++++++++++++++-- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/workflow-core/src/main/java/dev/jianmu/workflow/aggregate/definition/Workflow.java b/workflow-core/src/main/java/dev/jianmu/workflow/aggregate/definition/Workflow.java index b191d03de..19f16d5aa 100644 --- a/workflow-core/src/main/java/dev/jianmu/workflow/aggregate/definition/Workflow.java +++ b/workflow-core/src/main/java/dev/jianmu/workflow/aggregate/definition/Workflow.java @@ -490,12 +490,12 @@ public class Workflow extends AggregateRoot { throw new RuntimeException("Node数量不能小于2"); } long startCount = this.nodes.stream().filter(node -> node instanceof Start).count(); - if (startCount > 1) { - throw new RuntimeException("开始节点不能多于1个"); + if (startCount != 1) { + throw new RuntimeException("开始节点不存在或多于1个"); } long endCount = this.nodes.stream().filter(node -> node instanceof End).count(); - if (endCount > 1) { - throw new RuntimeException("结束节点不能多于1个"); + if (endCount != 1) { + throw new RuntimeException("结束节点不存在或多于1个"); } boolean d = this.nodes.stream() diff --git a/workflow-core/src/test/java/dev.jianmu.workflow/aggregate/definition/WorkflowTest.java b/workflow-core/src/test/java/dev.jianmu.workflow/aggregate/definition/WorkflowTest.java index 017befb44..974fa37cb 100644 --- a/workflow-core/src/test/java/dev.jianmu.workflow/aggregate/definition/WorkflowTest.java +++ b/workflow-core/src/test/java/dev.jianmu.workflow/aggregate/definition/WorkflowTest.java @@ -85,7 +85,23 @@ public class WorkflowTest { .nodes(nodes) .build(); }); - assertEquals("开始节点不能多于1个", exception.getMessage(), "开始节点不能多于1个"); + assertEquals("开始节点不存在或多于1个", exception.getMessage(), "开始节点不存在或多于1个"); + } + + @Test + @DisplayName("开始节点不能没有") + void buildRuleTest2_2() { + // 开始节点不能没有 + Set nodes = Set.of(condition1, end1); + Throwable exception = assertThrows(RuntimeException.class, () -> { + Workflow.Builder.aWorkflow() + .name("TestWL") + .ref("test_wl1") + .description("测试流程1") + .nodes(nodes) + .build(); + }); + assertEquals("开始节点不存在或多于1个", exception.getMessage(), "开始节点不存在或多于1个"); } @Test @@ -101,14 +117,30 @@ public class WorkflowTest { .nodes(nodes) .build() ); - assertEquals("结束节点不能多于1个", exception.getMessage(), "结束节点不能多于1个"); + assertEquals("结束节点不存在或多于1个", exception.getMessage(), "结束节点不存在或多于1个"); + } + + @Test + @DisplayName("结束节点不能没有") + void buildRuleTest3_2() { + // 结束节点不能没有 + Set nodes = Set.of(start1, condition1); + Throwable exception = assertThrows(RuntimeException.class, () -> + Workflow.Builder.aWorkflow() + .name("TestWL") + .ref("test_wl1") + .description("测试流程1") + .nodes(nodes) + .build() + ); + assertEquals("结束节点不存在或多于1个", exception.getMessage(), "结束节点不存在或多于1个"); } @Test @DisplayName("节点唯一引用名称不允许重复") void buildRuleTest4() { // 节点唯一引用名称不允许重复 - Set nodes = Set.of(condition1, condition2); + Set nodes = Set.of(start1, condition1, condition2, end1); Throwable exception = assertThrows(RuntimeException.class, () -> { Workflow.Builder.aWorkflow() .name("TestWL") -- Gitee