[rules-users] How to handle priority in a rule

Mark Proctor mproctor at codehaus.org
Fri May 11 11:36:29 EDT 2007


Interesting problem, you want dyanmic prioritisation based upon the 
value of a field. We have no declarative sugar for this, but it might 
make a nice use case. We could allow someone to specify an expression 
that determine a value of priority.
    salience = ($price.length);

That would allow for some interesting situations. Its unlikely this will 
make 4.0 - but the solution interests me enough that if I get bored, I 
might just do it ;)

Until that time I think you'll have to use some combination of a 
command/semaphore object and additional rules.

Mark

Maxime wrote:
> 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
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>




More information about the rules-users mailing list