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