|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface FlowExecution
A top-level instance of a flow definition that carries out definition execution on behalf of a single client. Typically used to support the orchestration of a web conversation.
This is the central facade interface for manipulating one runtime execution of a flow definition. Implementations of this interface are the finite state machine that is the heart of Spring Web Flow.
Typically, when a client wants to launch a flow execution at production time, she passes the id of the governing
flow definition
to a coordinating
flow executor
. This
coordinator then typically uses a flow execution factory
to create an object
implementing this interface, initializing it with the requested flow definition which becomes the execution's "root"
or top-level flow.
After execution creation, the start
operation is called, which
causes this execution to activate a new session
for its root flow definition. That session is
then said to become the active flow. An execution request context
is created, the
Flow's start state
is entered, and the request is processed.
In a distributed environment such as HTTP, after a call into this object has completed and control returns to the
caller, this execution object (if still active) is typically saved out to a repository before the server request
ends. For example it might be saved out to the HttpSession, a Database, or a client-side hidden form field for later
restoration and manipulation. This execution persistence is the responsibility of the
flow execution repository
subsystem.
Subsequent requests from the client to manipuate this flow execution trigger restoration of this object, followed by
an invocation of the signal event
operation. The signalEvent operation
resumes this execution by indicating what action the user took from within the current state; for example, the user
may have pressed the "submit" button, or pressed "cancel". After the user event is processed, control again goes back
to the caller and if this execution is still active, it is again saved out to the repository.
This process continues until a client event causes this flow execution to end (by the root flow reaching an end state). At that time this object is no longer active, and is removed from the repository and discarded.
Flow executions can have their lifecycle observed by listeners
.
FlowDefinition
,
FlowSession
,
RequestContext
,
FlowExecutionListener
,
FlowExecutionRepository
,
FlowExecutor
Method Summary | |
---|---|
ViewSelection |
refresh(ExternalContext context)
Refresh this flow execution, asking the current view selection to be reconstituted to support reissuing the last response. |
ViewSelection |
signalEvent(java.lang.String eventId,
ExternalContext context)
Signal an occurrence of the specified user event in the current state of this executing flow. |
ViewSelection |
start(MutableAttributeMap input,
ExternalContext context)
Start this flow execution, transitioning it to the root flow's start state and returning the starting view selection needed to issue an initial user response. |
Methods inherited from interface org.springframework.webflow.execution.FlowExecutionContext |
---|
getActiveSession, getAttributes, getConversationScope, getDefinition, isActive |
Method Detail |
---|
ViewSelection start(MutableAttributeMap input, ExternalContext context) throws FlowExecutionException
This will start the entire flow execution from scratch.
input
- input attributes to pass to the flow, which the flow may choose to map into its scopecontext
- the external context in which the starting event occured
FlowExecutionException
- if an exception was thrown within a state of the flow execution during request
processingViewSelection signalEvent(java.lang.String eventId, ExternalContext context) throws FlowExecutionException
eventId
- the identifier of the user event that occuredcontext
- the external context in which the event occured
FlowExecutionException
- if an exception was thrown within a state of the resumed flow execution during
event processingViewSelection refresh(ExternalContext context) throws FlowExecutionException
context
- the externa context in which the refresh event occured
FlowExecutionException
- if an exception was thrown within a state of the resumed flow execution during
event processing
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |