ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development FrameworkによるFusion Webアプリケーションの開発
12c (12.1.2)
E48099-02
  目次へ移動
目次

前
 
次
 

1 Oracle ADFを使用したFusion Webアプリケーションの構築の概要

この章では、ADFビジネス・コンポーネント、ADFモデル、ADF ControllerおよびADF Facesを使用するFusion Webアプリケーション(フルFusionテクノロジ・スタック)の構築に使用されるOracle Application Development Framework (Oracle ADF)のアーキテクチャと主要機能について説明します。また、高度な開発プラクティスについても説明します。

この章には次の項が含まれます:

1.1 Oracle ADFの概要

Oracle Application Development Framework (Oracle ADF)は、JavaプラットフォームEnterprise Edition (Java EE)標準とオープン・ソース・テクノロジを基盤とするエンドツーエンドのアプリケーション・フレームワークです。Oracle ADFを使用すると、Web、ワイヤレス、デスクトップまたはWebサービス・インタフェースを使用してデータを検索、表示、作成、変更および検証するエンタープライズ・ソリューションを実装できます。宣言的な機能を提供するOracle ADFにより、ユーザーはコードの詳細ではなくアプリケーション作成ロジックに焦点を当てることができ、開発を簡易化および迅速化できます。Oracle JDeveloperとOracle ADFを組み合せて使用すると、設計からデプロイに至る開発ライフサイクル全体に対応した環境が提供され、ドラッグ・アンド・ドロップによるデータ・バインディング、ビジュアルUI設計、チーム開発などの組込み機能を使用できます。


ヒント:

また、ADFアプリケーションはOracle Enterprise Pack for Eclipse (OEPE)を使用して開発することもできます。OEPEはJava EE環境をサポートするためにEclipse IDE向けに設計された一連のプラグインです。また、OEPEにはADFアプリケーション開発のサポート機能も含まれていますが、そのサポート機能はJDeveloperによって提供されている機能より限定されています。詳細は、http://www.oracle.com/technetwork/developer-tools/eclipse/overview/index.htmlを参照してください。


Fusion Webアプリケーション(フルFusionテクノロジ・スタックで構築されたアプリケーション)、ADFビジネス・コンポーネント、ADFモデル、ADF ControllerおよびADF Facesコンポーネントを備えたJavaServer Facesページを開発できます。このガイドの補足として、このガイド(および他のOracle Fusion Middleware開発者ガイド)の概念と手順を具体的に示すうえで役立つOracle ADF用のSummitサンプル・アプリケーションをダウンロードして表示できます。このサンプル・アプリケーションの例は、Fusion Webアプリケーション・テクノロジ・スタックを使用して作成されています。このアプリケーションのスクリーンショットおよびコード例は、このガイド全体で使用され、Oracle ADFテクノロジの実際の使用例を示しています。Summit ADFサンプル・アプリケーションのダウンロードおよび使用方法の詳細は、第2章「ADFサンプル・アプリケーションの概要」を参照してください。

1.2 Oracle ADFアーキテクチャ

Fusion Webテクノロジ・スタックを使用してアプリケーションを構築すると、業界のベスト・プラクティスに従うように、モデル・ビュー・コントローラ・アーキテクチャに準拠したビジネス・ロジック、ページ・ナビゲーション、ユーザー・インタフェースの明確な分離が実現します。図1-1に示すように、MVCアーキテクチャでは次のような構成になります。

図1-1 MVCアーキテクチャによる、UI、ビジネス・ロジック、ページ・ナビゲーションの明確な分離

この図は、MVCアーキテクチャを示しています。

図1-2は、Fusion Webアプリケーション・アーキテクチャを構成する各ADFモジュールの場所を示しています。このフレームワークの中核モジュールは、データバインディング機能であるADFモデルです。ADFモデルにより、統一化されたアプローチを使用して、各ユーザー・インタフェースをコード記述なしで任意のビジネス・サービスにバインドできます。Fusion Webアプリケーション・テクノロジ・スタックを構成するその他のモジュールは、次のとおりです。


注意:

ADF Facesに加えて、Oracle ADFはJavaおよび標準のJSFビュー・テクノロジの使用もサポートしています。これらのテクノロジの詳細は、『Oracle Jdeveloperによるアプリケーションの開発』を参照してください。Oracle ADFでは、アプリケーションのビュー・レイヤーとしてのMicrosoft Excelの使用もサポートされます。詳細は、『Oracle ADFデスクトップ統合によるアプリケーションの開発』を参照してください。


図1-2 シンプルなOracle ADFアーキテクチャ

ADFアーキテクチャのイメージ

Oracle ADFアーキテクチャおよび個々のADFテクノロジの詳細は、『Oracle Application Development Frameworkの理解』を参照してください。

1.3 Oracle ADFによるアプリケーションの構築の概要

Oracle ADFでは、開発プロセスを通して宣言的なプログラミング・パラダイムを使用することが重視されます。これによって、ユーザーは、アプリケーション作成のロジックに集中でき、実装の詳細を知る必要がなくなります。Oracle ADFとともにJDeveloperを使用すると、データ・アクセス、検証、ページ・コントロールおよびナビゲーション、ユーザー・インタフェース設計、データ・バインディングでアプリケーションの宣言的メタデータを自動的に管理する生産性の高い環境が実現します。

高レベルのFusion Webアプリケーションの開発プロセスには通常、次の過程が含まれます。

1.3.1 アプリケーション・ワークスペースの作成

新規アプリケーションを作成する最初の手順は、アプリケーションに名前を割り当て、そのソース・ファイルを保存するディレクトリを指定することです。JDeveloperから提供されるアプリケーション・テンプレートを使用してアプリケーションを作成すると、作成するアプリケーションのタイプで必要とされる多くの構成ファイルが作成され、ワークスペースとともにプロジェクトに構成されます。

