Also, please note that the repeated use of "from $acc.transactions" will cripple the performance of your rules. The transactions should be asserted into the working memory to avoid the problem.
[]s Edson 2009/7/14 Wolfgang Laun <[email protected]> > You'll have to provide one full set of $acc.transaction values > (indicating class and relevant field values) where you think the rule > should fire, but doesnt, for people to be able to check what's going > on. > > Also, it is necessary to know how the types of Account.transactions > (List<???>), Transaction and RentTransaction are related. > > -W > > On 7/14/09, Richard Sherman <[email protected]> wrote: > > First I'm new to drools and secondly where I'm working we're using > version > > 4.0.7. > > > > I have a list of accounts and each account contains a list of > transactions. > > I wish to accumulate charge transactions and compare them to an > accumulation > > of payment transactions for a given time period (such as the last month). > > And it gets slightly more awkward in that if a payment transaction is of > a > > certain type it needs to be converted from a 4 weekly figure to a monthly > > figure ( using / 4 / 7 * 365 / 12). I've tried to use structures as > follows > > but they are causing the then part of the rule never to fire. > > > > rule "Account in arrears" > > salience 10 > > no-loop > > when > > $acc : Account( // balance between £500 and £1000 > > accountBalanceInPence >= 50000 && > > accountBalanceInPence <= 100000 > > ) > > > > $s : MessageInfo( accountNumber == $acc.accountNumber ) > > > > Number($charges : intValue) from > > accumulate( > > (Transaction( > > transactionDate > oneMonthAgo && > > amountInPence > 0 && > > $value : amountInPence) > > from $acc.transactions), > > sum($value) > > ) > > > > Number($adjustment : intValue) from > > accumulate( > > (Transaction( > > transactionDate > oneMonthAgo && > > amountInPence < 0 && > > transactionCode == "Type 1" && > > $value : amountInPence) > > from $acc.transactions), > > sum(($value / 4 / 7 * 365 / 12) - $value) > > ) > > > > > > Number( intValue > ($charges + $adjustment)) from > > accumulate( > > (RentTransaction > > (transactionDate > oneMonthAgo > > $value : amountInPence) > > from $acc.transactions), > > sum($value) > > ) > > > > then > > $s.setMessage( "Account in arrears" ); > > update($s); // flag update > > end > > > > Thanks > > Richard > > > > ________________________________ > > Beyond Hotmail - see what else you can do with Windows Live. Find out > more. > > _______________________________________________ > > rules-users mailing list > > [email protected] > > https://lists.jboss.org/mailman/listinfo/rules-users > > > > > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > -- Edson Tirelli JBoss Drools Core Development JBoss by Red Hat @ www.jboss.com
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
