[rules-users] Comparing multiple accumulations
Edson Tirelli
tirelli at post.com
Tue Jul 14 08:55:29 EDT 2009
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 <wolfgang.laun at gmail.com>
> 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 <rsherman315 at hotmail.com> 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
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
--
Edson Tirelli
JBoss Drools Core Development
JBoss by Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090714/2009a742/attachment.html
More information about the rules-users
mailing list