これらのテンプレートの1つがADF Fusion Webアプリケーション・テンプレートで、ビューに対してADF Faces、ページ・フローに対してADFコントローラ、ビジネス・サービスに対してADFビジネス・コンポーネントを使用するWebアプリケーションを作成するために必要な正確に構成されたプロジェクトのセットを提供します。このテンプレートを使用してアプリケーション・ワークスペースを作成する場合、アプリケーションに必要なJSFおよびADF構成ファイルがJDeveloperにより自動的に作成されます。

「アプリケーション概要」の構成要素の1つに、「Fusion Webアプリケーションのクイック・スタート・チェックリスト」があります。このチェックリストは、Fusion Webアプリケーション作成の基本手順を提供します。図1-3に示すように、関連ドキュメント、前提条件、チェックリスト内の各手順のステータスを追跡する機能へのリンクが含まれています。

図1-3「Fusion Webアプリケーションのクイック・スタート・チェックリスト」

アプリケーション・チェックリスト

JDeveloperでは、アプリケーション内のビジネス・サービスに関連するすべてのソース・ファイルを含みModelという名前のプロジェクトと、ADF Facesビュー・レイヤーおよびモデル・レイヤー用のすべてのソース・ファイル(コントローラ用のファイルを含む)を含みViewControllerという名前のプロジェクトも作成されます。

関連付けられたライブラリを自分で追加する手間を省くため、一度ビジネス・コンポーネントを作成すると、JDeveloperでは、自動的に次のライブラリをデータ・モデル・プロジェクトに追加します。

  • ADFモデル・ランタイム

  • BC4J Oracleドメイン

  • BC4Jランタイム

  • BC4Jセキュリティ

  • MDSランタイム

  • MDSランタイム依存性

  • Oracle JDBC

JDeveloperでは、ビュー・オブジェクトに次のライブラリも追加されます。

  • JSPランタイム

  • JSF 2.1

  • JSTL 1.2

  • ADF Page Flowランタイム

  • ADF Controllerランタイム

  • ADF Controllerスキーマ

  • ADF Facesランタイム11

  • ADF Commonランタイム

  • ADF Webランタイム

  • MDSランタイム

  • MDSランタイム依存性

  • Commons Beautils 1.6

  • Commons Logging 1.0.4

  • Commons Collections 3.1

  • ADF DVT Facesランタイム

  • ADF DVT Facesデータバインディング・ランタイム

  • ADF DVT FacesデータバインディングMDSランタイム

JSFページを追加すると、JDeveloperによってOracle JEWTライブラリが追加されます。

その場合、JDeveloperを使用して追加のプロジェクトを作成し、アプリケーションに必要なパッケージとファイルを追加できます。


注意:

アプリケーションのアーティファクト(タスクフローなど)を再利用する場合、第44章「アプリケーション・コンポーネントの再利用」のネーミング・ガイドラインに従って、名前の競合を回避する必要があります。



ヒント:

アプリケーション・テンプレートで使用するデフォルト値を編集したり、独自のテンプレートを作成できます。その場合は、「アプリケーション」→「テンプレートの管理」を選択します。


図1-4は、「アプリケーション」ウィンドウに表示されるSummit ADFサンプル・アプリケーションの様々なプロジェクト、パッケージ、ディレクトリおよびファイルを示しています。

図1-4 Summit ADFサンプル・アプリケーションのプロジェクト、パッケージおよびディレクトリ

プロジェクトのワークスペースにはファイルがあります

詳細は、『Oracle Jdeveloperによるアプリケーションの開発』のアプリケーションおよびプロジェクトの管理に関する項を参照してください。

図1-5に示すように、ファイルの操作時には主に「アプリケーション」ウィンドウ、エディタ・ウィンドウ、「構造」ウィンドウおよび「プロパティ」ウィンドウを使用します。エディタ・ウィンドウでは、WYSIWYG環境に多くのファイルを表示でき、概要エディタにファイルを表示して宣言的に変更したり、ファイルのソース・コードを表示できます。「構造」ウィンドウには、現在選択されているファイルの構造が表示されます。このウィンドウでオブジェクトを選択した後、選択したオブジェクトのプロパティを「プロパティ」ウィンドウで編集できます。

図1-5 JDeveloperのワークスペース

JDeveloperの構造ウィンドウとプロパティ・インスペクタ

1.3.2 データベース・オブジェクト定義によるモデリング

JDeveloperでは、オンラインのデータベースで作業することも、アプリケーション・ワークスペースの作成後にデータベース・スキーマからオフライン・データベースまたはプロジェクトにデータベース・オブジェクトをコピーし、.xmlファイルとして保存されたオフライン・データベース・オブジェクトとして利用することもできます。オンラインまたはオフラインのどちらのデータベースでも、プロジェクト内でデータベース・オブジェクト定義を作成および編集できます。また、オフライン・データベース・オブジェクトを他のオフラインまたは稼働中のデータベース・スキーマと比較したり、SQL文(CREATEREPLACEおよびALTERを含む)を生成したりできます。

たとえば、アプリケーションによって定義されているデータベース接続からデータベース・ダイアグラムに表をドラッグすると、JDeveloperでは、稼働中またはオフラインのデータベースをモデリングする(オブジェクトの.xmlファイル表現を作成する)ことができます。表および外部キーなどのデータベース定義のモデリングによって、スキーマの基本的な情報を視覚的に取得できます。ダイアグラムでは、列とキーをドラッグ・アンド・ドロップして、外部キー関係を複製、移動および作成できます。オフライン・モードでダイアグラム上でノードをモデル化する場合は、JDeveloperによって基礎となるオフライン・オブジェクトが作成され、「アプリケーション」ウィンドウに表示されます。稼働中のスキーマを操作する場合は、ダイアグラムを修正すると、JDeveloperによってデータベース・オブジェクトが更新されます。同一のオフライン・データベース・オブジェクトから複数のダイアグラムを作成し、複数のプロジェクトにオフライン・データベースを展開できます。

図1-6に示すようなデータベース・ダイアグラムを使用すると、次の要素を視覚化できます。

  • 表とその列

  • 表間の外部キー関係

  • ビュー

  • オフラインの順序とシノニム

データベース・オブジェクトを直接作成および編集する場合は、ダイアグラムだけでなく、特定のデータベース・オブジェクト・エディタでも作業できます。オフライン・データベース・オブジェクトでの作業が終了したら、更新された新しいデータベース定義をオンライン・データベース・スキーマに生成できます。

データベース・ダイアグラムで作業する場合は、ダイアグラムをカスタマイズして、レイアウトの変更や、オブジェクトの表示方法とグループ化方法の変更を行ったり、依存性やリンク(URLなど)を指定する注釈をダイアグラムに追加したり、ダイアグラムの色およびフォント要素などの視覚的なプロパティを変更したりできます。

図1-6 Payments Groupingのデータベース・ダイアグラム

データベース・ダイアグラムのイメージ

データベース・ダイアグラムを使用したデータベース定義のモデル化の詳細は、『Oracle Jdeveloperによるアプリケーションの開発』のデータベース・オブジェクトの作成、編集およびドロップに関する項を参照してください。

1.3.3 ユースケースの作成

アプリケーション・ワークスペースを作成した後、ユースケースをモデル化して構築対象のアプリケーションに関するエンド・ユーザー要件を取得して伝達すると、開発プロセスを開始できます。図1-7は、JDeveloperのUMLモデラーを使用して設計されることのある新規従業員を作成しているHR管理者向けの簡単なダイアグラムを示しています。ダイアグラムの注釈を使用すると、ユースケースを実装する画面上でエンド・ユーザーが参照する必要がある内容に関する特定の要件を取り込むことができます。たとえば、このユースケースでは、ユーザーがすべての従業員のリストを表示しながら新規従業員を作成することを選択しています。

図1-7 オーダー履歴を表示するユースケース・ダイアグラム

ユースケース・ダイアグラムの図

ユースケース・ダイアグラムの作成方法の詳細は、『Oracle JDeveloperによるアプリケーションの開発』の「モデル化を使用したアプリケーションの開発」の章を参照してください。

1.3.4 ADFタスク・フローを使用したアプリケーション・コントロールおよびナビゲーションの設計

ユースケースのモデル化により、エンド・ユーザー要件を実装するために必要なユーザー・インタフェース・ページの種類を把握していきます。この時点で、次の3つのダイアグラムをアプリケーション・フローの設計を開始するために役立つドキュメント・ツールとして使用できます。Fusion Webアプリケーションでは、標準JSFナビゲーション・フローではなくADFタスク・フローを使用します。タスク・フローでは、ナビゲーションおよびアプリケーション・コントロールに対してよりモジュール化されたトランザクション対応のアプローチを使用します。標準JSFナビゲーション・フローと同様、タスク・フローには主に表示可能なページ(またはページ・フラグメント)が含まれます。ナビゲーションとは別に、タスク・フローには、組み合せることでページ・フローとアプリケーション動作に影響を与えることができる否ビジュアル的なアクティビティも含まれます。たとえば、これらの否ビジュアル的なアクティビティでは、マネージドBeansへのメソッド呼出し、EL式の評価、または別のタスク・フローの呼出しが可能です。これにより、ビジネス・ロジックは表示されているページとは関係なく呼び出すことができるため、再利用しやすくなります。

図1-8は従業員を作成するためのタスク・フローを示しています。このタスク・フローでは、GeneralInfoおよびConfirmationはページを表示するビュー・アクティビティであり、CreateInsertはメソッド・コール・アクティビティです。ユーザーがこのフローを開始すると、CreateInsertアクティビティ(緑色の円で示したフローのエントリ・ポイント)が呼び出され、対応するメソッドがコールされます。これはメソッドへのコールであり、メソッド自体はタスク・フローに含まれていないため、アプリケーションの別の場所でメソッドを再利用できます。また、メソッド内のロジックはページ・フローのメタデータに影響を及ぼさずに変更できます。そこから、フローはGeneralInfoページに続き、データが送信されると、Confirmationページへと続きます。

図1-8 従業員を作成するためのタスク・フロー

タスク・フローにはビュー・アクティビティおよびメソッド・アクティビティがあります

ADF Controllerでは、コントロール・フロー・ルールを使用してナビゲーションを定義するメカニズムを提供しています。コントロール・フロー・ルールの情報は、フローに関する他の情報とともに構成ファイルに保存されます。図1-9はタスク・フローの「構造」ウィンドウを示しています。このウィンドウは、コントロール・フロー・ルールなど、フローに構成された各項目を示しています。「プロパティ」ウィンドウ(デフォルトでは右下の位置)を使用すると、フローの様々な要素の値を設定できます。

図1-9 「構造」ウィンドウおよび「プロパティ」ウィンドウのタスク・フロー要素

選択されたアイテムのプロパティがプロパティ・インスペクタにより表示されます

ページとは別に、タスク・フローではページ・フラグメントを調整することもできます。ページ・フラグメントとは、別のJSFページのコンテンツとしてレンダリングされるJSFドキュメントです。ページ・フラグメントおよびページ・フラグメント間の制御は、ページを作成する場合と同様にバインド・タスク・フローに作成し、タスク・フロー全体をリージョンとして別のページに挿入できます。リージョンは別のタスク・フローになるため、これによりメソッドの実行、式の評価およびコンテンツの表示を個別に実行できますが、格納するページの残りのコンテンツは同じ状態のままです。

また、リージョンによって再利用が可能になります。タスク・フローをリージョンとして作成し、タスクに必要な情報とタスクから返される情報を決定し、それらをリージョンのパラメータとして定義して値を戻すと、リージョンをアプリケーションの任意のページにドロップできます。パラメータの値によっては、異なるビューが表示される場合があります。

