この章では、データ・コントロールの簡単な概要と、Oracle ADFアプリケーションによるビジネス・サービスからユーザー・インタフェースへのデータのバインディングについて説明します。データ・コントロールのタイプについて説明した後、これらのデータ・コントロールを使用した、データバインドされたUIコンポーネントの作成について説明します。
この章の内容は次のとおりです。
ADFモデルは宣言的なデータ・バインディング機能で、コードを使用せずにユーザー・インタフェースをビジネス・サービスにバインドする統一されたアプローチを提供します。ADFモデルによって、ユーザー・インタフェース・テクノロジとビジネス・サービス実装の分離を可能にする2つの概念(データ・コントロールと宣言的ADFバインディング)が実装されています。図1-1は、アプリケーション・アーキテクチャ内でADFモデルの各要素が占める位置を示しています。
データ・コントロールでは、関連するプロパティ、メソッド、タイプの情報を含め、サービスの操作とデータ・コレクションを表す標準のメタデータ・インタフェースを使用してビジネス・サービスの実装技術を抽象化します。これらの操作とコレクションは、データ・コントロール・オブジェクトとして公開されます。開発者とUI設計者は、これらを使用してデータバインドされたUIコンポーネントを作成でき、基礎となるビジネス・サービスのタイプについて考慮する必要はほとんどありません。
宣言的なバインディングによって、データ・コントロール内のデータ・コレクションからのデータ・アクセスの詳細と、その操作の実行が抽象化されます。宣言的なバインディング・オブジェクトには、次の3つの基本的なカテゴリがあります。
値バインディング: データを表示するUIコンポーネントで使用します。値のバインディングは、単純なテキスト・フィールドで使用する最も基本的なものから、リスト、表、ツリーでのUIコントロールのニーズをサポートするような、より高度なリスト、ツリーのバインディングまで、様々な種類があります。
アクション・バインディング: ハイパーリンクやボタンなどのUIコンポーネントで使用され、コードを記述することなく、データ・コレクションやデータ・コントロールの組込み操作またはカスタム操作を実行します。
実行可能バインディング: 実行可能バインディングには、イテレータ・バインディングなどが含まれ、データ・コレクションのスクロール処理とページング、および概要情報から詳細情報へのドリルダウンを可能にするユーザー・インタフェースを容易に作成できます。また、実行可能バインディングには、ページ内で一連のページの検索およびネストを可能にするバインディングや、操作を即時実行するためのバインディングも含まれます。
実行時に、ADFモデル・レイヤーによって、適切なXMLファイルからデータ・コントロールおよびバインディングを記述した情報が読み取られ、ユーザー・インタフェースとビジネス・サービスの双方向の結合が実装されます。
ADFモデル・レイヤーをデータのバインドに使用するには、サービスに対してデータ・コントロールを作成する必要があります。データ・コントロールが「データ・コントロール」パネルのツリー階層として表示され、ツリーの各サブノードにコレクション、操作、メソッド、属性などの要素が表されます。その後、Webページのビジュアル・エディタまたはその他のユーザー・インタフェース・コンポーネントに、それらのサブノードをドラッグ・アンド・ドロップすることにより、データバインドされたコンポーネントを作成します。データ・コントロールからサブノードをページにドラッグすると、JDeveloperによって、ページからサービスへのバインディングを表すメタデータが自動的に作成されます。
たとえば、EJBセッション・ファサードを使用するアプリケーションでは、開発者はファサードのデータ・コントロールを作成できます。その後、JDeveloperの「データ・コントロール」パネル(図1-2を参照)に表示されたデータ・コントロールの表現を使用して、セッション・ファサードに自動的にバインドされるUIコンポーネントを作成できます。
ページのUIコンポーネントをサポートするバインディングのグループは、ページ定義ファイルというページ固有のXMLファイルに記述されます。ADFモデル・レイヤーでは実行時にこのファイルが使用され、ページのバインディングがインスタンス化されます。これらのバインディングは、バインディング・コンテナと呼ばれるリクエスト・スコープ・マップに保持されます。
JSFアプリケーションでは、バインディング・コンテナは、各ページ・リクエスト時にEL式#{bindings}
を使用してアクセスできます。この式により、現在のページのバインディング・コンテナが常に評価されます。
例1-1に、フォーム内のチェック・ボックスをOrdersSessionEJBLocal
データ・コントロールのorderFilled
属性にバインディングするために使用されるコードを示します。
データ・コントロールの実装には様々なものがあり、これらは次に示すカテゴリに分けることができます。
ADFビジネス・コンポーネント・アプリケーション・モジュール
ADFビジネス・コンポーネントを使用するアプリケーションでは、アプリケーション・モジュール作成時に自動的にデータ・コントロールが作成され、データ・コントロールにはアプリケーション・モジュールの全機能が含まれます。
ADFビジネス・コンポーネント・アプリケーション・モジュールを使用するための詳細なガイドについては、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のアプリケーション・モジュールによるビジネス・サービスの実装に関する項を参照してください。
データ・コントロール・フレームワークを両方とも拡張するデータ・コントロール(「アダプタ・データ・コントロール」)
これにはEJB、Bean、Webサービス(SOAPベースおよびRESTful)、およびURLのデータ・コントロールが含まれ、これらはこのガイドの説明対象です。
Beanデータ・コントロール・タイプに基づくカスタム・データ・コントロール
データ・コントロール・フレームワークに基づき、Beanデータ・コントロールを拡張しないカスタム・データ・コントロール
アダプタ・データ・コントロール・フレームワークを拡張しないカスタム・データ・コントロール
このカテゴリは主に、アダプタ・フレームワークが開発される前に開発されたデータ・コントロールからなります。
このガイドでは主に、アダプタ・データ・コントロールの作成と使用を中心に説明しますが、情報の大部分はADFビジネス・コンポーネント・データ・コントロールにも適用されます。
次に、このガイドでは説明しないデータ・コントロールのタイプをいくつか示します。
プレースホルダ・データ・コントロール。これは空のデータ・コントロールで、まだ具体的な作業対象になるビジネス・サービスがないユーザーが、データバインドされたページを設計するために使用します。プレースホルダ・データ・コントロールを使用してデータバインドされたコンポーネントを設計し、ビジネス・サービスが提供された後、コンポーネントをこれらのビジネス・サービスに再バインドできます。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のプレースホルダ・データ・コントロールを使用したページの設計に関する項を参照してください。
JMXデータ・コントロール。これを使用して、Java Management Extension (JMX) MBeanに基づくデータ・コントロールを作成できます。
JavaBeanデータ・コントロール。Beanデータ・コントロールと混同しないでください。JavaBeanデータ・コントロールは、アダプタ・データ・コントロール・フレームワークより前に開発されたデータ・コントロール・タイプです。問合せ可能コレクションのサポートなど、後からBeanデータ・コントロールに組み込まれた主要機能の多くが備わっていません。
より広範囲のFusion Middlewareスタックに含まれる、その他のデータ・コントロール(BAMデータ・コントロールなど)。
レガシー・データ・コントロールを使用している場合は、アダプタ・データ・コントロール・フレームワークに基づく新しいデータ・コントロールへの移行を検討することをお薦めします。このフレームワークは、検証ルールや値リスト・オブジェクトなど、多数の便利な機能を備えています。アダプタ・フレームワークを使用して、新しいデータ・コントロール・タイプを最初から作成することも、既存のデータ・コントロール・タイプ(Beanデータ・コントロール・タイプなど)のいずれかを拡張することもできます。