[rules-users] drools arithmetics without eval()

Wolfgang Laun wolfgang.laun at gmail.com
Wed Mar 14 09:00:30 EDT 2012


Oh yes, indeed.
-W

On 14/03/2012, rouvas at mm.di.uoa.gr <rouvas at mm.di.uoa.gr> wrote:
> Wolfgang Laun wrote:
>> accumulate is not the way to go.
>>
>> If you need accumlated counts for certain facts, by type or, within
>> some type, by attribute value, then you should set up secondary facts
>> and maintain these during the element insertion process or by separate
>> (static) rules.
>>
>> class ProductCounter {
>>     String id;
>>     int      count; }
>>
>> rule count
>> when
>>     $pp: PortfolioProduct($pid: productId, prodCounted == false )
>>     $pc: ProductCounter( id == $pid )
>> then
>>     modify( $pc ){ setCount( $pc.getCount() + 1 ) }
>> end
>
> Shouldn't "then" be
>
>  then
>      modify( $pc ){ setCount( $pc.getCount() + 1 ) }
>      modify ($pp ){ setProdCounted( true ) }
>  end
>
> I'm only asking to validate my understanding of the situation.
>
> -Stathis
>
>>
>> And now you can generate the rules accessing the completed counts.
>> -W
>>
>>
>>
>>
>>
>> On 14/03/2012, fx242 <drools at fx242.com> wrote:
>>> Hi,
>>>
>>> These rules are all auto-generated every day, and I don't control what
>>> is
>>> going into them, so this kind of optimizations won't work for me. The
>>> basic
>>> problem here, is that I have tons of rules that count facts
>>> (PortfolioProducts) and use the result as rule conditions.
>>> Some conditions could look like this: count(PortfolioProduct(A)) +
>>> count(PortfolioProduct(B)) <= ( count(PortfolioProduct(C)) -
>>> count(PortfolioProduct(D)) ) - count(PortfolioProduct(E))
>>> and so on...
>>>
>>> All rules look like the rule I've posted: I first calculate all relevant
>>> fact counts to be used by the rule (accumulates), and then perform the
>>> logic/arithmetic evaluation using evals(). Some rules end up having 15
>>> accumulates and 2 evals as conditions...
>>> My question is if using accumulate and eval() is the only choice I have
>>> to
>>> write these kind of rules.
>>>
>>> Regards,
>>> Tiago Lopes
>>>
>>> --
>>> View this message in context:
>>> http://drools.46999.n3.nabble.com/drools-arithmetics-without-eval-tp3823232p3824958.html
>>> Sent from the Drools: User forum mailing list archive at Nabble.com.
>>> _______________________________________________
>>> 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
>>
>
>
> _______________________________________________
> 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