根据用户反馈,下面流程流转出现问题
后来根据代码,下面需要修正==的逻辑判断
/** * 校验el表达示例 * * @param map * @param expression * @return */ public static Object result(Map<String, Object> map, String expression) { Object result = null; try { FelEngine fel = new FelEngineImpl(); FelContext ctx = fel.getContext(); for (Map.Entry<String, Object> entry : map.entrySet()) { ctx.set(entry.getKey(), entry.getValue()); System.out.print(entry.getKey() + "-"+ entry.getValue()); } String exp = ""; if (expression.indexOf("<") >0) { exp = expression.substring(0, expression.indexOf("<")); } else if (expression.indexOf(">") >0) { int index =expression.indexOf(">"); exp = expression.substring(0, index); } else if (expression.indexOf("==") >0) { exp = expression.substring(0, expression.indexOf("==")); } exp =expression.replace(exp, ctx.get(exp).toString()); result = fel.eval(exp); //result = fel.eval(expression); } catch (Exception e) { result = null; } return result; }
同时在判断网关的地方需要判断一下逻辑
usermap = GetExclusiveGatewayUser(targetFlowElement,variables);//还是需要返回用户与是否并发,因为并发要做特殊处理 if(usermap != null) { userlist = (ArrayList<String>) usermap.get("approval"); variablesnew.put("approval", userlist); }
同时对于这种条件的逻辑写好要正确
如下:
表达式要注意 ${fd_1662433136523=='zhang'}
最后效果如下: