From 09db166b91975b9432f404c29abdd115c2a625c3 Mon Sep 17 00:00:00 2001 From: "everywhere.z" Date: Thu, 20 Oct 2022 15:50:11 +0800 Subject: [PATCH] =?UTF-8?q?feature=20#I5WNMG=20=E8=84=9A=E6=9C=AC=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E6=94=AF=E6=8C=81javascript=E7=9A=84=E8=AF=AD?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../script/javascript/JavaScriptExecutor.java | 3 +- .../groovy/LiteflowXmlScriptGroovyELTest.java | 2 +- .../src/test/resources/scriptbean/flow.xml | 4 +- .../src/test/resources/xml-script/flow.el.xml | 2 +- ...a => LiteflowXmlScriptJsCommonELTest.java} | 7 +- .../LiteFlowXmlScriptIfelseJsELTest.java | 82 +++++++++++++++++++ .../script/javascript/ifelse/cmp/ACmp.java | 20 +++++ .../script/javascript/ifelse/cmp/BCmp.java | 21 +++++ .../script/javascript/ifelse/cmp/CCmp.java | 21 +++++ .../script/javascript/ifelse/cmp/DCmp.java | 24 ++++++ .../loop/LiteFlowXmlScriptLoopJsELTest.java | 65 +++++++++++++++ .../script/javascript}/loop/cmp/ACmp.java | 2 +- .../script/javascript}/loop/cmp/BCmp.java | 2 +- .../script/javascript}/loop/cmp/CCmp.java | 2 +- .../script/javascript}/loop/cmp/DCmp.java | 2 +- .../LiteflowXmlScriptJsRefreshELTest.java | 54 ++++++++++++ .../script/javascript/refresh/cmp/ACmp.java | 20 +++++ .../script/javascript/refresh/cmp/BCmp.java | 21 +++++ .../script/javascript/refresh/cmp/CCmp.java | 21 +++++ .../script/javascript/refresh/cmp/DCmp.java | 24 ++++++ .../LiteFlowScriptScriptbeanJsELTest.java | 44 ++++++++++ .../javascript/scriptbean/bean/DemoBean1.java | 22 +++++ .../javascript/scriptbean/bean/DemoBean2.java | 11 +++ .../javascript/scriptbean/cmp/ACmp.java | 20 +++++ .../javascript/scriptbean/cmp/BCmp.java | 21 +++++ .../javascript/scriptbean/cmp/CCmp.java | 21 +++++ .../sw/LiteflowXmlScriptJsSwitchELTest.java | 40 +++++++++ .../resources/ifelse/application.properties | 1 + .../src/test/resources/ifelse/flow.xml | 54 ++++++++++++ .../resources/loop/application.properties | 1 + .../src/test/resources/loop/flow.xml | 50 +++++++++++ .../resources/refresh/application.properties | 1 + .../src/test/resources/refresh/flow.xml | 21 +++++ .../test/resources/refresh/flow_update.xml | 28 +++++++ .../scriptbean/application.properties | 1 + .../src/test/resources/scriptbean/flow.xml | 27 ++++++ .../test/resources/sw/application.properties | 1 + .../src/test/resources/sw/flow.xml | 20 +++++ 38 files changed, 769 insertions(+), 14 deletions(-) rename liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/common/{LiteflowXmlScriptJsELTest.java => LiteflowXmlScriptJsCommonELTest.java} (84%) create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/LiteFlowXmlScriptIfelseJsELTest.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/ACmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/BCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/CCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/DCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/LiteFlowXmlScriptLoopJsELTest.java rename liteflow-testcase-el/{liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy => liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript}/loop/cmp/ACmp.java (86%) rename liteflow-testcase-el/{liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy => liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript}/loop/cmp/BCmp.java (86%) rename liteflow-testcase-el/{liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy => liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript}/loop/cmp/CCmp.java (86%) rename liteflow-testcase-el/{liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy => liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript}/loop/cmp/DCmp.java (91%) create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/LiteflowXmlScriptJsRefreshELTest.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/ACmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/BCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/CCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/DCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/LiteFlowScriptScriptbeanJsELTest.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/bean/DemoBean1.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/bean/DemoBean2.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/cmp/ACmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/cmp/BCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/cmp/CCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/sw/LiteflowXmlScriptJsSwitchELTest.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/ifelse/application.properties create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/ifelse/flow.xml create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/loop/application.properties create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/loop/flow.xml create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/refresh/application.properties create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/refresh/flow.xml create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/refresh/flow_update.xml create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/scriptbean/application.properties create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/scriptbean/flow.xml create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/sw/application.properties create mode 100644 liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/sw/flow.xml diff --git a/liteflow-script-plugin/liteflow-script-javascript/src/main/java/com/yomahub/liteflow/script/javascript/JavaScriptExecutor.java b/liteflow-script-plugin/liteflow-script-javascript/src/main/java/com/yomahub/liteflow/script/javascript/JavaScriptExecutor.java index a5888eecd..13bc2dc7d 100644 --- a/liteflow-script-plugin/liteflow-script-javascript/src/main/java/com/yomahub/liteflow/script/javascript/JavaScriptExecutor.java +++ b/liteflow-script-plugin/liteflow-script-javascript/src/main/java/com/yomahub/liteflow/script/javascript/JavaScriptExecutor.java @@ -40,7 +40,8 @@ public class JavaScriptExecutor implements ScriptExecutor { @Override public void load(String nodeId, String script) { try{ - CompiledScript compiledScript = ((Compilable) scriptEngine).compile(script); + String wrapScript = StrUtil.format("function process(){{}} process();",script); + CompiledScript compiledScript = ((Compilable) scriptEngine).compile(wrapScript); compiledScriptMap.put(nodeId, compiledScript); }catch (Exception e){ String errorMsg = StrUtil.format("script loading error for node[{}], error msg:{}", nodeId, e.getMessage()); diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/LiteflowXmlScriptGroovyELTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/LiteflowXmlScriptGroovyELTest.java index 200f8069b..a23cf2d63 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/LiteflowXmlScriptGroovyELTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/LiteflowXmlScriptGroovyELTest.java @@ -43,7 +43,7 @@ public class LiteflowXmlScriptGroovyELTest extends BaseTest { Assert.assertEquals(Integer.valueOf(6), context.getData("s1")); } - //测试条件脚本节点 + //测试选择脚本节点 @Test public void testScript2() { LiteflowResponse response = flowExecutor.execute2Resp("chain2", "arg"); diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/resources/scriptbean/flow.xml b/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/resources/scriptbean/flow.xml index faf7b2d42..fbb25a168 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/resources/scriptbean/flow.xml +++ b/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/resources/scriptbean/flow.xml @@ -18,10 +18,10 @@ - THEN(a,b,c,d) + THEN(a,b,c,d); - THEN(a,b,c,e) + THEN(a,b,c,e); \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/resources/xml-script/flow.el.xml b/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/resources/xml-script/flow.el.xml index eeb95746a..206db98e3 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/resources/xml-script/flow.el.xml +++ b/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/resources/xml-script/flow.el.xml @@ -25,7 +25,7 @@ ]]> - + 100){ diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/common/LiteflowXmlScriptJsELTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/common/LiteflowXmlScriptJsCommonELTest.java similarity index 84% rename from liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/common/LiteflowXmlScriptJsELTest.java rename to liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/common/LiteflowXmlScriptJsCommonELTest.java index 792e4d93e..b10bf871c 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/common/LiteflowXmlScriptJsELTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/common/LiteflowXmlScriptJsCommonELTest.java @@ -1,9 +1,6 @@ package com.yomahub.liteflow.test.script.javascript.common; -import cn.hutool.core.io.resource.ResourceUtil; import com.yomahub.liteflow.core.FlowExecutor; -import com.yomahub.liteflow.enums.FlowParserTypeEnum; -import com.yomahub.liteflow.flow.FlowBus; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.slot.DefaultContext; import com.yomahub.liteflow.test.BaseTest; @@ -26,10 +23,10 @@ import javax.annotation.Resource; */ @RunWith(SpringRunner.class) @TestPropertySource(value = "classpath:/common/application.properties") -@SpringBootTest(classes = LiteflowXmlScriptJsELTest.class) +@SpringBootTest(classes = LiteflowXmlScriptJsCommonELTest.class) @EnableAutoConfiguration @ComponentScan({"com.yomahub.liteflow.test.script.javascript.common.cmp"}) -public class LiteflowXmlScriptJsELTest extends BaseTest { +public class LiteflowXmlScriptJsCommonELTest extends BaseTest { @Resource private FlowExecutor flowExecutor; diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/LiteFlowXmlScriptIfelseJsELTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/LiteFlowXmlScriptIfelseJsELTest.java new file mode 100644 index 000000000..abdd26b50 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/LiteFlowXmlScriptIfelseJsELTest.java @@ -0,0 +1,82 @@ +package com.yomahub.liteflow.test.script.javascript.ifelse; + +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.flow.LiteflowResponse; +import com.yomahub.liteflow.test.BaseTest; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + +@RunWith(SpringRunner.class) +@TestPropertySource(value = "classpath:/ifelse/application.properties") +@SpringBootTest(classes = LiteFlowXmlScriptIfelseJsELTest.class) +@EnableAutoConfiguration +@ComponentScan({"com.yomahub.liteflow.test.script.javascript.ifelse.cmp"}) +public class LiteFlowXmlScriptIfelseJsELTest extends BaseTest { + + @Resource + private FlowExecutor flowExecutor; + + //IF只有2个参数 + @Test + public void testIf1() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("x0==>a==>b", response.getExecuteStepStrWithoutTime()); + } + + //IF只有3个参数 + @Test + public void testIf2() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain2", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("x1==>c==>d", response.getExecuteStepStrWithoutTime()); + } + + //IF有3个参数,进行嵌套 + @Test + public void testIf3() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain3", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("x1==>x1==>c==>c==>b", response.getExecuteStepStrWithoutTime()); + } + + //IF有2个参数,加上ELSE + @Test + public void testIf4() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain4", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("x1==>c==>d", response.getExecuteStepStrWithoutTime()); + } + + //IF有2个参数,ELSE里再嵌套一个IF + @Test + public void testIf5() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain5", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("x1==>x1==>c==>c==>b", response.getExecuteStepStrWithoutTime()); + } + + //标准的IF ELIF ELSE + @Test + public void testIf6() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("x1==>x0==>c==>c", response.getExecuteStepStrWithoutTime()); + } + + //IF ELIF... ELSE 的形式 + @Test + public void testIf7() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain7", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("x1==>x1==>x1==>x1==>d==>b==>a", response.getExecuteStepStrWithoutTime()); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/ACmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/ACmp.java new file mode 100644 index 000000000..9cd41a1cf --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/ACmp.java @@ -0,0 +1,20 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.script.javascript.ifelse.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("a") +public class ACmp extends NodeComponent { + + @Override + public void process() { + System.out.println("ACmp executed!"); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/BCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/BCmp.java new file mode 100644 index 000000000..fbc739190 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/BCmp.java @@ -0,0 +1,21 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.script.javascript.ifelse.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("b") +public class BCmp extends NodeComponent { + + @Override + public void process() { + System.out.println("BCmp executed!"); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/CCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/CCmp.java new file mode 100644 index 000000000..d15d15379 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/CCmp.java @@ -0,0 +1,21 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.script.javascript.ifelse.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("c") +public class CCmp extends NodeComponent { + + @Override + public void process() { + System.out.println("CCmp executed!"); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/DCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/DCmp.java new file mode 100644 index 000000000..b97e293ad --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/ifelse/cmp/DCmp.java @@ -0,0 +1,24 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.script.javascript.ifelse.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.slot.DefaultContext; + +@LiteflowComponent("d") +public class DCmp extends NodeComponent { + + @Override + public void process() { + DefaultContext context = this.getFirstContextBean(); + context.setData("count",198); + System.out.println("DCmp executed!"); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/LiteFlowXmlScriptLoopJsELTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/LiteFlowXmlScriptLoopJsELTest.java new file mode 100644 index 000000000..172414d38 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/LiteFlowXmlScriptLoopJsELTest.java @@ -0,0 +1,65 @@ +package com.yomahub.liteflow.test.script.javascript.loop; + +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.flow.LiteflowResponse; +import com.yomahub.liteflow.test.BaseTest; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + +@RunWith(SpringRunner.class) +@TestPropertySource(value = "classpath:/loop/application.properties") +@SpringBootTest(classes = LiteFlowXmlScriptLoopJsELTest.class) +@EnableAutoConfiguration +@ComponentScan({"com.yomahub.liteflow.test.script.javascript.loop.cmp"}) +public class LiteFlowXmlScriptLoopJsELTest extends BaseTest { + + @Resource + private FlowExecutor flowExecutor; + + //FOR循环数字直接在el中定义 + @Test + public void testLoop1() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("LOOP_2==>a==>b==>c==>a==>b==>c", response.getExecuteStepStr()); + } + + //FPR循环由For组件定义 + @Test + public void testLoop2() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain2", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("x==>a==>b==>c==>a==>b==>c==>a==>b==>c", response.getExecuteStepStr()); + } + + //FOR循环中加入BREAK组件 + @Test + public void testLoop3() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain3", "arg"); + Assert.assertTrue(response.isSuccess()); + } + + //WHILE循环 + @Test + public void testLoop4() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain4", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("z==>a==>d==>z==>a==>d==>z==>a==>d==>z==>a==>d==>z==>a==>d==>z", response.getExecuteStepStr()); + } + + //WHILE循环加入BREAK + @Test + public void testLoop5() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain5", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("z==>a==>d==>y==>z==>a==>d==>y==>z==>a==>d==>y==>z==>a==>d==>y", response.getExecuteStepStr()); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/loop/cmp/ACmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/cmp/ACmp.java similarity index 86% rename from liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/loop/cmp/ACmp.java rename to liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/cmp/ACmp.java index ec88b534d..e0f62fcae 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/loop/cmp/ACmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/cmp/ACmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.script.groovy.loop.cmp; +package com.yomahub.liteflow.test.script.javascript.loop.cmp; import com.yomahub.liteflow.core.NodeComponent; import org.springframework.stereotype.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/loop/cmp/BCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/cmp/BCmp.java similarity index 86% rename from liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/loop/cmp/BCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/cmp/BCmp.java index 45652438d..b373dd6fd 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/loop/cmp/BCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/cmp/BCmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.script.groovy.loop.cmp; +package com.yomahub.liteflow.test.script.javascript.loop.cmp; import com.yomahub.liteflow.core.NodeComponent; import org.springframework.stereotype.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/loop/cmp/CCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/cmp/CCmp.java similarity index 86% rename from liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/loop/cmp/CCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/cmp/CCmp.java index 18554bbaf..bed25390c 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/loop/cmp/CCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/cmp/CCmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.script.groovy.loop.cmp; +package com.yomahub.liteflow.test.script.javascript.loop.cmp; import com.yomahub.liteflow.core.NodeComponent; import org.springframework.stereotype.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/loop/cmp/DCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/cmp/DCmp.java similarity index 91% rename from liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/loop/cmp/DCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/cmp/DCmp.java index 11a5bb251..08b4d0592 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/script/groovy/loop/cmp/DCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/loop/cmp/DCmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.script.groovy.loop.cmp; +package com.yomahub.liteflow.test.script.javascript.loop.cmp; import com.yomahub.liteflow.core.NodeComponent; import com.yomahub.liteflow.slot.DefaultContext; diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/LiteflowXmlScriptJsRefreshELTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/LiteflowXmlScriptJsRefreshELTest.java new file mode 100644 index 000000000..4846a57f8 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/LiteflowXmlScriptJsRefreshELTest.java @@ -0,0 +1,54 @@ +package com.yomahub.liteflow.test.script.javascript.refresh; + +import cn.hutool.core.io.resource.ResourceUtil; +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.enums.FlowParserTypeEnum; +import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.flow.LiteflowResponse; +import com.yomahub.liteflow.slot.DefaultContext; +import com.yomahub.liteflow.test.BaseTest; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + + +/** + * 测试springboot下的groovy脚本组件,基于xml配置 + * @author Bryan.Zhang + * @since 2.6.0 + */ +@RunWith(SpringRunner.class) +@TestPropertySource(value = "classpath:/refresh/application.properties") +@SpringBootTest(classes = LiteflowXmlScriptJsRefreshELTest.class) +@EnableAutoConfiguration +@ComponentScan({"com.yomahub.liteflow.test.script.javascript.refresh.cmp"}) +public class LiteflowXmlScriptJsRefreshELTest extends BaseTest { + + @Resource + private FlowExecutor flowExecutor; + + //测试脚本的热重载 + @Test + public void testRefresh1() throws Exception{ + //根据配置,加载的应该是flow.xml,执行原来的规则 + LiteflowResponse responseOld = flowExecutor.execute2Resp("chain1", "arg"); + Assert.assertTrue(responseOld.isSuccess()); + Assert.assertEquals("d==>s1[选择脚本]==>a", responseOld.getExecuteStepStr()); + //更改规则,重新加载,更改的规则内容从flow_update.xml里读取,这里只是为了模拟下获取新的内容。不一定是从文件中读取 + String newContent = ResourceUtil.readUtf8Str("classpath: /refresh/flow_update.xml"); + //进行刷新 + FlowBus.refreshFlowMetaData(FlowParserTypeEnum.TYPE_EL_XML, newContent); + + //重新执行chain2这个链路,结果会变 + LiteflowResponse responseNew = flowExecutor.execute2Resp("chain1", "arg"); + Assert.assertTrue(responseNew.isSuccess()); + Assert.assertEquals("d==>s1[选择脚本_改]==>b==>s2[普通脚本_新增]", responseNew.getExecuteStepStr()); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/ACmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/ACmp.java new file mode 100644 index 000000000..97bf04cb9 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/ACmp.java @@ -0,0 +1,20 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.script.javascript.refresh.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("a") +public class ACmp extends NodeComponent { + + @Override + public void process() { + System.out.println("ACmp executed!"); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/BCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/BCmp.java new file mode 100644 index 000000000..2058dca83 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/BCmp.java @@ -0,0 +1,21 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.script.javascript.refresh.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("b") +public class BCmp extends NodeComponent { + + @Override + public void process() { + System.out.println("BCmp executed!"); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/CCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/CCmp.java new file mode 100644 index 000000000..79f62c735 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/CCmp.java @@ -0,0 +1,21 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.script.javascript.refresh.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("c") +public class CCmp extends NodeComponent { + + @Override + public void process() { + System.out.println("CCmp executed!"); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/DCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/DCmp.java new file mode 100644 index 000000000..9b25b2184 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/refresh/cmp/DCmp.java @@ -0,0 +1,24 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.script.javascript.refresh.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.slot.DefaultContext; + +@LiteflowComponent("d") +public class DCmp extends NodeComponent { + + @Override + public void process() { + DefaultContext context = this.getFirstContextBean(); + context.setData("count",198); + System.out.println("DCmp executed!"); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/LiteFlowScriptScriptbeanJsELTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/LiteFlowScriptScriptbeanJsELTest.java new file mode 100644 index 000000000..3177177ef --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/LiteFlowScriptScriptbeanJsELTest.java @@ -0,0 +1,44 @@ +package com.yomahub.liteflow.test.script.javascript.scriptbean; + +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.flow.LiteflowResponse; +import com.yomahub.liteflow.slot.DefaultContext; +import com.yomahub.liteflow.test.BaseTest; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + +@RunWith(SpringRunner.class) +@TestPropertySource(value = "classpath:/scriptbean/application.properties") +@SpringBootTest(classes = LiteFlowScriptScriptbeanJsELTest.class) +@EnableAutoConfiguration +@ComponentScan({"com.yomahub.liteflow.test.script.javascript.scriptbean.cmp","com.yomahub.liteflow.test.script.javascript.scriptbean.bean"}) +public class LiteFlowScriptScriptbeanJsELTest extends BaseTest { + + @Resource + private FlowExecutor flowExecutor; + + @Test + public void testScriptBean1() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg"); + Assert.assertTrue(response.isSuccess()); + DefaultContext context = response.getFirstContextBean(); + Assert.assertEquals("hello", context.getData("demo")); + } + + @Test + public void testScriptBean2() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain2", "arg"); + Assert.assertTrue(response.isSuccess()); + DefaultContext context = response.getFirstContextBean(); + Assert.assertEquals("hello,kobe", context.getData("demo")); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/bean/DemoBean1.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/bean/DemoBean1.java new file mode 100644 index 000000000..7cd387e7a --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/bean/DemoBean1.java @@ -0,0 +1,22 @@ +package com.yomahub.liteflow.test.script.javascript.scriptbean.bean; + +import com.yomahub.liteflow.script.ScriptBean; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +@ScriptBean("demo") +public class DemoBean1 { + + @Resource + private DemoBean2 demoBean2; + + public String getDemoStr1(){ + return "hello"; + } + + public String getDemoStr2(String name){ + return demoBean2.getDemoStr2(name); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/bean/DemoBean2.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/bean/DemoBean2.java new file mode 100644 index 000000000..253b52210 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/bean/DemoBean2.java @@ -0,0 +1,11 @@ +package com.yomahub.liteflow.test.script.javascript.scriptbean.bean; + +import org.springframework.stereotype.Component; + +@Component +public class DemoBean2 { + + public String getDemoStr2(String name){ + return "hello,"+name; + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/cmp/ACmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/cmp/ACmp.java new file mode 100644 index 000000000..d709d953f --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/cmp/ACmp.java @@ -0,0 +1,20 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.script.javascript.scriptbean.cmp; + +import com.yomahub.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +@Component("a") +public class ACmp extends NodeComponent { + + @Override + public void process() { + System.out.println("ACmp executed!"); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/cmp/BCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/cmp/BCmp.java new file mode 100644 index 000000000..bff941bae --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/cmp/BCmp.java @@ -0,0 +1,21 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.script.javascript.scriptbean.cmp; + +import com.yomahub.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +@Component("b") +public class BCmp extends NodeComponent { + + @Override + public void process() { + System.out.println("BCmp executed!"); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/cmp/CCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/cmp/CCmp.java new file mode 100644 index 000000000..a6cc80f5f --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/scriptbean/cmp/CCmp.java @@ -0,0 +1,21 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.script.javascript.scriptbean.cmp; + +import com.yomahub.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +@Component("c") +public class CCmp extends NodeComponent { + + @Override + public void process() { + System.out.println("CCmp executed!"); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/sw/LiteflowXmlScriptJsSwitchELTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/sw/LiteflowXmlScriptJsSwitchELTest.java new file mode 100644 index 000000000..940463427 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/script/javascript/sw/LiteflowXmlScriptJsSwitchELTest.java @@ -0,0 +1,40 @@ +package com.yomahub.liteflow.test.script.javascript.sw; + +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.flow.LiteflowResponse; +import com.yomahub.liteflow.test.BaseTest; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + + +/** + * 测试springboot下的groovy脚本组件,基于xml配置 + * @author Bryan.Zhang + * @since 2.6.0 + */ +@RunWith(SpringRunner.class) +@TestPropertySource(value = "classpath:/sw/application.properties") +@SpringBootTest(classes = LiteflowXmlScriptJsSwitchELTest.class) +@EnableAutoConfiguration +@ComponentScan({"com.yomahub.liteflow.test.script.javascript.sw.cmp"}) +public class LiteflowXmlScriptJsSwitchELTest extends BaseTest { + + @Resource + private FlowExecutor flowExecutor; + + //测试选择脚本节点 + @Test + public void testSw1() { + LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("d==>s1[选择脚本]==>a", response.getExecuteStepStr()); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/ifelse/application.properties b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/ifelse/application.properties new file mode 100644 index 000000000..8aa340b2d --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/ifelse/application.properties @@ -0,0 +1 @@ +liteflow.rule-source=ifelse/flow.xml \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/ifelse/flow.xml b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/ifelse/flow.xml new file mode 100644 index 000000000..a0a5c2418 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/ifelse/flow.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + IF(x0, THEN(a, b)); + + + + IF(x1, THEN(a, b), THEN(c, d)); + + + + item = IF(x1, a, THEN(c, c, b)); + IF( + x1, + a, + item + ); + + + + IF(x1, THEN(a, b)).ELSE(THEN(c, d)); + + + + item = IF(x1, a, THEN(c, c, b)); + + IF(x1, THEN(a, b)).ELSE(item); + + + + IF(x1, THEN(a, b)).ELIF(x0, THEN(c, c)).ELSE(d); + + + + IF(x1, a).ELIF(x1, b) + .ELIF(x1, c) + .ELIF(x1, d) + .ELSE(THEN(d, b, a)); + + \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/loop/application.properties b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/loop/application.properties new file mode 100644 index 000000000..7189d4569 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/loop/application.properties @@ -0,0 +1 @@ +liteflow.rule-source=loop/flow.xml \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/loop/flow.xml b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/loop/flow.xml new file mode 100644 index 000000000..b27a68151 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/loop/flow.xml @@ -0,0 +1,50 @@ + + + + + + + + + + 3; + ]]> + + + + + + + + + FOR(2).DO(THEN(a,b,c)); + + + + FOR(x).DO(THEN(a,b,c)); + + + + FOR(10).DO(THEN(a,b,d)).BREAK(y); + + + + WHILE(z).DO(THEN(a,d)); + + + + WHILE(z).DO(THEN(a,d)).BREAK(y); + + \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/refresh/application.properties b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/refresh/application.properties new file mode 100644 index 000000000..52bc92b94 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/refresh/application.properties @@ -0,0 +1 @@ +liteflow.rule-source=refresh/flow.xml \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/refresh/flow.xml b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/refresh/flow.xml new file mode 100644 index 000000000..51fcb3290 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/refresh/flow.xml @@ -0,0 +1,21 @@ + + + + + 100){ + return "a"; + }else{ + return "b"; + } + ]]> + + + + + + THEN(d, SWITCH(s1).to(a,b)); + + + \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/refresh/flow_update.xml b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/refresh/flow_update.xml new file mode 100644 index 000000000..340c5efc4 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/refresh/flow_update.xml @@ -0,0 +1,28 @@ + + + + + 150){ + return "b"; + }else{ + return "a"; + } + ]]> + + + + + + + + + THEN(d, SWITCH(s1).to(a,b), s2); + + \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/scriptbean/application.properties b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/scriptbean/application.properties new file mode 100644 index 000000000..8c26b5e80 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/scriptbean/application.properties @@ -0,0 +1 @@ +liteflow.rule-source=scriptbean/flow.xml \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/scriptbean/flow.xml b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/scriptbean/flow.xml new file mode 100644 index 000000000..1ea7703e1 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/scriptbean/flow.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + THEN(a,b,c,d); + + + + THEN(a,b,c,e); + + \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/sw/application.properties b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/sw/application.properties new file mode 100644 index 000000000..871e47ef9 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/sw/application.properties @@ -0,0 +1 @@ +liteflow.rule-source=sw/flow.xml \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/sw/flow.xml b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/sw/flow.xml new file mode 100644 index 000000000..b10e3c8b7 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/resources/sw/flow.xml @@ -0,0 +1,20 @@ + + + + + 100){ + return 'a'; + }else{ + return 'b'; + } + ]]> + + + + + THEN(d, SWITCH(s1).to(a,b)); + + + \ No newline at end of file