[rules-users] Using Collections in LHS

Wolfgang Laun wolfgang.laun at gmail.com
Wed Feb 24 02:37:29 EST 2010


You really ought to read all the pertaining sections in the Drools Expert
manual and experiment. Nobody can write complex rules without some exercise.

2010/2/24 dhari <sdhari at hotmail.com>

> Thanks Jeffery.  I'll try this but what if I have more complex condition
> e.g.
>
>
> Order ($discount : discount, $items : items)
> Item(grade > 3 && (quantity < 5 || $discount > 10)) from $items
>

Again, you are using a condition on discount not next to the field in the
fact where it occurs (i.e., Order); it's just not possible to write it this
way.

Order( discount > 10, $items : items )   # all Orders where discount > 10
Item( grade > 3, quantity < 5 ) from $items # and each of its Items where
grade > 3 and quantity < 5

There is no need to use && to combine two conditions for the same fact.

Now if you need to detect Order Items with grade > 3 where either the
quantitiy of the Item is < 5, or  the Order's discount > 10, (or both) you'd
have to write

Order( $discount : discount, $items : items )   # all Orders
Item( grade > 3, $quantity : quantity) from $items # and each of its Items
where grade > 3
eval( $discount > 10 || $quantitiy < 5 ) # and discount > 10 or quantity < 5
(or both)

-W
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100224/bd7590fb/attachment.html 


More information about the rules-users mailing list