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

Mauricio Salatino salaboy at gmail.com
Mon Oct 19 16:55:38 EDT 2009


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 -
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20091019/efb4af70/attachment.html 


More information about the rules-users mailing list