Spring Web Flow is a product of the Spring community focused on the definition and execution of page flow within a web application.
SWF allows you to capture logical page flows as self-contained controller modules that are reusable in different situations. The system is ideal for web applications that guide users through controlled interactions that support business processes. These user interactions, or conversations, typically span HTTP requests and may be dynamic and transactional in nature.
As an embeddable page flow and conversational state engine, Spring Web Flow integrates with existing frameworks such as Spring MVC, Spring Portlet MVC, JSF, and Struts. Flow definitions are reusable accross environments without coupling developer application code to SWF APIs.
Spring Web Flow 1.0 EA is a major release for several reasons:
- The 1.0 product roadmap is now complete
- The 1.0 product reference documentation is now complete
- The product has now entered into a four week user evaluation period before the release of 1.0 RC1, which will be the first production-grade release, followed by the release of 1.0 final. The Spring Web Flow team is keen on considering as much feedback from the community as possible during these four weeks with 1.0 EA to further ensure the highest-quality product possible.
- Support for binding directly to backing business services from a flow definition (eliminating the need for trivial Action adapter glue code)
- Support for four (4) distinct flow response types out-of-the box (view forward, conversation redirect, flow redirect, external redirect)
- Multiple strategies for launching flows and accessing/refreshing/bookmarking ongoing conversations (parameter-based, path-based [REST-style])
- Simplified support for deploying flow definitions for execution
- Spring Portlet MVC integration, for executing flows in a JSR 168 Portlet environment JSF integration, for executing flows in a JSF environment
- Improved support for persisting flow executions across requests and tracking (and securing access to) ongoing conversations within a repository.
- Automatic externalized flow definition change detection and "hot reloading"
- Support for global transitions shared by all states of a flow
- Support for importing one or more Spring bean definition files into a flow definition, providing a context for configuring custom flow artifacts such as actions, attribute mappers, exception handlers, view selectors, and transition criteria
- Support for "inline-flows," flow definitions fully local and contained within an outer flow definition
- Support for exception handling at both the flow and state level
- Miscellaneous improvements in many areas including but not limited to Java-based flow building, flow execution testing, flow execution listening, conversation locking, flow execution serialization, attribute and parameter map access support, flow attribute mapping, and piecemeal page-level form validation
The last section of the release announcement points to the reference documentation, available in HTML and PDF form, and notes the SWF sample applications available in this release for getting started in one-step after release download. The sample applications for review include:
1. Phonebook - the central sample demonstrating most features (including subflows).
2. Sellitem - demonstrates a wizard with conditional transitions, conversational scope, and continuations.
3. Flowlauncher - demonstrates all the possible ways to launch and resume flows.
4. Itemlist - demonstrates REST-style URLs, conversational redirects to a refreshable conversation URL, and inline flows.
5. (NEW) Shippingrate - demonstrates Spring Web Flow together with Ajax technology (thanks to Steven Devijver)
6. Birthdate - demonstrates Struts integration.
7. Fileupload - demonstrates multipart file upload.
8. (NEW) Phonebook-Portlet - the phonebook sample in a Portlet environment (notice how the flow definitions do not change)
9. (NEW) Sellitem-JSF - the sellitem sample in a JSF environment (notice how the flow definition does not change)
1.0 final is just on the horizon - we keenly look forward to your feedback on this release at http://forum.springframework.org.
The Spring Web Flow Team