I think you missed Wolfgang's points.. this form is ***WRONG*** 1) It assumes that the DiscountResult is in the working memory, which may not be the case unless you insert it explicitly 2) it will fire for ANY DiscountResult/TripRequest combination since there is no explicit join condition between the two. 3) Bound variables are not meant to be reassigned in the RHS. 4) Even the cast in the RHS will not save you from ClassCastExceptions, unless it's implied that destinations "Egypt" can only have DiscountResult as results.
You need something like this: when $T : TripRequest( destination == "Egypt", $dest : result, result#DiscountResult // same as "instanceof"here ) then ((DiscountResult) $dest).setDiscount( 5 ); end One thing that could be done - but does not work right now, is to expand on the "#" operator, so that whenever you write TripRequest( $dest : result#DiscountResult ) the variable $dest is created with DiscountResult as an inferred type, rather than its declared type IResult As mentioned, this does not work right now... it may be a bug (cc-ing Mario for discussion) Best Davide On 04/23/2014 04:17 AM, Leonard93 wrote: > It only works if you do it like this: > rule "Discount Egypt" > salience 0 > when > $T : TripRequest ( destination == "Egypt" ) > $dest: DiscountResult() > then > $dest= (DiscountResult) $T.getResult(); > $dest.setDiscount(5); > end > > > Since getResult() returns an instance of the interface IResult, it needs to > be cast to the proper type first. But this approach does not feel better > than the previous notation. > > But thanks for the replies. > > > > > -- > View this message in context: > http://drools.46999.n3.nabble.com/Is-there-a-better-way-to-write-this-rule-tp4029327p4029333.html > Sent from the Drools: User forum mailing list archive at Nabble.com. > _______________________________________________ > rules-users mailing list > rules-users@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-users >
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users