プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Application Development Frameworkの理解
12c (12.2.1.3.0)
E90372-01
目次へ移動
目次

前
次
次へ

3 ADFモデル

この章では、データ・コントロール、宣言的バインディング、ADFバインド・コンテキストなど、ADFモデルのテクノロジの概要を説明し、それらのコンポーネントが機能豊富なエンタープライズ・アプリケーションの他の部分と連動する方法を示します。

この章の内容は次のとおりです。

3.1 ADFモデルについて

Oracle ADFのアーキテクチャは、Model-View-Controller (MVC)デザイン・パターンに基づいています。モデル・レイヤーは、ADFモデルによってサポートされます。これは、ビュー・レイヤーのユーザー・インタフェース・コンポーネントとモデル・レイヤーのビジネス・サービスをバインドする宣言的なフレームワークであり、JDeveloperツールと統合されます。

ADFモデルは宣言的なフレームワークであり、これにはビジネス・サービス間の抽象化レイヤー、およびエンタープライズ・アプリケーションのビュー・レイヤーとコントローラ・レイヤーが用意されています。このエンタープライズ・アプリケーションは、それらのレイヤー内のコンポーネントが相互作用する方法を標準化します。図3-1は、ADFモデルがエンタープライズ・アプリケーションにどのように適合しているかを示しています。

図3-1 ADFモデルの全体のアプリケーション・アーキテクチャ

図3-1の説明が続きます
「図3-1 ADFモデルの全体のアプリケーション・アーキテクチャ」の説明

3.2 ADFモデルのコアな利点

JDeveloperツールとの緊密な統合により、Fusion Webアプリケーションのモデル・レイヤーの構築が簡略化され、ユーザー・インタフェースとビジネス・サービスのデータとのバインドがサポートされます。

ADFモデルには、UI開発者とアプリケーション・ロジックの開発者の両方に利点となる機能が備わっています。

UI開発者にとってのコアな利点は、次のとおりです。

  • JDeveloperの使用による、ドラッグアンドドロップでのデータバインドされたコンポーネントの作成、およびビジュアル・エディタでのバインディングの構成。

  • ユーザー・インタフェースに追加できる、組込みレコード・ナビゲーション操作およびCRUD操作。

  • バインディングに対するJSF式言語(EL)の標準の使用。この場合、基礎となるビジネス・サービスの実装について理解する必要はありません。

  • ビジネス・サービスを様々なユーザー・インタフェースにバインドする機能。これには、ADF Facesコンポーネント、JSFページとJSPページ、Microsoft Excelスプレッドシート(ADFデスクトップ統合経由)などが含まれます。

アプリケーション・ロジックおよびデータ・モデルに重点を置いた開発者にとってのコアな利点は、次のとおりです。

  • ビジネス・サービスとビュー・レイヤー間の標準的な相互作用を処理するためにJavaコードを記述する必要がない。

  • 検証ルール、UIヒント、デフォルト属性値、およびその他のビジネス・ロジックを、ビジネス・サービス自体のコードを変更せずにビジネス・サービスにメタデータとして宣言的に追加する機能。データ・モデルに対するこれらの宣言的拡張は、データ・コントロールから作成されたどのコンポーネントにも伝播されます。

  • 複数のタイプのビジネス・サービスと同様に連動する機能。ADFビジネス・コンポーネント、EJBセッション・ビーン、単純なJavaオブジェクト、Webサービス、およびその他のタイプのサービスに対するADFモデル・データ・コントロールがあります。

3.3 ADFモデルの主要概念

ADFモデル・フレームワークでは、ビジネス・サービスをデータ・コレクションおよびメソッド操作としてFusion Webアプリケーションのビュー・レイヤーとコントローラ・レイヤーに公開することがサポートされています。このフレームワークでは、アプリケーション実行時にバインディング・オブジェクトが作成され、CRUD (作成、読取り、更新、削除)操作およびメソッド実行が可能になります。

ADFモデルは、次の主要な機能で構成されています。

  • データ・コントロール。関連するプロパティ、メソッド、タイプに関する情報など、サービスの操作とデータ・コレクションを表す標準のメタデータ・インタフェースを使用して、ビジネス・サービスの実装テクノロジを抽象化します。

  • 宣言的バインディング。データ・コントロールにより公開されているサービスをUIコンポーネントにバインドするために使用します。

この項では、データ・コントロールと宣言的バインディングがADFアプリケーション内でどのように機能するかについて概説します。

3.3.1 アプリケーションのモデル・レイヤーの抽象化

ADFモデルはMVC (model-view-controller)デザイン・パターンを構築し、ここではアプリケーションのデータ・モデルのコード、ビジュアル・インタフェース、およびアプリケーション・フローがすべて区切られています。この分割により、複数のタイプのクライアント・ディスプレイで同じビジネス情報を使用できます。また、アプリケーションの異なるレイヤーで作業する開発者の責任の明確化に役立ちます。

基本のMVCアーキテクチャでは、図3-2に示すように、モデル・レイヤーはビジネス・サービスで構成されており、ビジネス・サービスはデータとやり取りします。このアーキテクチャでフレームワークの支援がない場合、ビジネス・サービス、コントローラおよびビュー・コンポーネントをコード化して、相互に適切にやり取りさせる必要があります。

図3-2 基本のMVCアーキテクチャ

図3-2の説明が続きます
「図3-2 基本のMVCアーキテクチャ」の説明

ADFモデルをアプリケーションで使用する場合にはJavaコードを記述する必要がなくなりますが、そうしない場合にはMVCレイヤーの調整が必要になります。同様に、UI開発者はビジネス・サービスの実装の詳細について懸念する必要がなくなります。図3-3に示すように、ADFモデルはビジネス・サービスとアプリケーションのビューおよびコントローラ部分をつなぐパイプとして機能し、ビューとビジネス・サービスの間にバインディングを作成する標準的な方法を提示します。

図3-3 ADFモデルのMVCアーキテクチャ

図3-3の説明が続きます
「図3-3 ADFモデルのMVCアーキテクチャ」の説明

3.3.2 宣言的なデータ・バインディング

JDeveloperで、データ・サービスとUIコンポーネント間に宣言的バインディングを作成するには、項目を「データ・コントロール」パネルから「JSF」ページなどの特定のUIテクノロジのビジュアル・エディタにドラッグします。宣言的バインディングでは、データ・コントロール、コントローラ、およびUIレイヤーの間で調整が行われます。

ADFデータ・バインディングは、ADFデータ・コントロールに宣言的にバインドできるようにすることにより、JSFデータ・バインディングを拡張します。標準的なJSFアプリケーションでは、マネージドBeanを作成してから、JSFページ・コードでそれらに対するEL式参照を作成します。ただし、ADFモデルを使用するアプリケーションでは、マネージドBeanのかわりにXML構成ファイルを使用できます。これらのXMLファイルのバインディング・コードおよび「JSF」ページのEL式は、オブジェクトを「データ・コントロール」パネルからページへドラッグする際に自動的に生成されます。また、これらのファイルのバインディングを手動で追加、削除および変更することも可能です。

3.4 ADFモデルの主要コンポーネント

Fusion Webアプリケーションのモデル・レイヤーは、ビジネス・サービスをデータ・コレクションおよびメソッド操作としてビュー・レイヤーとコントローラ・レイヤーに公開するADFデータ・コントロールで構成されています。このような公開により、宣言的なデータ・バインディング定義が生成されます。この定義に基づいて、アプリケーション実行時にバインディング・オブジェクトが作成され、CRUD (作成、読取り、更新、削除)操作およびメソッド実行が可能になります。

ADFモデルは、次のコンポーネントで構成されています。

  • データ・コントロール

  • 宣言的バインディング

3.4.1 データ・コントロール

使用するビジネス・サービスのタイプに応じて、異なったタイプのデータ・コントロールがあります。データ・コントロールの主要なタイプは次のとおりです。

  • EJB、プレーンJavaクラス(POJO)、SOAPベースのWebサービス、RESTful Webサービスなどの一般的なビジネス・サービスに向けた、アダプタ・データ・コントロール

  • ADFビジネス・コンポーネント・アプリケーション・モジュールに基づいたデータ・コントロール

3.4.1.1 アダプタ・データ・コントロール

アダプタ・データ・コントロールは、その名前からわかるように、インタフェースを標準的な方法でバインディング・レイヤーに公開する非ADFビジネス・サービス用アダプタとして機能します。

アダプタ・データ・コントロールは、JDeveloperで次のタイプのサービスに対して使用できます。

  • EJBセッションBean

  • Bean (プレーンJavaオブジェクト)

  • Webサービス(SOAPベースおよびRESTベース)

  • URLサービス

  • JMX

また、プレースホルダ・データ・コントロールもあり、これを使用するとUI開発者は実際のビジネス・サービスが使用可能になる前に、データバインドされたUIコンポーネントを作成する目的でデータ・コントロールのモックアップを作成できます。

データ・コントロールを作成した後、開発者は、宣言的メタデータでサービスを構成するために、データ・コントロールに含まれている個々のサービスに対してデータ・コントロール構造ファイルを作成することもできます。これらの構造ファイルでの構成の可能性は、ADFビジネス・コンポーネント・ビュー・オブジェクトで実行可能な宣言的構成のタイプを反映しています。

次に示す項目は、アダプタ・データ・コントロールに追加できるメタデータのタイプの一部です。

  • 属性のデフォルト値。

  • 一時属性。

  • 属性に対するUIヒント。

  • 検証ルール(比較操作のテンプレート、範囲、長さ、正規表現またはGroovy式に基づいてルールを記述できるかどうかなど)。

  • 指定基準。これを使用すると、事前に選択した部分検索基準に基づいてUI検索コンポーネントを作成できます。指定基準はJPAベースのデータ・コントロールでのみ使用できます。

  • 値リスト(LOV)コンポーネント。これにより、UI開発者はデータ・ソース内で指定された表によって移入されたリスト・コンポーネントを作成できます。

アダプタ・データ・コントロールを作成すると、DataControls.dcxという名前のデータ・コントロール定義ファイルが作成されます。それ以降、データ・コントロールで表現されたオブジェクトの宣言的メタデータを追加すると、XMLファイルが生成されてそのメタデータが保持されます。

3.4.1.2 ADFビジネス・コンポーネント

ADFビジネス・コンポーネントのサービスは、ADFモデルに直接統合されます。ADFビジネス・コンポーネント・アプリケーション内のデータ・コントロールは、1つまたは複数のアプリケーション・モジュールで設定したデータ・モデルから導出されます。アプリケーション・モジュールによりカプセル化されたビュー・オブジェクトは、ビジネス・サービスを表し、宣言的にもプログラムによっても構成できます。ビュー・オブジェクトに使用できる宣言的メタデータのタイプには、アダプタ・データ・コントロールで使用可能なすべてのタイプのメタデータ、およびビュー・オブジェクトに固有のその他のメタデータが含まれます。

アプリケーション・モジュールおよびビュー・オブジェクトの詳細は、「ADFビジネス・コンポーネントの主要コンポーネント」を参照してください。

3.4.2 宣言的バインディング

宣言的バインディングには、EL式またはJavaコードを使用した、ビュー・レイヤーからモデル・レイヤーへのコールの方法が用意されています。

バインディングには次の3つのカテゴリがあります。

  • 値バインディング。データを表示するUIコンポーネントで使用します。ツリー、リストおよびその他のコンポーネントには、値バインディング・オブジェクトのサブタイプがあります。

  • アクション・バインディング。ボタンおよびリンクをサービス・メソッドおよび操作にバインドする際に使用します。

  • 実行可能なバインディング。これにはイテレータ・バインディングが含まれ、通常は問合せや行の現行性の管理など、バックグラウンド・タスクに関与します。

これらのバインディング・オブジェクトはページ定義ファイルで定義されます。ページ定義ファイルは、「データ・コントロール」パネルを使用してデータバインドされたコンポーネントを作成すると自動的に作成および更新されます。デフォルトでは、生成された定義ファイル名はその対応Webページの名前を付け、pageDefを追加し、xml拡張子を使用します。各ページにページ定義ファイルが1つあります。

各ページのバインディング・オブジェクトは、データ・コントロール・オブジェクトを参照してUIコンポーネントにデータを提供します。実行時には、バインディング・オブジェクトはバインディング・コンテナでインスタンス化されます。EL名前空間bindingsに基づいた式を使用して、ページからその対応バインディング・コンテナにアクセスできます。そのような式では、常に、現在のページのバインディング・コンテナに対して評価されます。標準の式では、#{bindings.BindingObject.propertyName}という形式になります。ここでは、BindingObjectはページ定義ファイルで定義されたオブジェクトまたは属性を参照し、propertyNameは標準ADFバインディング・プロパティを参照します。たとえば、#{bindings.Phone.inputValue}Phone属性の値を返します。

すべてのアプリケーションのバインディング・コンテナとそのデータ・コントロールへの参照は、組み合わさって、アプリケーションのバインディング・コンテキストを形成します。このバインディング・コンテキストは、デザインタイムにDataBindings.cpxファイルによって表され、アプリケーションのUIプロジェクトに配置されます。

3.5 実行時のADFモデル

ADFモデル・フレームワークでは、アプリケーション実行時にバインディング・オブジェクトが作成され、Fusion Webアプリケーションのビジネス・サービスに対するCRUD (作成、読取り、更新、削除)操作およびメソッド実行が可能になります。

ADFモデル・レイヤーは実行時に次の操作を実行します。

  • DataBindings.cpxファイルを読み取り、図3-4に示すように、リストに記載されたページ定義ファイルおよびそれらがマップされたデータ・コントロールに基づいて、バインディング・コンテキストを設定します。

  • ユーザー・インタフェースとビジネス・サービスの間に双方向の接続を作成するために、バインディングをインスタンス化します。

図3-4 データ・バインディングで使用されるファイル

図3-4の説明が続きます
「図3-4 データ・バインディングで使用されるファイル」の説明

図3-5 はデータ・コントロール、宣言的バインディング、およびビュー・レイヤー間の接続を示しています。

図3-5 ADFモデルを使用した、UIコンポーネントへのデータ・ソースのバインディング

図3-5の説明が続きます
「図3-5 ADFモデルを使用した、UIコンポーネントへのデータ・ソースのバインディング」の説明

3.6 ADFモデルのプロセス・フローの概要

Oracle ADFを使用して開発したFusion Webアプリケーションのユーザー・インタフェース・コンポーネントの宣言的なデータ・バインディングを作成する場合、JDeveloperツールでサポートされている段階的なプロセスに従います。

この項では、ADFモデルと連動するためのプロセス・フローについて説明します。このプロセスは、ADFビジネス・コンポーネントを使用しているか、その他のタイプのデータ・コントロールを使用しているかによって異なります。

3.6.1 ADFビジネス・コンポーネントでADFモデルを使用するための開発手順

ADFビジネス・コンポーネントでADFモデルを使用する場合は、単にビジネス・コンポーネントを構築します。詳細は、「ADFビジネス・コンポーネント・プロセス・フローの概要」を参照してください。

3.6.2 非ADFビジネス・サービスでADFモデルを使用するための開発手順

非ADFビジネス・サービスでADFモデルを使用する場合の基本的な手順は次のとおりです。

  1. JDeveloperで、そのアプリケーション用のアプリケーション・ワークスペースを作成します。

  2. アプリケーション・ワークスペースで、データ・コントロールの基準となるビジネス・サービスを作成またはインポートします。

    これらのサービスには、EJBセッション・ファサード、プレーンJavaオブジェクト(POJO)、Webサービスまたはデータ・コントロールがあるその他のタイプのサービスが含まれます。サービスを作成するには、データベース、URL、またはスキーマへの接続も必要となる場合があります。

  3. JDeveloperの「新規ギャラリ」で使用可能なウィザードを使用して、ビジネス・サービスのデータ・コントロールを作成します。

  4. オプションで、JDeveloperのビジュアル・エディタを使用して、データ・コントロールでカプセル化されたサービスのビジネス・ルールを宣言的に指定します。

  5. オプションで、JPAベースのデータ・コントロールに対し、ADFモデル・テスターを使用してビジネス・サービスをテストします。

  6. 「データ・コントロール」パネルと様々なバインディング・エディタを使用して、データバインドされたコンポーネントをビュー・レイヤーに作成します。

3.7 ADFモデルの詳細について

Fusion Webアプリケーションのモデル・レイヤーのデータ・バインディングを構成する準備ができたら、Oracle Fusion Middlewareドキュメント・ライブラリのこれらのタスクに対応するドキュメントを参照してください。

次のリソースに、アプリケーションのADFモデルの使用に関する詳細が記載されています。

  • アダプタ・データ・コントロールの作成と構成の詳細は、『Oracle ADFデータ・コントロールによるアプリケーションの開発』の「ADFモデルの概要」を参照してください。

  • ADFビジネス・コンポーネントを使用したデータ・モデルの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「アプリケーション・モジュールによるビジネス・サービスの実装」を参照してください。

  • ADFモデルのデータ・バインディングを使用したユーザー・インタフェース作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「データバインドされたWebユーザー・インタフェースの作成」を参照してください。

  • データ・コントロールとデータ・バインディングに関連したJavadocドキュメントは、Oracle ADFモデルのJava APIリファレンスを参照してください。