一、业务背景 Activity每次执行任务时,需要预判当前任务实例执行后的,流程会执行到哪个节点,如下图
审核签约节点执行时格局参数opinion判断下一步骤节点是"提交人节点"还是"结束节点"
可以看到审核签约节点执行后"同意"的路径,跳转条件是${opinion==1} 这个条件代码获取时是String类型 再未执行前 需要根据这个条件和用户执行参数预判下一个节点,满足这个跳转条件则指向的节点就是下一步节点 二、获取表达式后如何判断是否满足表达式
JDK的getEngineByName,本例举例了两个demo, 1、是包含参数的表达式计算方法 2、不包含参数,直接计算表达式值
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
/**
* Created by sj.yang on 2016/9/22.
* 字符串表达式计算
*/
public class StrExpressionCalculation {
public static void paramCalculation() throws ScriptException {
String str = "(operator == 1)";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
engine.put("operator", 1);
Object result = engine.eval(str);
System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" + result);
}
public static void noParamCalculation() throws ScriptException {
String str = "43*(2 + 1.4)+2*32/(3-2.1)";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
Object result = engine.eval(str);
System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" + result);
}
public static void main(String[] args) throws ScriptException {
paramCalculation();
noParamCalculation();
}
}