パート3:UIへの新規メソッドの追加と公開
このシナリオでは、EJB 3.0のアノテーション・テクニックを使用して、Entity Beanに新しいメソッドを追加します。その後で、この新規メソッドをファサードに公開し、バウンド・タスク・フロー内でページに対するデータ・コントロールとして使用します。
Show more or less詳細表示
ステップ1:エンティティへの新規メソッドの追加と公開

EJBでは、@NamedQueriesアノテーション構文を使用して、名前付き問合せを追加します。
  1. すべてのタブを閉じ、「Model」プロジェクトを開きます。

    アプリケーション・ナビゲータのModelプロジェクト
  2. Employees.java」クラスをダブルクリックして、ソース・エディタで開きます。

    開かれたEmployees.java
  3. これらのオブジェクトがほかのJavaファイルと異なる点は、EJBエンティティとしてオブジェクトを識別するアノテーションがあることです。Show more or less詳細表示
  4. ソース・エディタで「Entity」ノードを開き、@NamedQueriesアノテーション内の@NamedQuery文を表示します。

    Javaコード
  5. 名前付き問合せを使用すると、設計時に問合せを定義し、実行時に使用できます。Show more or less 詳細表示
  6. NamedQuery文の閉じ括弧の後にカンマを追加し、[Enter]を押して新しい行を追加します。

  7. パラメータ値よりも高い給与の従業員のデータを取得する問合せをクラスに追加します。以下のコードを追加します。

    コードは次のようになります。

    @NamedQueries( {
    @NamedQuery(name = "Employees.findAll", query = "select o from Employees o") ,
    @NamedQuery(name = "Employees.findBySal", query = "select o from Employees o where o.salary > :p_sal")
    })


    Java code

    必要に応じて、[Alt]キーと[Enter]キーを押して、javax.persistence.NamedQueriesライブラリをインポートします。

  8. @で始まるJavaコードの記号は、アノテーションと呼ばれます。Show more or less詳細表示
  9. Build」アイコンをクリックしてプロジェクトをコンパイルし、エラーが返されていないことを確認します。

    Makeアイコン
  10. アプリケーション・ナビゲータで「HRFacadeBean.java」を右クリックし、コンテキスト・メニューから「Edit Session Facade」を選択します。

    コンテキスト・メニュー
  11. Specify Session Facade Optionsで、先ほど作成した新規問合せ「getEmployeesFindBySal()」を選択します。

    Specify Session Facade Optionsダイアログ

    OK」をクリックします。Save AllSave Allボタン」アイコンをクリックして作業内容を保存します。

  12. アプリケーション・ナビゲータで「HRFacadeBean.java」を右クリックし、コンテキスト・メニューから「Create Data Control」を選択します。

    コンテキスト・メニューからCreate Data Controlへ
  13. Choose EJB Interfaceダイアログでデフォルト選択(local)のままにし、「OK」をクリックします。

    Choose EJB Interface
  14. Data Control Registryで、「HRFacadeLocal」ノードを展開します。先ほど作成した新規メソッドを開き、「Employees」ノードをクリックします。EJB JPA定義に該当する属性が作成されていることを確認します。

    Data Control registry
  15. これで、新規メソッドをページ内のデータ・コントロールとして使用する準備が整いました。

  16. Save AllSave Allボタン」アイコンをクリックして作業内容を保存します。

ステップ2:2つのJSFページを使用したバウンド・タスク・フローの構築

