このチュートリアルでは、Oracle JDeveloper 12.1.2を使用して、タスク・フローを使用するアプリケーションのページ・フローを定義します。データベース内の従業員のレコードを検索して、更新するアプリケーションを作成します。バインド・タスク・フロー(アプリケーションの再利用可能な部分をカプセル化する方法)と、トレインと呼ばれるUIコンポーネントを使用して、3ステップのプロセスを実装します。最初に検索機能を実装し、次にユーザーをいくつかの検索結果にナビゲートし、結果の中から1人の従業員を選択できるようにします。従業員が選択されたらOracle ADF Formと呼ばれるUIを表示し、従業員のレコードを編集できるようにします。続いて、変更またはキャンセルを送信できる機能を追加し、データベースへの変更がバック・エンドでコミットまたはロールバックされるようにします。最後に、パスワードを検証するためのルーターを使用して、簡単なログイン・シナリオを実装します。

このチュートリアルでは、ナビゲーション、カプセル化、再利用、マネージドBeanライフ・サイクル、およびトランザクションをアプリケーション内で有効化するOracle ADFタスク・フローの作成方法を説明します。チュートリアルには、タスク・フロー・ダイアグラムの作成、アクティビティおよび制御フローの追加、完成したタスク・フローの実行に必要な基本的なステップが含まれます。

ここでは、さまざまなコンポーネントが含まれる2つのバインド・タスク・フローを作成します。移動先を決定するルーター、データを表示するビュー、フローを終了させるリターンを使用して、検索機能と更新機能をサポートできるタスク・フローを設計します。ビュー・コンポーネントをデータ・コントロールとバインドし、入力されたパスワードを処理するマネージドBeanを定義します。パスワードを確認して、アプリケーションへのログインを許可するルーター用のルールを定義します。JSFページを作成し、JSFページ内のリージョンとしてタスク・フローをバインドし、ユーザー名に使用するパラメータ値を作成します。

更新ページの実行時イメージ


目的 所要時間 アプリケーション
Oracle ADFタスク・フローを使用してユーザー・インタフェースを開発する方法を説明します。ページの順序とルーティング、アプリケーションのセキュリティを定義します。これから作成するアプリケーションの完成版を確認するには、「Download」ボタンをクリックして最終的なアプリケーションのzipファイルをダウンロードし、JDeveloperのmyworkフォルダに解凍してください。 2~2.5時間 taskflow.zipのダウンロード
ステップ1:新規Fusionアプリケーションとビジネス・コンポーネントの作成

JDeveloperで作業する場合、アプリケーション内のプロジェクトとして作業を整理します。JDeveloperには、アプリケーションおよびプロジェクトの作成に利用できるいくつかのテンプレートが提供されています。テンプレートは、さまざまな種類のアプリケーションを開発するうえで必要となる基本的なテクノロジーに基づいて事前設定されており、ニーズに適したテンプレートを選択することで作業環境を構築できます。その後で、設定を行って、使用する予定のその他のテクノロジーを追加できます。

最初の項では、Fusionテクノロジーを使用して新規アプリケーションを作成し、データベースにアクセスする再利用可能なビジネス・コンポーネントを作成します。アプリケーションおよびモデル・コンポーネントを作成するには、以下のステップを実行します。

  1. アプリケーション・ナビゲータで、「New Application」をクリックします。または、メニュー・オプションの「File」→「New」を選択して、新規アプリケーションを作成します。

    ナビゲータ中の新規アプリケーション
  2. New Galleryで、「General」→「Applications」カテゴリを選択し、「ADF Fusion Web Application」オプションを選択します。このオプションを選択すると、データ・バインドされたOracle ADF Webアプリケーションが作成されます。アプリケーションは2つのプロジェクトで構成されます。1つはデータ・モデル(Oracle ADF Business Components)用で、もう1つはビュー・コントローラ・コンポーネント(Oracle ADF FacesおよびOracle ADFタスク・フロー)用です。

    OK」をクリックします。

    New Gallery - Fusion Web Applicationが選択されている状態
  3. Create ADF Fusion Web Applicationダイアログ・ボックスで、Application NameをTaskFlowと指定します。新しいアプリケーション名を入力すると、それに合わせてディレクトリが変更されます。他の場所にファイルを作成したい場合は、パスのC:\JDeveloper\myworkの部分を変更できます。

    Application Package Prefixフィールドの値をdemoに設定します。他の値はデフォルト値のままにして、「Finish」をクリックします。

    ウィザード内のその他のページを見ると、Modelパッケージ名とViewControllerパッケージ名にプリフィックスとして"demo"が付けられることが分かります。

    アプリケーション名


    Overviewペインに、Fusion Web Application開発の手引きとして参照できるChecklistが表示されます。

    Fusion Webアプリケーションを作成するときは、Checklistがデフォルトで表示されます。

    Overviewページ

  4. アプリケーション・ナビゲータに2つの新しいプロジェクトが表示されます。デフォルトのネーミング規則により、プロジェクトの1つはModel、もう1つはViewControllerという名前になります。

    作成済みのすべてのファイルが表示されているナビゲータ
  5. CheckList Overviewを使用してモデル・コンポーネントの作成を開始します。「Connect to a Database」ステップをクリックします。

    Initialize Business Components Projectダイアログを使用して、このデータ・モデル・プロジェクトのビジネス・コンポーネントを操作するときに使用する設計時アプリケーション・リソース接続を選択します。または、既存のIDEレベルの接続をコピーして、新しいアプリケーション・リソース接続を作成します。

    このダイアログは、最初のビジネス・コンポーネントを作成する前に表示されます。また、SQL文を作成するときにビュー・オブジェクトによって使用されるSQLフレーバをグローバルに制御するときにも使用します。Oracleデータベース接続用のデフォルトは常にOracle SQLフレーバですが、他に、OLite(Oracle Liteデータベース用)、SQLServer(Microsoft SQL Serverデータベース用)、DB2(IBM DB2データベース用)、およびSQL92(サポート対象となっているSQL92準拠のその他のデータベース用)のSQLフレーバを選択できます。データ・モデル・プロジェクトを初期化した後は、Project Propertiesダイアログを使用してSQLフレーバを変更することはできませんが、adf-config.xmlファイルの概要エディタでSQLフレーバをオーバーライドできます。adf-config.xmlファイルにデータベース・タイプを指定すると、実際のデータベース・タイプが必要となるSQL文を実行時に生成できます。

    Quick Start Checklist - データベース接続
  6. ステップが開き、このタスクの実行に必要な前提条件などの役立つ情報が表示されます。「Create a Database Connection」ボタンをクリックします。

    Create a Database Connection
  7. 作成する新規接続のプロパティを次のように指定します。

    データベースの正しいホストポートおよびSIDが参照されるように、Oracle JDBC Settingsを適切に入力します。「Test Connection」ボタンをクリックして、成功したことを確認します。

    確認したら、「OK」ボタンをクリックします。

    プロパティ
    Connection Name HRConn
    Username hr
    Password hr
    データベース接続作成ページ
  8. Checklistペインで、Connect to a Databaseステップのステータスを「Done」に設定します。

    作成し終わったDB接続の確認
  9. データベース・ノードを閉じ、「Build Business Services」ステップをクリックして開きます。次に、「Go to Sub steps」ボタンをクリックします。

    サービス構築のチェックリスト
  10. サブタスク・リストで「Create Entity Objects and Associations」サブタスクをクリックします。

    エンティティ・オブジェクトの作成 - チェックリスト

    次に、「Create Entity Objects and Associations」ボタンをクリックします。

    エンティティ・オブジェクトは、指定されたデータソースの行を表すとともに、関連付けられた属性の変更を制御するOracle ADF Business Componentsコンポーネントです。

    重要なのは、ドメイン・ビジネス・ロジックをカプセル化して、ビジネス・ポリシーおよびビジネス・ルールが一貫して検証されることを保証できる点です。エンティティ・オブジェクトは、データ検証を実施するための宣言的なビジネス・ロジック機能を多数サポートします。通常は、宣言的な検証を補完するカスタム・アプリケーション・ロジックおよびビジネス・ルールを追加し、各エンティティ・オブジェクトに最大限のドメイン・ビジネス・ロジックを明確にカプセル化します。一連のエンティティ・オブジェクトを関連付けると、複数のアプリケーションで利用できる再利用可能なビジネス・ドメイン・レイヤーが構成されます。ほとんどの場合、1つのエンティティは1つのデータベース表にマッピングされます。


    Create Entity Objects and Associations - チェックリスト
  11. Select Project for Actionダイアログで「Model」プロジェクトを選択します。

    OK」をクリックします。

    Select Project for Action
  12. Initialize Business Components ProjectダイアログでHRConn接続を選択します。「OK」をクリックします。

    サービス用の接続の定義
  13. Create Business Components from TablesウィザードのEntity Objectsページで「Query」ボタンをクリックし、データ・ディクショナリを調べて利用可能な表を表示します。

    作成するエンティティの選択
  14. Availableリストから「EMPLOYEES」表を選択し、右矢印「右矢印」をクリックしてSelectedリストに移動します。この手順により、選択する表に基づいて、更新可能なエンティティ・オブジェクトが作成されます。

    Next」をクリックして続行します。

    EMPLOYEESエンティティを選択した状態
  15. Entity-based View Objectsダイアログで、Employees(HR.EMPLOYEES)をSelectedリストに移動します。このステップにより、以前に作成したエンティティ・オブジェクトで問合せを実行するための適合するビュー・オブジェクトが作成されます。

    名前がEmployeesView(Employees)に変更される点に注意してください。VO名と作成元の参照EOが表示されます。

    Next」をクリックして続行します。

    ビューの作成 - -EmployeesViewを選択した状態
  16. Read Only View Objectsダイアログでは、「Next」をクリックして続行します。

    ビュー・オブジェクトは、SQL問合せをカプセル化して問合せ結果の操作を簡素化するOracle Application Development Framework(Oracle ADF)コンポーネントです。

    Oracle ADF Business Componentsプロジェクトで作成できるビュー・オブジェクトには、次の種類があります。
    読取り専用ビュー・オブジェクト:最新の状態にする必要がない場合に使用(エンティティ・ベースでも可)


    - エンティティ・ベース・ビュー・オブジェクト:データの更新が行われる場合に使用
    - 静的データ・ビュー・オブジェクト:ビュー・オブジェクト自体で定義されたデータに使用
    - プログラムで移入されるビュー・オブジェクト

    1つ以上の既存のエンティティ・オブジェクトの属性に属性がマッピングされるビュー・オブジェクトを作成する場合は、更新可能な行がサポートされるようにエンティティ・ベース・ビュー・オブジェクトを構成できます。マッピングされたエンティティ・オブジェクトは、ビュー・オブジェクト定義で使用されるエンティティとして保存されます。こうすると、エンティティ・ベース・ビュー・オブジェクトとエンティティ・オブジェクトが自動的に連携され、データ・モデルは全面的に更新可能になります。エンティティ・ベース・ビュー・オブジェクトはクライアント対応のタスクに必要なデータだけを問い合わせ、マッピングされたエンティティ・オブジェクトを頼りに、ビューの行に対して行われた変更を自動的に検証して保存します。読取り専用ビュー・オブジェクトと同様に、エンティティ・ベース・ビュー・オブジェクトでもSQL問合せがカプセル化されるため、マスター/ディテール階層にリンクさせることができます。また、アプリケーション・モジュールのデータ・モデルで使用できます。
  17. Application Moduleダイアログで、「Finish」をクリックして、Modelプロジェクトのビジネス・コンポーネントを作成します。

    アプリケーション・モジュールは、エンドユーザーのタスクに関連する論理的な作業単位で使用されるビジネス・サービス・メソッドとUI認識型データ・モデルをカプセル化するOracle ADF Business Componentsコンポーネントです。

    アプリケーション・モジュールは、対象のユースケースに必要な再利用可能なビュー・オブジェクトのインスタンスを含む"作業単位"のコンテナであり、ユースケースで表示または変更される情報が保持されている再利用可能なビジネス・ドメイン・レイヤーの、基盤となるエンティティ・オブジェクトにメタデータ経由で関係付けられています。

    使用するアプリケーション・モジュールの指定
  18. Checklistで、Create Entity Objects and Associationsステップのステータスを「Done」に設定します。「Close Step 3」ボタンをクリックします。

    注:ステップ3.2、3.3および3.4も完了しているため、これらのステップのステータスもDoneに設定できますが、これらは上のレベルで設定します。

    サービスのチェックリストを閉じる
  19. Build Business Servicesステップのステータスを「Done」に設定します。

    サービスを完了に設定
  20. モデル・プロジェクトでの作業が実行されます。Modelプロジェクトを展開すると、アプリケーション・ナビゲータは次のように表示されます。

    作成されたサービス・ファイルが表示されているナビゲータ
  21. JDeveloperメニュー・バーの「Save AllSave Allアイコンをクリックするか、メニューから「File」→「Save All」を選択します。

    次は、ViewControllerプロジェクトに関する作業を実行します。


ステップ2:バインド・タスク・フローの作成

