Nested Pageflow Failing on Two Counts
darthmaul Oct 28, 2008 7:51 PMI have an order processing pageflow that works just fine on its own, but two weird things happen when I nest it inside a larger pageflow:
- The flow goes to the first page node but doesn't stay there as a transition is executed without any action by the user (since the action is supposed to fire with the press of a button).
- I get an exception when I attempt to save the order to the database: java.lang.IllegalStateException: pageflow has not yet started
Here first is the relevant portion of the parent pageflow (Note that a long-running conversation is in place before this begins):
<page view-id="/sales/orderDetails.jspx" name="orderDetails">
<redirect/>
<transition name="convertOrder" to="conversion">
<action expression="#{conversionAction.convertOrder}"/>
</transition>
</page>
<process-state name="conversion">
<sub-process name="orderFulfillmentPageflow"/>
<transition to="end-process"/>
</process-state>
<end-state name="end-process"/>
Here now is the relevant portion of the nested pageflow:
<pageflow-definition name="orderFulfillmentPageflow"...>
<start-page view-id="/sales/beginOrder.jspx" name="orderInitiation">
<description>Begin Order</description>
<redirect/>
<transition name="shop" to="selection"/>
</start-page>
<page view-id="/sales/shop.jspx" name="selection">
.
.
.
</page>
<page view-id="/sales/confirm.jspx" name="confirmation">
<description>Confirmation</description>
<redirect/>
<transition name="submitOrder" to="end">
<action expression="#{orderFulfillmentAction.submitOrder}"/>
</transition>
</page>
<page view-id="/sales/home.jspx" name="end">
<end-conversation/>
<redirect/>
<transition to="end-process"/>
</page>
<end-state name="end-process"/>
When I nest this flow, the application activates the shop
transition and moves to the selection
node on its own. And when I activate the submitOrder
action, which persists the order, I get the java.lang.IllegalStateException: pageflow has not yet started.
Here are the logs. First, for the skipped page
:
27 Oct 2008 18:03:18,078: DEBUG org.jbpm.graph.exe.Token.unlock - token[0] is unlocked by token[0] 27 Oct 2008 18:03:18,078: DEBUG org.jbpm.graph.def.GraphElement.fireEvent - event 'node-enter' on 'ProcessState(conversion)' for 'Token(/)' 27 Oct 2008 18:03:18,078: DEBUG org.jbpm.graph.def.GraphElement.fireEvent - event 'process-start' on 'ProcessDefinition(orderFulfillmentPageflow)' for 'Token(/)' 27 Oct 2008 18:03:18,078: DEBUG org.jbpm.graph.def.GraphElement.fireEvent - event 'subprocess-created' on 'ProcessState(conversion)' for 'Token(/)' 27 Oct 2008 18:03:18,078: DEBUG org.jbpm.graph.def.GraphElement.fireEvent - event 'before-signal' on 'Page(orderInitiation)' for 'Token(/)' 27 Oct 2008 18:03:18,078: DEBUG org.jbpm.graph.def.GraphElement.fireEvent - event 'node-leave' on 'Page(orderInitiation)' for 'Token(/)' 27 Oct 2008 18:03:18,078: DEBUG org.jbpm.graph.def.GraphElement.fireEvent - event 'transition' on 'Transition(shop)' for 'Token(/)' 27 Oct 2008 18:03:18,078: DEBUG org.jbpm.graph.def.GraphElement.fireEvent - event 'node-enter' on 'Page(selection)' for 'Token(/)' 27 Oct 2008 18:03:18,078: DEBUG org.jbpm.graph.def.GraphElement.fireEvent - event 'after-signal' on 'Page(orderInitiation)' for 'Token(/)' 27 Oct 2008 18:03:18,078: DEBUG org.jbpm.graph.def.GraphElement.fireEvent - event 'after-signal' on 'Page(orderDetails)' for 'Token(/)' 27 Oct 2008 18:03:18,078: DEBUG org.jbpm.JbpmContext.close - closing JbpmContext
Second, for the exception:
27 Oct 2008 18:03:32,259: DEBUG org.jbpm.graph.exe.Token.unlock - token[0] is unlocked by token[0]
27 Oct 2008 18:03:32,279: ERROR org.jbpm.graph.def.GraphElement.executeAction - action threw exception: couldn't evaluate expression '#{orderFulfillmentAction.submitOrder}'
.
.
.
.
java.lang.IllegalStateException: pageflow has not yet started
at org.jboss.seam.pageflow.Pageflow.getNode(Pageflow.java:172)
at org.jboss.seam.faces.FacesPage.storePageflow(FacesPage.java:74)
at org.jboss.seam.jsf.SeamPhaseListener.beforeRenderResponse(SeamPhaseListener.java:474)
at org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseListener.java:146)
at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:116)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:222)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:223)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
Any insight into why these things happen is appreciated.
Thanks.