第IV部「ADFタスク・フローの作成」では、タスク・フローの使用方法を詳しく説明しています。タスク・フローとその作成方法の一般的な情報は、第20章「ADFタスク・フローの概説」を参照してください。タスク・フロー・アクティビティの詳細は、第21章「タスク・フロー・アクティビティの使用」を参照してください。タスク・フローとパラメータをやりとりする必要がある場合は、第22章「タスク・フローでのパラメータの使用」を参照してください。リージョンの詳細は、第23章「リージョンとしてのタスク・フローの使用」を参照してください。トランザクション機能やページの必須の順序(トレイン)の作成方法など、タスク・フローの高度な機能の詳細は、第24章「複雑なタスク・フローの作成」を参照してください。タスク・フローを使用したダイアログの作成の詳細は、第25章「アプリケーションでのダイアログの使用」を参照してください。

1.3.5 共有リソースの識別

アプリケーションの設計時に、アプリケーションの一部をアプリケーション全体で再利用できる場合があります。たとえば、ビジネス・コンポーネントを作成する開発者が1名、Webインタフェースを作成する開発者が1名いる場合があります。ビジネス・コンポーネント開発者はプロジェクトをライブラリとして保存してパッケージ化できます。このライブラリは他の開発者に送信可能で、受信した開発者はリソース・カタログにこれを追加でき、そこから必要なページにドラッグ・アンド・ドロップできます。図1-10はJDeveloperの「リソース」ウィンドウのリソース・カタログを示しています。

図1-10 JDeveloperの「リソース」ウィンドウ

リソース・カタログにはリージョンなどのADFオブジェクトが含まれます。

再利用の候補となるすべてのタスクに注意が必要です。ADFライブラリとしてパッケージ化および再利用できるADFアーティファクト、およびライブラリの作成と使用手順の詳細は、第44章「アプリケーション・コンポーネントの再利用」を参照してください。

1.3.6 ADFビジネス・コンポーネントを使用してデータにアクセスするデータ・モデルの作成

通常、ビジネス・ロジックをADFビジネス・コンポーネントとして実装する場合は、次の手順を実行します。

  • アプリケーションが実行するトランザクションの対象となる表を示すエンティティ・オブジェクトを作成します。エンティティ・オブジェクトは実際に既存のデータベース・スキーマから作成できます。必要に応じて、検証規則およびビジネス・ルールを追加します。

  • データベースの問合せを実行するエンティティ・オブジェクトと連動するビュー・オブジェクトを作成します。これらのビュー・オブジェクトを使用して、ビュー・レイヤーに表示できるデータを作成します。また、読取り専用ビュー・オブジェクトを作成でき、静的リストを表示するために使用できます。エンティティ・オブジェクトと同様に、ビュー・オブジェクトは既存のデータベース・スキーマから作成できます。

  • アプリケーション・モジュールを作成しますが、これは、ビジネス・サービスへのインタフェースになり、これらのサービス(アプリケーションのUIレイヤーなど)の使用者が使用します。このアプリケーション・モジュールには、アプリケーションのWebページを介してユーザーが対話するデータ・モデルのビュー・オブジェクト・インスタンスとカスタム・メソッドが含まれます。

  • 必要に応じて、リモート呼び出し用のWebサービスとしてサービスを公開します。

第II部「ビジネス・サービスの構築」では、これらのアーティファクトの作成方法を詳しく説明しています。第VI部「アプリケーションの完成」の各章にはビジネス・オブジェクトの拡張、チューニング、状態管理などの追加情報が記載されています。

1.3.6.1 表のビジネス・ドメイン・オブジェクトのレイヤーの作成

アプリケーションで表示され操作されるデータについて理解すると、まだデータベースを構築していない場合はデータベースを構築できます(詳細は、『Oracle JDeveloperによるアプリケーションの開発』の「Oracle JDeveloper内でのデータベースの設計」の章を参照してください)。データベース表が準備されている場合、これらの表を示す一連のエンティティ・オブジェクトを作成し、表に含まれるデータの変更を簡略化できます。エンティティ・オブジェクトを使用して表に関するデータ・アクセスおよび検証をカプセル化することにより、今日または将来作成するこれらの表と連携するページを一貫性のある方法で検証できます。表の間の関係は、対応するエンティティ・オブジェクト間のアソシエーションとして反映されます。

エンティティ・オブジェクトが作成されると、エンティティのUIでの表示を簡略化するコントロールと属性のヒントを定義できるだけでなく、オブジェクトに動作を追加することもできます。詳細は、第4章「エンティティ・オブジェクトを使用したビジネス・ドメイン・レイヤーの作成」を参照してください。

1.3.6.2 ビジネス・サービスの構築

ビジネス・オブジェクトの再利用可能なレイヤーが作成されると、UIクライアントが動作できるサービス・メソッドとアプリケーション・モジュールのデータ・モデルを実装できます。

アプリケーション・モジュールのデータ・モデルは、必要な問合せのカプセル化のために作成したビュー・オブジェクト・コンポーネントのインスタンスで構成されています。ビュー・オブジェクトでは、ユーザー・インタフェースで表されるエンド・ユーザーのタスクが必要とする形に、データを結合、計画、フィルタ、ソートおよび集約できます。エンド・ユーザーがデータを更新する必要がある場合、ビュー・オブジェクトでは、再使用可能なビジネス・ドメイン・レイヤー内のエンティティ・オブジェクトを参照します。ビュー・オブジェクトは、再利用可能であり、複数のアプリケーション・モジュールで使用できます。詳細は、第5章「ビュー・オブジェクトを使用したSQL問合せの定義」を参照してください。

図1-11はアプリケーションによって必要とされる多数の問合せを含むoracle.summit.model.viewパッケージを示しています。

図1-11 Summit ADFサンプル・アプリケーション内のビュー・オブジェクト

ビュー・オブジェクトはアプリケーション・ナビゲータに表示されます

さらに、外部アプリケーションに機能を公開する必要がある場合があります。このとき、サービス・インタフェースを通じてこの機能を公開できます。たとえば、ServiceAppModuleアプリケーション・モジュールは、Webサービスとして公開されます。このWebサービスは、図1-12に示すように、CustomersViewおよびOrdersViewビュー・インスタンスを公開します。詳細は、第15章「サービス対応アプリケーション・モジュールの統合」を参照してください。

