I believe this is fixed in Drools 5.1.1, as in 5.0.1 declared
beans where not implementing the Serializable interface. Please try
5.1.1 and let us know if you still see the problem.
Otherwise, Wolfgang's suggestion for the workaround should work as well.
Edson
2010/11/12 <rouvas(a)di.uoa.gr>:
Edson Tirelli wrote:
> Can you show us the stack trace? What version of Drools are you using?
I am using Drools.5.0.1.
For this accumulate:
v945 : Number ( doubleValue >= 1 ) from accumulate ( p : t_1 ( c_6 >=
20100512 && c_7 == "5" ) , count(p) )
stack trace follows:
EXCEPTION ERROR
java.lang.ClassCastException: gr.fbi.rulez.t_1
org.drools.rule.Accumulate.accumulate(Accumulate.java:172)
org.drools.reteoo.AccumulateNode.modifyTuple(AccumulateNode.java:424)
org.drools.reteoo.AccumulateNode.assertObject(AccumulateNode.java:284)
org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:42)
org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:147)
org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:42)
org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:147)
org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:42)
org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:185)
org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:146)
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1046)
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1001)
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:788)
org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:216)
utils.LoadDynEntities.load(LoadDynEntities.java:102)
gr.fbi.rulez.RulesRunner.ignite(RulesRunner.java:74)
...more irrelevant stuff..
-Stathis
>
> In Drools 5.1+, collect is just syntax sugar... internally, collect
> is implemented using accumulate.
>
> Edson
>
> 2010/11/11 <rouvas(a)di.uoa.gr>:
>> 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(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>
>
>
>
> --
> Edson Tirelli
> JBoss Drools Core Development
> JBoss by Red Hat @
www.jboss.com
>