Oracle ADF 11g 入門 Oracle Fusion Web アプリケーションの構成要素の概要 Oracle ホワイト ペーパー 2007 年 4 月
Oracle ADF 11g 入門 開発者ガイドは Oracle JDeveloper に付属されているので すぐに使用できます これらのガイドは Oracle JDeveloper のスタート ページまたはオンラインの Oracle Technology Network にあります アプリケーションの構成要素の理解 Oracle Fusion アプリケーションの構成要素を理解するため 最初にアプリケーションが管理する基本タスクを取り上げます データ アクセス ビジネス ロジックの実装 ユーザー インタフェースの表示 ( データの表示 ) ユーザー インタラクション アプリケーション ( ページ ) フロー Oracle Fusion のこれらの基本タスクは モデル ビュー コントローラの 3 つの異なるレイヤーに分類できます ユーザー インタラクションアプリケーション ( ページ ) フロー ユーザー インタフェースの表示 ( データの表示 ) データ アクセスビジネス ロジックの実装 ビュー レイヤーは アプリケーションに対するユーザー インタフェースを表示し コントローラ レイヤーに対するイベントを発生させます ビュー レイヤーのもっとも基本的で重要なコンポーネントは ページです Oracle JDeveloper で作成されるページは ユーザーに対して表示される完全な Web ページとなります ビュー レイヤーの他の多くのコンポーネントは 以下に記載されています TOracle ADF 11g 入門 2
Oracle Fusion Web アプリケーションを作成してみたいですか キュー カードを使用すると Oracle Fusion Web アプリケーションを作成する手順がわかります キュー カードは Oracle JDeveloper のスタート ページまたはヘルプ メニューにあります コントローラ レイヤーは アプリケーション フローを管理します Oracle Application Development Framework(Oracle ADF) コントローラは ユーザー入力やエラーを処理し ユーザーが参照するページを決定します アプリケーションを管理するためにコントローラ レイヤーが使用する主な定義は タスク フローです Oracle JDeveloper で作成されるタスク フローでは 開発者がアプリケーション タスク ( 経費報告書の作成 予算の入力など ) を定義します 相互に作用し ユーザーによるタスクの完了を許可するページおよびロジックが タスクの定義に含まれます 経費報告書の作成のタスク フローには 3 つのページ ( 経費項目の入力 経費報告書の送信および確認 ) とユーザーをページ間でナビゲートするロジックが含まれる可能性があります モデル レイヤーは データ アクセスとビジネス ロジック実装を管理します Oracle Fusion のモデル レイヤーは 2 つの重要なサブコンポーネントで構成されます 1 つ目のコンポーネントは データおよびビジネス サービス レイヤーにビュー レイヤーを接続するデータ バインディング機能です データ コントロールと呼ばれるこのデータ バインディング機能は ADF モデルの主要コンポーネントです データ コントロールによって呼び出される 2 つ目のコンポーネントは ビジネス サービスです アプリケーション モジュールと Oracle ADF Business Components は データ コントロールによってビュー レイヤーに接続されるビジネス サービス レイヤーの主要コンポーネントです この区別によって 他のビジネス サービスの呼出し データ アクセス ビュー レイヤー作成後のビジネス サービスの実装が可能になります ビュー レイヤー 前述したように もっとも単純な形式のビュー レイヤーは ページに追加されてモデル レイヤーにバインドされるユーザー インタフェース コンポーネント ( 表 入力テキスト 出力テキスト ボタンなど ) を使用するページになります ページのユーザー インタフェース コンポーネントを使用してコントローラを呼出し 他のページに移動できます ただし Oracle ADF は 豊富で再利用可能なユーザー インタフェースを作成できるその他のビュー レイヤーのコンポーネントを提供します これらのコンポーネントはこの項で説明します ページ Oracle JDeveloper で作成されるページは ユーザーに対して表示される完全な Web ページです 経費報告書の作成例において 開発者は 3 つのページ ( 経費項目の入力 経費報告書の送信および確認 ) を作成する可能性があります 経費項目の入力経費報告書の送信確認 経費項目の入力 本書の後半に記載されているように アプリケーション ページは これよりも高度な可能性があります また 以下の Oracle ADF 機能を使用した豊富で再利用可能なユーザー インタフェースが作成される可能性があります TOracle ADF 11g 入門 3
ページ フラグメント ページ フラグメントが作成され ページと同じように使用されます 開発者にとって Oracle JDeveloper でページを作成する方法とページ フラグメントを作成する方法にほとんど違いはありません この経費報告書の作成の例で ページの代わりにページ フラグメントの定義として 3 つの同じページを作成できます ページとページ フラグメントの主な違いは ページ フラグメントは完全な Web ページとして定義されないことです このため 大きい Web ページの一部としてページ フラグメントを使用できます たとえば 他のコンテンツが表示されるページ内で経費報告書の作成タスクを表示する場合 ページ フラグメント定義としてページを作成します この機能のため ほとんどのアプリケーション タスクは ページ フラグメントを使用して作成されます 経費項目の入力経費報告書の送信確認 経費項目の入力 ページ テンプレート ページ テンプレートは ページおよびページ フラグメントを作成するためのベースとして使用できる 再利用可能でデータ バインドされたテンプレートです 複数のページで共通する部分が含まれるページが存在する場合 開発者は ページの共通部分のページ テンプレートを作成し 共通の機能を使用するページまたはページ フラグメントを作成するためのベースとしてそのページ テンプレートを使用できます ページ テンプレートでは 開発者がページ テンプレートの使用方法を設定できるパラメータを使用できます ( ヘッダーに表示されるタイトルの設定など ) ページ テンプレートは ページの作成時に開発者がコンテンツを追加できるページ ( ファセット ) の領域も定義します このようなファセットにも デフォルトのコンテンツを格納できます たとえば すべてのアプリケーション ページでページ上部のヘッダー ( タイトルあり ) を共有する場合 開発者は ヘッダーを含むページ テンプレートを作成して ページを作成する他の開発者に対してページ テンプレートを提供できます 他の開発者がページを作成する場合 ヘッダー テンプレートに基づいてページを作成します ページ テンプレート ページ テンプレート ページ テンプレート ページ テンプレート に基づくページの作成 に基づくページの作成 に基づくページの作成 ヘッダー ( タイトルあり ) ヘッダー ( タイトルあり ) ヘッダー ( タイトルあり ) ヘッダー ( タイトルあり ) 経費項目の入力 ファセット TOracle ADF 11g 入門 4
リージョン リージョンは ページまたはページ フラグメント内で使用できる Oracle Fusion の強力な新機能です リージョンでは 機能とユーザー動作に関してポートレットとの同期を考慮します ただし ローカル コンテキストにアプリケーション機能が含まれている場合に使用されます 外部で使用するためにアプリケーション機能を公開している場合は ポートレットが使用されます 前述したように 開発者は 経費報告書の作成タスクのタスク フローを作成します この定義には 3 つのページ ( 経費項目の入力 経費報告書の送信および確認 ) が含まれます 経費項目の入力 経費項目の入力 ページ フラグメント経費報告書の送信 確認 タスク フロー経費報告書の作成 VA1 VA2 VA3 VA= ビュー アクティビティ 経費報告書の作成 他のコンテンツ ( ワークリストやヘッダーなど ) を含むページ内で開発者がこのタスクをユーザーに対して表示する場合 リージョンを使用して ページ内のこのタスク フローをラップします または Oracle JDeveloper で タスク フローをリージョンとしてページにドロップします TOracle ADF 11g 入門 5
ADF ページ ヘッダー ( タイトルあり ) ワークリスト 経費報告書の作成のタスク フロー ヘッダー ( タイトルあり ) ワークリスト 経費項目の入力 ページ内でリージョンとしてタスク フローを使用するには 特別な要件があります たとえば ページではなくページ フラグメントでタスク フローを構成する必要があります また タスク フローをバウンド タスク フローにする必要があります ( バウンド タスク フローとアンバウンド タスク フローの違いについては タスク フローの項を参照してください ) リージョン内のコンポーネントは コンテキスト イベント フレームワークと呼ばれるパブリッシュとサブスクライブのメカニズムを通じて ページ上の他のリージョンと通信できます コンテキスト イベント フレームワーク 複数のアプリケーション コンテンツを組み合わせて豊富なモジュール式のコンテキスト アプリケーションを作成する方法で 多くのアプリケーション ページが作成されます たとえば 経費報告書の作成の例でユーザーが経費項目を入力する場合 ページの別のリージョンに企業の経費ポリシーとガイドラインを表示することが重要になることがあります ユーザーに対して関連情報を表示するために組み合わせる複数のリージョンがページに含まれる場合 リージョン間の通信が非常に重要になります ページ上のリージョンが Oracle ADF Business Components(Oracle ADF BC) のアプリケーション モジュールを共有している場合 コンテキストは自動的に同期されます ただし データのソースが同じアプリケーション モジュールにない場合 コンテキスト イベント フレームワークと呼ばれるイベント フレームワークを通じてこの通信を処理できます コンテキスト イベント フレームワークは ページに対してページの各種リージョンで作成および使用されるイベントをマッピングする機能を提供します TOracle ADF 11g 入門 6
Oracle ADF Rich Client Components Oracle ADF は Oracle Fusion で豊富なユーザー インタフェース ページとページ フラグメントを作成するために開発者が使用する 100 以上のコンポーネントを提供します これらのコンポーネントは Oracle JDeveloper 内の一般的なパレットで使用できます これらのコンポーネントは 次のように分類されています レイアウト コンポーネント 表とツリー コンポーネント LOV コンポーネント 入力コンポーネント ナビゲーション コンポーネント 出力コンポーネント 問合せコンポーネント データ表示コンポーネント 宣言的なコンポーネント 宣言的なコンポーネントは 複数の ADF コンポーネントの機能を結合します 宣言的なコンポーネントには ビジネス ロジックがありません また データはバインドされません 宣言的なコンポーネントの重要な特性は コンポーネントの開発者が属性を非表示にできることです このため 利用者は属性を変更できません たとえば 宣言的なコンポーネントを作成して "Okay" ボタンおよび "Cancel" ボタンをグループ化できます 開発者は ラベル属性を非表示にできるので 二次的に利用している開発者は "Cancel" を "Exit" に変更できません コントローラ レイヤー ADF コントローラは すべての Web アプリケーションに必要である 重要なコンポーネントです コントローラは タスク フローで開発者に定義されたユーザー インタラクションおよびアプリケーション フローを管理します タスク フロー Oracle JDeveloper で作成されるタスク フローでは 開発者がアプリケーション タスク ( 経費報告書の作成 予算の入力など ) を定義します タスクの定義には ユーザーによるタスクの実行を許可するページおよびロジックが含まれます 設計時に タスクを構成するページとページ フラグメントは ページとページ フラグメントがビュー アクティビティの場合 アクティビティとしてタスク フローに追加されます このため ユーザーがタスク フロー内のページ間を移動する場合 特定のアクティビティから別のアクティビティに移行することになります アクティビティは タスク フローの構成要素として考慮できます 開発者によるタスク フローの作成に重要なビュー アクティビティの他にもアクティビティがあります たとえば 開発者が経費項目の入力ページと経費項目の更新ページの両方をタスク フローのビュー アクティビティとして使用し TOracle ADF 11g 入門 7
ユーザーに対して表示するビュー アクティビティの決定を行う最初のアクティビティを用意する場合 種類の異なるアクティビティがルーター アクティビティと呼ばれるタスク フローに追加されます ルーター アクティビティは 宣言的な CASE 文を評価し 制御フローをルーティングする場所について決定します Oracle Fusion には 2 種類のタスク フロー ( バウンド タスク フローとアンバウンド タスク フロー ) があります 以下に詳細を説明します バウンド タスク フロー 2 種類のタスク フローの内の 1 つであるバウンド タスク フローには トランザクションと再利用をサポートするために追加された特定の機能があります バウンド タスク フローは ページ内のリージョンとして使用できる唯一の種類のタスク フローです ほとんどのアプリケーション タスク フローは トランザクションをサポートする追加機能のため バウンド タスク フローになります これらの機能の一部は 以下のとおりです トランザクションの最初と最後の適切に定義された境界 単一のエントリ ポイントとゼロ以上の適切に定義された終了ポイント タスク フロー内のアクティビティ間のデータをわたすために使用される pageflowscope 変数と呼ばれるメモリー スコープ変数 トランザクション管理の宣言的なサポート タスク フロー エントリ時に新規トランザクションを開始可能 タスク フロー終了時にコミットまたはロールバックが可能 戻るボタン操作の宣言的なサポート pageflow スコープ内に保存するためにタスク フローのコール元からの入力パラメータの受け渡しが可能 終了時にタスク フローのコール元に値を戻すことが可能 アンバウンド タスク フロー アンバウンド タスク フローにはバウンド タスク フローに類似したアクティビティが含まれますが バウンド タスク フローの適切に定義された境界と単一のエントリ ポイントは含まれません アンバウンド タスク フローは パラメータ化できません また トランザクションおよび再エントリの特性を定義できません このため リージョンとしてページ内で使用することができません アンバウンド タスク フローは BPEL から呼び出すことができないので セキュアなオブジェクトではありません このため アンバウンド タスク フローは バウンド タスク フローとは異なる方法でアプリケーションによって使用されます たとえば 経費報告書の作成タスクは ページのリージョン内で使用できるように バウンド タスク フローとして実装されます ヘッダー ワークリスト 経費報告書タスクを使用したすべてのユーザー インタフェースを含むページをタスク フローにも格納する必要があります この場合 アンバウンド タスク フローが効果的です ビュー アクティビティとしてアンバウンド タスク フローにこのアプリケーション ページを追加すると このアンバウンド タスク フローを通じてメニュー ナビゲーションからアプリケーション ページを呼び出すことができます TOracle ADF 11g 入門 8
ADF ページ ヘッダー ( タイトルあり ) ワークリスト 経費報告書の作成のタスク フロー 各 Web アプリケーションが 1 つのアンバウンド タスク フローのみを使用することに注意してください これらは 1 つ以上の個別の物理ファイルで設計時に定義されます ただし 実行時に これらのファイルは 1 つのアンバウンド タスク フローとしてマージおよびロードされます また 単一のエントリ ポイントを持つバウンド タスク フローとは異なり ビュー アクティビティによって参照されるアプリケーション ページのブックマーク可能な URL を使用できるように アンバウンド タスク フローのビュー アクティビティはブックマーク可能に設定できます タスク フロー テンプレート タスク フロー テンプレートは 多くの異なるバウンド タスク フローで再利用するために一般的なタスク フローと動作を取得する機能を提供します コピーによる再利用と参照による再利用の 2 つのメカニズムが提供されます 例外処理とは 開発者がタスク フロー テンプレートを活用できる領域です モデル レイヤー モデル レイヤーは ビジネス ロジック実装とともにデータ アクセスを提供します Oracle Fusion のモデル レイヤーは 2 つの重要なサブコンポーネントで構成されます 1 つ目のコンポーネントは データおよびビジネス サービス レイヤーにビュー レイヤーを接続するデータ バインディング機能です データ コントロールと呼ばれるこのデータ バインディング機能は ADF モデルの主要コンポーネントです 2 つ目のコンポーネントは ビジネス サービス レイヤーです アプリケーション モジュールと Oracle ADF Business Components は データ コントロールによってビュー レイヤーに接続されるビジネス サービス レイヤーの主要コンポーネントです この区別によって 他のビジネス サービスの呼出し データ アクセス ビュー レイヤー作成後のビジネス サービスの実装が可能になります TOracle ADF 11g 入門 9
ビュー コントローラ モデル ビジネス サービス モデル データ コントロール データ コントロールは データがバインドされたページとページ フラグメントを作成する機能を提供します これらのデータ コントロールは XML ファイル Web サービス Oracle ADF Business Components などの多くのビジネス サービスでサポートできます データ コントロールは 他の一般的な定義と同じように Oracle JDeveloper で作成されます ただし Oracle JDeveloper でアプリケーション モジュールを作成する場合 実装を簡素化するため 対応するデータ コントロールがページ内で使用するために自動的に作成されます データ バインドされたページを作成するには データ コントロール パレットからページ上にデータ コントロールをドラッグ アンド ドロップします プレースホルダ データ コントロール プレースホルダ データ コントロールは ページが作成された後にデータ ソースが接続される UI を最初に開発する方法で ページとページ フラグメントを作成するために使用できます ビジネス サービス Oracle ADF Business Components は Oracle Fusion アプリケーションのデータ アクセスとビジネス ロジックのメイン ソースです Oracle ADF Business Components (Oracle ADF BC) には 次の主要オブジェクトが含まれます アプリケーション モジュール アプリケーション モジュールは アプリケーション データを処理するために UI クライアントが使用するトランザクション コンポーネントです TOracle ADF 11g 入門 10
エンドユーザー タスクに関連した論理的な作業における更新可能なデータ モデルおよび最上位レベルのプロシージャと関数 ( サービス メソッド ) を定義します アプリケーション モジュールには ビュー オブジェクトが含まれます アプリケーションの統合を簡素化するため アプリケーション モジュールのサービス インタフェースを有効にできます サービス インタフェースは サード パーティ アプリケーションで標準的な Web サービス プロトコルによるビジネス情報の検索 作成 更新 および削除を可能にするプログラム API です エンティティ オブジェクトにカプセル化されたすべてのビジネス検証ルールも このプログラム統合 API を通じて自動的に適用されます ビュー オブジェクト SQL 問合せを表すビュー オブジェクトは 結果の処理を簡素化します SQL を使用して 現行のエンドユーザー タスクで必要な " 形 " にデータを結合 投入 フィルタリング ソート および集計します これには マスター / ディテール階層を作成するためにビュー オブジェクトを他とリンクする機能が含まれます エンド ユーザーがユーザー インタフェースのデータを変更する場合 ビュー オブジェクトは 変更を一貫して検証および保存するためにエンティティ オブジェクトと連携します UI レイヤーの場合 UI とタスク フローをサポートするために新しいビュー オブジェクトとアプリケーション モジュールが作成されます エンティティ オブジェクト エンティティ オブジェクトでは すべての DML 操作を処理することによって データベース表の行を表し データ変更を簡素化します ビジネス ルールを一貫して適用するために 行のビジネス ロジックをカプセル化できます エンティティ オブジェクトは ビジネス ドメイン オブジェクトのレイヤーを作成して複数のアプリケーションで再利用するため 基本となるデータベース スキーマの関係を反映する他のエンティティ オブジェクトと関連付けることができます TOracle ADF 11g 入門 11
Oracle ADF 11g 入門 2007 年 4 月著者 :Laura Akel 共著者 : Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口 : 電話 :+1.650.506.7000 ファクシミリ :+1.650.506.7200 www.oracle.com Copyright 2007, Oracle.All rights reserved. 本文書は情報提供のみを目的として提供されており ここに記載される内容は予告なく変更されることがあります 本文書は一切間違いがないことを保証するものではなく さらに 口述による明示または法律による黙示を問わず 特定の目的に対する商品性もしくは適合性についての黙示的な保証を含み いかなる他の保証や条件も提供するものではありません オラクル社は本文書に関するいかなる法的責任も明確に否認し 本文書によって直接的または間接的に確立される契約義務はないものとします 本文書はオラクル社の書面による許可を前もって得ることなく いかなる目的のためにも 電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません Oracle は米国 Oracle Corporation およびその子会社 関連会社の登録商標です その他の名称はそれぞれの会社の商標です