[rules-users] [droolsflow] JPAVariablePersister - ClassCastException on ForEachNodeInstance

Mauricio Salatino salaboy at gmail.com
Mon Oct 19 18:42:05 EDT 2009


Great.. I will take a look asap.

2009/10/19 Bill Tarr <javatestcase at yahoo.com>

> ok, I uploaded a demo to:
>
> https://jira.jboss.org/jira/browse/JBRULES-2304
>
>  ------------------------------
> *From:* Mauricio Salatino <salaboy at gmail.com>
> *To:* Rules Users List <rules-users at lists.jboss.org>
> *Sent:* Mon, October 19, 2009 2:42:41 PM
>
> *Subject:* Re: [rules-users] [droolsflow] JPAVariablePersister -
> ClassCastException on ForEachNodeInstance
>
> Can you upload with the jira issue an isolated test?
>
>
> On Mon, Oct 19, 2009 at 1:55 PM, Mauricio Salatino <salaboy at gmail.com>wrote:
>
>> Hmm I see.. that's another problem related with variable hierarchies
>> inside the context.
>> Because you are using a variable inside a node that contains a nested
>> context, probably there is a problem when the algorithm looks for nested
>> context.. I need to review that.. can you open a Jira Issue and assign it to
>> me? (Mauricio Salatino)
>>
>>
>> 2009/10/19 Bill Tarr <javatestcase at yahoo.com>
>>
>>>  I think I have the variables covered, and no changes to the class
>>> hierarchies (and the flows work without persistenence still).
>>>
>>> My variable Claim is declared in the top level process as
>>> com.csatp.svc.rulesmgr.claim.Claim, my variable Role is declared in the
>>> subprocess as com.csatp.svc.rulesmgr.claim.Role.
>>>
>>> The stack got buried in my overly long original post, here it is:
>>>
>>> java.lang.ClassCastException:
>>> org.drools.workflow.instance.node.ForEachNodeInstance cannot be cast to
>>> org.drools.workflow.instance.node.CompositeContextNodeInstance
>>>  at
>>> org.drools.persistence.processinstance.ProcessInstanceInfo.restoreVariable(ProcessInstanceInfo.java:198)
>>>  at
>>> org.drools.persistence.processinstance.ProcessInstanceInfo.restoreVariables(ProcessInstanceInfo.java:166)
>>>  at
>>> org.drools.persistence.processinstance.ProcessInstanceInfo.getProcessInstance(ProcessInstanceInfo.java:144)
>>>  at
>>> org.drools.persistence.processinstance.JPAProcessInstanceManager.getProcessInstance(JPAProcessInstanceManager.java:62)
>>>  at
>>> org.drools.common.AbstractWorkingMemory.getProcessInstance(AbstractWorkingMemory.java:1720)
>>>  at
>>> org.drools.impl.StatefulKnowledgeSessionImpl.getProcessInstance(StatefulKnowledgeSessionImpl.java:261)
>>>  at
>>> org.drools.command.runtime.process.GetProcessInstanceCommand.execute(GetProcessInstanceCommand.java:29)
>>>  at
>>> org.drools.command.runtime.process.GetProcessInstanceCommand.execute(GetProcessInstanceCommand.java:12)
>>>  at
>>> org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:254)
>>>  at
>>> org.drools.command.impl.CommandBasedStatefulKnowledgeSession.getProcessInstance(CommandBasedStatefulKnowledgeSession.java:92)
>>>  at
>>> com.csatp.svc.rulesmgr.claim.ClaimsDemoJpaTest.validateDocumentWorkflow2(ClaimsDemoJpaTest.java:182)
>>>
>>>
>>>
>>>
>>>  ------------------------------
>>> *From:* Mauricio Salatino <salaboy at gmail.com>
>>> *To:* Rules Users List <rules-users at lists.jboss.org>
>>> *Sent:* Mon, October 19, 2009 1:40:37 PM
>>>
>>> *Subject:* Re: [rules-users] [droolsflow] JPAVariablePersister -
>>> ClassCastException on ForEachNodeInstance
>>>
>>> I'm trying to remember what's the problem..
>>> But for what I remember it could be something like:
>>> you define the variable claim with type *com*.*csatp*.*svc*.*rulesmgr*
>>> .claim.Claim
>>>
>>> did you change the variable type, for example adding a new variable from
>>> a different type into the claim variable?
>>>
>>> if not, can you post the stack trace about the class cast exception?
>>> to know about from which class is trying to cast...
>>>
>>>
>>>
>>>
>>> 2009/10/19 Bill Tarr <javatestcase at yahoo.com>
>>>
>>>>  Could you clarify what you mean by defining the variables?
>>>>
>>>> Are you referring to the header variable definitions?
>>>>
>>>>
>>>> <variables>
>>>>
>>>> <variable name="claim" >
>>>>
>>>> <type name="*org*.drools.process.core.*datatype*.*impl*.type.ObjectDataType"
>>>> className="*com*.*csatp*.*svc*.*rulesmgr*.claim.Claim" />
>>>>
>>>> </variable>
>>>>
>>>> </variables>
>>>>
>>>>
>>>>
>>>> If so, could you clarify what should be added?
>>>>
>>>>
>>>>  ------------------------------
>>>> *From:* Mauricio Salatino <salaboy at gmail.com>
>>>> *To:* Rules Users List <rules-users at lists.jboss.org>
>>>> *Sent:* Mon, October 19, 2009 12:59:51 PM
>>>> *Subject:* Re: [rules-users] [droolsflow] JPAVariablePersister -
>>>> ClassCastException on ForEachNodeInstance
>>>>
>>>> Yes, I think I face that before. The problem is that you need to define
>>>> the variables in the process definition with the correct type.
>>>> Can you try with that and get back with that?
>>>>
>>>>
>>>> On Mon, Oct 19, 2009 at 12:52 PM, Bill Tarr <javatestcase at yahoo.com>wrote:
>>>>
>>>>> This seems more like a bug, I thought I'd post it here, but point me to
>>>>> the JIRA if I need to enter an issue.
>>>>>
>>>>> Still testing out JPAVariablePersister.  It appears the session,
>>>>> processes, and variables are persisted.  However, when I try to load the
>>>>> session again, and reopen the process as follows, I get a
>>>>> ClassCastException.
>>>>>
>>>>>     StatefulKnowledgeSession session =
>>>>> JPAKnowledgeService.loadStatefulKnowledgeSession( 1, knowledgeBase, null,
>>>>> env );
>>>>>     ProcessInstance processClm = session.getProcessInstance(1);
>>>>>
>>>>> The second line (ClaimsDemoJpaTest.java:182) is the source of the stack
>>>>> trace below.  The error makes sense, as:
>>>>>
>>>>>   ForEachNodeInstance extends CompositeNodeInstance
>>>>>   CompositeContextNodeInstance extends CompositeNodeInstance
>>>>>
>>>>> So they clearly cannot be cast to each other, but I'm not of how to
>>>>> troubleshoot this beyond that.  The line of code throwing the error clearly
>>>>> expects to be able to cast the nodeInstance.
>>>>>
>>>>>      restoreVariable(variableInfo, parentIds,
>>>>> variableName, (CompositeContextNodeInstance) nodeInstance);
>>>>>
>>>>> Here is the stack:
>>>>>
>>>>> java.lang.ClassCastException:
>>>>> org.drools.workflow.instance.node.ForEachNodeInstance cannot be cast to
>>>>> org.drools.workflow.instance.node.CompositeContextNodeInstance
>>>>>  at
>>>>> org.drools.persistence.processinstance.ProcessInstanceInfo.restoreVariable(ProcessInstanceInfo.java:198)
>>>>>  at
>>>>> org.drools.persistence.processinstance.ProcessInstanceInfo.restoreVariables(ProcessInstanceInfo.java:166)
>>>>>  at
>>>>> org.drools.persistence.processinstance.ProcessInstanceInfo.getProcessInstance(ProcessInstanceInfo.java:144)
>>>>>  at
>>>>> org.drools.persistence.processinstance.JPAProcessInstanceManager.getProcessInstance(JPAProcessInstanceManager.java:62)
>>>>>  at
>>>>> org.drools.common.AbstractWorkingMemory.getProcessInstance(AbstractWorkingMemory.java:1720)
>>>>>  at
>>>>> org.drools.impl.StatefulKnowledgeSessionImpl.getProcessInstance(StatefulKnowledgeSessionImpl.java:261)
>>>>>  at
>>>>> org.drools.command.runtime.process.GetProcessInstanceCommand.execute(GetProcessInstanceCommand.java:29)
>>>>>  at
>>>>> org.drools.command.runtime.process.GetProcessInstanceCommand.execute(GetProcessInstanceCommand.java:12)
>>>>>  at
>>>>> org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:254)
>>>>>  at
>>>>> org.drools.command.impl.CommandBasedStatefulKnowledgeSession.getProcessInstance(CommandBasedStatefulKnowledgeSession.java:92)
>>>>>  at
>>>>> com.csatp.svc.rulesmgr.claim.ClaimsDemoJpaTest.validateDocumentWorkflow2(ClaimsDemoJpaTest.java:182)
>>>>>
>>>>> Obviously this is a flow with a ForEach node. The ForEach calls a
>>>>> subflow for each item in the List claim.roles, in my test case, there are 2
>>>>> subflows.
>>>>>
>>>>> I don't know if it helps, but here is the forEach node from the flow:
>>>>>
>>>>> <forEach id="2" name="ForEach" x="423" y="62" width="200" height="150"
>>>>> variableName="role" collectionExpression="claim.roles" >
>>>>> <nodes>
>>>>> <subProcess id="1" name="Document Workflow" x="36" y="40" width="132"
>>>>> height="48" processId="DocumentWorkflow2" >
>>>>> <mapping type="in" from="role" to="role" />
>>>>> </subProcess>
>>>>> </nodes>
>>>>> <connections>
>>>>> </connections>
>>>>> <in-ports>
>>>>> <in-port type="DROOLS_DEFAULT" nodeId="1" nodeInType="DROOLS_DEFAULT"
>>>>> />
>>>>> </in-ports>
>>>>> <out-ports>
>>>>> <out-port type="DROOLS_DEFAULT" nodeId="1" nodeOutType="DROOLS_DEFAULT"
>>>>> />
>>>>> </out-ports>
>>>>> </forEach>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> rules-users mailing list
>>>>> rules-users at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> - http://salaboy.wordpress.com
>>>> - http://www.jbug.com.ar
>>>> - Salatino "Salaboy" Mauricio -
>>>>
>>>>
>>>> _______________________________________________
>>>> rules-users mailing list
>>>> rules-users at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>>>
>>>
>>>
>>> --
>>> - http://salaboy.wordpress.com
>>> - http://www.jbug.com.ar
>>> - Salatino "Salaboy" Mauricio -
>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>
>>
>> --
>> - http://salaboy.wordpress.com
>> - http://www.jbug.com.ar
>> - Salatino "Salaboy" Mauricio -
>>
>
>
>
> --
> - http://salaboy.wordpress.com
> - http://www.jbug.com.ar
> - Salatino "Salaboy" Mauricio -
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
- http://salaboy.wordpress.com
- http://www.jbug.com.ar
- Salatino "Salaboy" Mauricio -
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20091019/48224c74/attachment.html 


More information about the rules-users mailing list