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

This commit is contained in:
everywhere.z
2024-09-26 18:04:52 +08:00
parent 8625e4231b
commit 73c06353a8
6 changed files with 48 additions and 4 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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