[rules-users] Comparing multiple accumulations

Wolfgang Laun wolfgang.laun at gmail.com
Tue Jul 14 06:43:40 EDT 2009


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
>
>




More information about the rules-users mailing list