KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > webflow > execution > FlowExecutionContext


1 /*
2  * Copyright 2002-2006 the original author or authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.springframework.webflow.execution;
17
18 import org.springframework.webflow.core.collection.AttributeMap;
19 import org.springframework.webflow.core.collection.MutableAttributeMap;
20 import org.springframework.webflow.definition.FlowDefinition;
21
22 /**
23  * Provides contextual information about a flow execution. A flow execution is
24  * an runnable instance of a {@link FlowDefinition}. In other words, it is the
25  * central Spring Web Flow construct for carrying out a conversation with a
26  * client. This immutable interface provides access to runtime information
27  * about the conversation, such as it's {@link #isActive() status} and
28  * {@link #getActiveSession() current state}.
29  * <p>
30  * An object implementing this interface is also traversable from a execution
31  * request context (see
32  * {@link org.springframework.webflow.execution.RequestContext#getFlowExecutionContext()}).
33  * <p>
34  * This interface provides information that may span more than one request in a
35  * thread safe manner. The {@link RequestContext} interface defines a <i>request
36  * specific</i> control interface for manipulating exactly one flow execution
37  * locally from exactly one request.
38  *
39  * @see FlowDefinition
40  * @see FlowSession
41  * @see RequestContext
42  *
43  * @author Keith Donald
44  * @author Erwin Vervaet
45  */

46 public interface FlowExecutionContext {
47
48     /**
49      * Returns the root flow definition associated with this executing flow.
50      * <p>
51      * A call to this method always returns the same flow definition -- the
52      * top-level "root" -- no matter what flow may actually be active (for
53      * example, if subflows have been spawned).
54      * @return the root flow definition
55      */

56     public FlowDefinition getDefinition();
57
58     /**
59      * Is the flow execution active?
60      * <p>
61      * All methods on an active flow execution context can be called
62      * successfully. If the flow execution is not active, a caller cannot access
63      * some methods such as {@link #getActiveSession()}.
64      * @return true if active, false if the flow execution has terminated
65      */

66     public boolean isActive();
67
68     /**
69      * Returns the active flow session of this flow execution. The active flow
70      * session is the currently executing session -- it may be the "root flow"
71      * session, or it may be a subflow session if this flow execution has
72      * spawned a subflow.
73      * @return the active flow session
74      * @throws IllegalStateException if this flow execution has not been started
75      * at all or if this execution has ended and is no longer actively executing
76      */

77     public FlowSession getActiveSession() throws IllegalStateException JavaDoc;
78
79     /**
80      * Returns a mutable map for data held in "conversation scope". Conversation
81      * scope is a data structure that exists for the life of this flow execution
82      * and is accessible to all flow sessions.
83      * @return conversation scope
84      */

85     public MutableAttributeMap getConversationScope();
86
87     /**
88      * Returns runtime execution attributes that may influence the behavior of
89      * flow artifacts, such as states and actions.
90      * @return execution attributes
91      */

92     public AttributeMap getAttributes();
93 }
Popular Tags