図1-12 WebサービスとしてのServiceAppModuleアプリケーション・モジュール

アプリケション・モジュールのイメージ

1.3.6.3 Oracle ADFモデル・テスターによるビジネス・サービスのテストとデバッグ

アプリケーションを開発する場合、Oracle ADFモデル・テスターを使用してビジネス・サービスを繰り返しテストできます。テスターにより、サービスをテストするユーザー・インタフェースまたはその他のクライアントを使用したり作成せずに、ビジネス・サービスの問合せ、ビジネス・ロジックおよび検証をテストできます。テスターを使用すると、追加した最新の問合せまたはビジネス・ルールをテストし、問題の診断に要する時間を節約できます。アプリケーション・モジュールの開発およびテストの詳細は、第13章「アプリケーション・モジュールによるビジネス・サービスの実装」を参照してください。

またテスターはADF宣言デバッガと対話し、ビジネス・サービスのデバッグができます。作成する任意のカスタム・メソッドにブレークポイントを設定できます。詳細は、42.7項「テストとデバッグのためのOracle ADFモデル・テスターの使用」を参照してください。

1.3.7 JSFによるユーザー・インタフェースの実装

計画段階で作成したページ・フローからページ・アイコンをダブルクリックすると、実際のJSFファイルを作成できます。ADF FacesアプリケーションのJSFページを作成する場合は、.jsf拡張子を使用するFacelets XHTMLファイルを作成します。Faceletsは、JSPエンジンの代替として使用できるJSF中心のXMLビュー定義テクノロジです。


ヒント:

Faceletページでは任意の整形式のXMLファイルを使用できますが、JDeveloperでFaceletページを作成する場合は、XHTMLファイルとして作成されます。


ADF Facesには、ページのレイアウト全体の定義に使用できる多数のコンポーネントが用意されています。JDeveloperには、これらのコンポーネントを使用した事前定義済のクイック・スタート・レイアウトが含まれており、効率的に正しくページのレイアウトを決定できます。1列、2列または3列のレイアウトから選択でき、列の動作を指定できます。また、レイアウトに適用するテーマを選択すると、コンポーネントの一部に色が追加されます。詳細は、『Oracle ADF FacesによるWebユーザー・インタフェースの開発』のクィック・スタート・レイアウトの使用方法に関する項を参照してください。

またOracle ADFでは、独自のページ・テンプレートを作成して使用できます。テンプレートを作成する場合は、ページのレイアウトを決定し(クィック・レイアウト・テンプレートのいずれかを使用するか手動でレイアウトを作成する)、すべてのページで表示する必要のある静的コンテンツを提供して、各ページで有効な値に置き換えることができるプレースホルダー属性を作成します。レイアウトの変更など、テンプレートが変更されるたびに、テンプレートを使用するページにも更新が反映されます。

第V部「データバインドされたWebユーザー・インタフェースの作成」では、基本的なフォームから複雑な検索機能まで、異なるタイプのUI機能の作成方法を詳しく説明しています。

1.3.8 ADFモデルのデータバインディング

通常のJSFアプリケーションでは、UIコンポーネント属性を管理対象Beanのプロパティまたはメソッドにバインドします。JSFランタイムでは、EL式でBeanを最初に参照した際に、Beanのオンデマンドのインスタンス化が管理されます。ただし、ADFモデルを使用しているアプリケーション内では、JDeveloperは汎用データ・バインド機能を駆動するXML構成ファイルを使用しているADFモデルにUIコンポーネント属性を自動的にバインドします。これには、ユーザー・インタフェース・テクノロジとビジネス・サービス実装の分離を可能にする概念(データ・コントロール宣言的バインディング)が実装されています。

データ・コントロールでは、サービスの記述にXML構成ファイルを使用します。設計時に、JDeveloperのようなビジュアル・ツールでメタデータを操作し、任意のデータ・コントロール操作やデータ・コレクションにUIコンポーネントを宣言的にバインドして、バインディングを作成できます。たとえば、図1-13は、JDeveloperの「データ・コントロール」パネルに表示されるBackOfficeAppModuleDataControlデータ・コントロールを示しています。

図1-13 BackOfficeAppModuleDataControl

StoreFrontModuleデータ・コントロールの図

パネルに表示されるコレクションは、BackOfficeAppModuleDataControlアプリケーション・モジュールに含まれる各ビュー・オブジェクト・インスタンスでの問合せによって返される行セットを表します。たとえば、「データ・コントロール」パネルのCountriesデータ・コレクションは、BackOfficeAppModuleDataControl'sデータ・モデルのCountriesビュー・オブジェクト・インスタンスを表します。それぞれのデータ・コレクションの各行で使用可能な属性は、子ノードとして表示されています。データ・コレクション・レベルの「操作」ノードには、ADFモデルでサポートされるデータ・コレクションに対する組込み操作(previousnextfirstlastなど)が含まれます。


注意:

Webサービス、URLから取得されたXMLデータ、JavaBeans、EJBを操作するために別の種類のデータ・コントロールを作成する場合、これらは「データ・コントロール」パネルにも適切に表示されます。プロジェクトでこれらのデータ・コントロールのいずれかを作成する場合、JDeveloperでは構成情報を含むメタデータ・ファイルが作成されます。Oracle ADFアプリケーション・モジュールを操作する場合、アプリケーション・モジュールがすでにメタデータ駆動型のコンポーネントであり、ADFモデル・データ・コントロールとして自動的に公開するために必要なすべての情報を含んでいるため、これらの追加ファイルを明示的に作成する必要はありません。


「データ・コントロール」パネルを使用して、データ・コレクションをビジュアル・エディタのページ上にドラッグ・アンド・ドロップすると、必要なバインディングが作成されます。図1-14は、「データ・コントロール」パネルからドラッグされ、JSFページにフォームとしてドロップされるCountriesコレクションを示しています。

図1-14 「データ・コントロール」パネルを使用したフォームの宣言的作成

