org.springframework.webflow.execution
Interface FlowExecutionListener

All Known Implementing Classes:
FlowExecutionListenerAdapter

public interface FlowExecutionListener

Interface to be implemented by objects that wish to listen and respond to the lifecycle of flow executions.

An 'observer' that is very aspect like, allowing you to insert 'cross cutting' behavior at well-defined points within one or more well-defined flow execution lifecycles.

For example, one custom listener may apply security checks at the flow execution level, preventing a flow from starting or a state from entering if the curent user does not have the necessary permissions. Another listener may track flow execution navigation history to support bread crumbs. Another may perform auditing, or setup and tear down connections to a transactional resource.

Note that flow execution listeners are registered with a flow execution when that execution is created by a factory or restored by a FlowExecutionRepository. Typically a listener will not be registered with a flow execution at runtime, when the flow execution is already active.

Author:
Keith Donald, Erwin Vervaet
See Also:
FlowDefinition, StateDefinition, FlowExecution, RequestContext, Event, ViewSelection

Method Summary
 void eventSignaled(RequestContext context, Event event)
          Called when an event is signaled in the current state, but prior to any state transition.
 void exceptionThrown(RequestContext context, FlowExecutionException exception)
          Called when an exception is thrown during a flow execution, before the exception is handled by any registered handler.
 void paused(RequestContext context, ViewSelection selectedView)
          Called when a flow execution is paused, for instance when it is waiting for user input (after event processing).
 void requestProcessed(RequestContext context)
          Called when a client request has completed processing.
 void requestSubmitted(RequestContext context)
          Called when any client request is submitted to manipulate this flow execution.
 void resumed(RequestContext context)
          Called after a flow execution is successfully reactivated after pause (but before event processing).
 void sessionCreated(RequestContext context, FlowSession session)
          Called after a new flow session has been created but before it starts.
 void sessionEnded(RequestContext context, FlowSession session, AttributeMap output)
          Called when a flow execution session ends.
 void sessionEnding(RequestContext context, FlowSession session, MutableAttributeMap output)
          Called when the active flow execution session has been asked to end but before it has ended.
 void sessionStarted(RequestContext context, FlowSession session)
          Called after a new flow session has started.
 void sessionStarting(RequestContext context, FlowDefinition definition, MutableAttributeMap input)
          Called to indicate a new flow definition session is about to be created and started.
 void stateEntered(RequestContext context, StateDefinition previousState, StateDefinition state)
          Called when a state transitions, after the transition occured.
 void stateEntering(RequestContext context, StateDefinition state)
          Called when a state transitions, after the transition is matched but before the transition occurs.
 

Method Detail

requestSubmitted

void requestSubmitted(RequestContext context)
Called when any client request is submitted to manipulate this flow execution. This call happens before request processing.

Parameters:
context - the source of the event

requestProcessed

void requestProcessed(RequestContext context)
Called when a client request has completed processing.

Parameters:
context - the source of the event

sessionStarting

void sessionStarting(RequestContext context,
                     FlowDefinition definition,
                     MutableAttributeMap input)
Called to indicate a new flow definition session is about to be created and started. Called before the session is created. An exception may be thrown from this method to veto the start operation. Any type of runtime exception can be used for this purpose.

Parameters:
context - the source of the event
definition - the flow for which a new session is starting
input - a mutable input map - attributes placed in this map are eligible for input mapping by the flow definition at startup

sessionCreated

void sessionCreated(RequestContext context,
                    FlowSession session)
Called after a new flow session has been created but before it starts. Useful for setting arbitrary attributes in the session before the flow starts.

Parameters:
context - the source of the event
session - the session that was created
Since:
1.0.2

sessionStarted

void sessionStarted(RequestContext context,
                    FlowSession session)
Called after a new flow session has started. At this point the flow's start state has been entered and any other startup behaviors have been executed.

Parameters:
context - the source of the event
session - the session that was started

eventSignaled

void eventSignaled(RequestContext context,
                   Event event)
Called when an event is signaled in the current state, but prior to any state transition.

Parameters:
context - the source of the event
event - the event that occured

stateEntering

void stateEntering(RequestContext context,
                   StateDefinition state)
                   throws EnterStateVetoException
Called when a state transitions, after the transition is matched but before the transition occurs.

Parameters:
context - the source of the event
state - the proposed state to transition to
Throws:
EnterStateVetoException - when entering the state is not allowed

stateEntered

void stateEntered(RequestContext context,
                  StateDefinition previousState,
                  StateDefinition state)
Called when a state transitions, after the transition occured.

Parameters:
context - the source of the event
previousState - from state of the transition
state - to state of the transition

paused

void paused(RequestContext context,
            ViewSelection selectedView)
Called when a flow execution is paused, for instance when it is waiting for user input (after event processing).

Parameters:
context - the source of the event
selectedView - the view that will display

resumed

void resumed(RequestContext context)
Called after a flow execution is successfully reactivated after pause (but before event processing).

Parameters:
context - the source of the event

sessionEnding

void sessionEnding(RequestContext context,
                   FlowSession session,
                   MutableAttributeMap output)
Called when the active flow execution session has been asked to end but before it has ended.

Parameters:
context - the source of the event
session - the current active session that is ending
output - the flow output produced by the ending session, this map may be modified by this listener to affect the output returned

sessionEnded

void sessionEnded(RequestContext context,
                  FlowSession session,
                  AttributeMap output)
Called when a flow execution session ends. If the ended session was the root session of the flow execution, the entire flow execution also ends.

Parameters:
context - the source of the event
session - ending flow session
output - final, unmodifiable output returned by the ended session

exceptionThrown

void exceptionThrown(RequestContext context,
                     FlowExecutionException exception)
Called when an exception is thrown during a flow execution, before the exception is handled by any registered handler.

Parameters:
context - the source of the exception
exception - the exception that occurred


Copyright © 2009 Spring Framework. All Rights Reserved.