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



--
 Edson Tirelli
 JBoss Drools Core Development
 JBoss by Red Hat @ www.jboss.com