ADFフォームとしてコレクションをページ上にドロップ

「データ・コントロール」パネルからデータバインドされたコンポーネントが最初にページにドロップされたときに、JDeveloperによりそのコンポーネントの関連ページ定義ファイルが作成されます。このXMLファイルは、ページ上でUIコンポーネントをサポートするバインディングのグループについて記述しています。ADFモデルでは実行時にこのファイルが使用され、ページのバインディングがインスタンス化されます。これらのバインディングは、バインディング・コンテナと呼ばれるリクエスト・スコープ・マップに保持されます。「データ・コントロール」パネルを使用してコンポーネントをページに追加するたびに、適切なバインディング・エントリがこのページ定義ファイルに追加されます。さらに、ドラッグ・アンド・ドロップによるデータ・バインディング操作を実行すると、JDeveloperにより、JSFページのJSF UIコンポーネントを示す必要なタグが作成されます。「データ・コントロール」パネルの使用の詳細は、第17章「Fusion WebアプリケーションでのADFモデルの使用」を参照してください。

データを表示または更新するフォームおよび表の他に、検索フォーム、およびデータがバインドされた図とグラフを作成することもできます。データ・コントロールを使用して様々なタイプのページを作成する方法の詳細は、第V部「データバインドされたWebユーザー・インタフェースの作成」の各章を参照してください「データ・コントロール」パネルおよびUIデータがバインドされたコンポーネントを作成するためのその使用方法の詳細は、第17章「Fusion WebアプリケーションでのADFモデルの使用」を参照してください。ADFモデルの詳細は、『Oracle ADFデータ・コントロールによるアプリケーションの開発』を参照してください。

1.3.9 検証およびエラー処理

エンティティ・オブジェクトおよびビュー・オブジェクトでは、概要エディタを使用してビジネス・オブジェクトに検証を宣言的に追加できます。エンティティの場合、ビジネス・ルールは常に属性に定義されたデータ・タイプの制約を反映します。

図1-15は、EmpEOエンティティ・オブジェクトの概要エディタの「ビジネス・ルール」ページを示しています。

図1-15 概要エディタでの検証の設定

概要エディタを使用した検証の設定

このタブでは、検証規則に加えて、検証が失敗した場合のエラー・メッセージの表示設定も行います。このような宣言的な検証を補足する場合は、Groovyスクリプト式も使用できます。サービス・レベルでの検証の作成の詳細は、第11章「検証とビジネス・ルールの宣言的な定義」を参照してください。

また、ADF Faces入力コンポーネントには、組込みの検証機能があります。required属性を設定するか、事前作成済のADF Facesバリデータを使用して、コンポーネントに1つ以上のバリデータを設定します。ビジネス・ニーズに合せて、独自のカスタム・バリデータを作成することもできます。詳細は、『Oracle ADF FacesによるWebユーザー・インタフェースの開発』の「入力の検証および変換」の章を参照してください。

カスタムのエラー・ハンドラを作成して、アプリケーションの実行中に発生したエラーをレポートできます。エラー・ハンドラを作成すると、アプリケーションの構成ファイルの1つにハンドラを登録するだけです。

1.3.10 セキュリティの追加

Oracle ADFは、Java Authentication and Authorization Service (JAAS)に基づくセキュリティ実装を提供します。JAASは、アプリケーションでのユーザーの認証と認可の実施を可能にします。Oracle ADFのJAASの実装は、パーミッションベースです。これらのパーミッションを定義したあと、アプリケーションのユーザーに関連付けるアプリケーション・ロールに付与します。アプリケーションのセキュリティ保護の詳細は、第41章「Fusion WebアプリケーションでのADFセキュリティの有効化」を参照してください。

1.3.11 Webクライアント・アプリケーションのテストとデバッグ

Oracle ADF Webアプリケーションのテストは、他の任意のJava EEアプリケーションのテストとデバッグに似ています。大半のエラーの原因は、ページのADFバインディング・コンテナのランタイム・オブジェクトにアクセスするEL式内またはアプリケーションで定義される宣言情報内において単純で容易に修正できる問題です。多くのケースでは、宣言ファイルおよびEL式を検証すると大半の問題を解決できます。

宣言的ファイルまたはEL式が原因ではないエラーの場合、ADFロガーを使用してADFモデルAPIからランタイム・トレース・メッセージを取得できます。このトレースには、アプリケーション・エラーの原因をすぐに特定できるランタイム・メッセージが含まれます。ログ出力から特定のエラーを検索することもできます。

JDeveloperには、バインディング・レイヤーやタスクフローなど、Oracle ADFの宣言的部分でブレークポイントを設定してデータを調べることができるツールのADF宣言デバッガも含まれています。ブレークポイントに達すると、アプリケーションの実行が一時停止され、ADFバインディング・コンテナの作業対象データを調べて、予測されるデータと比較することができます。第42章「ADFコンポーネントのテストとデバッグ」には、Fusion Webアプリケーションを正常にデバッグする方法についての有用な情報およびヒントが記載されています。

JDeveloperでは、テストのためのJUnitとの統合が提供されます。ウィザードを使用して、回帰テスト・ケースを生成します。詳細は、42.11項「JUnitを使用した回帰テスト」を参照してください。

1.3.12 アプリケーション・アーティファクトのリファクタ

JDeveloperを使用すると、アプリケーション内の異なるコンポーネントの名前を変更したり移動できます。JDeveloperを使用してデータ・モデル・プロジェクトのビジネス・コンポーネントをリファクタすると、コンポーネントの名前を変更したり、それらを別のパッケージに移動でき、さらにJDeveloperはリファクタされたコンポーネントへのすべての参照を検出し、更新します。可能な場合は常に、JDeveloperのリファクタ・アクションを使用してエラーを招き易いプロジェクトの手動での編集を回避できます。詳細は、第43章「Fusion Webアプリケーションのリファクタ」を参照してください。

1.3.13 Fusion Webアプリケーションのデプロイ

Fusion Webアプリケーションは、JDeveloper内の統合WebLogic Serverまたはサポートされるスタンドアロン・インスタンスのいずれかにデプロイできます。デプロイメントの詳細は、第48章「Fusion Webアプリケーションのデプロイ」を参照してください。

1.3.14 Fusion Webアプリケーションの統合

Fusion Webアプリケーションを構築して、容易に他のアプリケーションと統合できます。アプリケーション・モジュールは、サービスとして公開できます。また、たとえばビジネス・プロセスを開始するために使用できるイベントも作成できます。詳細は、第15章「サービス対応アプリケーション・モジュールの統合」を参照してください。アプリケーション・モジュールでは、その他のWebサービスも直接呼び出すことができます。詳細は、13.12項「アプリケーション・モジュールからのWebサービスのコール」を参照してください。アプリケーションは、タスク・フローを使用して統合することもできます。たとえば、タスク・フローを使用してビジネス・プロセス・フローを開始できます。

1.4 チームでの効率的な作業

多くの場合、アプリケーションはチーム開発環境で構築されます。チームベースの開発プロセスは、1.3項「Oracle ADFによるアプリケーションの構築の概要」で説明した開発サイクルに従って進めますが、開発者は通常、アプリケーションの様々な部分を同時に作成します。生産性の向上とは、効率的なアプリケーション開発を実現するため、チーム・メンバーが作業を分担し、標準の適用方法を理解し、ソース・コントロール・システムによってソース・ファイルを管理することを意味します。


ヒント:

Oracleチーム・プロダクティビティ・センターはOracle JDeveloperの1機能で、一連のアプリケーション・ライフサイクル管理(ALM)ツールおよびテクノロジへのアクセスを提供します。詳細は、『Oracle Team Productivity Centerによるアプリケーションの開発』を参照してください。


大規模なアプリケーション開発を開始する前に、設計段階では通常、ユースケースの評価、タスク・フローおよび画面の計画、共有されるリソースの識別を行う必要があります。

次のリストは、初期設計が適用された場合の一般的なFusion Webアプリケーションの作業の分類方法を示しています。

1.4.1 標準の適用

別個のチームに分けられた多数のスタッフがアプリケーションを開発することから、開発を始める前に多数の標準を施行して、アプリケーションのすべてのコンポーネントが効率的に連携するようにする必要があります。チーム環境で作業する場合の標準化のために必要なアプリケーション内の領域を次に示します。

  • コード・レイアウト・スタイル

    複数の人が効率よくコードを使用して作業できるようにするため、特定のコード・スタイルに準拠します。JDeveloperを使用すると、組込みコード・エディタの動作方法を選択できます。ほとんどの設定は、ユーザーのコード・エディタとの対話方法(表示設定など)に影響し、一部の設定はコードのフォーマット方法に影響します。たとえば、左の大カッコの配置位置やインデントのサイズなどを指定するコード・スタイルを選択できます。また、所有している既存のコード・スタイルをインポートしたり、独自のコード・スタイルを作成してエクスポートし、チームで使用できるようにします。詳細は、『Oracle Jdeveloperによるアプリケーションの開発』のソース・エディタ用プリファレンスの設定方法に関する項を参照してください。

  • パッケージのネーミング規則

    パッケージのネーミング方法のみでなく、各パッケージを構成するオブジェクトの数と種類の粒度も指定する必要があります。

  • ページ

    1.3.7項「JSFによるユーザー・インタフェースの設計」で説明しているように、UIを操作しているすべての開発者が使用するテンプレートを作成できます。これにより、すべてのページのルック・アンド・フィールを同じにするだけでなく、テンプレートを変更し、これを使用するすべてのページにこの変更を適用することができます。詳細は、26.2項「ページ・テンプレートの使用」を参照してください。

    テンプレートの使用とは別に、ページのネーミング標準を設定する必要もあります。たとえば、ページのアプリケーション内での使用箇所を名前に反映する場合があります。この目標を実現するために、サブディレクトリを作成してレイヤー構成を追加できます。

  • 接続名: ほとんどのJDeveloperとOracle ADFのオブジェクトは、プロジェクトごとに一度のみ作成され、参照および使用するユーザーに関係なく、定義によって同じ名前を持ちますが、データベースの接続名は、同じ接続名の詳細にマッピングする場合でも、個々のチーム・メンバーによって作成できます。名前の不一致によって、不要な競合が生じる場合があります。まず、チーム・メンバーが大文字/小文字が区別される共通の接続名に同意し、該当チームの全メンバーがそれを使用する必要があります。

1.4.2 ソース・コントロール・システムの使用

チーム環境で作業する場合、ソース・コントロール・システムを使用する必要があります。デフォルトでは、JDeveloperはSubversionのソース・コントロール・システムのサポートを提供しており、その他(CVSなど)は拡張機能を通じて利用できます。JDeveloperの別のシステムで作業できるように、拡張子を作成することもできます。これらのシステムをJDeveloper内で使用する方法の詳細は、『Oracle JDeveloperによるアプリケーションの開発』の「ソース・コントロールによるアプリケーションのバージョニング」の章を参照してください。

