From d56d97a1177bb6bacb737007f2bdabffb3570fcd Mon Sep 17 00:00:00 2001 From: luoyi <972849752@qq.com> Date: Mon, 2 Sep 2024 18:42:57 +0800 Subject: [PATCH] =?UTF-8?q?enhancement=20#IAMBU8=20ELBus=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=99=AE=E9=80=9A=E8=8A=82=E7=82=B9=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../builder/el/CommonNodeELWrapper.java | 25 +++++++++++++++++++ .../yomahub/liteflow/builder/el/ELBus.java | 16 +++++++++--- .../test/builder/ThenELBuilderTest.java | 11 ++++++++ 3 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 liteflow-el-builder/src/main/java/com/yomahub/liteflow/builder/el/CommonNodeELWrapper.java diff --git a/liteflow-el-builder/src/main/java/com/yomahub/liteflow/builder/el/CommonNodeELWrapper.java b/liteflow-el-builder/src/main/java/com/yomahub/liteflow/builder/el/CommonNodeELWrapper.java new file mode 100644 index 000000000..76723560d --- /dev/null +++ b/liteflow-el-builder/src/main/java/com/yomahub/liteflow/builder/el/CommonNodeELWrapper.java @@ -0,0 +1,25 @@ +package com.yomahub.liteflow.builder.el; + +/** + * 普通节点表示 + * + * @author luo yi + * @since 2.12.3 + */ +public class CommonNodeELWrapper extends NodeELWrapper { + + public CommonNodeELWrapper(String nodeId) { + super(nodeId); + } + + @Override + protected String toEL(Integer depth, StringBuilder paramContext) { + CommonNodeELWrapper nodeElWrapper = (CommonNodeELWrapper) this.getFirstWrapper(); + StringBuilder sb = new StringBuilder(); + processWrapperTabs(sb, depth); + sb.append(nodeElWrapper.getNodeId()); + processWrapperProperty(sb, paramContext); + return sb.toString(); + } + +} diff --git a/liteflow-el-builder/src/main/java/com/yomahub/liteflow/builder/el/ELBus.java b/liteflow-el-builder/src/main/java/com/yomahub/liteflow/builder/el/ELBus.java index 7788fe07f..149c43458 100644 --- a/liteflow-el-builder/src/main/java/com/yomahub/liteflow/builder/el/ELBus.java +++ b/liteflow-el-builder/src/main/java/com/yomahub/liteflow/builder/el/ELBus.java @@ -132,6 +132,16 @@ public class ELBus { return new NodeELWrapper(nodeId); } + /** + * 创建普通 node 单节点表达式 + * + * @param nodeId 节点 id + * @return {@link CommonNodeELWrapper} + */ + public static CommonNodeELWrapper commonNode(String nodeId){ + return new CommonNodeELWrapper(nodeId); + } + /** * 创建 switch 选择表达式 * @@ -364,9 +374,9 @@ public class ELBus { public static void checkBooleanArgs(ELWrapper... elWrappers) { for(ELWrapper elWrapper : elWrappers){ if(!(elWrapper instanceof AndELWrapper) - && !(elWrapper instanceof OrELWrapper) - && !(elWrapper instanceof NotELWrapper) - && !(elWrapper instanceof NodeELWrapper)){ + && !(elWrapper instanceof OrELWrapper) + && !(elWrapper instanceof NotELWrapper) + && !(elWrapper instanceof NodeELWrapper)){ throw new RuntimeException("param is error"); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-builder/src/test/java/com/yomahub/liteflow/test/builder/ThenELBuilderTest.java b/liteflow-testcase-el/liteflow-testcase-el-builder/src/test/java/com/yomahub/liteflow/test/builder/ThenELBuilderTest.java index 758e21fcc..a27211925 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-builder/src/test/java/com/yomahub/liteflow/test/builder/ThenELBuilderTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-builder/src/test/java/com/yomahub/liteflow/test/builder/ThenELBuilderTest.java @@ -22,6 +22,17 @@ import java.util.Map; @EnableAutoConfiguration public class ThenELBuilderTest extends BaseTest { + @Test + public void testThen0(){ + Map name2Value = new HashMap(); + name2Value.put("name", "zhangsan"); + name2Value.put("age", 18); + System.out.println(ELBus.then(ELBus.commonNode("a").data("nodeData", name2Value).tag("tagA").maxWaitSeconds(10).retry(2), ELBus.node("b")).toEL(true)); + String expected = "nodeData = '{\"name\":\"zhangsan\",\"age\":18}';\nTHEN(\n\ta.tag(\"tagA\").data(nodeData).maxWaitSeconds(10).retry(2),\n\tnode(\"b\")\n);"; + Assertions.assertEquals(expected, + ELBus.then(ELBus.commonNode("a").data("nodeData", name2Value).tag("tagA").maxWaitSeconds(10).retry(2), ELBus.node("b")).toEL(true)); + } + // then组件测试 @Test public void testThen1(){