TaskFlowアプリケーションをJDeveloperにロードしたら、ビューとリターンを含むバインド・タスク・フロー・ダイアグラムを作成します。次のステップを実行します。

    Oracle ADFタスク・フローを使用すると、モジュール方式のアプローチでアプリケーションに制御フローを定義できます。>

    アプリケーションを1つの大きなJSFページ・フローとして表現する代わりに、再利用可能な複数のタスク・フローに分割できます。各タスク・フローには、アプリケーションのナビゲーション・グラフの一部が含まれます。タスク・フロー内のノードはアクティビティです。ページを表示する、アプリケーション・ロジックを実行する、別のタスク・フローをコールするというような簡単な1つの論理的操作が、1つのアクティビティ・ノードで表されます。アクティビティ間のトランザクションは制御フロー・ケースと呼ばれます。

    Oracle ADFタスク・フローには次の2種類があります。
    - バインドなしのタスク・フロー:ユーザーがタスクを完了できるように対話する一連のアクティビティ、制御フロー・ルールおよびマネージドBeanです。バインドなしのタスク・フローは、バインド・タスク・フローに含まれない、アプリケーション内のすべてのアクティビティおよび制御フローで構成されます。
    - バインド・タスク・フロー:特殊な形式のタスク・フローであり、バインドなしのタスク・フローとは対照的に、単一のエントリ・ポイントとゼロ以上のエグジット・ポイント(出口点)があります。このタスク・フロー専用の一連のプライベート制御フロー・ルール、アクティビティおよびマネージドBeanが含まれます。Oracle ADFバインド・タスク・フローでは、再利用、パラメータ、トランザクション管理、再開が可能です。

    ソリューションのタスク・フロー・ダイアグラム

  1. アプリケーション・ナビゲータで「ViewController」ノードを右クリックし、コンテキスト・メニューから「New」→「From Gallery」を選択します。

    Oracle ADFバインド・タスク・フローは、アプリケーションの再利用可能な部分をカプセル化するときに使用します。

    バインド・タスク・フローは次の点でJavaメソッドに類似しています。
    - 単一のエントリ・ポイントがある





    - 入力パラメータを受け入れられる
    - 戻り値を生成できる
    - アクティビティおよび制御フロー・ルールの独自のコレクションがある
    - 独自のメモリ・スコープおよびマネージドBeanの存続期間(ページ・フロー・スコープ・インスタンス)がある

    Oracle ADFバインド・タスク・フローは、専用の一連のプライベート制御フロー・ルール、アクティビティ、およびマネージドBeanで構成されます。コール元は、バインド・タスク・フロー境界内のページ名、メソッド・コール、子バインド・タスク・フロー、マネージドBean、制御フロー・ルールなどの内部知識を必要としません。入力パラメータをバインド・タスク・フローに渡すことができ、バインド・タスク・フローの終了時に出力パラメータを返すこともできます。データ・コントロールはタスク・フロー間で共有できます。


    アプリケーション・ナビゲータからのNew Galleryの起動
  2. New Galleryで、「Web Tier」→「JSF/Facelets」ノードを開き、「ADF Task Flow」を選択します。

    New GalleryでOracle ADFタスク・フローを選択した状態
  3. Create Task Flowダイアログで、ファイル名としてemp-update-flowと入力します。次のチェック・ボックスを選択します。

    OK」をクリックします。

    プロパティ
    Create as Bounded Task Flow チェックを入れる
    Create with Page Fragments チェックを入れる
    Create Train チェックを入れる
    タスク・フローの命名
  4. 空の新規タスク・フロー・ダイアグラムが表示され、アプリケーション・ナビゲータに新しいエントリが作成されます。

    ナビゲータと空白のタスク・フロー・ダイアグラム
  5. コンポーネント・パレットで「ViewアイコンViewコンポーネントを選択し、ダイアグラム上にドラッグ・アンド・ドロップします。

    もっとも重要なタスク・フロー・アクティビティ・タイプはビューです。JSFページまたはページ・フラグメントはビューで表示されます。

    ページ・フラグメントは、別のJSFページのコンテンツとしてレンダリングされるJSF JSPドキュメントです。ページ・フラグメントは通常バインド・タスク・フローで使用されます。バインド・タスク・フローはリージョンとしてページに追加できます。こうすると、タスク・フローの再利用が可能になり、それぞれ固有のフローを含む複数の領域をページに含めることが可能になります。

    ビュー・アクティビティは物理JSFページまたはページ・フラグメントを使用してメタデータで関連付けられます。ビュー・アクティビティはID属性で識別されます。ページまたはページ・フラグメントの名前は、タスク・フロー・メタデータ内の<page>要素で識別されます。ビュー・アクティビティIDとページ名は同じでなくても構いません。


    ダイアグラム上での新規ビューの作成

  6. デフォルト名をintroに変更します。

    ダイアグラム上でのビュービュー名を'intro'に変更

  7. ダイアグラム上のintroビューの隣に、新規の「Viewアイコンビューを作成します。

    ダイアグラム上での2つ目のビューの作成

    このビューの名前をsearchに変更します。

    ビュー名をsearchに変更

  8. ダイアグラム上に3つ目の「Viewアイコンビューを作成します。

    ダイアグラム上での3つ目のビューの作成

    ビュー名をUpdateに変更します。ダイアグラムは下のイメージのようになります。

    3つのビューのそれぞれの間に点線が表示されます。トレインを含むタスク・フローを作成したため、すべてのビューの間に暗黙的なフローが存在します。

    3つ目のフローの名前を'update'に変更します。
  9. すべての変更を保存します。

ステップ3:タスク・フロー・ページの構築

