Oracle Database 2日でJava開発者ガイド 11g リリース1(11.1) E05692-02 |
|
この章では、Oracle Application Developer Framework(Oracle ADF)を使用したマスター・ディテール・アプリケーションの作成方法について説明します。内容は次のとおりです。
マスター・ディテール・アプリケーションを使用すると、関連する表のデータを同時に表示できます。マスター表のレコードをディテール表の関連するレコードとともに表示できます。マスター・ディテール・データを編集するためのプロビジョニングがアプリケーションに組み込まれている場合は、共通のインタフェースを使用して両方の表のデータを編集することもできます。この章で作成するマスター・ディテール・アプリケーションは、次のもので構成されます。
HR
スキーマの表内のデータへのアクセスおよび更新を可能にします。これは、model
という名前の1つのプロジェクトにあります。
view
という名前のプロジェクトにあります。
model
およびview
プロジェクトは、Java EE Model-View-Controller(MVC)デザイン・パターンに基づいています。このデザイン・パターンは、Oracle ADFを使用して簡単に実装できます。
図7-1に、このアプリケーション用に開発された項目の関係を示します。
このアプリケーションは、Oracle DatabaseのHR
スキーマにアクセスします。マスター表として部門表を使用して、従業員表からディテール・データを表示します。この章では、Oracle ADFとJDeveloperを使用してこのアプリケーションを作成する方法について説明します。
Oracle ADFは、Java EE標準およびオープンソース・テクノロジに基づくエンドツーエンド・アプリケーション・フレームワークであり、サービス指向アプリケーションの作成を簡略化および促進します。Oracle ADFを使用すると、Web、ワイヤレス、デスクトップまたはWebサービス・インタフェースを使用してデータを検索、表示、作成、変更および検証するエンタープライズ・ソリューションを開発できます。Oracle JDeveloper 10g とOracle ADFを連携して使用することで、ドラッグ・アンド・ドロップによるデータ・バインディング、ビジュアルなUI設計およびチーム開発機能が組み込まれた、設計からデプロイまでの全開発のライフサイクルを網羅する環境が提供されます。
次の項では、マスター・ディテール・アプリケーションの作成に使用するいくつかのOracle ADF機能について説明します。
Oracle ADFビジネス・コンポーネントは、データベース中心のEnterprise Java EEアプリケーション用のビジネス・サービスを開発するためのJava EE準拠のテクノロジです。Oracle ADFビジネス・コンポーネントにより、Oracle Formsなどの4GLツールに慣れた開発者にとって、ビジネス・サービスの構築が簡単になります。
Oracle ADFビジネス・コンポーネントのテクノロジには、次のような特徴があります。
これらの機能はすべて完全にカスタマイズ可能です。このマニュアルで作成するアプリケーションのADF中間層を作成するには、データベース表からADFビジネス・コンポーネントを作成します。
Oracle ADF Facesは、JavaServer Faces(JSF)JSR 127仕様に基づいています。Oracle ADF Facesコンポーネントは、アプリケーションのユーザー・インタフェースで使用されます。これらのコンポーネントは、JSFをサポートする任意のIDEで使用できます。
Oracle ADF Facesを使用すると、アプリケーションの一貫したルック・アンド・フィールを設定できます。これにより、ルック・アンド・フィールに準拠することより、ユーザー・インタフェースの相互作用に重点を置くことができます。ADF Facesコンポーネントは、多言語および翻訳の実装やアクセシビリティ機能もサポートしています。
JDeveloperには、複数の設計ツール、ウィザード、特殊なダイアログ・ボックスおよびプロパティ・エディタがあり、これらはADF Facesコンポーネントをページに挿入して使用するのに役立ちます。たとえば、ビジュアル・エディタでは、コンポーネント・パレットからコンポーネントをドラッグ・アンド・ドロップしてユーザー・インタフェースを設計できます。XMLまたはJSP/HTMLのコーディングに慣れている場合は、ページ・ファイルのソースを編集して、ADF Facesコンポーネントのタグを挿入することもできます。
ファセットは、名前付きの子コンポーネントに似ています。親コンポーネント内でファセットを使用して、ページでの子コンポーネントの表示方法を制御します。ファセットは、特定のタイプのUIコンポーネントのプレースホルダです。
サンプル・アプリケーションで使用されるADF Faces af:panelPage
コンポーネントでは、ページ全体をレイアウトできます。ページレベルおよびアプリケーションレベルのテキスト、イメージ、アクションおよびボタンをページの特定の領域にレイアウトするためのファセットがサポートされています。
ADF Facesコンポーネントをページにドロップすると、JSP/HTMLビジュアル・エディタには、点線の四角形としてファセットが表示されます。
Oracle ADFデータ・コントロールによって、アプリケーション・クライアントは、モデル・オブジェクト・レイヤーによって定義されたビジネス・サービスにアクセスできます。ビジネス・サービスは、モデル・プロジェクトによって定義された任意のコレクション、値またはアクションです。実行時に、データ・バインドされたUIコンポーネントは、ビジネス・サービスによって定義されたビジネス・サービスにアクセスできます。
Oracle ADFビジネス・コンポーネントをビジネス・サービス・テクノロジとして使用すると、データ・モデル・コンポーネントがOracle ADFデータ・コントロールとしてモデル・レイヤーに公開されます。サンプル・アプリケーションでは、データ・コントロール・インタフェースはすでに実装されているため、作成するOracle ADFビジネス・コンポーネントのデータ・コントロールを作成する必要はありません。
マスター・ディテール・アプリケーションの開発に進む前に、アプリケーションとデータベースの間の接続を確立するConnection
オブジェクトを作成する必要があります。Connection
オブジェクトの作成手順は、第3章を参照してください。
AnyCo_ADF_MD
と入力し、「アプリケーション・パッケージの接頭辞」は空白のままにして、「アプリケーション・テンプレート」で「テンプレートなし[すべてのテクノロジ]」を選択します。「OK」をクリックします。
model
と入力し、「OK」をクリックします。
model
というプロジェクトを含むAnyCo_ADF_MD
という名前のアプリケーションができました。
modelプロジェクトで、hr.Departments
およびhr.Employees
表をアプリケーションで表示および編集できるようにするADFビジネス・コンポーネントを作成します。
AnyCoAppModule
を入力します。「次へ」をクリックします。
model
プロジェクトに作成されます。
ADF中間層を生成しました。これに対して、ユーザー・インタフェースを作成できます。この時点で、データベースからの外部キー関係を処理するその他のビジネス・コンポーネント・オブジェクトも生成されます。DeptMgrFkAssoc
、DeptMgrFkLink
などです。
図7-3に、アプリケーション・ナビゲータを示します。model
プロジェクトの内容を開いて、アプリケーションに作成される項目を表示できます。
アプリケーション・ユーザー・インタフェースは、一連のJSPページで構成されます。このアプリケーションでは、ビューと呼ばれるユーザー・インタフェース(UI)は別のプロジェクトで定義されます。
アプリケーションUIを作成するには、次のようにview
という名前のプロジェクトを定義します。
view
と入力し、「OK」をクリックします。
次の手順を使用して、employees.jsp
という名前のページを作成します。このページを使用すると、部門および従業員のマスター・ディテール・ページの調整されたセットを参照できるようになります。
employees.jsp
と入力し、ページ・タイプに「JSPページ(*.jsp)」が選択されていることを確認します。「次へ」をクリックします。
JSP/HTMLビジュアル・エディタに新しい空のemployees.jsp
が表示され、ページの設計を開始する準備が整いました。
次の手順では、ページに項目を追加してページ・レイアウトを定義します。これまでの章と同様に、コンポーネント・パレットを使用して、タグをページにドロップします。このページでは、ADF Faces PanelPageコンポーネントを使用します。
ドロップすると、図7-6に示すように、Title 1というテキストとともに濃い青色の線が表示されます。
Title 1
からBrowse Employees
に変更して、[Enter]を押します。タイトルの変更がビジュアル・エディタのページに反映されます。
変更すると、テキストはビジュアル・エディタで大きく青色で表示されます。図7-7に、これらの手順の後のビジュアル・エディタでのページを示します。
次の手順では、ページに項目を追加して、ユーザーが部門およびその従業員を表示できるようにします。これらの手順では、データ・コントロール・パレットを使用します。これは、デフォルトではJDeveloperの表示の右、コンポーネント・パレットの横にあります。データ・コントロール・パレットによって、ADFデータ・コントロールという名前のデータ・オブジェクトをページにドロップできます。
最初の段階は、部門、および別の部門とその関連従業員へのナビゲーション・ボタンを表示する読取り専用フォームを追加することです。このことを行うには、modelプロジェクトで作成したデータ・コントロールの1つをページにドラッグします。
ナビゲーション・ボタンがページに表示された読取り専用フォームがビジュアル・エディタに表示されます。フォームが表示されない場合は、リフレッシュ・ボタンをクリックします。フォーム・フィールドの値は、#{...}などの式言語を使用して表示されます。これは、ページにレンダリングされるアプリケーション・データをJSFが識別する方法です。
図7-10に、これらの手順の後でページがビジュアル・エディタにどのように表示されるかを示します。
次の手順では、最初に水平のセパレータをページに追加して、部門データと従業員のディテール・データを分割します。次に、各マスター部門の従業員のディテール・データを表示するために、modelプロジェクトで作成したビジネス・コンポーネントから作成された別のデータ・コントロールを使用します。従業員データを特定のマスター部門にリンクするデータ・コントロールを選択します。従業員データはObjectSeparatorの下に表示します。
部門表のフィールド以外に、子のEmployeesView3ノードもあります。このノードは、部門表への外部キーによって制限された詳細な従業員または従業員セットを表します。
ドロップする前にマウスを移動すると、どこにドロップされるかがビジュアル・エディタおよび左下の「構造」ウィンドウに表示されます。図7-11に示すように、af:objectSeparator
の後になるように、ドロップされる位置を「構造」ウィンドウで調整します。
「OK」をクリックする前に、3つの列DepartmentId、ManagerIdおよびCommissionPctを削除します。これらの各行で順番に行を選択し、「削除」をクリックします。
図7-12に、「表の列の編集」ダイアログ・ボックスを示します。
「OK」をクリックして表を生成します。
図7-13に示すように、マスター・フォームとディテール表の両方がビジュアル・エディタに表示されます。
部門と従業員をページに追加した後は、ここまでのアプリケーションをテストします。アプリケーションをテストするには、次の手順を実行します。
ブラウザに表示されるページは、図7-14のようになります。
JSFナビゲーション・ダイアグラムを使用して、アプリケーションを計画できます。このダイアグラムには、アプリケーション・ページおよびそれらの間のナビゲーション・ケースが表示されます。
ダイアグラムから新しいページを直接作成し、それらの間のナビゲーションを定義できます。コンポーネント・パレットからドロップした要素を使用します。
その後、ビジュアル・エディタなどのツールを使用してJSFページを編集したり、ダイアグラムからナビゲーション・ケースを直接編集することができます。
ユーザーが従業員データを編集できるようにするために、新しいページedit.jsp
を作成します。このページに、データ・コントロール・パレットからADF入力フォームをドロップします。
次の手順では、JSF JSPウィザードを使用して新しいページを直接作成するかわりに、JSFナビゲーション・ダイアグラムから新しいページを作成します。後の手順では、ページ間のナビゲーションもダイアグラムでビジュアルに定義します。
空のナビゲーション・ダイアグラムが表示されます。
employees.jsp
ページを表すページ・アイコンがナビゲーション・ダイアグラムに表示されます。
新しいページ・アイコンがダイアグラムに表示されたら、テキストedit.jsp
を入力して名前/untitled1.jsp
を置き換え、[Enter]を押します。(名前の前にスラッシュを追加する必要はありません。自動的に追加されます。)
この時点で新しいページがダイアグラムに追加されましたが、ページ・ファイル自体は存在しません。このことを示すために、ページ・アイコンには黄色の注意記号が付いています。
edit.jsp
ページを作成するには、ダイアグラムでページedit.jsp
のページ・アイコンをダブルクリックします。
employees.jsp
ページと同じなので、「終了」をクリックします。ビジュアル・エディタに新しいページが表示され、ページを設計する準備が整いました。
ユーザーによるJSFアプリケーションのナビゲーションは、ユーザーがリンクをクリックしたときに次に表示されるページを決定するナビゲーション・ルールを使用して定義されます。ページ上の様々なリンクなど、様々なケースがナビゲーション・ケースとして定義されます。
ダイアグラムを使用して、ページ間のフローを表すアプリケーションのページ間のナビゲーションを描くことができます。
JSFナビゲーション・ダイアグラムでナビゲーションを描くと、2つのことが起こります。必要な構成ファイルにナビゲーション・ケースが自動的に追加されます。また、ページをつなぐ矢印として、ナビゲーション・ケースがダイアグラムに表示されます。矢印の向きは、ユーザーのナビゲート元およびナビゲート先のページを示します。
1つのページからの異なるナビゲーション・ケースを区別するために、各ナビゲーション・ケースにラベルが関連付けられます。
次の手順では、アプリケーションの2つのページ間のナビゲーションを可能にするために、アプリケーションにナビゲーションの詳細を追加します。
2つのページが線でつながれました。これは、employees.jsp
ページからedit.jsp
ページにナビゲートするナビゲーション・ケースを表します。「成功」というデフォルト値のラベルが付いています。
edit.jsp
ページからemployees.jsp
ページへ戻るナビゲーションを表します。
ナビゲーション・ダイアグラムには、両方のナビゲーション・ケースが表示されます。1つは、ユーザーが従業員の詳細を編集できるようにemployees.jsp
ページからedit.jsp
ページへナビゲートするためのナビゲーション・ケースで、もう1つは、ユーザーがemployees.jsp
ページに戻るためのナビゲーション・ケースです。図7-15に、employees.jsp
ページおよびedit.jsp
ページのナビゲーション・ダイアグラムを示します。
ユーザーが従業員データを編集できる編集ページを作成するには、ADF Facesコンポーネントを使用して、従業員ページとまったく同じ方法でページをレイアウトします。
従業員データには、データ・コントロールが使用されています。特定の部門の特定の従業員の正しい従業員データを表示するために、従業員ページで使用した部門データ・コントロールの子データ・コントロールとして従業員データを提供できるデータ・コントロールがあります。このデータ・コントロールによって、従業員データの正しいセットが提供されます。
ユーザーがデータを編集できるように、表ではなくADFフォームにデータを表示します。
次の手順では、edit.jsp
ページを作成します。
edit.jsp
ページを開きます。
edit.jsp
ページで、コンポーネント・パレットの「ADF Faces Core」ページから、PanelPageコンポーネントをページに追加します。PanelPageのタイトルをEdit Employeeに変更します。
編集フォームはほぼ完成です。最後に、ユーザーがemployees.jsp
ページに戻るためのボタンを追加します。これを行うには、次の手順を実行します。
edit.jsp
ページからemployees.jsp
ページにユーザーが戻るナビゲーション・ケースで入力した値です。
編集ページが完成しました。図7-16に示すようなページになります。
残りの処理は、従業員ページを表示したユーザーが編集ページにナビゲートして従業員の詳細を編集できるようにすることです。これを行うには、ナビゲーション・ダイアグラムで定義したeditという名前のナビゲーション・ケースを使用します。従業員ページの従業員表にはすでにボタンがあり、ユーザーが編集ページにナビゲートするために使用できます。
employees.jsp
ページを開きます。
employees.jsp
ページからedit.jsp
ページにユーザーがナビゲートするナビゲーション・ケースとしてナビゲーション・ダイアグラムで指定した値です。
これで、ユーザーがこのボタンをクリックすると、選択したレコードが表示された編集ページにナビゲートされます。
ユーザーが従業員の詳細に対して行った編集をコミットできるように、またはロールバックしてそれらを破棄できるように、コミットおよびロールバック機能を有効にするには、employees.jsp
ページの下部に「コミット」ボタンおよび「ロールバック」ボタンを追加します。
この手順でもファセットを使用します。この場合、フッター・ファセットを表に追加し、「コミット」ボタンおよび「ロールバック」ボタンをこのフッター・ファセットに追加します。
次の手順でフッター・ファセットを追加するには、「構造」ウィンドウを使用します。
employees.jsp
が表示されている状態で、「構造」ウィンドウで表コンポーネント(af:table)を開きます。構造内には、Table Facetsフォルダがあります。
図7-17に示すように、フッター・ファセットは現在空のため灰色です。
「コミット」ボタンおよび「ロールバック」ボタンを保持できるように、フッター・ファセットをこのプレースホルダに挿入します。
図7-18に示すように、フッター・ファセットがページの表の一番下に追加されます。
これで、JSFコンポーネントをフッター・ファセットに配置できます。
必要な「コミット」ボタンおよび「ロールバック」ボタンは、データ・コントロール・パレットのOperationsノード内にあります。このノードは、親AnyCoAppModuleDataControlの直下の子です。
ページにボタンを追加するには、次の手順を実行します。
それぞれの処理をデータ・コントロール・パレットからフッター・ファセットにドロップすると、ダイアログ・ボックスが表示されます。「ADFコマンド・ボタンの作成」を選択します。
これでアプリケーションが完成しました。最終的なemployees.jsp
ページは、図7-19に示すようになります。
次のようにアプリケーションを実行できます。
employees.jsp
を右クリックし、ショートカット・メニューで「実行」を選択します。
ブラウザに表示される従業員ページを図7-20に示します。
ブラウザに表示される編集ページを図7-21に示します。
|
![]() Copyright © 2007 Oracle Corporation. All Rights Reserved. |
|