[rules-users] Accessing maps (hashmaps) keys and values in rules
Edson Tirelli
tirelli at post.com
Thu Nov 1 11:48:02 EDT 2007
Shaz,
We strongly advise you to move to 4.0.3, but this is not related to your
problem.
I think you are misunderstanding something. Why are you using the global
map to store your fact? Simply insert it into the working memory and it will
work fine.
[]s
Edson
2007/11/1, Shaz Tumulak <shauii at yahoo.com>:
>
>
> Hi,
>
> I can't seem to make this syntax work in Drools 4.0.2. Pls. see my sample
> code below.
> ________________________________________
> class MyClass {
> String id;
> String name;
>
> MyClass(String id, String name){
> this.id = id;
> this.name = name;
> }
> :
> getter, setter methods
> :
> }
>
> MyClass obj = new MyClass("1"", "name");
>
> TreeMap<String, MyClass> mapOfObj = new TreeMap<String, MyClass>();
> mapOfObj.put("keyOfObj", obj);
> ________________________________________
>
> DRL file
> -------
>
> global java.util.TreeMap mapOfObj;
>
> rule chkobj
> when
> obj : MyClass(mapOfObj["keyOfObj"].id == "1");
> eval(obj.getName() == "name");
> ________________________________________
>
> I'm getting this error: org.drools.RuntimeDroolsException:
> java.lang.NullPointerException
> at
> org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:76)
>
> Is my syntax correct and has someone used this in 4.0.2 or should I move
> on
> to Drools 4.0.3? Thanks in advance.
>
> Regards,
>
> shaz
>
>
> Edson Tirelli-3 wrote:
> >
> > Denis,
> >
> > If you are using latest build from trunk (I'm not sure it already
> works
> > in MR3), you can use a simplified MVEL syntax:
> >
> > when
> > Person( address["business"].phone == "99999999" )
> > then
> > ...
> > end
> >
> > Although, the above will be converted into an inline-eval. Not as bad
> > as
> > a top level eval, but still more costly then using regular fields.
> >
> > []s
> > Edson
> >
> > 2007/7/19, Ryan, Dennis (Dennis) <dennisryan at avaya.com>:
> >>
> >> We are using Maps (HashMaps) in our rules and the only way we have
> found
> >> to access keys and values in the Map in the "when" clauses is thru use
> on
> >> eval() which I know is a big no-no by rules purists. Is there a better
> >> way,
> >> maybe some shorthand I'm not familiar with to deal with Maps in the
> when
> >> clause?
> >>
> >>
> >>
> >> Thanks,
> >>
> >> Dennis
> >>
> >> _______________________________________________
> >> rules-users mailing list
> >> rules-users at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/rules-users
> >>
> >>
> >
> >
> > --
> > Edson Tirelli
> > Software Engineer - JBoss Rules Core Developer
> > Office: +55 11 3529-6000
> > Mobile: +55 11 9287-5646
> > JBoss, a division of Red Hat @ www.jboss.com
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
> shauii at yahoo.com
> --
> View this message in context:
> http://www.nabble.com/Accessing-maps-%28hashmaps%29-keys-and-values-in-rules-tf4112197.html#a13524477
> Sent from the drools - user mailing list archive at Nabble.com.
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20071101/4d529515/attachment.html
More information about the rules-users
mailing list