introページは、このタスク・フローのエントリ・ポイントです。ここからは、ページ内にトレインを作成する方法を説明します。次のステップを実行します。

  1. emp-update-flowダイアグラムでintroビュー・コンポーネントをダブルクリックしてページを作成します。

    introページをダブルクリック


    Create New ADF Page Fragmentダイアログで「OK」をクリックし、デフォルト値を受け入れます。

    新しいJSFページ・フラグメントの作成
  2. ページ設計ペインが開きます。コンポーネント・パレットのADF Faces General Controls - Locationグループから「トレインTrainコンポーネントを選択し、ページ設計ペイン上にドロップします。

    トレインは関連するアクティビティの進行状況を表すもので、エンドユーザーがタスクを完了するときのガイドとなります。

    エンドユーザーが一連のトレイン・ストップをクリックすると、各ストップから特定のページにリンクされます。

    オプションのTrain Button Barコンポーネントにはボタンが含まれており、これを追加すると、ストップを介して前後にナビゲートできる付加的な手段を提供できます。このコンポーネントをトレイン・コンポーネントと併用すると、トレイン・ストップ間の移動方法を複数提供できます。

    1つのバインド・タスク・フローには1つのトレインのみ指定できます。バインド・タスク・フローに複数のトレインを論理的に含める場合は、独立したバインド・タスク・フローにそれぞれのトレインを追加する必要があります。

    トレインを追加中の設計ページ

    Bind Trainダイアログで、デフォルト値のまま「OK」をクリックします。


    トレインの値の設定

  3. Train Button BarTrain Button Barコンポーネントを選択し、Trainコンポーネントの下にドロップします。

    Train Button Barの追加


    Bind trainButtonBarダイアログで、デフォルト値のまま「OK」をクリックします。

    Train Button Barのバインド

  4. コンポーネント・パレットのADF Faces Text and Selectionグループから「Output TextOutput Textコンポーネントを選択し、Train Button Barの下にドロップします。

    Output Textの追加

    プロパティ・インスペクタがまだ開いていない場合は、「View」→「Property Inspector」の順に選択するか[Ctrl] + [Shift] + [I]キーを同時に押して開き、ValueフィールドにWelcome to the Employee updaterと入力します。

    Output Textの値の設定

    ページは次のように表示されます。

    ページの設計ビュー

  5. すべての作業内容を保存し、「emp-update-flow」タブをクリックしてタスク・フロー・ダイアグラムを再表示します。

    タスク・フロー・ページの再表示

  6. search」ビュー・コンポーネントをダブルクリックして、検索ページを作成します。

    検索ページをダブルクリック

  7. Create New ADF Page Fragmentダイアログで、デフォルト値のまま「OK」をクリックします。

    新しいJSFページ・フラグメントの作成

  8. ページ設計ペインが開きます。コンポーネント・パレットのADF Faces General Controlsグループから「トレインTrainコンポーネントを選択し、ページ設計ペイン上にドロップします。

    トレインをページに追加


    Bind Trainダイアログで、デフォルト値のまま「OK」をクリックします。

    トレイン・ペインのバインド

  9. Train Button BarTrain Button Barコンポーネントを選択し、Trainコンポーネントの下にドロップします。

    Train Buttonをページに追加


    Bind trainButtonBarダイアログで、デフォルト値のまま「OK」をクリックします。

    Train Button Barペインのバインド

  10. すべての作業内容を保存し、「emp-update-flow」タブをクリックしてタスク・フロー・ダイアグラムを再表示します。

    タスク・フロー・ダイアグラムを再選択

  11. update」ビュー・コンポーネントをダブルクリックして、更新ページを作成します。

    更新ページをダブルクリック

  12. Create New JSF Page Fragmentダイアログで、デフォルト値のまま「OK」をクリックします。

    JSFページ・フラグメントの作成

  13. ページ設計ペインが開きます。コンポーネント・パレットのADF Faces General Controlsグループから「トレインTrainコンポーネントを選択し、ページ設計ペイン上にドロップします。

    トレインをページに追加

    Bind Trainダイアログで、デフォルト値のまま「OK」をクリックします。
    Bind Trainダイアログで、デフォルト値のまま「OK」をクリックします。

    トレインのバインド

  14. Train Button BarTrain Button Barコンポーネントを選択し、Trainコンポーネントの下にドロップします。

    Train Button Barの追加


    Bind trainButtonBarダイアログで、デフォルト値のまま「OK」をクリックします。

    Train Button Barのバインド


  15. Save AllSave Allアイコンをクリックして、アプリケーションを保存します。

ステップ4:タスク・フロー・ページへのデータ・コントロールのバインド

検索ページと更新ページは、データ・コントロール・コンポーネントとバインドする必要があります。検索ページでは任意の列を条件にして従業員を問い合わせ、更新ページでは従業員の給与を表示および更新します。これらの操作を実行できるようにするために、次のステップを実行します。

  1. search」タブをクリックして、ページを再表示します。

    検索ページの再表示
  2. アプリケーション・ナビゲータでData Controlsアコーディオンを開き、「AppModuleDataControl」→「EmployeesView1」→「Named Criteria」の順に開いて「All Queriable Attributes」をページ上にドラッグ・アンド・ドロップします。

    データ・コントロールは基本的に、ソースから取得したデータをOracle ADF Fusion Web Applicationのユーザー・インタフェースで使用できるように橋渡しをするものです。

    デフォルトでは、すべてのビジネス・コンポーネントについて、ビュー・オブジェクトに含まれるすべての属性の問合せに必要なデータ・コントロールが作成されます。このデータ・コントロールをページ上にドロップすると、出力コンポーネントとしてデータを表示できるページが作成されます。

    データ・コントロールに含まれるオブジェクトを使用して、データ・バインドされたユーザー・インタフェース・コンポーネントを作成できます。よく使用されるデータ・コントロールのタイプのごく一部を次に示します。

    ADF Business Components:このタイプのデータ・コントロールは、Oracle ADF Business Componentsアプリケーションにアプリケーション・モジュールを作成するときに、JDeveloperにより生成されます。
    JavaBean:このタイプのデータ・コントロールは、POJO(Plain Old Java Object)からデータの構造を取得します。
    EJB:EJBデータ・コントロールは基本的にJavaBeanデータ・コントロールと同じですが、EJBアーキテクチャに固有の機能を使用してデータの構造を取得する点が異なります。
    Webサービス:Webサービス・データ・コントロールはWebサービスのWSDLからデータの構造を取得します。


    All Queriable Attributesを使用したデータ・コントロール


    ポップアップ・メニューから「Create」→「Quick Query」の順に選択し、「ADF Quick Query with Table」オプションを選択します。


    クイック問合せ検索フォームは、単一の検索で十分な場合、またはこれを起点に詳細な問合せ検索に発展させる場合に使用します。

    問合せ検索フォームもクイック問合せ検索フォームもOracle ADF Facesコンポーネントです。クイック問合せ検索フォームには1つの検索条件フィールドがあり、そのフィールドには、関連付けられたデータ・コレクションから使用できる検索可能属性のドロップダウン・リストが付いています。通常は、関連付けられているビュー・オブジェクトのすべての属性が検索可能な属性です。

    Edit AttributeダイアログのControl Hintsページで、属性のDisplay HintプロパティをHideに設定すれば、その属性を除外できます。ユーザーは、選択された属性に対して検索することも、表示されたすべての属性に対して検索することもできます。検索条件フィールドのタイプは、対応する属性のタイプに自動的に合わされます。フォームにアドバンスト・リンクを組み込むと、クイック問合せからアドバンスト・モードの問合せ検索フォームへの切替えを制御するマネージドBeanを作成できます。

    alt text


  3. Edit Table Columnsダイアログで、「Single Row」オプションと「Enable Sorting」オプションを選択します。

    OK」をクリックします。

    Edit Table Columns
  4. ページは次のように表示されます。

    設計ビューのページ
  5. すべての作業内容を保存し、「update」タブをクリックしてページを開きます。

    更新ページの再表示
  6. Data Controlsペインで「AppModuleDataControl」→「EmployeesView1」の順に選択し、更新ページへドラッグ・アンド・ドロップします。

    データ・コントロール
  7. ポップアップ・メニューから「Create」を選択し、「ADF Form」オプションを選択します。

    Data Controlsパネルからオブジェクトをフォームとしてドロップしても、1つの属性をドロップしたときと同じ処理が行われます。ただし、

    複数の属性バインディングおよび関連するUIコンポーネントが作成されます。UIコンポーネントの属性(値など)は、その属性のバインディング・オブジェクトのプロパティ(inputValueなど)または対応するビジネス・オブジェクトに設定されたコントロール・ヒントの値にバインドされます。

    属性またはオブジェクトをJSFページにドラッグし、UIコンポーネントとしてドロップすると、ページ定義ファイルなどがそのページに作成されます(まだ存在しない場合)。イテレータおよび属性のバインディングが作成され、ページ定義ファイルに追加されます。また、UIコンポーネントに必須のJSPXページ・コードがJSFページに追加されます。


    Create Form - ADF Formメニュー
  8. Edit Form Fieldsで、最後の3行(CommissionPctManagerIDDepartmentId)を選択し、「DeleteアイコンDeleteボタンをクリックしてこれらを除外します。「Include Submit Button」オプションを選択し、「OK」をクリックします。

    Edit Form Fieldsペイン
  9. コンポーネント・パレットで「ButtonButtonアイコンを選択し、Submitボタンの隣にドラッグ・アンド・ドロップします。

    設計ビューの更新ページ
  10. プロパティ・インスペクタで、ボタンのTextフィールドにCancelと入力します。

    ボタン - テキスト値
  11. ページは次のように表示されます。

    設計ビューのページ
  12. Save AllSave Allアイコンをクリックして、アプリケーションを保存します。

ステップ5:タスク・フローへのトランザクション・コントロールの設定

トランザクションは、リターン・アクティビティを使用するか操作アクションにバインドされたボタンを使用して、終了させることができます。可能な場合はタスク・フロー・リターン・アクティビティを使用します。タスク・フロー・リターン・アクティビティを使用すると、Oracle ADFタスク・フローのビューで使用されたすべてのデータがコミットされます。また、アプリケーションでコミットおよびロールバックが行われる場所が分かりやすくなるため、メンテナンスが容易になります。トランザクション・コントロール用のリターン・アクティビティを実装するには、次のステップを実行します。

  1. emp-update-flow」タブをクリックして、タスク・フロー・ダイアグラムを再表示します。

    タスク・フロー・ダイアグラムの再表示
  2. Overview」タブをクリックしてから「Behavior」タブを選択します。

    OverviewタブとBehaviorを選択した状態
  3. Transactionグループで、リストから「Always Begin New Transaction」プロパティを設定します。

    トランザクションは、グループとしてまとめてコミットまたはロールバックできる、永続化された作業のコレクションです。

    バインド・タスク・フローは、トランザクションを表現したり宣言的にトランザクション境界を管理したりするときに使用できます。たとえば、顧客登録や従業員登録のタスク・フローは、タスク・フロー・リターン・アクティビティを使用して実装します。Cancelボタンでタスク・フローにロールバックを実装し、コミット機能にはSaveボタンを使用します。

    こうすると、個々の従業員の更新は、粒度が単一行のトランザクションと見なされます。

    トランザクション領域の強調表示
  4. ダイアグラムに戻り、「Task Flow ReturnTask Flow Returnコンポーネントを選択し、updateビューの下にドロップします。

    ダイアグラムへのタスク・フロー・リターンの追加

    コンポーネントの名前をcommitに変更します。

    commitへの名前の変更
  5. 再度、「Task Flow ReturnTask Flow Returnコンポーネントを選択し、updateビューの下にドロップします。コンポーネントの名前をrollbackに変更します。 

    ロールバック・タスク・フローの追加
  6. コンポーネント・パレットから「Control Flow CaseControl Flow Caseコンポーネントを選択し、「update」ビューをクリックして「commit」リターンへドラッグ・アンド・ドロップします。

    コミットするための制御フローをリターンに追加

    コンポーネントの名前をcommitに変更します。

    フロー名をcommitへ変更
  7. コンポーネント・パレットから「Control Flow CaseControl Flow Caseコンポーネントを選択し、「update」ビューをクリックして「rollback」リターンへドラッグ・アンド・ドロップします。続いて、コンポーネントの名前をrollbackに変更します。

    rollbackリターンへのフローの追加
  8. タスク・フロー・ダイアグラムは次のように表示されます。

    完成したダイアグラム
  9. commit」リターン・コンポーネントを選択し、プロパティ・インスペクタのBehaviorタブで、End Transactionフィールドの値リストから「commit」を選択します。

    commit returnを選択
  10. rollback」リターンを選択して同じ操作を繰り返し、End Transactionのリストから「rollback」を選択します。

    ロールバックへのrollbackリターンの設定
  11. Save AllアイコンSave Allアイコンをクリックして、アプリケーションを保存します。

  12. update」タブをクリックして更新ページの設計ビューを開き、「Submit」ボタンを選択します。

    更新ページ、Submitボタンの選択

    プロパティ・インスペクタのActionフィールドで、リストから「commit」を選択します。

    ボタンのアクションをcommitに設定
  13. Cancel」ボタンを選択します。

    更新ページのCancelボタンの選択

    プロパティ・インスペクタのActionフィールドで、リストから「rollback」を選択します。

    アクション・プロパティをrollbackに設定
  14. Save AllSave Allアイコンをクリックして、アプリケーションを保存します。

ステップ6:2つ目のタスク・フローの定義

アプリケーションへは、ログイン・プロセスを経由しなければアクセスできないようにする必要があります。ログイン・ページ、ルーター、エラー・ページ、および以前に作成したタスク・フローを作成します。このタスク・フローを作成するには、以下のステップを実行します。

一般的なアプリケーションには、1つのバインドなしのタスク・フローと1つ以上のバインド・タスク・フローが組み合わせられています。

たとえば、JDeveloperでは、Fusion Web Applicationテンプレートを使用してFusion Webアプリケーションを作成すると、バインドなしの空のタスク・フローがデフォルトで作成されます(ソース・ファイル名adfc-config.xml)。Fusion Webアプリケーションの実行時には、そのバインドなしのタスク・フローに追加したアクティビティからバインド・タスク・フローをコールできます。

下に示すとおり、アプリケーションで最初に実行されるアクティビティは、ほとんどの場合、バインドなしのOracle ADFタスク・フローに含まれるビュー・アクティビティです。ビュー・アクティビティは、アプリケーションの一部として表示されるJSFページを表します。このアクティビティはHomeビュー・アクティビティから開始され、バインド・タスク・フローが次にコールされます。calltoLogin_taskFlowアクティビティでは、ユーザーがアプリケーションへログインできるようにするバインド・タスク・フローがコールされます。

alt text


Oracle ADFのバインドなしのフロー内にすべてのアプリケーション・アクティビティが存在するアプリケーションも設計できます。そのようなアプリケーションはStrutsまたはJSFアプリケーションを模倣しますが、Oracle ADFバインド・タスク・フロー機能は利用しません。タスク・フロー機能を十分に活用するには、Oracle ADFバインド・タスク・フローを使用します。
  1. アプリケーション・ナビゲータで「ViewController」ノードを右クリックし、コンテキスト・メニューから「New」→「From Gallery」を選択します。

    ナビゲータとコンテキスト・メニューのNew
  2. New Galleryで、「Web Tier」→「JSF」ノードをクリックし、「ADF Task Flow」を選択します。「OK」をクリックします。

    New GalleryでOracle ADFタスク・フローを選択した状態
  3. Create Task Flowダイアログで、ファイル名としてsecurity-flowと入力します。「Create as Bounded Task Flow」を選択して、「Create with Page Fragments」チェック・ボックスを選択します。

    OK」をクリックします。

    Create Task Flowの詳細
  4. 空の新規タスク・フロー・ダイアグラムが表示され、アプリケーション・ナビゲータに新しいエントリが作成されます。

    ナビゲータと設計ページ
  5. コンポーネント・パレットで「ViewアイコンViewコンポーネントを選択し、ダイアグラム上にドラッグ・アンド・ドロップします。

    タスク・フロー

    ビュー名をloginに変更します。

    ビュー名をloginに変更
  6. RouterアイコンRouterコンポーネントを選択してloginビューの隣にドロップします。

    ルーター・アクティビティを使用すると、EL式に指定されたロジックに基づいて、アクティビティのルーティングを宣言的に制御できます。

    制御フローごとに異なるルーター・ケースを対応させることができます。各ルーター・ケースには次の要素が含まれ、制御の次のルーティング先となるアクティビティはこれらの要素を使用して選択されます。trueに評価された最初の式を使用して、対応する結果を決定します。

    expression:trueまたはfalseのいずれかに評価されるEL式。例:#{(pageFlowScope.welcomeUserRegistrationBean.userSelection eq 'Customer')}


    outcome:EL式がtrueに評価される場合にルーター・アクティビティから返される値。例:newCustomer制御フロー・ケース上でルーターのoutcomeがfrom-outcomeと一致する場合は、制御フロー・ケースが指すアクティビティに制御が渡されます。

    ルーター・アクティビティのケースがいずれもtrueに評価されない場合、またはケースが指定されていない場合は、ルーターのデフォルトのoutcomeフィールドに指定されているoutcomeが使用されます(指定されている場合)。


    タスク・フローへのルーターの追加
  7. アプリケーション・ナビゲータから「emp-update-flow」を選択し、routerの下のダイアグラムにドラッグ・アンド・ドロップします。


    セキュリティ・フローへのemp flowの追加

  8. コンポーネント・パレットで「ViewアイコンViewアイコンを選択し、ダイアグラム上にドラッグ・アンド・ドロップします。

    ダイアグラムへのビューの追加

    ビューの名前をerrorに変更します。

    ビュー名をerrorに変更
  9. Control Flow CaseControl Flow Caseアイコンを選択し、「login」ビューをクリックして、フローをrouterへドラッグ・アンド・ドロップします。

    ルーターへの制御フロー・ケースの追加
  10. 前の操作を繰り返して、routerからerrorビューへ「Control Flow CaseControl Flow Caseを引きます。

    ルーターからの制御フロー・ケースの追加

     フローの名前をbadに変更します。

    フロー名をbadへ変更
  11. 前の操作を繰り返して、routerからemp-update-flow ビューへ「Control Flow CaseControl Flow Caseを引きます。

    名前をgoodに変更します。

    empタスク・フローへgoodという別のフローを追加
  12. 前の操作を繰り返して、errorからloginビューへ「Control Flow CaseControl Flow Caseを引きます。

    フロー名をloginに変更します。ダイアグラムは次のように表示されます。

    alt text
  13. 2つ目のタスク・フローが完成します。「Save AllSave Allアイコンをクリックして、アプリケーションを保存します。

ステップ7:タスク・フロー・コンポーネントとルーター・ルールの定義

パスワード・フィールドのあるログイン・ページを作成し、パスワード値用のバッキングBeanを作成します。これにより、ルーターはパスワードに応じてerrorページまたはemp-updateフローに制御を移します。ページを作成してルーター・ルールを実装するには、以下のステップを実行します。

  1. ダイアグラムで「login」ビュー・アイコンをダブルクリックし、ページを作成します。Create New ADF Page Fragmentで、デフォルト値のまま「OK」をクリックします。

    loginページ作成ペイン
  2. コンポーネント・パレットから「Input Text」アイコンをドラッグし、loginページにドロップします。

    Input Textの追加

    Labelとしてpasswordを入力します。

    ラベルをpasswordに設定
  3. AdvancedタブのBindingフィールドで、ドロップダウン・リストから「Edit」を選択します。

    Bindingプロパティの更新

    Edit Propertyダイアログで「New」ボタンをクリックして、パスワード値を保持するマネージドBeanを作成します。この機能を実行するBeanがすでに存在する場合は、そのBeanを選択して、既存のメソッドを選択するか、新しいメソッドを作成します。

    バッキングBeanの作成


    マネージドBeanは、さまざまな構成ファイルを使用してアプリケーションに登録するJavaクラスです。

    JSFアプリケーションが起動すると、これらの構成ファイルが解析され、その中にリストされているBeanが使用可能になります。EL式内でマネージドBeanを参照できるため、Beanのプロパティおよびメソッドにアクセスできます。マネージドBeanが初めて参照されたときにBeanがまだ存在しなかった場合は、マネージドBean作成機能がそのBeanのデフォルトのコンストラクタ・メソッドを呼び出してBeanをインスタンス化します。プロパティが宣言されている場合は、それらに宣言済みのデフォルト値が設定されます。

    マネージドBeanは、UIレンダリングに関連するロジックを格納する場合にのみ使用します。アプリケーション・データおよび処理はすべて、アプリケーションのビジネス・レイヤーのロジックで処理する必要があります。データ関連のロジックはJavaクラスではなくPL/SQLを使用してデータベースに格納しますが、これと同様に、Oracle Fusion Webアプリケーションでは通常、ビジネス関連のロジックは中間層に格納します。このようにすると、このロジックをビジネス・サービス・メソッドとして公開できるため、Oracle ADF Modelレイヤーでアクセスできるようになり、データ・バインディングに使用できます。


    Create Managed Beanダイアログに次の値を入力します。

    プロパティ
    Bean Name backing_login
    Class Name backing_login
    Package backing
    Extends java.lang.Object
    Scope request
    Generate Class If It Does Not Exist (チェックを入れる)
    Edit Bindingペイン

    OK」をクリックします。

  4. Edit Propertiesに戻り、Propertyフィールドの横にある「New」ボタンをクリックします。

    新しいバッキングBeanプロパティの作成

    Create Propertyダイアログで、Property Nameとしてpasswordを入力します。

    プロパティ名'password'を指定
  5. プロパティ・インスペクタには、Advancedノードの入力テキスト・コンポーネントが次のように表示されます。

    プロパティ・インスペクタの入力テキスト


    実際のパスワード・フィールドでは、入力されたパスワード値を非表示にするために、AdvancedノードのVisibleプロパティをfalseに設定します。

  6. ButtonButtonコンポーネントをパスワード・フィールドの下にドラッグ・アンド・ドロップします。


    ボタンをページに追加


    Textプロパティをloginに変更します。

    ボタン・テキストをloginに設定

  7. ルーターを選択します。

    セキュリティ・フローのタスク・フロー・ダイアグラム
  8. ルーターのプロパティ・インスペクタで、Default Outcomeとしてドロップダウン・リストから「bad」を選択します。

    ルーターのDefault Outcomeをbadに設定
  9. Expressionフィールドで、リストから「Expression Builder」オプションを選択します。

    Casesプロパティで式ビルダーを選択

    ADF Managed Beans」→「backing_login」→「password」の順にノードを開いて「value」変数を選択し、「'=='」オペランドを選択して'oracle'と入力します。

    EL式の設定

    OK」をクリックします。

    この例では、パスワードのハード・コード値としてoracleをコーディングしてあります。

  10. プロパティ・インスペクタに戻り、Outcomeとして「good」を選択します。こうして、入力されたパスワードがoracleと等しい場合は'good'フローを経由してemp-updateフローにナビゲートされ、等しくない場合はerrorページにナビゲートされるようにします。

    CaseのOutcome値の設定
  11. 次に、マネージド・プロパティ値を操作するパラメータを作成する必要があります。security-flowフロー・ダイアグラムで、「Overview」タブ→「Parameters」タブの順にクリックします。

    コール先のOracle ADFバインド・タスク・フローでは、入力パラメータを受け取ることができ、終了時にはコール元に戻り値を渡すことができます。

    バインド・タスク・フローに入力パラメータを渡すには、次の項目を1つ以上指定する必要があります。
    - タスク・フロー・コール・アクティビティ上の入力パラメータ。コール元のタスク・フロー内でパラメータ値が格納される場所を指定します。
    - コール先のバインド・タスク・フロー上の入力パラメータ定義。コール先のバインド・タスク・フローがパラメータ値を取得できる場所を指定します。

    入力パラメータ値をコール先のバインド・タスク・フローにマッピングするために、各オプションに指定する入力パラメータの名前は同じにします。各パラメータ値は、コール元とコール先のタスク・フロー内で値が取得される場所のマッピングに対応します。入力パラメータに値を指定しなければ、値はデフォルトで#{pageFlowScope.parmname}(parmnameはパラメータ名)になります。

    入力パラメータが必要かどうかは、コール先のバインド・タスク・フローの入力パラメータ定義で指定できます。必要な入力パラメータが取得されない場合はエラーが発生します(エラーには、設計時と実行時にフラグが付けられます)。必須ではないと識別された入力パラメータ定義は、タスク・フロー・コール・アクティビティの作成時に無視できます。デフォルトでは、すべてのオブジェクトが参照渡しされます。タスク・フロー・コール・アクティビティの入力パラメータを参照渡しできるのは、個々の値ではなくマネージドBeanオブジェクトを渡す場合のみです。デフォルトでは、プリミティブ・タイプ(int、long、booleanなど)は値渡しされます。


    Parametersタブの選択
  12. Input Parameter Definitionsの「緑色のプラスサインAddボタンをクリックします。

    Input Parameter Definitions

  13. 下の表の値をパラメータに設定し、すべての作業内容を保存します。

    プロパティ
    Name username
    Class java.lang.String
    Value (自動設定)
    Required true
    完成した入力パラメータ定義
  14. login.jsff」タブをクリックしてページを開き、「Output Text」コンポーネントをpassword入力テキストの上にドラッグ・アンド・ドロップします。

    loginページへの出力テキストの追加

  15. プロパティ・インスペクタで、Valueフィールドのリストから「Expression Builder」を選択します。

    JSFでは、ELと呼ばれる簡単な式言語を使用して、表示または変更する情報をバインドします。

    たとえば、特定のユーザー名を参照する#{userInfoBean.principalName}のような式や、ユーザー名がSKINGであるかどうかを評価する#{userInfoBean.principalName eq 'SKING'}のような式を使用します。実行時には、それぞれの式の文字列値およびブール値が汎用の式エバリュエータから返されるため、コーディングをしなくても個々のオブジェクトおよびそれらのプロパティへのアクセスが自動化されます。

    JSFの特定のUIコンポーネントの値は、実行時にvalue属性によって決定されます。コンポーネントには値として静的なテキストを指定できますが、通常はvalue属性にEL式のバインディングを含めます。これが実行時インフラストラクチャによって評価され、表示されるデータが決まります。たとえば、現在ログインしているユーザーの名前を表示するoutputTextコンポーネントは、value属性が#{userInfoBean.principalName}に設定されている可能性があります。 コンポーネントのどの属性にもEL式を使用して値を割り当てられるため、動的なデータ駆動型ユーザー・インタフェースを容易に構築できます。たとえば、レンダリングされたUIコンポーネント属性に#{userInfoBean.prinicpalName !=null}のようなブール値式を使用すれば、ユーザーがログインしていないときにはコンポーネントを非表示にすることができます。userInfoBeanの現在のインスタンスにプリンシパル名がない場合は、レンダリングされた属性がfalseに評価され、ページからコンポーネントの表示がなくなります。


    出力テキスト項目の式ビルダー
  16. Expression BuilderでExpressionフィールドに値が入っていないことを確認し、「ADF Managed Beans」→「pageFlowScope」の順に開き、「username」を選択します。

    OK」をクリックします。

    EL式をusernameに設定
  17. security-flow」タブをクリックしてタスク・フロー・ダイアグラムを開き、「error」ビューをダブルクリックしてページを作成します。

    errorページの表示

    Create New ADF Page Fragmentダイアログで、デフォルト値のまま「OK」をクリックします。

    ブランク・テンプレートが指定されたerrorページ
  18. コンポーネント・パレットから「Output TextアイコンOutput Textをドラッグし、ページ上にドロップします。

    errorページへの出力テキストの追加

    プロパティ・インスペクタで、ValueフィールドにError, wrong passwordと入力します。

    Valueをwrong passwordに設定
  19. Designで[Enter]を押して新しい行を追加し、「ButtonアイコンButtonコンポーネントをドラッグしてerrorテキストの下にドロップします。

    新しいボタンをページに追加

    プロパティ・インスペクタで、TextフィールドをRetryに変更し、Actionのリストから「login」を選択します。

    ボタンの名前をretryに変更
  20. Save AllアイコンSave Allアイコンをクリックして、アプリケーションを保存します。

ステップ8:JSFページの作成とリージョンとしてのタスク・フローのページへのバインド

