Oracle ADFアプリケーション・アーキテクチャについて

Oracle ADFモデルを使用するJ2EEアプリケーションでは、各タイプのデータ・プロバイダごとに実装されるデータ・コントロール・オブジェクトを介して、モデル・データがビュー・レイヤーおよびコントロール・レイヤーに公開されます。モデル固有のデータ・コントロール・セットでは、次のことを行います。

データ・コントロール・アダプタ・クラスによってデータが公開されると、J2EEアプリケーションによるビジネス・サービスとの対話が、データ・オブジェクトおよびコレクション(行または行セットとも呼ばれる)に対して動作するメソッド、あるいはデータ・オブジェクトおよびコレクションからデータを取得するメソッドによって可能になります。

実行時には、クライアントまたはコントローラから起動されたビジネス・サービスとの対話は、Oracle ADFモデル・バインディング・コンテキストと呼ばれる単一のオブジェクトを介したアプリケーションによって管理されます。次の図に示すように、ADFバインディング・コンテキストはコンテナ・オブジェクトであり、Oracle ADFモデル・レイヤーから導出されたデータ・コントロールおよびデータ・バインディング・オブジェクトの階層を定義します。

Oracle ADFバインディング・コンテキスト・ブロック・ダイアグラム

バインディング・コンテキストにより、これらの階層が定義されます。階層のオブジェクトは、Oracle ADFモデルがコントローラ・レイヤーおよびビュー・レイヤーにサービスを提供できるよう、相互に参照し合います。

データ・コントロールの階層は、次のようになります。

データ・バインディング・オブジェクトの階層は、同一の親コンテナからも開始できます。次のようになります。

さらに、次のようになります。

次の図は、バインディング・コンテナの格納階層を詳細に示しています。アプリケーションで使用可能なバインディング・コンテキストおよびデータ・バインディング・オブジェクトの定義は、クライアント・プロジェクトのレベルで、XMLベースのファイルにより指定する点に注意してください。

Oracle ADFバインディング・コンテキスト・ブロック・ダイアグラム

イテレータ・バインディングのオブジェクト階層パスを介して、イテレータ・バインディングはデータ・コレクションにアクセスし、データ・オブジェクトを反復します。一方、値バインディング・オブジェクトにより、UIコンポーネントは、反復されているコレクションの現在のデータ・オブジェクトを表示または更新できます。

たとえば、WebページまたはJavaパネルのソースで、UIコンポーネントの値バインディング定義は、ページまたはパネルのイテレータ・バインディング・オブジェクトを参照します。イテレータ・バインディング・オブジェクトはデータ・コントロールを順に参照し、データ・アクセス・パスを完成させて、Oracle ADFモデルがオブジェクト階層を横断できるようにします。

  1. コントロール・バインディングで受信されるイベント(データのレンダリングなど)から開始します。
  2. 最終的にビジネス・サービスと対話する、バインディング・コンテキストのデータ・コントロールに戻ります。

注意: 上の説明は、WebアプリケーションとJavaクライアント・アプリケーションの両方に対応するように単純化されています。実際のWebアプリケーションでは、ビュー・レイヤーにディスパッチする前に、コントローラ・レイヤーがOracle ADFモデルのバインディング・コンテキストにバインドを移入します。その後、対話型Webアプリケーションの取出しモデルに従って、ビュー・レイヤーがデータを取り出し、ページに値をレンダリングします。

アプリケーションで使用可能なバインディング・コンテキストおよびデータ・バインディング・オブジェクトの定義は、次の項で説明するように、クライアント・プロジェクトのレベルで、XMLベースのファイルで指定します。

ADFバインディング・コンテキストのメタデータについて

設計時にJDeveloperを使用して、アプリケーション開発者は、ADFバインディングとADFデータ・コントロールを宣言的に定義する、一連のXMLファイルを作成できます。次の図に示すように、アプリケーションは、実行時、アプリケーション内のファイルからOracle ADFバインディング・コンテキストを作成します。

ADFファイルおよびデータ・バインディング・オブジェクトの関連の表示

クライアントのバインディング記述ファイル(.cpx)は、クライアントのバインディング・コンテナ定義ファイル(.xml)内のバインディング定義を参照します。また.cpxファイルには、特定のビジネス・サービスに使用するデータ・コントロール・ファクトリを指定したデータ・コントロール記述ファイル(.dcx)への参照も含まれています。これらのファイルの詳細は、「ADF固有のプロジェクト・ファイルについて」を参照してください。

設計時には、データ・コントロール・パレット、ビジュアル・エディタ、構造ウィンドウおよびプロパティ・インスペクタを介して、これらのファイルを作成できます。データ・コントロール・パレットを使用して、データ・バインドされたUIコンポーネントを、表示されたWebページまたはADF Swingパネルに挿入すると、バインディング定義がドキュメントのバインディング定義ファイルに作成されます。また、ADFバインディング・コンテキストのbindingsネームスペースを介してアプリケーションが使用可能にする、バインディング・オブジェクトを参照するドキュメントに、ソース・コードが追加されます。

これらの設計時ツールの詳細は、「JDeveloperのADFアプリケーションについて」を参照してください。

Oracle ADFモデルAPIの概要

これらのオブジェクトは、具体的には、ADFモデル・レイヤー内で、ビジネス・サービスへのランタイム・アクセスを提供します。

バインディング・コンテキスト・オブジェクト(oracle.adf.model.BindingContext
クライアント・アプリケーションで使用する共通ネームスペースを定義し、便利なルート名によってすべてのモデル・オブジェクトを公開できます。それぞれのWebページやJavaパネルは、変数名bindingの定義を使用するバインディング・コンテキストに登録されます。
データ・コントロール・インタフェース(oracle.adf.model.binding.DCDataControl
クライアント・アプリケーションにモデル・オブジェクトへのインタフェースを提供します。各ビジネス・サービス構成のモデル・オブジェクトをラップするには、1つのデータ・コントロールが必要です。また、JavaBeansモデル・オブジェクトの場合、プログラムによるアクセスが必要なときは、開発者は、ネイティブ・オブジェクトに直接アクセスできます。
バインディング・コンテナ・オブジェクト(oracle.adf.model.binding.DCBindingContainer
イテレータ・バインディングやコントロール・バインディングなどの、データ・バインディング・オブジェクトのコンテナを定義します。WebページやJavaパネルごとに、1つのバインディング・コンテナが作成されます。ただし、同じデータを共有する場合は、複数のページとパネルで再利用される場合があります。また、バインディング・コンテナ・オブジェクトによって、ページやパネルをデータ入力モードで使用するか、問合せモードで使用するかを指定できます。
イテレータ・バインディング・オブジェクト(oracle.adf.model.binding.DCIteratorBinding
関連付けられたビジネス・サービス行イテレータから生成されるイベントを処理し、現在の行を個々のコントロール・バインディングに送信して現在のデータを表示します。イテレータ・バインディングは、Webページに表示する行数を指定できます。
コントロール・バインディング・オブジェクト(oracle.jbo.uicli.binding.JUControlBinding
特定のUIコンポーネントが、対応するビジネス・サービスと対話する方法を定義します。たとえば、コントロール・バインディングの選択に応じて、テキスト・フィールドは、Oracle ADF Business Componentsのビュー・オブジェクト属性にバインドされ、編集可能フィールドまたは静的ラベルとして表示されます。あるいは、ビジネス・サービス属性が値の列挙リストを定義していると、バインドされたUIコンポーネントは、静的なリスト、単一選択リストまたは複数選択リストを表示します。その他、表やグラフなどの、より複雑なUIコンポーネントは、固有のコントロール・バインディングによってもサポートされます。
アクション・バインディング・オブジェクト(oracle.jbo.uicli.binding.JUCtrlActionBinding
実行時、ユーザーがボタン・コントロールを使用してアクションを起動した場合、アクション・バインディングはOracle ADFバインディング・コンテキストにアクセスし、選択されたコレクションのデータ・オブジェクトに対して指定されたアクションを起動します。アクション・バインディングは、コントローラに渡すパラメータを受け取り、処理できます。

Oracle ADFでのデータ・コントロールの詳細は、次のトピックを参照してください。

データ・バインディングのカスタマイズの詳細は、次のトピックを参照してください。

モデル1形式またはモデル2形式のWebアプリケーションの作成方法の詳細は、次のトピックを参照してください。