[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