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@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)