ADFタスク・フローは、Fusion Web Applicationにコントロール・フローを定義するためのモジュール・アプローチを提供します。

  1. Model」プロジェクトを閉じます。「ViewController」プロジェクトを右クリックして、コンテキスト・メニューから「New」を選択します。

    コンテキスト・メニュー
  2. New Galleryで、「Web Tier」→「JSF/Facelets」カテゴリを選択し、「ADF Task Flow」項目を選択します。「OK」をクリックします。

    New Gallery
  3. Create Task FlowダイアログにfindBySalFlow.xmlと入力します。ページ断片を使用してバウンド・タスク・フローを作成します。「OK」をクリックします。

    Create Task Flowダイアログ
  4. ADFタスク・フローには次の2種類があります。Show more or less詳細表示
  5. View」コンポーネントをタスク・フローへドラッグ・アンド・ドロップします。

    タスク・フロー・ダイアグラム
  6. 2つ目の「View」コンポーネントをタスク・フローへドラッグ・アンド・ドロップします。

    ビューを追加したタスク・フロー・ダイアグラム
  7. view1の周りに表示される円に注目します。この円は、タスク・フロー内のエントリ・ポイントを表しています。Show more or less詳細表示
  8. Control Flow Case」コンポーネントを選択し、「view1」をクリックして「view2」にドロップします。このフローの名前をfindに変更します。

    コントロール・フロー・ケースを追加したタスク・フロー・ダイアグラム
  9. この操作を繰り返し、view2からview1へ、2番目のControl Flow Caseを作成し、backという名前に変更します。

    コントロール・フロー・ケースを追加したタスク・フロー・ダイアグラム
  10. view1」をダブルクリックして、ページを作成します。Create ADF Page Fragmentで、このページのファイル・タイプがjsffになっていることを確認します。

    Create ADF Page Fragmentダイアログ

    OK」をクリックします。

    ページ断片は、別のJSFページ内にコンテンツとしてレンダリングされるJSFドキュメントです。Show more or less詳細表示
  11. 「Data Controls」ペインを開き、「getEmployeesfindBySal()」メソッドをページにドロップし、「Parameter」→「ADF Parameter Form」を選択します。

    ページへのデータ・コントロールのドロップ
  12. Edit Form FieldsでDisplay LabelフィールドにSalary >と入力し、「OK」をクリックしてその他のデフォルト値を受け入れます。パラメータp_salに注目します。

    Edit Form Fieldsダイアログ
  13. getEmployeesFindBySal 」ボタンを選択し、Property InspectorでActionプロパティのリストから「find」を選択し、TextにFindと入力します。

    プロパティ・インスペクタ
  14. コンポーネント・パレットのOperationsライブラリで、「Set Action Listener」を選択し、「Find」ボタンにドロップします。

    ボタンへのSet Action Listenerのドロップ

    ここでは、Set Action Listenerを使用して、pageFlowScopeレベルでView1に入力されたパラメータ値を保持します。

  15. Insert Set Action Listenerダイアログで、Fromフィールドの隣の下矢印をクリックし、「Expression Builder」を選択します。

    Insert Set Action Listenerダイアログ
  16. Expression Builderで、「ADF Bindings」→「bindings」→「getEmployessFindBySal_p_sal」を選択します。

    Expression Builderダイアログ

    OK」をクリックします。

  17. Insert Set Action Listenerダイアログに戻り、Toフィールドに#{pageFlowScope.sal}と入力します。

    Insert Set Action Listenerダイアログ

    OK」をクリックします。

  18. StructureペインとProperty Inspectorは次のように表示されます。

    Structureペイン
  19. findBySalFlow.xml」タブをクリックして、タスク・フロー・ダイアグラムを再表示します。タスク・フロー・ダイアグラムで、「view2」をダブルクリックしてページを作成します。

    ページ・フロー・ダイアグラム
  20. Create ADF Page fragmentで、デフォルト値を受け入れます。

    Create ADF Page fragmentダイアログ

    OK」をクリックします。

  21. Data Controlsペインで「getEmployeesFindBySal() 」メソッドを開き、「Employees」をページ上にドラッグ・アンド・ドロップします。コンテキスト・メニューから「Tables」→「ADF Read-only Table」を選択します。

    ページへのデータ・コントロールのドロップ
  22. Edit Table Columnsダイアログで、「Single Row」、「Enable Sorting」、「Enable Filtering」を選択します。salaryの後にある列をすべて削除し、hiredateも削除します。

    Edit Table Columnsダイアログ

    OK」をクリックします。

  23. Edit Action Bindingダイアログで、Valueフィールドに#{pageFlowScope.sal}と入力します。

    Edit Action Bindingダイアログ

    OK」をクリックします。

  24. pageFlowScope.salの値によって、どのsalaryパラメータ値を使用するかが決定されます。Show more or less詳細表示
  25. Component Paletteの「ADF Faces」→「General Controls」ライブラリから「Button」コンポーネントを選択し、Structureペインのaf:tableノード上にドロップします。

    コンポーネント・パレット
  26. Property Inspectorで、TextにBackと入力し、Actionとして「back」を選択します。

    プロパティ・インスペクタ
  27. Save AllSave Allボタン」アイコンをクリックして作業内容を保存します。

ステップ3:mainHRページ内リージョンとしてのタスク・フローの使用

ADFリージョンを使用すると、JSFページまたはページ断片(.jsff)にバウンド・タスク・フローをレンダリングすることができます。

  1. アプリケーション・ナビゲータで「mainHR.jsf」ノードをクリックし、mainHR.jsfページを再表示します。

  2. Graph」タブを右クリックし、「Insert After Show Detail Item」→「Show Detail Item」を選択します。

    コンテキスト・メニュー
  3. Property Inspectorで、TextフィールドをSearchに変更します。

    プロパティ・インスペクタ
  4. アプリケーション・ナビゲータで、「Web Content」→「WEB-INF」ノードを開き、「findBySalFlow.xml」ノードをSearchペインにドラッグ・アンド・ドロップします。

    ページへのページ・フローのドロップ
  5. コンテキスト・メニューから「Create」→「Region」を選択します。

    タスク・フローのコンテキスト・メニュー
  6. ページ・リージョンは次のように表示されます。

    ページ設計
  7. バウンド・タスク・フローをADFリージョンとして実行する最大の理由は、再利用性です。Show more or less詳細表示
  8. Save AllSave Allボタン」アイコンをクリックして作業内容を保存します。

ステップ4:mainHrページの実行
  1. ページ内で右クリックし、コンテキスト・メニューから「Run」を選択します。

    コンテキスト・メニュー
  2. ブラウザ・ウィンドウで、「Search」タブをクリックします。

    実行中のページ
  3. getEmployeesFindBySal_p_salフィールドに値(例:8000)を入力し、「Find」ボタンをクリックします。

    検索の起動
  4. 該当する従業員のリストが表示されます。右方向にスクロールして、給与が8,000以下のレコードが返されていないことを確認します。

    alt text
  5. Back」ボタンをクリックします。

    前のページへ戻る
  6. getEmployeesFindBySal_p_salフィールドに新しい値(例:10000)を入力し、「Find」ボタンをクリックします。

    新しい検索の起動
  7. 今回は、さらに限定されたリストが表示されます。

    検索結果
  8. ブラウザ・ウィンドウを閉じます。

Bookmark Print すべて表示 | すべて非表示
トップへ戻る
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.?