Fusion Webアプリケーションでのソース・コントロール使用の提案を次に示します。

  • チェックアウトの自動化

    JDeveloperを使用すると、ソース・コントロール・サーバーへの接続を作成し、ソース・コントロール・ウィンドウを使用してソースをチェックアウトできます。ファイルをローカルで操作する場合、変更されたファイルは保留中の変更ウィンドウにより通知されます。JDeveloperに組み込まれているApache Antを使用すると、スクリプトを作成できます。作成したスクリプトを使用して、すべてのアプリケーション・ワークスペースをローカルでビルドできます。これにより、変更されたファイルをソース・コントロール・リポジトリにチェックインする前にソース・ファイルをコンパイルできます。Apache Antを使用してスクリプトを作成する方法を調べるには、『Oracle Jdeveloperによるアプリケーションの開発』のApache Antによる構築に関する項を参照してください。

  • ビルドの自動化

    連続的な統合ツールを実行するようにしてください。ファイルがソース・サーバーにチェックインされると、このツールを使用して、ファイルが変更されたかどうかを認識したり、変更されたファイルを指定した間隔でチェックしたりできます。この時点で、このツールを使ってサーバーでAntスクリプトを実行して、完全なソースをコピーし(チェックアウトではなくコピー)、これらのファイルをコンパイルすることができ、コンパイルが成功すると、アプリケーションの(開発者用ではなく)コンシューマが使用するZIPファイルが作成されます。このスクリプトによって、次にソース・ディレクトリがクリーンアップされます。連続的な統合ツールを実行すると、リポジトリ内のコードの品質が向上し、開発者が頻繁に更新を行うようになるため、更新の量と競合の数が減少します。Hudson(http://hudson-ci.org/)は、連続的な統合ツールの例です。

  • ファイルの更新およびコミット

    Subversionの処理時、更新およびコミットは各ファイルではなく「作業用コピー」レベルで行う必要があります。各ファイルをコミットおよび更新しようとしている場合、サポートするメタデータ・ファイルがなく、そのためアプリケーションのコミット済コピーが破損する場合があります。

  • マージ競合の解決

    ADFビジネス・コンポーネントのデータ・モデル・プロジェクトでビジネス・コンポーネントの追加または削除を実行すると、JDeveloperはそれをプロジェクト・ファイル(.jpr)に反映します。作成(またはリファクタ)によって新しいパッケージにコンポーネントが格納されると、JDeveloperはそれをプロジェクト・ファイルとADFビジネス・コンポーネント・プロジェクト構成ファイル(.jpx)に反映します。XMLフォーマットのこれらのプロジェクト管理ファイルはマージ競合の発生が減るように最適化されていますが、マージ競合は発生する可能性があり、それらのマージ競合は、影響を受ける各ファイルのポップアップ・メニューにある「競合の解決」オプションを使用してJDeveloperで解決する必要があります。

    ADFビジネス・コンポーネントのXMLコンポーネント・ディスクリプタ・ファイル、データ・モデル・プロジェクトのプロジェクト・ファイル(.jpr)または対応するADFビジネス・コンポーネント・プロジェクト構成ファイル(.jpx)でマージ競合が解決した後は、プロジェクトを一度閉じてから再度開き、最新バージョンのコンポーネント定義を使用していることを確認してください。これを実行するには、「アプリケーション」ウィンドウでプロジェクトを選択し、JDeveloperメイン・メニューから「ファイル」「閉じる」を選択し、「アプリケーション」ウィンドウで再度プロジェクトを開きます。

1.5 Oracle JHeadstartを使用した、完全なWeb階層の生成

このガイドの後半で説明するように、JDeveloperおよびOracle ADFでは、宣言的な開発経験を最大限に活用し、機能豊富でデータベース中心のJava EEアプリケーションを構築するための、生産性の高いビジュアルな環境を提供します。しかし、Oracle Designerのように、高レベルなアプリケーション構造定義に基づく完全なユーザー・インタフェース生成を提供するツールの使用経験がある場合、Java EE開発でも同様の機能が必要になる場合があります。その場合は、Oracle JHeadstart Application Generatorが適しています。これはOracle ADFの組込み機能を使用するJDeveloperの拡張機能で、アプリケーション・モジュールに対して完全なWeb階層の生成を実現します。ADFビジネス・サービスのために設計したデータ・モデルを開始点として、JHeadstartによりJDeveloper環境に追加された統合エディタを使用し、より高レベルのアプリケーション構造の定義を繰り返し修正できます。これらのエディタでは、生成されたWebユーザー・インタフェースのビュー・オブジェクト情報の機能と組織を制御します。チェック・ボックスのチェック、およびドロップダウン・リストからの様々なオプションの選択によって、検索するリージョン、検証を含めた値リスト(LOV)、シャトル・コントロール、ネストされた表およびその他の機能などの様々な形式を含む、ページの論理階層を表すことができます。このような宣言的な選択では、Oracle FormsやDesignerのユーザーが使い慣れた用語が使用されるため、Web開発がさらに容易になります。アプリケーション構造定義に基づき、Oracle ADFおよびJSFが提供する最も高度な機能を容易に活用して、このガイドに示すベスト・プラクティスを自動的に実装する完全なWebアプリケーションを生成できます。

JHeadstart Application Generatorを実行する場合は、コードが生成されるのではなく、Oracle ADFベースのWebアプリケーションのすべての宣言的なビューおよびコントロール・レイヤーのアーティファクトが作成(または再生成)されます。これらのアーティファクトは、ADFモデルを使用し、ビジネス・サービスとしてADFアプリケーション・モジュールと連携します。生成されたファイルは、JDeveloperに組み込まれたビジュアル・エディタを使用して生成するファイルと同様のものです。JHeadstartにおける相違点は、高レベルの定義に基づいてファイルをバルク・ベースで作成し、生成されたページがエンド・ユーザーの要件に可能なかぎり一致するまで繰り返し修正できるということです。生成されるファイルは次のとおりです。

アプリケーションのWebユーザー・インタフェースを最大数まで生成した後は、JDeveloperの生産性の高い環境で結果を調整し、特に注意が必要なモデルとなるページに集中できます。生成したページを変更した後は、Application Generatorのページの実行時に再生成されないように設定を調整できます。また、生成されたページとカスタム設計のページが同一のADF Faces UIコンポーネントを利用しているため、すべてのページに同一のルック・アンド・フィールが自動的に継承されます。価格、サポートおよび追加サービスを含め評価用のフル機能装備のJHeadstart試用版を入手する方法の詳細は、次のOracle Technology NetworkのJHeadstartのページを参照してください。


http://www.oracle.com/technetwork/developer-tools/jheadstart/overview/index.html

1.6 Oracle ADFの学習に関する他のリソース

この開発者ガイドに加えて、アプリケーションでのOracle ADFの活用方法を理解するために役立つ次のリソースも用意されています。