この章の内容は次のとおりです。
ADFモデルは宣言的なフレームワークであり、これにはビジネス・サービス間の抽象化レイヤー、およびエンタープライズ・アプリケーションのビュー・レイヤーとコントローラ・レイヤーが用意されています。このエンタープライズ・アプリケーションは、それらのレイヤー内のコンポーネントが相互作用する方法を標準化します。図3-1は、ADFモデルがエンタープライズ・アプリケーションにどのように適合しているかを示しています。
図3-1 ADFモデルの全体のアプリケーション・アーキテクチャ
ADFモデルには、UI開発者とアプリケーション・ロジックの開発者の両方に利点となる機能が備わっています。
UI開発者にとってのコアな利点は、次のとおりです。
JDeveloperの使用による、ドラッグアンドドロップでのデータバインドされたコンポーネントの作成、およびビジュアル・エディタでのバインディングの構成。
ユーザー・インタフェースに追加できる、組込みレコード・ナビゲーション操作およびCRUD操作。
バインディングに対するJSF式言語(EL)の標準の使用。この場合、基礎となるビジネス・サービスの実装について理解する必要はありません。
ビジネス・サービスを様々なユーザー・インタフェースにバインドする機能。これには、ADF Facesコンポーネント、JSFページとJSPページ、Microsoft Excelスプレッドシート(ADFデスクトップ統合経由)などが含まれます。
アプリケーション・ロジックおよびデータ・モデルに重点を置いた開発者にとってのコアな利点は、次のとおりです。
ビジネス・サービスとビュー・レイヤー間の標準的な相互作用を処理するためにJavaコードを記述する必要がない。
検証ルール、UIヒント、デフォルト属性値、およびその他のビジネス・ロジックを、ビジネス・サービス自体のコードを変更せずにビジネス・サービスにメタデータとして宣言的に追加する機能。データ・モデルに対するこれらの宣言的拡張は、データ・コントロールから作成されたどのコンポーネントにも伝播されます。
複数のタイプのビジネス・サービスと同様に連動する機能。ADFビジネス・コンポーネント、EJBセッション・ビーン、単純なJavaオブジェクト、Webサービス、およびその他のタイプのサービスに対するADFモデル・データ・コントロールがあります。
ADFモデルは、次の主要な機能で構成されています。
データ・コントロール。関連するプロパティ、メソッド、タイプに関する情報など、サービスの操作とデータ・コレクションを表す標準のメタデータ・インタフェースを使用して、ビジネス・サービスの実装テクノロジを抽象化します。
宣言的バインディング。データ・コントロールにより公開されているサービスをUIコンポーネントにバインドするために使用します。
この項では、データ・コントロールと宣言的バインディングがADFアプリケーション内でどのように機能するかについて概説します。
ADFモデルはMVC (model-view-controller)デザイン・パターンを構築し、ここではアプリケーションのデータ・モデルのコード、ビジュアル・インタフェース、およびアプリケーション・フローがすべて区切られています。この分割により、複数のタイプのクライアント・ディスプレイで同じビジネス情報を使用できます。また、アプリケーションの異なるレイヤーで作業する開発者の責任の明確化に役立ちます。
基本のMVCアーキテクチャでは、図3-2に示すように、モデル・レイヤーはビジネス・サービスで構成されており、ビジネス・サービスはデータとやり取りします。このアーキテクチャでフレームワークの支援がない場合、ビジネス・サービス、コントローラおよびビュー・コンポーネントをコード化して、相互に適切にやり取りさせる必要があります。
図3-2 基本のMVCアーキテクチャ
ADFモデルをアプリケーションで使用する場合にはJavaコードを記述する必要がなくなりますが、そうしない場合にはMVCレイヤーの調整が必要になります。同様に、UI開発者はビジネス・サービスの実装の詳細について懸念する必要がなくなります。図3-3に示すように、ADFモデルはビジネス・サービスとアプリケーションのビューおよびコントローラ部分をつなぐパイプとして機能し、ビューとビジネス・サービスの間にバインディングを作成する標準的な方法を提示します。
図3-3 ADFモデルのMVCアーキテクチャ
JDeveloperで、データ・サービスとUIコンポーネント間に宣言的バインディングを作成するには、項目を「データ・コントロール」パネルから「JSF」ページなどの特定のUIテクノロジのビジュアル・エディタにドラッグします。宣言的バインディングでは、データ・コントロール、コントローラ、およびUIレイヤーの間で調整が行われます。
ADFデータ・バインディングは、ADFデータ・コントロールに宣言的にバインドできるようにすることにより、JSFデータ・バインディングを拡張します。標準的なJSFアプリケーションでは、マネージドBeanを作成してから、JSFページ・コードでそれらに対するEL式参照を作成します。ただし、ADFモデルを使用するアプリケーションでは、マネージドBeanのかわりにXML構成ファイルを使用できます。これらのXMLファイルのバインディング・コードおよび「JSF」ページのEL式は、オブジェクトを「データ・コントロール」パネルからページへドラッグする際に自動的に生成されます。また、これらのファイルのバインディングを手動で追加、削除および変更することも可能です。
ADFモデルは、次のコンポーネントで構成されています。
データ・コントロール
宣言的バインディング
使用するビジネス・サービスのタイプに応じて、異なったタイプのデータ・コントロールがあります。データ・コントロールの主要なタイプは次のとおりです。
EJB、プレーンJavaクラス(POJO)、SOAPベースのWebサービス、RESTful Webサービスなどの一般的なビジネス・サービスに向けた、アダプタ・データ・コントロール
ADFビジネス・コンポーネント・アプリケーション・モジュールに基づいたデータ・コントロール
アダプタ・データ・コントロールは、その名前からわかるように、インタフェースを標準的な方法でバインディング・レイヤーに公開する非ADFビジネス・サービス用アダプタとして機能します。
アダプタ・データ・コントロールは、JDeveloperで次のタイプのサービスに対して使用できます。
EJBセッションBean
Bean (プレーンJavaオブジェクト)
Webサービス(SOAPベースおよびRESTベース)
URLサービス
JMX
また、プレースホルダ・データ・コントロールもあり、これを使用するとUI開発者は実際のビジネス・サービスが使用可能になる前に、データバインドされたUIコンポーネントを作成する目的でデータ・コントロールのモックアップを作成できます。
データ・コントロールを作成した後、開発者は、宣言的メタデータでサービスを構成するために、データ・コントロールに含まれている個々のサービスに対してデータ・コントロール構造ファイルを作成することもできます。これらの構造ファイルでの構成の可能性は、ADFビジネス・コンポーネント・ビュー・オブジェクトで実行可能な宣言的構成のタイプを反映しています。
次に示す項目は、アダプタ・データ・コントロールに追加できるメタデータのタイプの一部です。
属性のデフォルト値。
一時属性。
属性に対するUIヒント。
検証ルール(比較操作のテンプレート、範囲、長さ、正規表現またはGroovy式に基づいてルールを記述できるかどうかなど)。
指定基準。これを使用すると、事前に選択した部分検索基準に基づいてUI検索コンポーネントを作成できます。指定基準はJPAベースのデータ・コントロールでのみ使用できます。
値リスト(LOV)コンポーネント。これにより、UI開発者はデータ・ソース内で指定された表によって移入されたリスト・コンポーネントを作成できます。
アダプタ・データ・コントロールを作成すると、DataControls.dcx
という名前のデータ・コントロール定義ファイルが作成されます。それ以降、データ・コントロールで表現されたオブジェクトの宣言的メタデータを追加すると、XMLファイルが生成されてそのメタデータが保持されます。
ADFビジネス・コンポーネントのサービスは、ADFモデルに直接統合されます。ADFビジネス・コンポーネント・アプリケーション内のデータ・コントロールは、1つまたは複数のアプリケーション・モジュールで設定したデータ・モデルから導出されます。アプリケーション・モジュールによりカプセル化されたビュー・オブジェクトは、ビジネス・サービスを表し、宣言的にもプログラムによっても構成できます。ビュー・オブジェクトに使用できる宣言的メタデータのタイプには、アダプタ・データ・コントロールで使用可能なすべてのタイプのメタデータ、およびビュー・オブジェクトに固有のその他のメタデータが含まれます。
アプリケーション・モジュールおよびビュー・オブジェクトの詳細は、「ADFビジネス・コンポーネントの主要コンポーネント」を参照してください。
宣言的バインディングには、EL式またはJavaコードを使用した、ビュー・レイヤーからモデル・レイヤーへのコールの方法が用意されています。
バインディングには次の3つのカテゴリがあります。
値バインディング。データを表示するUIコンポーネントで使用します。ツリー、リストおよびその他のコンポーネントには、値バインディング・オブジェクトのサブタイプがあります。
アクション・バインディング。ボタンおよびリンクをサービス・メソッドおよび操作にバインドする際に使用します。
実行可能なバインディング。これにはイテレータ・バインディングが含まれ、通常は問合せや行の現行性の管理など、バックグラウンド・タスクに関与します。
これらのバインディング・オブジェクトはページ定義ファイルで定義されます。ページ定義ファイルは、「データ・コントロール」パネルを使用してデータバインドされたコンポーネントを作成すると自動的に作成および更新されます。デフォルトでは、生成された定義ファイル名はその対応Webページの名前を付け、pageDef
を追加し、xml
拡張子を使用します。各ページにページ定義ファイルが1つあります。
各ページのバインディング・オブジェクトは、データ・コントロール・オブジェクトを参照してUIコンポーネントにデータを提供します。実行時には、バインディング・オブジェクトはバインディング・コンテナでインスタンス化されます。EL名前空間bindings
に基づいた式を使用して、ページからその対応バインディング・コンテナにアクセスできます。そのような式では、常に、現在のページのバインディング・コンテナに対して評価されます。標準の式では、#{bindings.
BindingObject
.
propertyName
}
という形式になります。ここでは、BindingObject
はページ定義ファイルで定義されたオブジェクトまたは属性を参照し、propertyName
は標準ADFバインディング・プロパティを参照します。たとえば、#{bindings.Phone.inputValue}
はPhone
属性の値を返します。
すべてのアプリケーションのバインディング・コンテナとそのデータ・コントロールへの参照は、組み合わさって、アプリケーションのバインディング・コンテキストを形成します。このバインディング・コンテキストは、デザインタイムにDataBindings.cpx
ファイルによって表され、アプリケーションのUIプロジェクトに配置されます。
ADFモデル・レイヤーは実行時に次の操作を実行します。
DataBindings.cpx
ファイルを読み取り、図3-4に示すように、リストに記載されたページ定義ファイルおよびそれらがマップされたデータ・コントロールに基づいて、バインディング・コンテキストを設定します。
ユーザー・インタフェースとビジネス・サービスの間に双方向の接続を作成するために、バインディングをインスタンス化します。
図3-4 データ・バインディングで使用されるファイル
図3-5 はデータ・コントロール、宣言的バインディング、およびビュー・レイヤー間の接続を示しています。
図3-5 ADFモデルを使用した、UIコンポーネントへのデータ・ソースのバインディング
この項では、ADFモデルと連動するためのプロセス・フローについて説明します。このプロセスは、ADFビジネス・コンポーネントを使用しているか、その他のタイプのデータ・コントロールを使用しているかによって異なります。
ADFビジネス・コンポーネントでADFモデルを使用する場合は、単にビジネス・コンポーネントを構築します。詳細は、「ADFビジネス・コンポーネント・プロセス・フローの概要」を参照してください。
非ADFビジネス・サービスでADFモデルを使用する場合の基本的な手順は次のとおりです。
JDeveloperで、そのアプリケーション用のアプリケーション・ワークスペースを作成します。
アプリケーション・ワークスペースで、データ・コントロールの基準となるビジネス・サービスを作成またはインポートします。
これらのサービスには、EJBセッション・ファサード、プレーンJavaオブジェクト(POJO)、Webサービスまたはデータ・コントロールがあるその他のタイプのサービスが含まれます。サービスを作成するには、データベース、URL、またはスキーマへの接続も必要となる場合があります。
JDeveloperの「新規ギャラリ」で使用可能なウィザードを使用して、ビジネス・サービスのデータ・コントロールを作成します。
オプションで、JDeveloperのビジュアル・エディタを使用して、データ・コントロールでカプセル化されたサービスのビジネス・ルールを宣言的に指定します。
オプションで、JPAベースのデータ・コントロールに対し、ADFモデル・テスターを使用してビジネス・サービスをテストします。
「データ・コントロール」パネルと様々なバインディング・エディタを使用して、データバインドされたコンポーネントをビュー・レイヤーに作成します。
次のリソースに、アプリケーションのADFモデルの使用に関する詳細が記載されています。
アダプタ・データ・コントロールの作成と構成の詳細は、『Oracle ADFデータ・コントロールによるアプリケーションの開発』を参照してください。
ADFビジネス・コンポーネントを使用したデータ・モデルの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』.の「アプリケーション・モジュールによるビジネス・サービスの実装」を参照してください。
ADFモデルのデータ・バインディングを使用したユーザー・インタフェース作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「データバインドされたWebユーザー・インタフェースの作成」を参照してください。
データ・コントロールとデータ・バインディングに関連したJavadocドキュメントは、Oracle ADFモデルのJava APIリファレンスを参照してください。