Hello,
I'm trying to find how to manage priority within a rule. Let me explain
the problem. I'll try to be as clear as possible but bear with me since
I am new to rules.
We have two objects, the Product is the object I'm trying to price and
the object Price is the one that knows all the prices. Both products and
prices have fields amount and length. Product amount is initialized to
0 and prices are going to determine the product amount depending on its
length.
Let's see an example :
Product : P -> length = 5, amount = 0
Price : P1 -> length = 1, amount = 50
Price : P2 -> length = 3, amount = 100
With this configuration, after asserting the 3 objects to the WM, the
amount field of Product P should have a value of 200 ( 1*100 + 2*50)
because the price with the greatest length should be favored over the
other ones.
Here is the rule I made :
rule "Price Product rule using price length"
when
$s : Product (length > 0)
$price : Price($length: length)
then
$s.setAmount($s.getAmount() + $price.getAmount());
$s.setLength($s.getLength() - $length.intValue());
modify($s);
end
This is obviously wrong because it always takes the first asserted price
object. I don't know how to make a rule which would take the amount of
the price object with the greatest length in priority.
Any help would be very much appreciated.
Cheers,
Max