2016-04-22 78 views
0

我有一个主地图对象,里面包含另一个地图。现在我需要从流口水中获得价值吗? 我的代码看起来像如何从地图中的地图中获取值drools

HashMap<String,Object> studentsMap = new HashMap<String,Object>(); 
HashMap<String,int> marksMap = new HashMap<String,int>(); 
marksMap.put("Maths",98); 
marksMap.put("Chemistry",96); 
studentsMap.put("JohnDoe", marksMap); 

我将这个“studentsMap”对象Drools的会话和解雇的规则。 如何比较drools中的标记值(如果标记大于90,如何检查条件)?

回答

0

我没有试过,但还可以是这样可以做到 rule "studentsMap"
when
entry : Entry() from $studentsMap.entrySet()
marksMap : Map() from entry.getValue() markEntry : Entry() from marksMap.entrySet() mark : Number() from markEntry.getValue()
mark > 90 then
System.out.println("mark greater than 90");
end

0

我假设你的事实名字是学生。规则如下:

rule "studentsMap" 

when 
    Student($markMap : markMaap) 
    eval($markMap["Maths"] > 90) 
then 

System.out.println("mark greater than 90"); 

end