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

Mauricio Salatino salaboy at gmail.com
Mon Oct 19 16:40:37 EDT 2009


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


More information about the rules-users mailing list