فهرست منبع

feature #IASS9Z 新的java脚本插件,支持java8~java17的所有语法特性

everywhere.z 7 ماه پیش
والد
کامیت
73c06353a8

+ 13 - 1
liteflow-core/src/main/java/com/yomahub/liteflow/property/LiteflowConfig.java

@@ -12,6 +12,7 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.yomahub.liteflow.enums.ParseModeEnum;
 
+import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
@@ -35,7 +36,7 @@ public class LiteflowConfig {
 	// 流程资源扩展数据
 	private String ruleSourceExtData;
 
-	private Map<String, String> ruleSourceExtDataMap;
+	private Map<String, String> ruleSourceExtDataMap = new HashMap<>();
 
 	// slot的数量
 	private Integer slotSize;
@@ -119,6 +120,9 @@ public class LiteflowConfig {
 	//是否快速加载规则,如果快速加载规则意味着不用copyOnWrite机制了
 	private Boolean fastLoad;
 
+	//脚本特殊设置选项
+	private Map<String, String> scriptSetting = new HashMap<>();
+
 	public Boolean getEnableMonitorFile() {
 		return enableMonitorFile;
 	}
@@ -492,4 +496,12 @@ public class LiteflowConfig {
 	public void setParseMode(ParseModeEnum parseMode) {
 		this.parseMode = parseMode;
 	}
+
+	public Map<String, String> getScriptSetting() {
+		return scriptSetting;
+	}
+
+	public void setScriptSetting(Map<String, String> scriptSetting) {
+		this.scriptSetting = scriptSetting;
+	}
 }

+ 11 - 3
liteflow-script-plugin/liteflow-script-javax/src/main/java/com/yomahub/liteflow/script/javax/JavaxExecutor.java

@@ -1,11 +1,15 @@
 package com.yomahub.liteflow.script.javax;
 
+import cn.hutool.core.util.BooleanUtil;
 import cn.hutool.core.util.ReUtil;
 import cn.hutool.core.util.StrUtil;
 import com.yomahub.liteflow.enums.ScriptTypeEnum;
+import com.yomahub.liteflow.property.LiteflowConfig;
+import com.yomahub.liteflow.property.LiteflowConfigGetter;
 import com.yomahub.liteflow.script.ScriptExecuteWrap;
 import com.yomahub.liteflow.script.ScriptExecutor;
 import com.yomahub.liteflow.script.exception.ScriptLoadException;
+import com.yomahub.liteflow.script.javax.vo.JavaxSettingMapKey;
 import com.yomahub.liteflow.util.CopyOnWriteHashMap;
 import org.noear.liquor.eval.*;
 
@@ -14,11 +18,16 @@ import java.util.List;
 import java.util.Map;
 
 public class JavaxExecutor extends ScriptExecutor {
+
     private final Map<String, Execable> compiledScriptMap = new CopyOnWriteHashMap<>();
 
+    private boolean isCache;
+
     @Override
     public ScriptExecutor init() {
-        //LiquorEvaluator.getInstance().printable(true);
+        LiteflowConfig liteflowConfig = LiteflowConfigGetter.get();
+        String isCacheValue = liteflowConfig.getScriptSetting().get(JavaxSettingMapKey.IS_CACHE);
+        isCache = Boolean.parseBoolean(isCacheValue);
         return this;
     }
 
@@ -67,8 +76,7 @@ public class JavaxExecutor extends ScriptExecutor {
     public Object compile(String script) throws Exception {
         CodeSpec codeSpec = new CodeSpec(convertScript(script))
                 .returnType(Object.class)
-                .parameters(new ParamSpec("_meta", ScriptExecuteWrap.class))
-                .cached(false);
+                .parameters(new ParamSpec("_meta", ScriptExecuteWrap.class)).cached(isCache);
         return Scripts.compile(codeSpec);
     }
 

+ 6 - 0
liteflow-script-plugin/liteflow-script-javax/src/main/java/com/yomahub/liteflow/script/javax/vo/JavaxSettingMapKey.java

@@ -0,0 +1,6 @@
+package com.yomahub.liteflow.script.javax.vo;
+
+public interface JavaxSettingMapKey {
+
+    String IS_CACHE = "isCache";
+}

+ 11 - 0
liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/LiteflowProperty.java

@@ -98,6 +98,9 @@ public class LiteflowProperty {
 	//是否检查节点存在
 	private boolean checkNodeExists;
 
+	//脚本特殊设置选项
+	private Map<String, String> scriptSetting;
+
 	public boolean isEnableMonitorFile() {
 		return enableMonitorFile;
 	}
@@ -325,4 +328,12 @@ public class LiteflowProperty {
 	public void setCheckNodeExists(boolean checkNodeExists) {
 		this.checkNodeExists = checkNodeExists;
 	}
+
+	public Map<String, String> getScriptSetting() {
+		return scriptSetting;
+	}
+
+	public void setScriptSetting(Map<String, String> scriptSetting) {
+		this.scriptSetting = scriptSetting;
+	}
 }

+ 1 - 0
liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/config/LiteflowPropertyAutoConfiguration.java

@@ -53,6 +53,7 @@ public class LiteflowPropertyAutoConfiguration {
 		liteflowConfig.setQueueLimit(liteflowMonitorProperty.getQueueLimit());
 		liteflowConfig.setDelay(liteflowMonitorProperty.getDelay());
 		liteflowConfig.setPeriod(liteflowMonitorProperty.getPeriod());
+		liteflowConfig.setScriptSetting(property.getScriptSetting());
 		return liteflowConfig;
 	}
 

+ 6 - 0
liteflow-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@@ -214,6 +214,12 @@
       "description": "Custom thread pool implement for parallel-loop executor.",
       "sourceType": "com.yomahub.liteflow.springboot.LiteflowProperty",
       "defaultValue": "com.yomahub.liteflow.thread.LiteFlowDefaultParallelLoopExecutorBuilder"
+    },
+    {
+      "name": "liteflow.scriptSetting",
+      "type": "java.util.Map",
+      "description": "script special settings.",
+      "sourceType": "com.yomahub.liteflow.springboot.LiteflowProperty"
     }
   ]
 }