このタスク・フローを使用するJSFページを作成するには、以下のステップを実行します。

  1. アプリケーション・ナビゲータで「ViewController」ノードを右クリックし、コンテキスト・メニューから「New」→「From Gallery」を選択します。

    コンテキスト・メニューが表示されたナビゲータ
  2. New Galleryで、Categoriesから「Web Tier」→「JSF/Facelets」を選択し、Itemsから「Page」を選択します。

    OK」をクリックします。

    New GalleryでJSP Pageを選択
  3. Create JSF Pageダイアログで、File Nameにmasterと入力し、「Reference ADF Page Template」オプションにチェックを入れ、「Oracle Three Column Layout」を選択します。

    OK」をクリックします。

    マスター・ページの作成
  4. スクロールして、表示されたページをエディタで確認します。

    3列テンプレートを使用したページ
  5. コンポーネント・パレットから「Output TextアイコンOutput Textコンポーネントをドラッグし、startファセットにドロップします。

    1つ目の列への出力コンポーネントの追加

    プロパティ・インスペクタで、ValueフィールドをWelcomeに変更します。

    出力テキストの値をWelcomeに変更

  6. ViewController」→「Web Content」→「WEB-INF」の順にノードを開き、「security-flow.xml」をドラッグしてFacet centerにドロップします。

    メニューから「Region」を選択します。

    データ・コントロールをページに追加



    JSFページまたはページ・フラグメント(.jsff)にバインド・タスク・フローをレンダリングするには、Oracle ADFリージョンを使用します。

    Oracle ADFリージョンは次で構成されます。
    - リージョンをレンダリングするページまたはページ・フラグメントに表示されるaf:regionタグ


    - oracle.adf.view.rich.modelパッケージからRegionModelを実装するインスタンス・オブジェクト
    - Oracle ADFリージョンで使用するバインド・タスク・フローを識別する、ページ定義内のタスク・フロー・バインディング

    初めてレンダリングされるときのOracle ADFリージョンのコンテンツは、バインド・タスク・フロー内の最初のビュー・アクティビティのものです。バインド・タスク・フローで使用するビュー・アクティビティは、ページではなくページ・フラグメントに関連付ける必要があります。Oracle ADFリージョンへは、タスク・フロー・バインディングの入力パラメータまたはコンテキスト・イベントを使用して値を渡すことができます。また、タスク・フロー・バインディングを使用してバインド・タスク・フローからOracle ADFリージョンへ渡す入力パラメータは、タスク・フロー・バインディングのparametersMapプロパティの構成で決定できます。

    Oracle ADFリージョンのアクティブ化やリフレッシュのタイミングも、リージョンの構成で決定できます。また、Oracle ADFリージョンおよびバインド・タスク・フローを構成することで、バインド・タスク・フロー内でナビゲーション・コントロールを停止させ、Oracle ADFリージョンを含むページにコントロールを渡すこともできます。さらには、動的リージョン(Oracle ADF動的リージョン)も作成できます。これは、リージョンにレンダリングするバインド・タスク・フローを、実行時にタスク・フロー・バインディングによって決定するものです。動的リージョンを作成して動的リージョン・リンクを構成すると、実行時にOracle ADF動的リージョンにレンダリングされるバインド・タスク・フローをエンドユーザーが変更できるようになります。

    Regionが表示されているCreateコンテキスト・メニュー

    Edit Task Flow Bindingで、Valueフィールドに#{'Scott'}と入力します。

    タスク・フロー・バインドを#{'Scott'}に設定

  7. 現在のマスター・ページは次のように表示されます。

    すべての項目が表示されたマスター・ページ

  8. Save AllアイコンSave Allアイコンをクリックして、アプリケーションを保存します。

ステップ9:マスター・ページの実行

これで、タスク・フローはリージョンとしてマスター・ページに統合され、実行できる状態になりました。次のステップを実行します。

  1. masterページのエディタで右クリックし、コンテキスト・メニューから「Run」を選択します。

    コンテキスト・メニューでRunを選択した状態welcome
  2. ブラウザにページがロードされ、username変数(Scott)が表示され、パスワードの入力待ち状態になります。

    ブラウザで実行中のマスター・ページ

  3. 誤ったパスワード値(oracle以外の値)を入力してみます。

    passwordフィールドにjdevと入力


    次に「login」ボタンをクリックします。ルーターによってerrorページにナビゲートされます。

  4. Retry」ボタンをクリックして正しいパスワードでログインします。

    errorページの表示

  5. loginページに戻り、パスワード値としてoracleを入力します。

    loginページにパスワードとしてoracleを入力した状態

    次に、「login」をクリックします。

  6. トレインが表示された新しいページが開きます。

    フローの最初のページ

  7. 新しいページで、「Next」ボタンまたはトレインの2つ目のボタンをクリックします。

    alt text

  8. トレインの2つ目のステップ(検索ページ)で「LastName」を選択します。
    検索フィールドにA%と入力し、Aで始まる従業員名をすべて取得します。




    aで始まるすべての従業員を検索

    search」ボタンをクリックします。

  9. 返されたリストで任意の従業員を1人選択し、「Next」ボタンをクリックします。
    新しい条件の入力準備が整うまでは、Searchパネルは閉じていても構いません。

    返された従業員

  10. 選択した従業員のEditページでSalaryを任意の値に変更し、「Submit」をクリックします。

    1人の従業員のEditページ

  11. 自動的にloginページに戻ります。

    loginページ

  12. JDeveloperに切り替えてDatabase Navigatorを開きます(表示されていない場合は、「Window」→「Database」→「Databases」の順に選択します)。

    メニューでDatabase Navigatorを選択

  13. TaskFlow」→「HRConn」→「Tables」の順にノードを開き、「Employees」表をダブルクリックして開きます。

  14. Data」タブをクリックして従業員の値を表示します。

    Dataタブを選択

    LAST_Name」列を選択し、コンテキスト・メニューから「Sort」を選択します。

    Sortボタンを選択

  15. Filterフィールドを使用するか、Sort操作を使用すると、求めている従業員の情報をさらに簡単に取得できます。「Sort」ボタンをクリックし、Sort ColumnsダイアログでLAST_NAMEをSelected Columnsペインに移動します。

    OK」をクリックします。

    Sort Columnsペイン

  16. Salaryを更新した従業員を検索し、新しい値で更新がコミットされていることを確認します。

    新しい値で更新されたレコード
  17. この最後のプロセスを繰り返して、Cancel(ロールバック)アクションをテストしても構いません。

    これで、このチュートリアルは完了です。

まとめ
このチュートリアルでは、ビュー、リターン、ルーターを含む2つの独立したタスク・フローを開発しました。ビューでは、データ・バインドされたコンポーネントとマネージド・トランザクション・コントロールをタスク・フローに追加しました。このチュートリアルで学習した内容は、以下のとおりです。 タスク・フロー、リージョンおよびルーターについて、詳しくは以下を参照してください。

ブックマーク 印刷 すべて表示 | すべて非表示
トップへ戻る

このページはお役に立ちましたか。



Copyright c 2011, Oracle and/or its affiliates.All rights reserved.