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:

### Execution Core Layer

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.

#### Subsystems

1. {@link org.springframework.webflow.core Core}
2. {@link org.springframework.webflow.definition Flow Definition}
3. {@link org.springframework.webflow.definition.registry Flow Definition Registry}
4. {@link org.springframework.webflow.context External Context}
5. {@link org.springframework.webflow.conversation Conversation}
6. {@link org.springframework.webflow.execution Flow Execution}
7. {@link org.springframework.webflow.execution.repository Flow Execution Repository}
8. {@link org.springframework.webflow.action Action}
9. {@link org.springframework.webflow.util Util}

### Executor Layer

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.

#### Subsystems

1. {@link org.springframework.webflow.executor Core}
2. {@link org.springframework.webflow.executor.mvc Spring MVC}
3. {@link org.springframework.webflow.executor.struts Struts}
4. {@link org.springframework.webflow.executor.jsf Java Server Faces (JSF)}

### Execution Engine Layer

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.

#### Subsystems

1. {@link org.springframework.webflow.engine Engine Implementation}
2. {@link org.springframework.webflow.engine.builder Flow Builder}

### Test Layer

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.

#### Subsystems

1. {@link org.springframework.webflow.test Unit Test}
2. {@link org.springframework.webflow.test.execution Execution Test}

### System Configuration Layer

#### Subsystems

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.

1. {@link org.springframework.webflow.config Spring Configuration Support}