The Spring Framework has recently released a preview of a new subproject called Spring Web Flow (SWF). SWF is a component that sits on top of existing web frameworks to allow the explicit creation page flows.
TSS has a nice introductory article about this new subproject.
In the past months I worked for a project to extend an e-procurement system with new functionality. This system had some very complex page flows and after reading the TSS article for SWF I can instantly see how a web-flow framework could have made our lives a lot easier while working for this project.
Except for the other advantages (like flow reusability and modularization) page flow definitions can provide good documentation for maintenance programmers. I remember it was painful to discover the page flow for a particular use case while working with the above system. You had to see the application in action and dig into action and JSP code, a process that is painful and time consuming. With SWF all you have to do is look at the page flow definition XML file.
So I believe that the SWF will be a very useful addition to the Spring Framework for applications that have complex page flows.
BTW SWF is independent of the actual web framework. SWF currently supports Spring-MVC, Struts and Portlets.
Other similar open source web flow frameworks include:
- Beehive Page Flows that it is implemented on top of Struts.
- Cocoon Flow that is a page flow component for the Cocoon framework.
- Struts Flow that is a port of Cocoon Flow to Struts.