Skip navigation.
Home

Spring Web Flow 1.0 Released

Dear Spring Community,
 
We are pleased to announce that Spring Web Flow 1.0 has been released.
 
 
Spring Web Flow is a next generation web application controller framework that allows developers to define user interaction and application behavior as reusable, high-level modules called flows.  The framework delivers improved productivity and testability while providing a strong solution to enforcing navigation rules and managing application state.

This stable, production-grade release comes after 20 months of active development.  In this time Spring Web Flow has matured immensely, benefiting from over 50,000 early access downloads across 11 milestone releases.  We believe this version delivers the most complete user interface flow engine available.
 
The Big Picture
 
Spring Web Flow allows developers to build reusable, self-contained controller modules called flows. A flow defines a user dialog that responds to user events to drive the execution of application code to complete a business goal.  Consider this graphical view of a flow definition that carries out a search process with the user:
 
Seach Flow 
 
Flows such as the one above are defined declaratively using a rich domain-specific language (DSL).  The XML (XSD) form of this language is the most popular with users.  Once defined, a flow is testable in isolation, may be embedded within other flows as a subflow, and may be deployed for execution across multiple environments including Java EE Servlet and Portlet (JSR 168) without change.
 
 
Highlights
 
Spring Web Flow contains a number of innovative features that are popular with our users. These include the ability to:
  • Define all controller logic for an application task, such as a search process, in one place, instead of scattering that logic across many places.
  • Compose flows together to create rich controller modules from simple parts.
  • Enforce strict user navigation rules with a natural, object-oriented linear programming model and without coding verbose if/else blocks.
  • Have memory you allocate during flow execution automatically clean itself up when the flow ends or expires.
  • Deploy a flow for execution in a Servlet environment using your base web framework of choice.
  • Change base web frameworks without changing your flow definitions.
  • Change environments all together, going from JUnit test to Portlet for example, without changing your flow definitions.
  • Change your flow definition logic on-the-fly during integration testing at any time without a container restart.
  • Receive automatic POST+REDIRECT+GET behavior by default with no custom coding.
  • Receive automatic browser button support (back, forward, refresh) with no custom coding.
  • Store task data in any of four managed scopes: request, flash, flow, and conversation; each with their own distinct semantics.
  • Test flows in isolation without the container.  Ensure your application control logic works before you deploy.
Getting Started
 
The best way to get started with Spring Web Flow is to walk through the sample applications.  We recommend reviewing all samples, supplementing with reference manual material as needed from the start. Ten sample applications ship with the release, each demonstrating a distinct set of features.  The samples are:

  1. Phonebook - the original sample demonstrating most features (including subflows)
  2. Sellitem - demonstrates a wizard with conditional transitions, flow execution redirects, custom text field formatting, and continuations
  3. Flowlauncher - demonstrates all the possible ways to launch and resume flows
  4. Itemlist - demonstrates REST-style URLs and inline flows
  5. Shippingrate - demonstrates Spring Web Flow together with Ajax technology
  6. NumberGuess - demonstrates stateful beans, evaluate actions, and "single key" flow execution redirects.
  7. Birthdate - demonstrates Struts integration
  8. Fileupload - demonstrates multipart file upload, set actions, and flash scope
  9. Phonebook-Portlet - the phonebook sample in a Portlet environment (notice how the flow definitions do not change)
  10. Sellitem-JSF - the sellitem sample in a JSF environment

To build the sample applications for quick evaluation simply:

  1. Extract the spring-webflow-1.0.zip release archive
  2. Access the projects/spring-webflow/build-spring-webflow directory
  3. Execute the ant dist target.
  4. See the target/artifacts directory for deployable .war files for each sample as well as expanded war directories.

See the release readme.txt and projects/spring-webflow/spring-webflow-samples/readme.txt for more information on the release archive contents and samples, respectively.

All sample projects are Spring IDE projects directly importable into Eclipse.

Thanks to everyone out there who has supported us over the last year and a half--especially Juergen Hoeller, Ulrik Sandberg, Ben Hale, and the SWF forum community (you know who you are!).  A lot has happened since we started--not only have we seen this Web Flow "baby" grow from infancy to maturity and now a stable release, Erwin's little Esther was "released' in February 2005, then Keith's daughter Annabelle in February 2006, and just recently Erwin's second, Alexander in August of this year.  So we can officially say after 20 months and 3 kids, Web Flow 1.0 is finally here!

We truly hope you continue to find Spring Web Flow valuable to your projects.  Enjoy!

Keith and Erwin
Leads, The Spring Web Flow Team


Notes

  • Spring Web Flow runs on Java SE 1.3 or greater, and Java EE 1.3 (Servlet 2.3, Portlet 1.0) or greater.
  • Spring 1.2.7 or greater is required for the Spring 1.x series, Spring 2.0 or > is required for the Spring 2.x series.
  • Struts Classic (1.2.9), Spring MVC, and JSF integration is shipped out-of-the-box.
  • The 1.0 release signifies that API and XSD backwards compatability will be preserved throughout the 1.x series.

Additional Resources

  • Attend The Spring Experience 2006, the premier conference for the Spring community, December 7th - 10th in Hollywood, Florida to see Keith and Erwin put the latest Web Flow features in action.
  • Track future Spring Web Flow 1.x development with the Roadmap

Bookmark this page for the rollout of additional screencasts and code examples showing Web Flow in action.