[rules-users] accumulate vs collect

rouvas at di.uoa.gr rouvas at di.uoa.gr
Fri Nov 12 13:00:41 EST 2010


Wolfgang Laun wrote:
> The suggested workaround (before this was fixed) is to use
>    count(1)
> which achieves the same effect.
> -W

Thanks a lot Wolfangm, it now works as a charm!

-Stathis

>
> On 11 November 2010 19:30,  <rouvas at di.uoa.gr> wrote:
>> Hi List,
>>
>> I'm trying to count the number of objects I have in the Working Memory
>> using accumulate, but I'm having a ClassCastException thrown at me.
>>
>> Using a variant with collect, everything work OK.
>>
>> Can someone shed some light on this issue?
>> Is it related to https://jira.jboss.org/browse/JBRULES-2202 ?
>>
>> I'm using Drools.5.0.1 and the fact is a declared one, as follows:
>>
>> declare t_1
>>  regRowId : String
>>  versionId : String
>>  c_7 : String
>>  c_1 : String
>>  c_2 : String
>>  c_3 : String
>>  c_4 : String
>>  c_5 : String
>>  c_6 : Double
>> end
>>
>> trying with :
>>
>> v945 : Number ( doubleValue  >=  1 ) from accumulate ( p : t_1 (  c_6 >=
>> 20100511 && c_7 == "5" ) , count(p) )
>>
>> I'm getting a ClassCastException:t_1, while using :
>>
>> v945 : ArrayList ( size  >=  1 ) from collect ( t_1 (  c_6 >= 20100511
>> &&
>> c_7 == "5" )  )
>>
>> works OK.
>>
>> The reason I'm preferring accumulate over collect, is that I'm not
>> really
>> interested in constructing an ArrayList of the matched facts (worries
>> about memory consumption), all I want is how many of them are there.
>>
>> The actual rule I'm using (although I don't think it matters) for the
>> accumulate variant, is:
>>
>> rule "r95944.6"
>>        dialect "mvel"
>>        when
>>                gnId : GoodNumbers()
>>                 LogicalValue : Trader( gnId.goodNo==goodNo  )
>>                 v945 : Number ( doubleValue  >=  1 ) from accumulate ( p
>> : t_1 (  c_6
>>>= 20100511 && c_7 == "5" ) , count(p) )
>>        then
>>                RaResultCode rrc = new RaResultCode();
>>                  rrc.setResultRuleId("95944");
>>                  rrc.setResultRuleVersionId("6");
>>                  rrc.setResultColor("R");
>>                  rrc.setResultRuleCode("01");
>>                  rrc.setResultAction("1");
>>                  rrc.setResultGoodNo(gnId.goodNo);
>>                insertLogical(rrc);
>> end
>>
>> Thank you for your time.
>>
>> -Stathis
>>
>>
>> _______________________________________________
>> 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