我在工作內存中有一個ArrayList,我在when子句中使用'from'語句進行迭代。但是,該規則正在向後遍歷數組。有沒有辦法來控制這種行爲?爲什麼'from'關鍵字向後迭代?
列表創建:
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
Map<String,String> m1 = ...
Map<String,String> m2 = ...
list.add(m1);
list.add(m2);
ImportItem item = new ImportItem(list); //model object. Constructor arg returned by getInput()
StatelessKnowledgeSession session = knowledgeBase.newStatelessKnowledgeSession();
session.insert(item);
session.fireAllRules();
Drools的規則:
rule "My Rule"
dialect "java"
when
item : ImportItem(ignore == false) //model object that holds the input
map : Map() from item.getInput() // == the ArrayList from above
then
System.out.println(map);
end
主要生產
<output of m2>
<output of m1>
也許還有另一種方法來解決這個問題。對我的規則過於簡單的解釋是,輸入包含來自我映射到另一個對象的相同字段的文件的行。所以基本上我需要一個規則來完成myObj.setText(input.get(0)+ input.get(1)+ input.get(2)+ ...) – 2011-01-21 14:33:09