Nov 2nd, 2009, 08:44 AM
Some WebFlow questions
I'm currently evaluation the UI technology for a new project. A few issues have risen which I would like to have answered before committing to a technology.
I do REALLY like Web Flow, so I hope they all have simple solutions:
1) Can Web Flow support two instances of the same flow running twice by the same user (in the same session)? For instance, we may have a user attempting to go through two order forms at once. Is this supported? How does Web Flow discriminate between the two flows?
2) Is there a simple way to create pretty ("RESTful" or bookmarkable) URLs instead of the showing the user the 'execution' query string parameter.
3) Is there a planned roadmap for Spring 3.0 support?
4) Is there JSF 2.0 support planned? This will more or less solve the pretty URLs issue.
Note that I'm using Web Flow with JSF as demonstrated in the swf-booking-faces sample app.
Thanks in advance,
Nov 2nd, 2009, 12:02 PM
1) Yes depending on your configuration
2) The mechanism is kind-of-plugable/extensible although not easy it is possible
3) Not yet (at least not that I know of)
4) Spring 3 supports JSF 2.0, the new version of Spring Webflow will depend on spring 3 so would say yes.
Nov 2nd, 2009, 12:12 PM
I'm afraid I can only address questions 1 and 2.
1) Yes, webflow can support two instances of the same flow for the same session. I'm assuming you would do this with separate windows or tabs. This requires launching a new flow in addition to the one already in place. You'll need to supply how this is launched. You will also need to ensure the max number of flow executions is set to 2 or greater, otherwise launching the new flow will cleanup the old one. Webflow supports this ability because you can have multiple flow executions running at the same time (depending on your max flow executions setting). Whether these are separate flows in each execution, or the same flow, doesn't really matter. However, pay attention to the data you're using in session scope, as this is shared between all flow executions.
2) The only RESTful URLs you can have are the URLs which start the flow in the first place. Once a flow is running (and includes a flow execution ID), it is not bookmarkable, since as soon as the session ends, or the conversation ends, or the snapshot corresponding to the URL expires, then the conversation state corresponding to that flow execution ID becomes invalid and eligible for cleanup. Remember, the flow execution IDs do not identify states within your flow definition. They map to an entire conversation state in progress, and typically do not last long enough to be used through bookmarks.
Nov 2nd, 2009, 12:35 PM
Regarding 2 you can implement your own FlowUrlHandler (or extend one of the existing) and implement your own way of storing/retrieving the FlowExecutionKey. The default is to encode it into the url, but you could also store it in a cookie, the session, somewhere else. However that would probably also include some other logic as by default it is a request parameter (execution). So with each flow instance you will need to find a way of retrieving/storing the flow execution key.
Tags for this Thread