[rules-users] Comparing names

Ian Spence ianspence at gmail.com
Fri May 15 03:03:20 EDT 2009


Wolfgang and all,

Your suggestion did work.  Thank you for that.  I am learning more as I go
along.

I am thinking of another approach now.  To populate working memory with a
Set of all names "allNames"; call fireAllRules; then in the DRL, for each
Title compare Proprietor names (set) with "allNames".

How can I compare 2 sets like this in a DRL ?

Ian Spence

2009/5/14 Wolfgang Laun <wolfgang.laun at gmail.com>

> Assuming that your facts are structured as the indentation suggests, I
> would solve this using a technique you could call "virtual field". So, if a
> fact object has fields
>    String title
>    List<PropGroup> pgList
>
> and a PropGroup has fields
>   String name
>   List<String> pList
>
> I would not try to get at the embedded data from the objects contained
> within List<PropGroup>. Rather, I'd add a couple of getters to your Fact
> class, each of which would return a Set<String> computed from the contained
> List<PropGroup>. Then the rule simply becomes
>
> rule "check-same"
>     when
>         $p1 : Fact( $t1 : title, $g1 : groupNames, $p1 : propNames )
>         $p2 : Fact( this != $p1, $t2 : title,  ( groupNames != $g1 ||
> propNames != $p1 ) )
>     then
>         System.out.println( "mismatch " + $t1 + " and " + $t2 );
>     end
>
> Notice that this won't find the odd-man-out; it will fire twice for each
> unequal pair.
>
> -W
>
>
> 2009/5/14 Ian Spence <ianspence at gmail.com>
>
>> Hello all,
>>
>> I am new to Drools…
>>
>>
>>
>> I have a scenario
>>
>>
>>
>> Each fact object will have the structure:
>>
>>
>>
>> Title
>>
>>    Proprietor Group
>>
>>       Proprietor Name
>>
>>
>>
>> E.g.
>>
>>             2100-100
>>
>>                         J2 ½ share
>>
>>                                     SMITH, JOHN
>>
>>                                     JONES, FRED
>>
>>                         T ½ share
>>
>>                                     BROWN, CHARLIE
>>
>>             2100-101
>>
>>                         J2 ½ share
>>
>>                                     BROWN, CHARLIE
>>
>>                                     JONES, FRED
>>
>>                         T ½ share
>>
>>                                     SMITH, JOHN
>>
>>             2100-102
>>
>>                         T ½ share
>>
>>                                     BROWN, CHARLIE
>>
>>                         J2 ½ share
>>
>>                                     JONES, FRED
>>
>>                                     SMITH, JOHN
>>
>>
>>
>> The group names and the proprietor names must be the same across each
>> Title.  The scenario above is a valid case. A failed case would result for
>> Title 2100-100 if we add an extra Proprietor name e.g. WHITE, MARY.
>>
>>
>>
>> I anticipate having one rule to cater for this.  I am hedging towards the
>> ‘collect’ operator but cannot get a clear picture on how to implement it.
>>
>>
>> --
>> Regards,
>> Ian Spence
>>
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
Regards,
Ian Spence
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090515/f53b79c2/attachment.html 


More information about the rules-users mailing list