Spring WebFlow

Spring WebFlow is a Spring add-on which handles the navigation around one sequence of interactions (conversation, workflow) within your web site. You don’t have to be using Spring MVC to use it, but you do need Spring core.

Flow Language

The Flow Definition consists of states, transitions, inputs/outputs, outcomes. Course G978: See page 8-17 to 8-25.

Flow Language: variables and scopes

WebFlow defines variables and several useful scopes: Flow, View and Conversation. See Spring WebFlow Reference, Section 9.

Main Classes

WebFlow Configuration has a lot of moving parts! SIX main classes/interfaces. Not all pieces need to be spelled out for all applications!

Hint: Classes in org.springframework.web.servlet.mvc are standard Spring MVC; classes in org.springframework.webflow.mvc are part of WebFlow!

FlowHandlerAdapter

These exist even in "standard" Spring MVC; used by the DispatcherServlet to hand requests off to e.g., your @Controller classes. Delegates work to the mapped FlowHandler. If you define the WebFlow version, the others don’t get mapped (so regular requests in the same webapp will fail), unless you also define the standard ones (listed on pg 8-9).

FlowHandlerMapping

HandlerMapping that creates a URL from information in the flow registry. Makes and returns a FlowHandler if a matching id is found in the flow registry.

FlowRegistry

Contains the actual flow definitions, which are usually in files because they are too long to put in ApplicationContext.xml

FlowHandler

Controller helper that has the reference to the actual flow. Manages the execution of the flow (using FlowExecutor), outcomes and even exceptions. Use standard one, or extend AbstractFlowHandler to override how some of these are handled.

FlowExecutor

Does the actual execution/interpretation of the flow. Creates new flow instances and resumes existing flows.

FlowDefinition

Stores the definition of one flow.

More Reading: