|
@@ -3,6 +3,8 @@ package com.yomahub.liteflow.script.jsr223;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
+import com.yomahub.liteflow.annotation.util.AnnoUtil;
|
|
|
|
+import com.yomahub.liteflow.context.ContextBean;
|
|
import com.yomahub.liteflow.exception.LiteFlowException;
|
|
import com.yomahub.liteflow.exception.LiteFlowException;
|
|
import com.yomahub.liteflow.script.ScriptBeanManager;
|
|
import com.yomahub.liteflow.script.ScriptBeanManager;
|
|
import com.yomahub.liteflow.script.ScriptExecuteWrap;
|
|
import com.yomahub.liteflow.script.ScriptExecuteWrap;
|
|
@@ -16,6 +18,7 @@ import org.slf4j.LoggerFactory;
|
|
|
|
|
|
import javax.script.*;
|
|
import javax.script.*;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
+import java.util.Optional;
|
|
|
|
|
|
/**
|
|
/**
|
|
* JSR223 script engine的统一实现抽象类
|
|
* JSR223 script engine的统一实现抽象类
|
|
@@ -49,7 +52,7 @@ public abstract class JSR223ScriptExecutor implements ScriptExecutor {
|
|
CompiledScript compiledScript = ((Compilable) scriptEngine).compile(convertScript(script));
|
|
CompiledScript compiledScript = ((Compilable) scriptEngine).compile(convertScript(script));
|
|
compiledScriptMap.put(nodeId, compiledScript);
|
|
compiledScriptMap.put(nodeId, compiledScript);
|
|
}catch (Exception e){
|
|
}catch (Exception e){
|
|
- String errorMsg = StrUtil.format("script loading error for node[{}], error msg:{}", nodeId, e.getMessage());
|
|
|
|
|
|
+ String errorMsg = StrUtil.format("script loading error for node[{}], error msg:{}", nodeId, e);
|
|
throw new ScriptLoadException(errorMsg);
|
|
throw new ScriptLoadException(errorMsg);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -71,7 +74,13 @@ public abstract class JSR223ScriptExecutor implements ScriptExecutor {
|
|
//比如你的自定义上下文为AbcContext,那么key就为:abcContext
|
|
//比如你的自定义上下文为AbcContext,那么key就为:abcContext
|
|
//这里不统一放一个map的原因是考虑到有些用户会调用上下文里的方法,而不是参数,所以脚本语言的绑定表里也是放多个上下文
|
|
//这里不统一放一个map的原因是考虑到有些用户会调用上下文里的方法,而不是参数,所以脚本语言的绑定表里也是放多个上下文
|
|
DataBus.getContextBeanList(wrap.getSlotIndex()).forEach(o -> {
|
|
DataBus.getContextBeanList(wrap.getSlotIndex()).forEach(o -> {
|
|
- String key = StrUtil.lowerFirst(o.getClass().getSimpleName());
|
|
|
|
|
|
+ ContextBean contextBean = AnnoUtil.getAnnotation(o.getClass(),ContextBean.class);
|
|
|
|
+ String key;
|
|
|
|
+ if(contextBean !=null && contextBean.value().trim().length()>0){
|
|
|
|
+ key = contextBean.value();
|
|
|
|
+ }else{
|
|
|
|
+ key = StrUtil.lowerFirst(o.getClass().getSimpleName());
|
|
|
|
+ }
|
|
bindings.put(key, o);
|
|
bindings.put(key, o);
|
|
});
|
|
});
|
|
|
|
|