The public Java Documentation for Spring Web Flow, a framework for modeling and executing user interface flow.
Spring Web Flow's packages are partitioned across a set of logical layers. Higher layers depend on the layers directly beneath. Lower layers never depend on higher layers.
The layers of Spring Web Flow, from lowest to highest, are shown below:
Layer architecture diagram
The description, subsystems, and source packages of each layer are summarized below:
Contains the central public Spring Web Flow API elements. This includes elements to model flow definitions as well as execute those flow definitions. As the "bottom layer", this layer defines key domain interfaces and is highly stable.
Contains services called "flow executors" that drive the execution of flow definitions. This layer defines the core FlowExecutor service interface and implementation, as well as adaption code for executing flows in several specific environments. Support for Spring MVC, Struts, and Java Server Faces (JSF) environments is housed here. This layer depends on the stable Execution Core, but is not coupled to the more volatile Execution Engine implementation.
Contains concrete implementations of the stable Execution Engine abstractions. This layer defines the finite-state machine that carries out runtime flow execution. It also contains a builder subsystem for assembling flows from externalized resources such as XML files.
Contains support code for testing flow executions. Two types of support are provided: stubs for unit testing engine artifacts, and base classes for writing flow execution integration tests. This layer depends on the Execution Core and Execution Engine layers.
Contains support for configuring the flow executor engine using Spring. A Spring 2.0 config schema is provided. This is the top layer and depends on the Execution Core, Executor, and Execution Engine layers.