修正flowable的发起流程中根据用户信息流转不同的流程
原创
©著作权归作者所有:来自51CTO博客作者宁波阿成的原创作品,请联系作者获取转载授权,否则将追究法律责任
根据用户反馈,下面流程流转出现问题
后来根据代码,下面需要修正==的逻辑判断
/**
* 校验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'}
最后效果如下: