2012-10-05 42 views
0

想知道如何使用MVEL評估針對多圖的規則。使用MVEL評估針對多圖的規則

即:在上下文[100, 200, 300]foo

rule-> "foo" == "200" 

可能的值。

我不知道哪些將成爲可能的值,所以我不能將它們作爲規則的一部分。

我非常希望能夠做這樣的事情:

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) 
+0

也許你應該用你正在使用的規則引擎框架來標記這個問題,這樣它會更有可能被專門處理你所關心的MVEL的特定應用程序的人回答。 – rees

+0

你應該考慮使用番石榴的multimap類http://guava-libraries.googlecode.com/svn/tags/release03/javadoc/com/google/common/collect/Multimap.html – reevesy

回答

0

您可以嘗試使用普通的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; 
      }** 
    }