mirror of
https://gitee.com/dromara/liteFlow.git
synced 2026-05-14 12:12:08 +08:00
feature #IASS9Z 新的java脚本插件,支持java8~java17的所有语法特性
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.yomahub.liteflow.script.javax.vo;
|
||||||
|
|
||||||
|
public interface JavaxSettingMapKey {
|
||||||
|
|
||||||
|
String IS_CACHE = "isCache";
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user