Hi Adam,

try operator "in" instead of "memberOf". AFAIK, "in" deals with list 
literals (which is what you want) whereas "memberof" can be used to 
check whether some value is part of a collection given as variable 
reference.

Kind regards

Ansgar

Am 21.02.2010 23:14, schrieb deaddowney:
> I'm using a map because this is a legacy class that is quite dynamic and can
> contain arbitrary tag/values.  Ideally, if I knew all the attributes I would
> declare them as fields, but I'm stuck with this map at the moment.
> Regardless, using your explanation, why does
>
> when
>                                 $person : Person(
>                                     props[“AGE”]>  20,
>                                     (props[“NAME”] =="Fred" || props["NAME"]
> == "Barney || props["NAME"] == "Wilma"])
> )
>
> work?
>
>
> Corneil du Plessis-2 wrote:
>    
>> You are expecting map values to be elevated somehow from Object to Integer
>> and String.
>> By using typed attributes in the Person class you can overcome your
>> problem.
>>
>> Sent from my HTC (Android)
>>
>> On Feb 21, 2010 9:28 PM, "Adam Krieg"<spamcont...@mac.com>  wrote:
>>
>> I’m new to Drools and having trouble accessing my Domain object which is
>> basically a container around a map.
>>
>> class Person {
>>     Map props;
>>     public Map getProps();
>> …. Extra stuff
>> }
>>
>>
>> I want to create a rule that will match when Age is greater than 20 and
>> name
>> is one of “Fred”, “Barney”, or “Wilma”.  These  entries are stored in the
>> Map props, so that to get age, you would call person.getProps().get(“AGE”)
>>
>>
>>
>> rule "My Rule"
>>                 dialect "mvel"
>>                 when
>>                                 $person : Person(
>>                                     props[“AGE”]>  20,
>>                                     props[“NAME”] memberOf [“Fred”,
>> “Wilma”,
>> “Barney”]
>>                                 )
>>                 then
>>                                 System.out.println("found match”+$person);
>>
>> End
>>
>> But I am running into a parsing error:
>> no viable alternative at input ')' in rule "My Rule" in pattern Person.
>>
>> The second condition seems to be the problem.  Can I check for membership
>> inside a List I create inline in mvel?
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users@lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users@lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>>      

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

Reply via email to