Browse Source

feature #I7UJ5N 增加对Java脚本的支持

everywhere.z 1 year ago
parent
commit
506ef90d9e

+ 2 - 1
liteflow-core/src/main/java/com/yomahub/liteflow/enums/ScriptTypeEnum.java

@@ -7,7 +7,8 @@ public enum ScriptTypeEnum {
 	JS("javascript", "js"),
 	PYTHON("python", "python"),
 	LUA("luaj", "lua"),
-	AVIATOR("AviatorScript", "aviator");
+	AVIATOR("AviatorScript", "aviator"),
+	JAVA("java", "java");
 
 	private String engineName;
 

+ 27 - 0
liteflow-script-plugin/liteflow-script-java/pom.xml

@@ -0,0 +1,27 @@
+<?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>
+        <groupId>com.yomahub</groupId>
+        <artifactId>liteflow-script-plugin</artifactId>
+        <version>${revision}</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>liteflow-script-java</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.yomahub</groupId>
+            <artifactId>liteflow-core</artifactId>
+            <version>${revision}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.janino</groupId>
+            <artifactId>janino</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 38 - 0
liteflow-script-plugin/liteflow-script-java/src/main/java/com/yomahub/liteflow/script/java/JavaExecutor.java

@@ -0,0 +1,38 @@
+package com.yomahub.liteflow.script.java;
+
+import com.yomahub.liteflow.enums.ScriptTypeEnum;
+import com.yomahub.liteflow.script.ScriptExecuteWrap;
+import com.yomahub.liteflow.script.ScriptExecutor;
+import org.codehaus.commons.compiler.CompilerFactoryFactory;
+import org.codehaus.commons.compiler.IScriptEvaluator;
+
+public class JavaExecutor extends ScriptExecutor {
+    @Override
+    public void load(String nodeId, String script) {
+        // 创建Janino脚本Evaluator
+        /*IScriptEvaluator se = CompilerFactoryFactory.getDefaultCompilerFactory().newScriptEvaluator();
+        // 返回值类型指定为Object以支持不同脚本
+        se.setReturnType(Object.class);
+        // 指定Janino脚本里的变量名及类型,为通用起见,只设置一个Object类型的变量
+        se.setParameters(new String[] { JANINO_SCRIPT_PARAMETER_NAME }, new Class[] { Object.class });
+        // 编译
+        se.cook(script);
+        // 缓存编译过的Evaluator
+        compiledScriptMap.put(nodeId, se);*/
+    }
+
+    @Override
+    public Object executeScript(ScriptExecuteWrap wrap) throws Exception {
+        return null;
+    }
+
+    @Override
+    public void cleanCache() {
+
+    }
+
+    @Override
+    public ScriptTypeEnum scriptType() {
+        return null;
+    }
+}

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

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

+ 6 - 0
pom.xml

@@ -75,6 +75,7 @@
 		<aviator.version>5.3.3</aviator.version>
 		<common-io.version>2.11.0</common-io.version>
 		<jakarta.version>1.3.5</jakarta.version>
+		<janino.version>3.1.9</janino.version>
 	</properties>
 
 	<dependencyManagement>
@@ -298,6 +299,11 @@
 				<artifactId>commons-io</artifactId>
 				<version>${common-io.version}</version>
 			</dependency>
+			<dependency>
+				<groupId>org.codehaus.janino</groupId>
+				<artifactId>janino</artifactId>
+				<version>${janino.version}</version>
+			</dependency>
 		</dependencies>
 	</dependencyManagement>