Developer Tools
JDeveloper
目的
このチュートリアルでは、前のチュートリアルで作成したビジネス・コンポーネントを表示するWebページを作成 します。
所要時間
約30分
このチュートリアルでは、以下のトピックについて説明します。
スクリーンショットの表示
|
このアイコンの上にカーソルを置くか、[Alt]を押しながら[A](Firefoxでは [Alt]と[Shift]を押しながら[A])を押すと、すべ てのスクリーンショットがロードし、表示されます。 各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。 |
アプリケーション開発には、さまざまな方法があります。 アプリケーション全体の流れを把握してデータベース・スキーマを配置する場合は、フローに沿ったページ構築をおこなうことができます。 要求に応じてページのビジネス・サービスをそれぞれ構築することもできますし、最初にサービスすべてを作成してからページでまとめることもできます。 このチュートリアルでは、次の方法で開発をおこないます。
データベース・スキーマを配置したら、アプリケーションのページ・フローを作成します。そして、 ページの表示方法を理解した上で、ビジネス・コンポーネントを作成します。 ページの構築を進める中で、調整の必要な箇所が一部あります。
この項では、ページのいくつかを構築してアプリケーションを完成させます。 このチュートリアルでは、ページの作成手順を説明します。 また、各ページのテストは個別に実行します。ページ間の接続は次のチュートリアルでおこないます。
構築するアプリケーションの完全なページ・フローが手元にあるものとします。 顧客が何ページか確認することを想定し、カスタマーの表の検索やカスタマー・ディテールの編集、カスタマーの順序の問合せなどができるWebページを構築 することにします。
このチュートリアルを始める前に次のことを確認してください。
前のハンズオン・チュートリアルにある前提条件を満たしていること。
このチュートリアルの前のハンズオン・チュートリアルを終了していること。
1. 参照するためのデータ・バインドされたWebページの構築
このチュートリアルの前の項では、アプリケーションをサポートするページ・フローおよびビジネ ス・サービスを構築しました。 この項では、さまざまなページを追加し、それらをデータとバインドします。
はじめに、データベース表からデータを検索するためのWebページを構築します。 参照するためのデータ・バインドされたWebページを構築するには、以下の手順を実行します。
作業中のOrderEntryアプリケーションの アプリケーション・ナビゲータで「 ViewController」 プロジェクトを選択し、開いたらWeb Content/WEB-INFノード内の adfc-config.xmlファ イルを見つけます。
adfc-config.xmlページ・フロー・ダイアグラムが開きます。 ページ・フロー・ダイアグラムで、「 /browseCustomers」データ・ページをダブルクリックします(現 在、このファイルは存在しません)。
提案されたページ名 browseCustomers.jspxを受け入れます。 ページ内のそのほかのオプションもデフォルトのままにし、「 OK」をクリックします。
「 OK」をクリックしてページを作成し、ビジュアル・エディタに空のページを立ち上げます。
Oracle JDeveloperおよびOracle ADFでは、データアウェア・コンポーネントを簡単にページへ追加できます。 空白ページの右にADF Facesタブが表示されたことを確認します。 Common ComponentsのLayoutタブとOperationsタブには、ビジュアル・コンポーネントなどの非データ・バインド・コンポーネントがすべて 表示されています。一方で、アプリケーション・ナビゲータの下部にあるData Controlsタブには、すべてのADFデータ・バインド・コンポーネントが表示されています。
「 Data Controls」タブに切り替えます (このパレットが表示されていない場合は、アプリケーション・ナビゲータの下部にあるShow Minimized項目バーをクリックします)。
アプリケーション・モジュールがデータ・コントロール・パレットに表示されます。 CustomerOrdersBusinessServicesDataControlを 展開します。 CustomersView1ノードを展開します。 選択されたアイテムは、ビュー・オブジェクトを構築する際に選択したものです。
まず、PanelBoxをページ上に配置して表のためのページを準備します。 これを準備することで次の手順が簡単になり、ページ内も整理されます。
次に、「 CustomersView1」を選択してPanelBoxにドラッグします。 選択メニューが表示されます。 「 Tables」→「 ADF Read-only Table」 を選択します。
表の列の編集ダイアログで、「 Row Selection」と「 Sorting」 にチェックを入れます(エディタはまだ閉じないでください)。
参照ページと問合せページを作成しているため、ページ上のビュー・オブジェクトにある列をすべて表示する必要はありませんが、編集ページで はすべての列が必要です。
[Shift]を押しながら(または[Ctrl]を押しながら個々の列を選択して)、
CustomerId、
CustFirstName、
CustLastName、
CustEmail以 外のすべての列を選択し、
Delete「
」をクリックします。
「 OK」をクリックします
次に、 プロパティ・インスペクタの Styleセクションで Widthを 100%に設定し、表が画面の幅全体を使用して表示されるようにします。
PanelBoxには、デフォルト名が入力されています。 これを、 プロパティ・イン スペクタ内で"Customers"に変更します。
構築したページをテストするには、アプリケーション・ナビゲータから実行するか、ページ自体から実行してください。 ここでは、ページ・フロー・ダイアグラムに戻ります。 /browseCustomersデータ・ページにインコン プリート(感嘆符)アイコンが表示されていないことを確認します。
ページ・フロー・ダイアグラムで「 browseCustomers」ページを右クリックし、コンテキス ト・メニューから「 Run」を選択してページを実行する内部サーバーを起動します。
読取り専用Webページがブラウザ上で実行され、Customers表に問い合わせます。 ラベルは前のチュートリアルで指定したエンティティ・オブジェクトとビュー・オブジェクトで、ソートの順番はそのチュートリアルのビュー・オブジェクトで 指定したORDER BY句に基づいたものです。
レコードの順番は、列ラベルをクリックして変更できます。 順番や昇降順を指示する列がどれかを示すアイコンが表示されます。 レコードの最後まで移動し、戻れることを確認してください。 終了したら、ブラウザを閉じます。
時間に余裕がある場合は、ページを作成した際に、何が起こるかを確認してください。 Oracle JDeveloperに戻り、アプリケーション・ナビゲータから「 ViewController」→「 Application Sources」を開きます。 多くのパッケージが用意されています。
「 view.pageDefs」を選択します。
これを展開し、「 browseCustomersPageDef.xml」を選択します。
下のStructureウィンドウで、「 executables」→「 CustomersView1Iterator」 を選択します。 行イテレータは現在の行を個々のコントロール・バインドに送信し、現在のデータを表示します。 イテレータ・バインドは、Webページに表示する行の数を指定できます。 「 CustomersView1Iterator」 を選択してから プロパティ・インスペクタを見ると、 RangeSize の 値セットの返したレコード数が表示されることを確認します。
次に、「 bindings」→「 CustomersView1」を 開きます。 ここでは、作成したビュー・オブジェクトの列の属性名をすべて閲覧できます。
データ・コントロール・パレットからアイテムをドラッグすると、データ・バインドがここに追加されます。
多くのアプリケーションでは、行が完全に削除される前に、ユーザーが削除アクションを確認できるようにしていま す。 このチュートリアルでは、個別のページを作成する時間がありません。 ここでは、ページへのDeleteボタン、Commitボタン、Rollbackボタン(または、このチュートリアルのようにリンク)を追加します。
操作ボタンをページに追加するには、次の手順を実行します。
browseCustomersページのビジュアル・エディタに戻ります。 データ・コントロール・パレットの「 CustomersView1」ノードを展開します。 OrderView1のすぐ下にある、「 Operations」を開きます。
Delete操作を検索し、それを Toolbarとラベルの貼られ た領域の Panel boxへドラッグします。 表示されたコンテキスト・メニューから「 ADF Link」を選択します。
データ・コントロール・パレットで CustomersView1ノードを閉じます。 CustomersView1 と同じレベルにOperationsノードがあります。 このノードを展開し、「 Commit」操作および「 Rollback」 操作を表示します。 各操作をページのDeleteリンクの横にドラッグして、ロールバック・リンクの プロパティ・インスペクタに ある Textフィールドを「 Cancel」に変更します。
リンク間の空白をデフォルトで追加されるよりも多く配置する場合は、「 Spacer」レイアウト・コン ポーネントをリンク間にドラッグします。
前回同様、ページを実行して変更をテストします。
レコードを 選択して削除し、変更をロールバックします。
次のチュートリアルでは、新規レコードを作成します。
終了したら、ブラウザを閉じます。
Save All「
」をクリックして作業内容を保存します。
3. データ編集のためのデータ・バインドされたWebページの構築
さきほど構築したページでは、カスタマーのブラウズと削除のみが実行可能です。 この項では、新規レコードの作成および既存レコードの更新が可能なWebページを作成します。 カスタマーの更新ができるWebページを構築するには、次の手順を実行します。
ページ・フロー・ダイアグラムの editCustomersアイコンに対応する ページを 作成します。
これは、browseCustomersページと同じ手順です。
ページ・フロー・ダイアグラム( adfc-config.xml)で、「 editCustomers」 アイコンをダブルクリックまたは右クリックします。
editCustomer.jspxをページ名として受け入れます。
ウィザードにあるそのほかすべてのデフォルトを受け入れます。
このページの第1項でCustomerリストを作成したのと同様に、PanelBoxをページへドラッグしてText属性を'Edit Customer'に変更します。
コンポーネント・パレットで、「 Data Controls」パレットをクリックします。
「 CustomerOrdersBusinessServicesDataControl」を展開し、 「 CustomersView1」 を選択して、ページにドラッグします。 コンテキスト・メニューから「 Forms」→「 ADF Form」を選択します。
「 Include Submit Button」にチェックを入れて、「 OK」 をクリックし、フォーム・フィールドすべてを承認します。
このページのレイアウトは、前に作成したページとはかなり異なります。つまり、ページへ同じデータ・コントロールをドラッグしても、さまざ まな形式で表示できるということです。
次の項では、ナビゲーションを追加してページのUIを強化し、ページのテストをおこないます。 最初にページを実行し、正常に作動するか確認します。
ページを実行するには、browseCustomersページをテストした手順と同様に、「 editCustomers」 ページを選択および右クリックし、コンテキスト・メニューから「 Run」を選択します。
終了したら、ブラウザを閉じます。
ビジネス・モデルの構築方法によって、アプリケーション・モジュールはマスター/ディテール関 係を処理します。
以前ビュー・オブジェクトを作成するためにウィザードを使用した際、ビュー・オブジェクト間の ビュー・リンクとなる外部キーの関連を取り込みました。 ビュー・リンクは、Oracle Formsの関連付けと似ています。 アプリケーション・モジュールを構築した際に、各ビュー・オブジェクトを前のビュー・オブジェクトの子として、ビュー・リンク経由でデータ・モデルに移動 させました。 つまり、アプリケーション・モジュールのOrdersビュー・オブジェクトはCustomersの子ということです。 そのため、選択されたカスタマーの順番のみが表示されることになります。 同様に、アプリケーション・モジュールのOrderItemsビュー・オブジェクトはOrdersの子に当たるため、選択された順番のOrderアイテム のみが表示されるというわけです。
アプリケーション・モジュールがマスター/ディテール関係をとることから、マスター/ディテール Webページを構築する際に実行するべきことはとくにありません。 関連する順序でカスタマーを表示するWebページを構築するには、次の手順を実行します。
ページ・フロー・ダイアグラムのbrowseCustomerOrdersアイコンと連携する ページを 作成します。
これは、browseCustomersページと同じ手順です。
ページ・フロー・ダイアグラム(adfc-config.xml)で「 /browseCustomerOrders」 アイコンをダブルクリックします。
browseCustomerOrders.jspxをページ名として受け入れます。
ウィザードにあるそのほかすべてのデフォルトを受け入れます。
パネル・ボックスを追加して、Text属性を'Customer Orders'に変更します。
コンポーネント・パレットで、「 Data Controls」パレットをクリックします。
Data Controlsパレットで「 CustomerOrdersBusinessServicesDataControl」 を展開し、次に「 CustomersView1」および「 OrdersView1」 を展開します。
「 OrderItemsView1」を選択して、ページにドラッグします。 コンテキスト・メニューから、「 Master-Details」→「 ADF Master Form」 →「 Detail Table」を選択します。
ここでは、各セクションのタイトルをOrdersおよびOrder Itemsに変更します。
プロパティ・インスペクタを使用して、テキスト・プロパティの「 OrdersView1」を選択した ら、テキストを Ordersに置き換えます。 次に、詳細レコードのタイトルである OrderItemsView1を Order Itemsに変更します。 その際に、ビジュアル・エディタのテキストが更新されたことを確認してください。
注:テキスト・プロパティのプロパティ・インスペクタを簡単に選択できない場合は、Structureウィンドウに移動して各ヘッダーの「 af:panelHeader」 を選択します。 そのあと、プロパティ・インスペクタのテキスト・プロパティを選択して変更できます。
マスターのOrdersセクションにおいて、すべての列を表示させる必要はありません。
「 SalesRepId」を削除します。
ページからラベルとデータが削除されたことを確認してください。 「 SalesRepId」列を選択したら、 Structureウィンドウのリンクで「 af:inputText」を選択したことを確認します。 エディタから項目を削除するか、Structureウィンドウから削除するか、任意の方法で実行してください。
ページの詳細項目で、表示する必要のない列がいくつかあります。 ただし、列はJoin構文で必要なので、削除しないでください。
Order Items詳細セクションで「 OrderId」列を選択し、プロパティ・インスペクタで Renderedプ ロパティを Falseに設定します。
チュートリアルの初期段階で、列のヘッダーだけでなく、かならず列すべてを選択してください。 これは、Structureウィンドウの選択で確認できます。
この手順を、 Order Itemsの ProductIdの両イン スタンスで実行し、 Renderedプロパティを各ケースで Falseに設定しま す。 これで、ページは次の画面のようになります。
ProductName列を LineItemIdの横に移動させま す。
ProductName列を選択します。 これによって、Structureウィンドウの列がハイライトされます。 Structureウィンドウを使用し、「 ProductName」 列を上部のLineItemId列までドラッグします。
ページのテストを実行するには、そのほかのページでテストを実行した際と同様に、「 browseCustomerOrders」 ページを右クリックして、コンテキスト・メニューから「 Run」を選択します。
ラベルのみが表示されるのは、注文のない顧客が表示されているためです。 もしそのように表示される場合は、特定の CustomerIdのページを実行できます。 実行するには、「 OrderEntry」→「 Model」 プロジェクトから CustomersViewに戻ります。 「 CustomersView」をダブルク リックして、Propertiesダイアログを起動します。 " Customers.CUSTOMER_ID = 109" をSQL文の Where句に追加します。 これは、次のチュートリアルでbrowseCustomersページからbrowseCustomerOrdersをコールする際には不要です。 Webページのテストが終了したら、かならず制限を解除してください。
終了したら、ブラウザを閉じます。
Save All「
」をクリックして作業内容を保存します。
このチュートリアルでは、アプリケーション内でいくつかのWebページを構築し、データアウェア・コンポーネン トを追加しました。 前回のチュートリアルで構築したビジネス・モデルによって、簡単にマスター/ディテールWebページを構築できましたが、その時点ではページの機能が制限 されていました。 次のチュートリアルでは、ページ・フローへ統合してUIに追加します。
このアイコンの上にカーソルを置くか、または[Shift]と[Alt]を押しながら[H]を押 すと、すべてのスクリーンショットが非表示になります。 アイコンをクリックして、ナビゲーション・バーを表示します。
| |
|
|