diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/enums/ScriptTypeEnum.java b/liteflow-core/src/main/java/com/yomahub/liteflow/enums/ScriptTypeEnum.java index 36081168e..bf6481224 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/enums/ScriptTypeEnum.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/enums/ScriptTypeEnum.java @@ -2,8 +2,12 @@ package com.yomahub.liteflow.enums; public enum ScriptTypeEnum { - GROOVY("groovy", "groovy"), QLEXPRESS("qlexpress", "qlexpress"), JS("javascript", "js"), PYTHON("python", "python"), - LUA("luaj", "lua"); + GROOVY("groovy", "groovy"), + QLEXPRESS("qlexpress", "qlexpress"), + JS("javascript", "js"), + PYTHON("python", "python"), + LUA("luaj", "lua"), + AVIATOR("AviatorScript", "aviator"); private String engineName; diff --git a/liteflow-core/src/main/resources/dtd/liteflow.dtd b/liteflow-core/src/main/resources/dtd/liteflow.dtd index ed76a7fa2..a0eb6004c 100644 --- a/liteflow-core/src/main/resources/dtd/liteflow.dtd +++ b/liteflow-core/src/main/resources/dtd/liteflow.dtd @@ -11,7 +11,7 @@ type (script|if_script|switch_script|while_script|for_script|break_script) #IMPLIED class CDATA #IMPLIED file CDATA #IMPLIED - language (groovy|js|python|lua) #IMPLIED + language (qlexpress|groovy|js|python|lua|aviator) #IMPLIED > + + 4.0.0 + + liteflow-script-plugin + com.yomahub + ${revision} + ../pom.xml + + + liteflow-script-aviator + + + + com.yomahub + liteflow-core + ${revision} + + + com.googlecode.aviator + aviator + + + \ No newline at end of file diff --git a/liteflow-script-plugin/liteflow-script-aviator/src/main/java/com/yomahub/liteflow/script/aviator/AviatorScriptExecutor.java b/liteflow-script-plugin/liteflow-script-aviator/src/main/java/com/yomahub/liteflow/script/aviator/AviatorScriptExecutor.java new file mode 100644 index 000000000..1e5e0d630 --- /dev/null +++ b/liteflow-script-plugin/liteflow-script-aviator/src/main/java/com/yomahub/liteflow/script/aviator/AviatorScriptExecutor.java @@ -0,0 +1,14 @@ +package com.yomahub.liteflow.script.aviator; + +import cn.hutool.core.collection.ListUtil; +import com.yomahub.liteflow.enums.ScriptTypeEnum; +import com.yomahub.liteflow.script.jsr223.JSR223ScriptExecutor; +import java.util.List; + +public class AviatorScriptExecutor extends JSR223ScriptExecutor { + + @Override + public ScriptTypeEnum scriptType() { + return ScriptTypeEnum.AVIATOR; + } +} diff --git a/liteflow-script-plugin/liteflow-script-aviator/src/main/resources/META-INF/services/com.yomahub.liteflow.script.ScriptExecutor b/liteflow-script-plugin/liteflow-script-aviator/src/main/resources/META-INF/services/com.yomahub.liteflow.script.ScriptExecutor new file mode 100644 index 000000000..8e6a1fc16 --- /dev/null +++ b/liteflow-script-plugin/liteflow-script-aviator/src/main/resources/META-INF/services/com.yomahub.liteflow.script.ScriptExecutor @@ -0,0 +1,2 @@ +# Aviator的实现 +com.yomahub.liteflow.script.aviator.AviatorScriptExecutor \ No newline at end of file diff --git a/liteflow-script-plugin/pom.xml b/liteflow-script-plugin/pom.xml index 356640d4c..1898d7a54 100644 --- a/liteflow-script-plugin/pom.xml +++ b/liteflow-script-plugin/pom.xml @@ -21,6 +21,7 @@ liteflow-script-graaljs liteflow-script-python liteflow-script-lua + liteflow-script-aviator \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/pom.xml b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/pom.xml new file mode 100644 index 000000000..66bea9af8 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + liteflow-testcase-el + com.yomahub + ${revision} + ../pom.xml + + + liteflow-testcase-el-script-aviator-springboot + + + + com.yomahub + liteflow-spring-boot-starter + ${revision} + + + com.yomahub + liteflow-script-aviator + ${revision} + test + + + org.springframework.boot + spring-boot-starter-test + + + + \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java new file mode 100644 index 000000000..8411b0c52 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -0,0 +1,23 @@ +package com.yomahub.liteflow.test; + +import com.yomahub.liteflow.core.FlowInitHook; +import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.property.LiteflowConfigGetter; +import com.yomahub.liteflow.spi.holder.SpiFactoryCleaner; +import com.yomahub.liteflow.spring.ComponentScanner; +import com.yomahub.liteflow.thread.ExecutorHelper; +import org.junit.AfterClass; + +public class BaseTest { + + @AfterClass + public static void cleanScanCache() { + ComponentScanner.cleanCache(); + FlowBus.cleanCache(); + ExecutorHelper.loadInstance().clearExecutorServiceMap(); + SpiFactoryCleaner.clean(); + LiteflowConfigGetter.clean(); + FlowInitHook.cleanHook(); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/ACmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/ACmp.java new file mode 100644 index 000000000..4516b8559 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/ACmp.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.aviator.common.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-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/BCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/BCmp.java new file mode 100644 index 000000000..dd74eb2be --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/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.aviator.common.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-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/CCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/CCmp.java new file mode 100644 index 000000000..ccd2d46a7 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/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.aviator.common.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-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/DCmp.java b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/DCmp.java new file mode 100644 index 000000000..a26397ab0 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/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.aviator.common.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-aviator-springboot/src/test/resources/common/application.properties b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/resources/common/application.properties new file mode 100644 index 000000000..4c9c216b6 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/resources/common/application.properties @@ -0,0 +1 @@ +liteflow.rule-source=common/flow.xml \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/resources/common/flow.xml b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/resources/common/flow.xml new file mode 100644 index 000000000..96eaa608f --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/resources/common/flow.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + THEN(a, b, c, s1); + + \ No newline at end of file diff --git a/liteflow-testcase-el/pom.xml b/liteflow-testcase-el/pom.xml index f1011252d..2d53f3497 100644 --- a/liteflow-testcase-el/pom.xml +++ b/liteflow-testcase-el/pom.xml @@ -33,6 +33,7 @@ liteflow-testcase-el-script-python-springboot liteflow-testcase-el-script-lua-springboot liteflow-testcase-el-script-multi-language-springboot + liteflow-testcase-el-script-aviator-springboot diff --git a/pom.xml b/pom.xml index 661148387..5f4b60e7f 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,7 @@ 1.7.0 2.7.3 3.0.1 + 5.3.3 2.11.0 @@ -279,6 +280,11 @@ luaj-jse ${luaj.version} + + com.googlecode.aviator + aviator + ${aviator.version} + commons-io commons-io