只是想知道如何使用 MVEL 针对多映射评估规则。
即:
rule-> "foo" == "200"
上下文中foo
的可能值[100, 200, 300]
。
我不知道哪些将是可能的值,所以我不能将它们作为规则的一部分。
理想情况下,我希望能够做这样的事情:
List<String> valueList = new ArrayList<String>();
valueList.add("100");
valueList.add("200");
List<String> otherList = new ArrayList<String>();
otherList.add("otherValue");
Map<String, List<String>> context = new HashMap<String, List<String>>();
context.put("foo", valueList);
context.put("other", otherList);
MVEL.eval("foo == 200", context)
您也可以尝试使用纯 java 代码。我们已经尝试过这个,它执行得很好。您只需将Java代码传递给Mvel,它就会为您提供结果。
函数可以在运行时追加到字符串。只需使用您的逻辑创建一个规则/条件即可。粗体部分是我们写的。
public Boolean evaluate(Map contextMap){
**ClassA A = (ClassA) contextMap.get("contextObjectClassA");
List<ClassB> classb = A.getclassb();
if(null!=classb && classb .size()>0){
return true;
}else{
return false;
}**
}