[rules-users] Accumulate and Serializable

Edson Tirelli tirelli at post.com
Wed Jul 15 10:28:29 EDT 2009


   Although it is good to have your facts being serializable, it should not
be mandatory. That was a mistake. I will reopen that ticket to fix that.

   []s
   Edson



2009/7/15 Steve Ronderos <steve.ronderos at ni.com>

>
> Hello,
>
> I've been working on upgrading an application that uses Drools 4.0.7 to
> 5.0.1.  For the most part things have been going well.
>
> After I got the rules running with 5.0.1 I started getting a
> ClassCastException on one of my model classes within the class
> MVELAccumulatorFunctionExecutor.  Here is the full stacktrace
>
> org.drools.runtime.rule.ConsequenceException:
> org.drools.RuntimeDroolsException: java.lang.ClassCastException:
> com.example.Slot
>         at
> org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:23)
>         at
> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:945)
>         at
> org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:885)
>         at
> org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1091)
>         at
> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:684)
>         at
> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:650)
>         at
> com.example.StatefulDroolsRuleManager.execute(StatefulDroolsRuleManager.java:59)
>         at
> com.example.common.TestMaxQuantity.multipleMaximum4Slot(TestMaxQuantity.java:115)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>         at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>         at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>         at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>         at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>         at
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>         at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
>         at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
>         at
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
>         at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
>         at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
>         at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>         at
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>         at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
>         at
> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
>         at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
>         at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
>         at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
>         at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
> Caused by: org.drools.RuntimeDroolsException: java.lang.ClassCastException:
> com.example.Slot
>         at org.drools.rule.Accumulate.accumulate(Accumulate.java:172)
>         at
> org.drools.reteoo.AccumulateNode.modifyTuple(AccumulateNode.java:432)
>         at
> org.drools.reteoo.AccumulateNode.assertObject(AccumulateNode.java:284)
>         at
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:360)
>         at
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:344)
>         at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:147)
>         at
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:360)
>         at
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:337)
>         at
> org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:185)
>         at
> org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:146)
>         at
> org.drools.common.AbstractWorkingMemory.modifyInsert(AbstractWorkingMemory.java:1365)
>         at
> org.drools.base.DefaultKnowledgeHelper.modifyInsert(DefaultKnowledgeHelper.java:201)
>         at
> org.drools.base.DefaultKnowledgeHelper.modifyInsert(DefaultKnowledgeHelper.java:195)
>         at
> com.example.Rule_Update_Slot_s_valid_occupants_0.consequence(Rule_Update_Slot_s_valid_occupants_0.java:30)
>         at
> com.example.Rule_Update_Slot_s_valid_occupants_0ConsequenceInvoker.evaluate(Rule_Update_Slot_s_valid_occupants_0ConsequenceInvoker.java:33)
>         at
> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:936)
>         ... 34 more
> Caused by: java.lang.ClassCastException: com.example.Slot
>         at
> org.drools.base.accumulators.MVELAccumulatorFunctionExecutor.accumulate(MVELAccumulatorFunctionExecutor.java:125)
>         at org.drools.rule.Accumulate.accumulate(Accumulate.java:164)
>         ... 49 more
>
> I then downloaded the code to see what was going on and it looks like my
> fact types are being cast to Serializable objects in the
> MVELAccumulatorFunctionExecutor.accumulate method.  I don't remember reading
> anything about needing to make my model serializable, did I miss some
> documentation somewhere?
>
> Also, I found this JIRA request that looked related:
> https://jira.jboss.org/jira/browse/JBRULES-2202
>
> Any help would be greatly appreciated.  Thanks!
>
> Steve Ronderos
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
 Edson Tirelli
 JBoss Drools Core Development
 JBoss by Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090715/bf384f2e/attachment.html 


More information about the rules-users mailing list