Interface FlowDefinition

All Superinterfaces:
Annotated
All Known Implementing Classes:
Flow

public interface FlowDefinition extends Annotated
The definition of a flow, a program that when executed carries out a task on behalf of a single client.

A flow definition is a reusable, self-contained controller module that defines a blue print for an executable user task. Flows typically orchestrate controlled navigations or dialogs within web applications to guide users through fulfillment of a business process/goal that takes place over a series of steps, modeled as states.

Structurally a flow definition is composed of a set of states. A state is a point in a flow where a behavior is executed; for example, showing a view, executing an action, spawning a subflow, or terminating the flow. Different types of states execute different behaviors in a polymorphic fashion. Most states are transitionable states, meaning they can respond to events by taking the flow from one state to another.

Each flow has exactly one start state which defines the starting point of the program.

This interface exposes the flow's identifier, states, and other definitional attributes. It is suitable for introspection by tools as well as user-code at flow execution time.

Flow definitions may be annotated with attributes.

Author:
Keith Donald, Erwin Vervaet
  • Method Details

    • getId

      String getId()
      Returns the unique id of this flow.
      Returns:
      the flow id
    • getStartState

      StateDefinition getStartState()
      Return this flow's starting point.
      Returns:
      the start state
    • getState

      Returns the state definition with the specified id.
      Parameters:
      id - the state id
      Returns:
      the state definition
      Throws:
      IllegalArgumentException - if a state with this id does not exist
    • getPossibleOutcomes

      String[] getPossibleOutcomes()
      Returns the outcomes that are possible for this flow to reach.
      Returns:
      the possible outcomes
    • getClassLoader

      ClassLoader getClassLoader()
      Returns the class loader used by this flow definition to load classes.
      Returns:
      the class loader
    • getApplicationContext

      org.springframework.context.ApplicationContext getApplicationContext()
      Returns a reference to application context hosting application objects and services used by this flow definition.
      Returns:
      the application context
    • inDevelopment

      boolean inDevelopment()
      Returns true if this flow definition is currently in development (running in development mode).
      Returns:
      the development flag
    • destroy

      void destroy()
      Destroy this flow definition, releasing any resources. After the flow is destroyed it cannot be started again.