一、业务背景 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(); }}