Преглед изворни кода

feature #I6O380 支持aviator的脚本语言

everywhere.z пре 2 година
родитељ
комит
c5abe72521
16 измењених фајлова са 224 додато и 3 уклоњено
  1. 6 2
      liteflow-core/src/main/java/com/yomahub/liteflow/enums/ScriptTypeEnum.java
  2. 1 1
      liteflow-core/src/main/resources/dtd/liteflow.dtd
  3. 26 0
      liteflow-script-plugin/liteflow-script-aviator/pom.xml
  4. 14 0
      liteflow-script-plugin/liteflow-script-aviator/src/main/java/com/yomahub/liteflow/script/aviator/AviatorScriptExecutor.java
  5. 2 0
      liteflow-script-plugin/liteflow-script-aviator/src/main/resources/META-INF/services/com.yomahub.liteflow.script.ScriptExecutor
  6. 1 0
      liteflow-script-plugin/pom.xml
  7. 33 0
      liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/pom.xml
  8. 23 0
      liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java
  9. 21 0
      liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/ACmp.java
  10. 21 0
      liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/BCmp.java
  11. 21 0
      liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/CCmp.java
  12. 24 0
      liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/script/aviator/common/cmp/DCmp.java
  13. 1 0
      liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/resources/common/application.properties
  14. 23 0
      liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/resources/common/flow.xml
  15. 1 0
      liteflow-testcase-el/pom.xml
  16. 6 0
      pom.xml

+ 6 - 2
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;
 

+ 1 - 1
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
         >
 <!ATTLIST chain
         id CDATA #IMPLIED

+ 26 - 0
liteflow-script-plugin/liteflow-script-aviator/pom.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>liteflow-script-plugin</artifactId>
+        <groupId>com.yomahub</groupId>
+        <version>${revision}</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>liteflow-script-aviator</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.yomahub</groupId>
+            <artifactId>liteflow-core</artifactId>
+            <version>${revision}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.googlecode.aviator</groupId>
+            <artifactId>aviator</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 14 - 0
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;
+    }
+}

+ 2 - 0
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

+ 1 - 0
liteflow-script-plugin/pom.xml

@@ -21,6 +21,7 @@
         <module>liteflow-script-graaljs</module>
         <module>liteflow-script-python</module>
         <module>liteflow-script-lua</module>
+        <module>liteflow-script-aviator</module>
     </modules>
 
 </project>

+ 33 - 0
liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/pom.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>liteflow-testcase-el</artifactId>
+        <groupId>com.yomahub</groupId>
+        <version>${revision}</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>liteflow-testcase-el-script-aviator-springboot</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.yomahub</groupId>
+            <artifactId>liteflow-spring-boot-starter</artifactId>
+            <version>${revision}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.yomahub</groupId>
+            <artifactId>liteflow-script-aviator</artifactId>
+            <version>${revision}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 23 - 0
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();
+	}
+
+}

+ 21 - 0
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 @@
+/**
+ * <p>Title: liteflow</p>
+ * <p>Description: 轻量级的组件式流程框架</p>
+ * @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!");
+	}
+
+}

+ 21 - 0
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 @@
+/**
+ * <p>Title: liteflow</p>
+ * <p>Description: 轻量级的组件式流程框架</p>
+ * @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!");
+	}
+
+}

+ 21 - 0
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 @@
+/**
+ * <p>Title: liteflow</p>
+ * <p>Description: 轻量级的组件式流程框架</p>
+ * @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!");
+	}
+
+}

+ 24 - 0
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 @@
+/**
+ * <p>Title: liteflow</p>
+ * <p>Description: 轻量级的组件式流程框架</p>
+ * @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!");
+	}
+
+}

+ 1 - 0
liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/resources/common/application.properties

@@ -0,0 +1 @@
+liteflow.rule-source=common/flow.xml

+ 23 - 0
liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/resources/common/flow.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE flow PUBLIC  "liteflow" "liteflow.dtd">
+<flow>
+    <nodes>
+        <node id="s1" name="普通脚本1" type="script" language="aviator">
+            <![CDATA[
+                use java.util.Date;
+                use cn.hutool.core.date.DateUtil;
+                let d = DateUtil.formatDateTime(new Date());
+                println(d);
+
+                a = 2;
+                b = 3;
+
+                setData(defaultContext, "s1", a*b);
+            ]]>
+        </node>
+    </nodes>
+
+    <chain name="chain1">
+        THEN(a, b, c, s1);
+    </chain>
+</flow>

+ 1 - 0
liteflow-testcase-el/pom.xml

@@ -33,6 +33,7 @@
         <module>liteflow-testcase-el-script-python-springboot</module>
         <module>liteflow-testcase-el-script-lua-springboot</module>
         <module>liteflow-testcase-el-script-multi-language-springboot</module>
+        <module>liteflow-testcase-el-script-aviator-springboot</module>
     </modules>
 
     <build>

+ 6 - 0
pom.xml

@@ -72,6 +72,7 @@
 		<apollo.version>1.7.0</apollo.version>
 		<jython.version>2.7.3</jython.version>
 		<luaj.version>3.0.1</luaj.version>
+		<aviator.version>5.3.3</aviator.version>
 		<common-io.version>2.11.0</common-io.version>
 	</properties>
 
@@ -279,6 +280,11 @@
 				<artifactId>luaj-jse</artifactId>
 				<version>${luaj.version}</version>
 			</dependency>
+			<dependency>
+				<groupId>com.googlecode.aviator</groupId>
+				<artifactId>aviator</artifactId>
+				<version>${aviator.version}</version>
+			</dependency>
 			<dependency>
 				<groupId>commons-io</groupId>
 				<artifactId>commons-io</artifactId>