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