ADF フェースは、pageflow
の通常のセッション、リクエスト、ビュー スコープに加えて、新しいスコープ ( と呼ばれる) を公開しmanaged beans
ます。このスコープは何をしますか? その長所と短所は何ですか? 内部pageflowScope
に置かれたオブジェクトはいつガベージコレクションされますか?
4 に答える
pageFlowScope Beanは、「タスク・フロー」というADFコントローラの概念にスコープが設定されています。これは、バインドされていないタスク・フロー(UTF)またはバインドされたタスク・フロー(BTF)です。ADFでは、タスク・フローはフローにまとめられたページまたはページ・フラグメントのコレクションです。つまり、ルーター、メソッド・コール、ページ/ページ・フラグメントのコールを含むアクティビティの定義済セットです。
pageFlowScope ライフサイクル/スコープは、タスク フローのものです。これらは、タスク フローでコードまたは EL (必ずしもタスク フローの最初ではない) を介して最初にアクセスされたときに存在し、タスク フローが終了する (またはユーザーがログアウトするか、セッションがタイムアウトする) と範囲外になります。 . タスク フローはスタック方式でタスク フローを呼び出すことができるため、一度にサーバーの pageFlowScope Bean が動作する可能性があります。
pageFlowScope の長所/短所はあまりありませんが、いつ使用するかを検討してください。pageFlowScope Bean はタスク フローの状態を保持し、タスク フローの状態をより大きなスコープのセッション Bean および applicationScope Bean から分離し、スコープの小さいリクエスト、backingBean およびビュー スコープの Bean ほど頻繁に再作成しないようにします。たとえば、タスク フローの着信および発信パラメータは、pageFlowScope に格納するのが理想的です。現在のページで操作される値の反例として、request/backingBean/view スコープに配置することをお勧めします。
pageFlowScope Bean のもう 1 つの利点は、マルチブラウザー タブを認識できることです。同じセッションでアプリケーションの 2 つのインスタンスが別々のブラウザー タブで開かれている場合、ADF はタブごとに 2 つの別々の pageFlowScope Bean を生成します。1 つだけを生成する sessionScope とは異なります。これにより、タスク フローが各タブで独立した状態を持つことができます。
最後に最後の質問にお答えします。pageFlowScope Bean 内のオブジェクトは、pageFlowScope Bean 自体がスコープ外になった場合、つまりタスク フローが終了した場合、ユーザーがログアウトした場合、またはセッションがタイムアウトした場合にのみ、ガベージ コレクションで使用できるようになります。もちろん、間接ハンドルがプログラマーによって pageFlowScope Bean に保持されている場合、通常の警告が適用されます。これが発生するまで、Bean はガベージ コレクションの候補にはなりません。
ADFには、ナビゲーションルールを使用していくつかの関連ページをまとめることができるタスクフローの概念があります。ページフロースコープは、そのようなタスクフローの実行をカバーします。これはリクエストよりも時間がかかる可能性があり、複数のビューにまたがる可能性があるため、このスコープはリクエストとビューのスコープよりも長くなりますが、セッションスコープよりも小さくなります。タスクフローを構成するページから移動すると、スコープは破棄されます。非常に単純なユースケースとして、処理のために最終結果を送信する前に、数ページのデータを入力する必要があるウィザードを考えてみてください。
上記の投稿に加えて、pageFlowScope の主な使用法は、ADF バウンド タスクフローであり、さまざまなアクティビティがあります。サンプル ビュー、メソッド呼び出し、タスク フローのリターンなど。
PageFlowScope は、タスク フロー内のアクティビティ間でデータを共有するために使用されます。また、タスク フローの入力パラメータと出力パラメータは、ページフロー スコープに格納されます。