Hi, Felipe,
 
Try this:
 
     $mf: MyFact( $map : map  )
     eval($map.get("innerKey") == "innerValue");
 
or you can have a try on the new MVEL diaglect.
 
Yang

 
On 7/25/07, Felipe Piccolini <felipe.piccolini@bluesoft.cl > wrote:
Suppouse I have a Map attribute and one of the values is another Map...how can I check a member of the inner Map?

 
class MyFact{
     Map map;
     public MyFact(){
           this.map = new HashMap();
     }

 
     ....setter and getter...

 
}

 
-- test --
MyFact myFact = new MyFact();

 
Map innerMap = new HashMap();
innerMap.put("innerKey", new String("InnerValue"));

 
Map map = new HashMap();
map.put("mapKey", innerMap);

 
myFact.setMap(map);

 
.... set the RuleBase and insert myFact as a fact for the WorkingMemory...

 
-------

 
Now... how should I write the rule to check the innerKey ??

 
rule "test InnerMap"
     when
           $mf: MyFact( map['mapKey']['innerKey'] == "InnerValue" ) // doesnt work...
    ....

 
           $mf: MyFact( map['mapKey'].this['innerKey'] == "InnerValue" ) // doesnt work...
   $mf: MyFact( map['mapKey'].['innerKey'] == "InnerValue" ) // doesnt work...
   $mf: MyFact( $innerMap: map['mapKey'], $innerMap['innerKey'] == "InnerValue" ) // doesnt work...
           $mf: MyFact( $innerMap: map['mapKey'] -> ($innerMap['innerKey'] == "InnerValue" )) // doesnt work...

 

 
Thanks.
                                                                        
Felipe Piccolini M.

 

 


 

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users