[rules-users] Is there a better way to write this rule?

Wolfgang Laun wolfgang.laun at gmail.com
Wed Apr 23 06:41:49 EDT 2014


On 23/04/2014, Bharadwaj N <bharadwaj2012 at gmail.com> wrote:
> rule "Discount Egypt"
>         salience 0
>     when
>         $T : TripRequest ( destination == "Egypt" )
>         $dest: DiscountResult()

This is wrong: the rule will not fire unless there is a DiscountResult
fact in working memory.

>     then
>         $dest=$T.getResult();

This isn't correct either: you cannot assign to a bound variable.

>        $dest.setDiscount(5);
> end

>
>
> On Wed, Apr 23, 2014 at 2:07 PM, Leonard93
> <leonardlindenau at hotmail.com>wrote:
>
>> When I have the following rule:
>>
>> rule "Discount Egypt"
>>         salience 0
>>     when
>>         $T : TripRequest ( destination == "Egypt" )
>>     then
>>         ((DiscountResult) $T.getResult()).setDiscount(5);
>> end
>>
>>
>> Is there a better way to do the 'then' part of the rule (when it comes to
>> formatting, but still executes the same thing)?
>> My request object has a result object that has a method called
>> setDiscount
>> that needs to be called.
>>
>> The setDiscount cannot be in the request object because there are
>> multiple
>> kinds of Result Objects, thus the casting to its type.
>>
>> This rule works fine, I was just wondering if there are any easier ways
>> to
>> do it. I already found out you can do 'destination' instead of
>> 'getDestination()' which helps make the rules more readable.
>>
>>
>>
>>
>>
>> --
>> View this message in context:
>> http://drools.46999.n3.nabble.com/Is-there-a-better-way-to-write-this-rule-tp4029327.html
>> Sent from the Drools: User forum mailing list archive at Nabble.com.
>> _______________________________________________
>> 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