この章では、ADF Facesフレームワークおよびコンポーネントの機能の概要を示します。ここでは、データの視覚化(DVT)コンポーネントを含むコンポーネント・セット、およびAjaxサポート、クライアント側のイベント、ユーザー・パーソナライズ、その他のメモリー有効範囲などの機能に関する情報について説明します。
この章の内容は次のとおりです。
ADF FacesはJSF Webコンポーネントの実装であり、高度なWebアプリケーションの開発者およびユーザーに強化機能を提供します。ADF Facesコンポーネントは、アプリケーション内でADFモデルやADF Controllerなど他のOracle ADF機能の有無にかかわらず使用できます。図6-1は、ADF Facesがエンタープライズ・アプリケーションにどのように適合しているかを示しています。
ADF Facesには、Webアプリケーション開発者に対する次の利点が用意されています。
機能豊富なコンポーネントの大規模なセット
ライブラリには、ジオメトリ管理レイアウト・コンポーネント、テキストおよび選択コンポーネント、ソート可能な階層データ表およびツリー、メニュー、ページ内ダイアログ、チャートやツリーマップなどのデータ視覚化コンポーネント、一般コントロールなど、150を超えるリッチ・インターネット・アプリケーション(RIA)コンポーネントが用意されています。
組込みAjaxサポート
多くのADF Facesコンポーネントには、ネイティブに実装されたAjaxスタイルの機能が備わっており、応答ユーザー・インタフェースの開発を簡易化します。たとえば、ADF Facesの表コンポーネントでは、表のスクロール、列ヘッダーのクリックによる表のソート、1つまたは複数の行の選択マークおよび表の特定の行の拡張を実行でき、すべてサーバーへのページ送信を必要とせずコーディングも不要です。
開発者がJavaScriptを記述する必要性の限定
ADF Facesは、複雑なJavaScriptの大部分をユーザーから隠します。かわりに、コンポーネントの動作は宣言的に制御します。ADF Facesを使用して、リッチで機能的、魅力的なユーザー・インタフェースを、JavaScriptの使用をまったく必要としない宣言的な方法で実装できます。
サーバーとクライアント両方で拡張されたライフサイクル
ADF Facesは、標準JSFページのリクエスト・ライフサイクルを拡張します。この例として、クライアント側の値のライフサイクル、複数のフォームを使用する必要なしに独立して送信可能な領域をページに作成できるサブフォーム・コンポーネント、処理用に送信されるページの部分を限定できる最適化されたライフサイクルなどがあります。
ユーザー駆動のパーソナライズ
多くのADF Facesコンポーネントで、ユーザーは実行時にコンポーネントの表示を変更できます。デフォルトでは、これらの変更はページ・リクエストの間有効です。ただし、変更がユーザーのセッションの間永続するようアプリケーションを構成できます。
エンドユーザーのドラッグアンドドロップ
ADF Facesフレームワークでは、ユーザーは、1つのコンポーネントを別のコンポーネントにドラッグ・アンド・ドロップすることで、データを別の場所に移動できます。
他のOracle ADFテクノロジとの統合
ADF Facesは、ADFビジネス・コンポーネント、ADFコントローラ、ADFデータ・バインディングなどの他のOracle ADFテクノロジと組み合せて使用できます。ADFテクノロジ・スタックと組み合せたADF Facesの使用の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』を参照してください。
Oracle JDeveloperとの統合された宣言的開発
JDeveloperには、ビジュアル・レイアウト・エディタ、ADF Facesコンポーネントをページにドラッグ・アンド・ドロップできる「コンポーネント」ウィンドウ、コンポーネント機能を宣言的に構成する「プロパティ」ウィンドウなどのADF Facesコンポーネントの組込み宣言的サポートが用意されています。
この項では、ADF Facesの重要事項の概要、およびそれらがADFアプリケーション内でどのように機能するかについて説明します。
ADF Facesフレームワークは、次の原理と機能に基づいています。
JavaServer Faces (JSF)仕様に従った構造
ADF Facesでは、FaceletなどのJSF機能がサポートされます。JSF 2.0に導入された一部のJSF機能は、ADF Facesでも並行して機能します。ADF FacesとJSFの間に存在する機能の重複を理解するには、http://www.oracle.com/technetwork/developer-tools/adf/learnmore/adffaces-jsf20-190927.pdf
でOTNのJavaServer Faces 2.0 Overview and Adoption Roadmap in Oracle ADF Faces and Oracle JDeveloper 11gホワイトペーパーを参照してください。
部分ページ・レンダリング(PPR)
ADF Facesの多くのコンポーネントには、AJAXスタイルの機能がネイティブで実装されている、部分ページ・レンダリングが備わっています。たとえば、別のコンポーネントにおけるユーザーのページへの入力に基づいてチャートを更新できます。ページをサーバーに送信したり、コーディングを行ったりする必要はありません。
部分ページ・ナビゲーション
ADF Facesアプリケーションは、ナビゲーションにPPRを使用できるため、ページ間をナビゲートする際にJavaScriptライブラリおよびスタイルシートを繰り返しロードする必要がなくなります。
クライアント側の検証、変換およびメッセージング
ADF Facesバリデータは、クライアント側とサーバー側の両方で動作できます。クライアント側バリデータはJavaScriptで記述され、クライアント側で捕捉された検証エラーはサーバーとの間をラウンドトリップしなくても処理できます。
追加のメモリー有効範囲
ADF Facesフレームワークには、ページ・フラグメント、ADFタスク・フローなど、その他の機能を補完する追加の共有メモリー有効範囲が備わっています。
pageFlowScope
: オブジェクトは、ユーザーが特定のタスク・フロー内で、あるページから別のページへのナビゲートを続行している間は使用できます。ユーザーが新たなブラウザ・ウィンドウを開いてナビゲートを始めた場合、そのウィンドウではウィンドウ独自のpageFlowScope
スコープが指定されます。
backingBeanScope
: ページ・フラグメントと宣言コンポーネントの場合にのみ、マネージドBeanに使用します。オブジェクトは、HTTPリクエストが送信されてから、レスポンスがクライアントに返るまでの間使用できます。このスコープは、複数のページ・フラグメントと宣言コンポーネントがページにある場合があり、値の競合を避けるために別々のスコープ・インスタンスに値を保持するために必要です。
viewScope
: オブジェクトは現在のビューのIDが変更されるまで使用できます。JSF viewScope
とは異なり、ADF FacesのviewScope
に格納されるオブジェクトは、ページのリフレッシュや同じビューIDへのリダイレクト後も残ります。
サーバー側プッシュおよびストリーミング
ADF Facesフレームワークには、ADF Facesコンポーネントのリアルタイム・データ更新を提供できるようにするサーバー側プッシュが含まれます。
アクティブなジオメトリ管理
ADF Facesには、使用可能なスクリーン領域をどの程度利用できているかをコンポーネントが判断できるようにするクライアント側ジオメトリ管理機能が用意されています。フレームワークで、レイアウト・コンポーネントにブラウザのサイズ変更アクティビティが通知され、これによってコンポーネントで子のサイズ変更が可能になります。これによって、特定のコンポーネントを拡大または縮小し、ブラウザの使用可能な領域を満たすことができます。
高度なテンプレートおよび宣言コンポーネント
ページ・テンプレートやページ・フラグメント、複数のコンポーネントで構成され、アプリケーション全体で使用できるコンポジット・コンポーネントを作成できます。
高度な視覚化コンポーネント
ADF Facesには、動的チャート、ゲージ、および基礎となるデータをリアルタイムで表示するその他のグラフィックをレンダリングできる、データ視覚化(DVT)のコンポーネントが含まれます。図6-2は、特定の製品の現在の在庫レベル(ゲージ中央のラベル0.650Kで表示)をグラフで表すゲージ・コンポーネントを示しています。
イベント処理
ADF Facesは標準JSFイベント処理手法に準拠し、完全なクライアント側イベント・モデルを提供します。
ADFスキン
ADF Facesコンポーネントのルック・アンド・フィールを決定する一種のCSSファイルである、ADFスキンは宣言的に作成または変更することが可能です。Oracleでは、Oracle ADFの複数のリリースに対応したADFスキン作成用のスタンドアロンADFスキン・エディタを提供しています。JDeveloper内からスキンを作成することも可能ですが、その場合、作成されたスキンはJDeveloperのリリースがサポートするOracle ADFのリリースに対してのみ機能します。
メッセージングおよびヘルプ
フレームワークには、ツールチップ、メッセージ、入力コンポーネントのヘルプを表示する機能、およびアプリケーションに対するグローバル・メッセージを表示する機能が用意されています。ヘルプ・フレームワークを使用すると、アプリケーション全体で再使用可能なメッセージを作成できます。Javaクラス、マネージドBean、XLIFFファイルまたは標準プロパティ・ファイルを使用して、ヘルプ・プロバイダを作成します。または、外部HTMLベースのヘルプ・システムにリンクを設定できます。
国際化
ローカライズ可能なテキスト・リソースの作成および保持のプロセスを簡素化するために、JDeveloperではリソース・バンドルを使用して、ビジュアル・エディタや「プロパティ」ウィンドウを使用して追加または編集できるコンポーネント・テキストが保存されます。さらに、ADFスキンでは、特定の地域でのアプリケーションのレンダリングを変更するために使用できる擬似クラスをサポートしています。また、異なるロケールを使用するようJSFページまたはアプリケーションを構成し、ユーザーのブラウザの言語設定に基づいて適切な言語を表示することもできます。
アクセシビリティ
ADF Facesコンポーネントには、スクリーン・リーダーなどの一連のアシスティブ・テクノロジと連携するビルトイン・アクセシビリティが備わっています。ADF Facesのアクセシビリティ監査ルールにより、アクセス可能なHTMLマークアップを使用して、アクセス可能なイメージ、表、フレーム、フォーム、エラー・メッセージおよびポップアップ・ウィンドウの作成が指示されます。
ADF Facesテクノロジの使用に関する詳細なガイドは、『Oracle ADF FacesによるWebユーザー・インタフェースの開発』を参照してください。
ADF Facesコンポーネントは、次のカテゴリに分類できます。
一般コントロール
一般コントロールには、次のタイプのコンポーネントが含まれます。
ナビゲーション・コンポーネント: ユーザーのあるページから次のページへの移動を可能にします。ADF Facesナビゲーション・コンポーネントには、ボタンとリンク、および異なるメニューのレベルを介してアクセスされる、より複雑な階層型のページ・フローを作成する機能が含まれます。さらに、ADFには、ユーザーがマルチステップ・プロセスをナビゲートする順序を構造化できるトレイン・コンポーネントが備わっています。
イメージおよびアイコン・コンポーネント: アイコンからビデオにわたる複雑なイメージを表示できます。
テキストおよび選択コンポーネント
これらのコンポーネントを使用すると、出力テキストを表示し、入力テキストを受け入れ、事前移入されたリストからのユーザーによる選択を有効にできます。これらのコンポーネントは、次のサブカテゴリに分類されています。
出力コンポーネント: テキストおよびグラフィックを表示し、ビデオや音楽クリップも再生できます。
入力コンポーネント: ユーザーによるデータの入力と、色の選択や日付の選択などのその他の情報の入力を可能にします。ADF Facesには、ユーザーが処理するデータを選択できる簡単なリストやファイル・アップロード・コンポーネントも用意されています。
値リスト(LOV)コンポーネント: 特定の値の検索やお気に入りとしてマークされている値の表示などの機能を含むモデルによって駆動されるリストからのユーザーによる選択を可能にします。このLOVコンポーネントは、あるオブジェクトの属性の移入に使用されるフィールドが、実際はデータベースの外部キー関係のように他のオブジェクトのリスト内に含まれる場合に有用です。
データ・ビュー
ADF Facesには、次のような複雑なデータを表示する多数の様々な方法が用意されています。
表およびツリー・コンポーネント: 表または展開可能なツリー形式で構造化されたデータを表示します。ADF Facesの表には、列データのソート、データのフィルタリング、行の詳細コンテンツの表示/非表示などの機能があります。ツリーには、展開/縮小動作が組み込まれています。ツリー表は、表の機能をツリーのデータ階層機能と組み合せたものです。
データ視覚化コンポーネント: ユーザーは、複雑なデータをリアルタイムで表示および分析できます。ADFデータ視覚化コンポーネントには、グラフ、ゲージ、ピボット・テーブル、地理マップ、ガント・チャート、階層ビューア、ツリーマップ、サンバーストタイムラインがあります。
問合せコンポーネント: ユーザーによるデータの問合せを可能にします。問合せコンポーネントでは、複数の検索基準、基準の動的な追加と削除、選択可能な検索演算子、すべてに一致/いずれかに一致の選択、シード済または保存済の検索、基本または拡張モードおよび検索のパーソナライズがサポートされます。
特殊表示コンポーネント: Calendarコンポーネントでは、アクティビティが日、週、月またはリスト表示に表示されます。ユーザーがアクティビティを作成、編集、削除できるポップアップ・コンポーネントを実装できます。カルーセル・コンポーネントを使用すると、スクロール可能な方法でイメージのコレクションを表示できます。
メニューとツールバー
ADF Facesには、階層式のページをナビゲートするためのタブやブレッドクラムなどのアイテムをレンダリングするナビゲーション・コンポーネントが用意されています。フレームワークで、メタデータ・ファイルとともに使用し、各ページに適切な数の階層レベルを生成するためのすべての情報と、各レベルに属するナビゲーション・アイテムを含むXMLベースのメニュー・モデルが提供されます。
レイアウト・コンポーネント
レイアウト・コンポーネントはページのレイアウトを決めるコンテナとして機能し、ADF Facesレイアウト・コンポーネントには、コンテンツを表示または非表示にできたり、セクション、リストまたは空の領域を提供するインタラクティブなコンテナ・コンポーネントも含まれます。JDeveloperにはビルトインのクイックスタート・レイアウトが用意されており、希望するページの外観に基づいて宣言的にレイアウト・コンポーネントをページに追加できます。
標準のレイアウト・コンポーネントに加えて、ADF Facesは次の特殊なレイアウト・コンポーネントも提供します。
エクスプローラ・タイプのメニューおよびツールバー・コンテナ: メニュー・バーとツールバーを作成できます。ユーザーは、メニューやツールバーを使用して、指定されたオプションのリスト(メニューの場合)またはボタン(ツールバーの場合)を選択し、アプリケーションへ変更を加えることができます。
セカンダリ・ウィンドウ: ポップアップ・ウィンドウまたはダイアログにデータを表示します。さらに、ADF Facesには、親ページから分離したポップアップ・ブラウザ・ウィンドウの作成、およびJavaScriptを使用しないそれらの相互作用の管理をサポートするダイアログ・フレームワークが用意されています。
コア構造コンポーネントおよびタグ: ドキュメント、フォーム、サブフォーム、リソースなどのページおよびレイアウトを作成するために必要なタグを提供します。
操作タグ
これらのタグはコンポーネントと連動して、ドラッグ・アンド・ドロップ、検証、各種イベント・リスナーなどの追加機能を提供します。
ADF Facesビューの作成は、次の基本的な手順で構成されます。
JDeveloperで、「新規ギャラリ」のテンプレートの1つからアプリケーション・ワークスペースを作成します。
別の方法として、アプリケーションと統合するビジネス・サービスやその他のコードが含まれる既存のアプリケーション・ワークスペースを開いて、ADF Facesコンポーネントのそのワークスペースに新規プロジェクトを追加します。
ADF Facesプロジェクトで、ページ・フローを作成します。これらを、基本JSFページ・フローまたはADF Controllerタスク・フローのいずれかにできます。
JavaServer Pages (JSP)またはFaceletsテンプレートのいずれかを使用してページを作成し、それらをページ・フローに挿入します。
「コンポーネント」ウィンドウからJSFページにADF Facesコンポーネントをドラッグ・アンド・ドロップしてページを設計し、「Properties」ウィンドウを使用してその属性を調整します。
このプロセスの一部には、コンポーネントの動作の種々の面を定義するための式言語(EL)式の作成と、その際にEL式から参照するマネージドBeanの作成が含まれる可能性があります。
JDeveloper内から統合WebLogic Serverを使用してアプリケーションのテストを実行します。
次のリソースには、アプリケーションでのADF Facesの使用に関する詳細が記載されています。
ADF FacesによるWebユーザー・インタフェースの開発
『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータバインドされたWebユーザー・インタフェースの作成に関する項
Oracle ADFスキン・エディタによるADFスキンの開発
ADF Facesに関するJDeveloperチュートリアル
Oracle ADF Facesタグ・リファレンス
Oracle ADF Facesデータ視覚化ツール・タグ・リファレンス
Oracle Technology Network上のOracle ADF Facesのページ: http://www.oracle.com/technetwork/developer-tools/adf/overview/index-092391.html
OTN (http://www.oracle.com/technetwork/developer-tools/adf/learnmore/adffaces-jsf20-190927.pdf
)のJavaServer Faces 2.0 Overview and Adoption Roadmap in Oracle ADF Faces and Oracle JDeveloper 11gホワイトペーパー