クラス Flow
- 実装されたすべてのインターフェース:
Annotated
,FlowDefinition
単純なフロー定義では、アクションを実行してビューを表示することしかできません。より複雑なフロー定義は長期間実行され、一連のリクエストにわたって実行され、多くのパス、アクション、サブフローを呼び出す可能性があります。
特にイントラネットアプリケーションでは、多くの場合「制御されたナビゲーション」があり、ユーザーは自由にやりたいことを実行できず、システムが提供するガイドラインに従って、本質的にトランザクション的なプロセスを完了する必要があります (典型的な例は、ショッピングカートアプリケーションの「チェックアウト」フローです)。これは、フローとしてモデル化するのに適した典型的な使用例です。
構造的には、フローは一連の状態から構成されます。State
は、フロー内で動作が実行されるポイントです。たとえば、ビューの表示、アクションの実行、サブフローの生成、フローの終了などです。状態の種類によって、ポリモーフィックな方法で異なる動作が実行されます。
各 TransitionableState
型には、実行されるとフローを別の状態に移動する 1 つ以上の遷移があります。これらの遷移は、フローを通じてサポートされるパスを定義します。
状態遷移は、イベントの発生によってトリガーされます。イベントとは、フローが応答する必要がある何かの発生です。たとえば、ユーザー入力イベント (「送信」など) やアクション実行結果イベント (「成功」など) などです。フローの状態でイベントが発生すると、そのイベントによって状態遷移が駆動され、次に何をするかが決定されます。
各フローには開始状態が 1 つだけあります。開始状態は、このフロー定義の実行が開始される状態を示す単なるマーカーです。フローに追加された最初の状態が、デフォルトで開始状態になります。
フロー定義には、1 つ以上のフロー例外ハンドラーを含めることができます。FlowExecutionExceptionHandler
は、このフローの実行の 1 つの状態で発生する特定の例外 (または例外のセット) に応じてカスタム動作を実行できます。
このクラスのインスタンスは通常、FlowBuilder
実装によって構築されますが、直接インスタンス化することもできます。
このクラスと Spring Web Flow (SWF) エンジンの残りの部分は、他のライブラリへの依存を最小限に抑えて設計されています。Spring Web Flow はスタンドアロンで使用できます。エンジンシステムは、テストやスタンドアロンアプリケーションなど、HTTP サーブレット環境以外でも完全に使用できます。Spring Web Flow のアーキテクチャ上の主な利点の 1 つは、 あらゆる環境で実行できる再利用可能な高レベルのコントローラーモジュールを設計できることです。
メモ: フローはシングルトン定義オブジェクトなので、スレッドセーフである必要があります。フロー定義は、アプリケーションモジュールのすべての動作を定義する Java クラスに類似したものと考えることができます。コア動作は、start
、resume(RequestControlContext)
、on event
、end
、handleException(FlowExecutionException, RequestControlContext)
です。各メソッドは、このフローがスレッドセーフな方法で実行状態にアクセスできるようにする request context
を受け入れます。フロー実行は、このフロー定義の実行中のインスタンスをモデル化するもので、クラスのインスタンスである java オブジェクトに多少類似しています。
- 作成者:
- Keith Donald, Erwin Vervaet, Colin Sampaleanu, Jeremy Grelle
- 関連事項:
フィールドのサマリー
フィールドクラス org.springframework.webflow.core.AnnotatedObject から継承されたフィールド
CAPTION_PROPERTY, DESCRIPTION_PROPERTY
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected void
指定された状態定義をこのフロー定義に追加します。void
addVariable
(FlowVariable variable) フロー変数を追加します。void
addVariables
(FlowVariable... variables) フロー変数を追加します。boolean
containsState
(StringSE stateId) 指定された ID を持つ状態がこのフローに存在しますか ?static Flow
create
(StringSE id, AttributeMap<?> attributes) 指定された ID と属性を使用して新しいフローを作成します。void
destroy()
このフロー定義を破棄し、すべてのリソースを解放します。void
end
(RequestControlContext context, StringSE outcome, MutableAttributeMap<?> output) このフロー定義に、自身の実行セッションが終了したことを通知します。boolean
org.springframework.context.ApplicationContext
このフロー定義で使用されるアプリケーションオブジェクトとサービスをホストするアプリケーションコンテキストへの参照を返します。このフロー定義でクラスをロードするために使用するクラスローダーを返します。フローの実行が終了したときに、このフローによって実行されたアクションのリストを返します。例外ハンドラーのセットを返します。これにより、フロー実行中にスローされた例外の処理方法を操作できます。getGlobalTransition
(StringSE eventId) 指定された ID のイベントに一致する遷移を返します。状態レベルの遷移が一致しない場合は、このフローによって実行できる遷移のセットを返します。getId()
このフローの一意の ID を返します。設定されたフロー入力マッパーを返します。存在しない場合は null を返します。設定されたフロー出力マッパーを返します。存在しない場合は null を返します。StringSE[]
このフローが到達できる可能性のある結果を返します。フローの実行が開始されたときに、このフローによって実行されるアクションのリストを返します。このフローの開始点を返します。指定された ID を持つ状態定義を返します。int
このフロー内で定義されている状態の数を返します。StringSE[]
このフロー定義に関連付けられた状態定義の文字列ids
の順序付けられた配列を返す便利なアクセサー。getStateInstance
(StringSE stateId) このフローの識別された状態インスタンスを検索します。getTransitionableState
(StringSE stateId) 指定されたstateId
を持つTransitionableState
を返します。getVariable
(StringSE name) 指定された名前のフロー変数を返します。フロー変数を返します。boolean
handleEvent
(RequestControlContext context) このフローのアクティブセッションに対して発生した最後のイベントを処理します。boolean
handleException
(FlowExecutionException exception, RequestControlContext context) このフローの実行中に発生した例外を処理します。int
hashCode()
boolean
このフロー定義が現在開発中(開発モードで実行中)の場合は true を返します。void
restoreVariables
(RequestContext context) void
resume
(RequestControlContext context) このフローの一時停止されたセッションを現在のビュー状態で再開します。void
setApplicationContext
(org.springframework.context.ApplicationContext applicationContext) このフローに必要なアプリケーションオブジェクトをホストするアプリケーションコンテキストへの参照を設定します。void
setInputMapper
(Mapper inputMapper) フロー入力属性をマップするようにマッパーを設定します。void
setOutputMapper
(Mapper outputMapper) フロー出力属性をマップするようにマッパーを設定します。void
setStartState
(StringSE stateId) このフローの開始状態を、指定されたstateId
の状態に設定します。指定されたstateId
によって状態が存在している必要があります。void
setStartState
(State state) このフローの開始状態を指定された状態に設定します。任意の状態を開始状態にすることができます。void
start
(RequestControlContext context, MutableAttributeMap<?> input) このフローの開始状態で新しいセッションを開始します。toString()
クラス org.springframework.webflow.core.AnnotatedObject から継承されたメソッド
getAttributes, getCaption, getDescription, setCaption, setDescription
クラス java.lang.ObjectSE から継承されたメソッド
clone, finalize, getClass, notify, notifyAll, wait, waitSE, waitSE
インターフェース org.springframework.webflow.core.Annotated から継承されたメソッド
getAttributes, getCaption, getDescription
フィールドの詳細
logger
protected final org.apache.commons.logging.Log loggerロガーはサブクラスで使用できます。
コンストラクターの詳細
Flow
指定された ID を使用して新しいフロー定義を構築します。ID はすべてのフロー間で一意である必要があります。- パラメーター:
id
- フロー識別子
メソッドの詳細
create
指定された ID と属性を使用して新しいフローを作成します。- パラメーター:
id
- フロー IDattributes
- 属性- 戻り値:
- 流れ
getId
インターフェースからコピーされた説明:FlowDefinition
このフローの一意の ID を返します。- 次で指定:
- インターフェース
FlowDefinition
のgetId
- 戻り値:
- フロー ID
getStartState
インターフェースからコピーされた説明:FlowDefinition
このフローの開始点を返します。- 次で指定:
- インターフェース
FlowDefinition
のgetStartState
- 戻り値:
- 開始状態
getState
インターフェースからコピーされた説明:FlowDefinition
指定された ID を持つ状態定義を返します。- 次で指定:
- インターフェース
FlowDefinition
のgetState
- パラメーター:
stateId
- 状態 ID- 戻り値:
- 状態の定義
getPossibleOutcomes
インターフェースからコピーされた説明:FlowDefinition
このフローが到達できる可能性のある結果を返します。- 次で指定:
- インターフェース
FlowDefinition
のgetPossibleOutcomes
- 戻り値:
- 起こりうる結果
getClassLoader
インターフェースからコピーされた説明:FlowDefinition
このフロー定義でクラスをロードするために使用するクラスローダーを返します。- 次で指定:
- インターフェース
FlowDefinition
のgetClassLoader
- 戻り値:
- クラスローダー
getApplicationContext
public org.springframework.context.ApplicationContext getApplicationContext()インターフェースからコピーされた説明:FlowDefinition
このフロー定義で使用されるアプリケーションオブジェクトとサービスをホストするアプリケーションコンテキストへの参照を返します。- 次で指定:
- インターフェース
FlowDefinition
のgetApplicationContext
- 戻り値:
- アプリケーションコンテキスト
inDevelopment
public boolean inDevelopment()インターフェースからコピーされた説明:FlowDefinition
このフロー定義が現在開発中(開発モードで実行中)の場合は true を返します。- 次で指定:
- インターフェース
FlowDefinition
のinDevelopment
- 戻り値:
- 開発旗
add
指定された状態定義をこのフロー定義に追加します。このメソッドは、FlowBuilder 呼び出しの一部として状態構築中に (特権を持つ) 状態定義クラス自体によって呼び出されるため、保護されているとマークされています。- パラメーター:
state
- 追加する状態- 例外:
IllegalArgumentExceptionSE
- 状態をフローに追加できない場合。たとえば、別の状態が指定された ID と同じ ID を共有している場合や、指定された状態がすでに別のフローに属している場合などです。
getStateCount
public int getStateCount()このフロー内で定義されている状態の数を返します。- 戻り値:
- 状態の数
containsState
指定された ID を持つ状態がこのフローに存在しますか ?- パラメーター:
stateId
- 状態 ID- 戻り値
- はいの場合は true、そうでない場合は false
setStartState
このフローの開始状態を、指定されたstateId
の状態に設定します。指定されたstateId
によって状態が存在している必要があります。- パラメーター:
stateId
- 新しい開始状態の ID- 例外:
IllegalArgumentExceptionSE
- 指定した ID を持つ状態が存在しない場合
setStartState
このフローの開始状態を指定された状態に設定します。任意の状態を開始状態にすることができます。- パラメーター:
state
- 新しい開始状態- 例外:
IllegalArgumentExceptionSE
- 指定された状態はこのフローに追加されていません
getTransitionableState
public TransitionableState getTransitionableState(StringSE stateId) throws IllegalArgumentExceptionSE, ClassCastExceptionSE 指定されたstateId
を持つTransitionableState
を返します。- パラメーター:
stateId
- 検索する状態の ID- 戻り値:
- 遷移可能な状態
- 例外:
IllegalArgumentExceptionSE
- 特定された状態が見つからない場合ClassCastExceptionSE
- 識別された状態が遷移可能でない場合
getStateInstance
このフローの識別された状態インスタンスを検索します。- パラメーター:
stateId
- 状態 ID- 戻り値:
- 状態
- 例外:
IllegalArgumentExceptionSE
- 特定された状態が見つからない場合
getStateIds
このフロー定義に関連付けられた状態定義の文字列ids
の順序付けられた配列を返す便利なアクセサー。- 戻り値:
- 状態 ID
addVariable
フロー変数を追加します。- パラメーター:
variable
- 変数
addVariables
フロー変数を追加します。- パラメーター:
variables
- 変数
getVariable
指定された名前のフロー変数を返します。- パラメーター:
name
- 変数の名前
getVariables
フロー変数を返します。getInputMapper
設定されたフロー入力マッパーを返します。存在しない場合は null を返します。- 戻り値:
- 入力マッパー
setInputMapper
フロー入力属性をマップするようにマッパーを設定します。- パラメーター:
inputMapper
- 入力マッパー
getStartActionList
フローの実行が開始されたときに、このフローによって実行されるアクションのリストを返します。返されるリストは変更可能です。- 戻り値:
- 開始アクションリスト
getEndActionList
フローの実行が終了したときに、このフローによって実行されたアクションのリストを返します。返されるリストは変更可能です。- 戻り値:
- 終了アクションリスト
getOutputMapper
設定されたフロー出力マッパーを返します。存在しない場合は null を返します。- 戻り値:
- 出力マッパー
setOutputMapper
フロー出力属性をマップするようにマッパーを設定します。- パラメーター:
outputMapper
- 出力マッパー
getExceptionHandlerSet
例外ハンドラーのセットを返します。これにより、フロー実行中にスローされた例外の処理方法を操作できます。例外ハンドラーは、実行時に例外が発生したときに呼び出され、カスタム例外処理ロジックを実行したり、表示するエラービューを選択したりできます。フローレベルで接続された例外ハンドラーは、状態レベルで処理されない例外を処理できます。- 戻り値:
- 例外ハンドラーセット
getGlobalTransitionSet
状態レベルの遷移が一致しない場合は、このフローで実行できる遷移のセットを返します。返されるセットは変更可能です。- 戻り値:
- グローバル遷移セット
getGlobalTransition
指定された ID のイベントに一致する遷移を返します。- パラメーター:
eventId
- イベント ID- 戻り値:
- 一致する遷移。一致するものが見つからない場合は null。
setApplicationContext
public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext) このフローに必要なアプリケーションオブジェクトをホストするアプリケーションコンテキストへの参照を設定します。- パラメーター:
applicationContext
- アプリケーションコンテキスト
equals
hashCode
public int hashCode()start
public void start(RequestControlContext context, MutableAttributeMap<?> input) throws FlowExecutionException このフローの開始状態で新しいセッションを開始します。これは次のようになります。- フロースコープに登録されているすべてのフロー変数 (
addVariable(FlowVariable)
) を作成 (設定) します。 - 提供された入力データをフローにマップします。通常、データは登録された入力マッパー (
setInputMapper(Mapper)
) を使用してフロースコープにマップされます。 - 登録されているすべての開始アクション(
getStartActionList()
)を実行します。 - 設定された開始状態を入力します (
setStartState(State)
)
- パラメーター:
context
- フロー実行制御コンテキストinput
- セッションへの適切な入力- 例外:
FlowExecutionException
- フローの開始時に例外が発生したとき
- フロースコープに登録されているすべてのフロー変数 (
resume
このフローの一時停止されたセッションを現在のビュー状態で再開します。- パラメーター:
context
- フロー実行制御コンテキスト- 例外:
FlowExecutionException
- 再開操作中に例外が発生した場合
handleEvent
このフローのアクティブセッションに対して発生した最後のイベントを処理します。- パラメーター:
context
- フロー実行制御コンテキスト
end
public void end(RequestControlContext context, StringSE outcome, MutableAttributeMap<?> output) throws FlowExecutionException このフロー定義に、自身の実行セッションが終了したことを通知します。その結果、フローは次の処理を実行します。- 登録されているすべての終了アクション(
getEndActionList()
)を実行します。 - 登録された出力マッパー (
setOutputMapper(Mapper)
) を使用して、フロー実行制御コンテキストで使用可能なデータを、提供された出力マップ内にマップします。
- パラメーター:
context
- フロー実行制御コンテキストoutcome
- セッションによって返される論理フローの結果。通常は終了状態の ID ですoutput
- このメソッドによって変更できるセッションによって生成された初期出力- 例外:
FlowExecutionException
- 例外が発生してこのフローが終了すると
- 登録されているすべての終了アクション(
destroy
public void destroy()インターフェースからコピーされた説明:FlowDefinition
このフロー定義を破棄し、すべてのリソースを解放します。フローが破棄された後は、再度開始することはできません。- 次で指定:
- インターフェース
FlowDefinition
のdestroy
handleException
public boolean handleException(FlowExecutionException exception, RequestControlContext context) throws FlowExecutionException このフローの実行中に発生した例外を処理します。- パラメーター:
exception
- 発生した例外context
- フロー実行制御コンテキスト- 例外:
FlowExecutionException
restoreVariables
toString