Oracle ADF Business Componentsによるビジネス・サービスの開発

目的

このチュートリアルでは、Oracle ADF Business Componentsを使用したFusion Order Demoアプリケーションのビジネス・サービスの開発について説明します。

所要時間

約60分

トピック

このチュートリアルでは、以下のトピックについて説明します。

 概要
 前提条件
 Oracle JDeveloperの起動およびデータベースの構成
 Oracle ADF Business Componentsによるビジネス・サービスの開発
 デフォルト・コンポーネントのカスタマイズ
 まとめ

スクリーンショットの表示

 このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロード し、表示されます。 (警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)

注:各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの 上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。

 

概要

このチュートリアルでは、Oracle ADF Business Componentsを使用して、Fusion Order Demoサンプル・アプリケーションの製品および注文を表示するビジネス・サービスを開発します。

トピック・リスト に戻る

前提条件

このチュートリアルを開始する前に、OracleデータベースおよびOracle JDeveloper 11製品版を正しくインストールする必要があります。

トピック・リストに戻る

 

Oracle JDeveloperの起動およびデータベースの構成

1.

Oracle JDeveloper 11g製品版を起動するには、以下の手順を実行します。

<JDEV_HOME>\jdeveloper.exeプログラム(たとえば、 c:\oracleFusion\jdeveloper11\jdeveloper.exe) をダブルクリックします。

Oracle JDeveloperは、初期化を開始します。

ロール・ダイアログ表示されたら、「 Default Role」を選択して、「 OK」 をクリックします。

Configure File Type Associationsボックスで、すべてのチェッ ク・ボックスを選択して、「 OK」を押します。

以前のリリースから移行するかどうかのメッセージが表示されたら、「 No」をクリックします。

 

2.

Tip of the Dayダイアログ・ボックスおよびUpdatesダイアログ・ボックスを閉じます。

 

3.

次に、Oracle JDeveloperからAntスクリプトを実行して、チュートリアルのデータベース・スキーマを作成します。 最初に、ハードディスク・ドライブの一時的な場所に Infrastructure.zipをダウンロードします。

ファイル・エクスプローラで、「 Infrastructure.zip」ファイルを右クリックし て、「 Winzip」→「 Extract to...」を選択します。

 

4.

解凍ダイアログで、Infrastructureワークスペースを展開するフォルダ(たとえば、 c:\oracleFusion\tutorial) を入力します。 ファイルは別の場所にも展開できますが、このパスの領域を含む場所には解凍しないようにしてください。

 

5.

次に、Oracle JDeveloperでビルド・スクリプトを含むワークスペースを開きます。

アプリケーション・ナビゲータで「 Open Application」を選択します。

前の手順でInfrastructure.zipを解凍した場所を参照します。 「 Infrastructure.jws」 を選択して、「 Open」をクリックします。

 

6.

このワークスペースには、4つのプロジェクトがあります。 プロジェクトとはファイルの論理グループで、Oracle JDeveloperでの作業を保存します。 「 MasterBuildScript」プロジェクトを開きます。

 

7.

「 Resources」ノードを開き、アプリケーション・ナビゲータの「 build.properties」 をダブルクリックして、Oracle JDeveloperのエディタでファイルを開きます。 このファイルには、Antスクリプトの実行に使用される設定が含まれます。

 

8.

build.propertiesファイルの次の値を修正し、環境固有の設定をおこないます。下に示されているようにスラッシュを使用 します。

jdeveloper.home <JDEV_HOME>(たとえば、C:\Oracle\ Middleware\jdeveloper)
jdbc.port 1521(異なる場合は使用しているポート)
jdbc.sid XE(または使用しているSID、たとえば、ORCL)

ツールバーの「 Save」アイコンをクリックして、ファイルを保存します。

 

9.

アプリケーション・ナビゲータで、MasterBuildScriptプロジェクトの「 build.xml」 を右クリックして、「 Run Ant Target」→「 buildAll」を選 択します。

Oracle JDeveloperのAnt Logウィンドウが表示され、データベース・システム・パスワードを要求する別のウィンドウが表示されます。 パスワードを入力して、「 Continue」 をクリックします。 このウィンドウが表示されずにAntログが"setProperties:"で停止している場合は、Oracle JDeveloperを最小化します。ウィンドウはおそらくOracle JDeveloperの後ろに隠れています。

無害のエラーを含め、いくつかのメッセージが表示されます。 次のテキストが表示された場合、"FOD"スキーマが正しくインストールされています。


buildAll:

BUILD SUCCESSFUL
Total time: n minutes nnseconds

 

 

トピック・リストに戻る

 

Oracle ADF Business Componentsによるビジネス・サービスの開発

個人、製品、注文、および注文項目表のビジネス・コンポーネントを構築するには、以下 の手順を実行します。

1.

最初に、アプリケーションの新しいワークスペースを作成します。

アプリケーション・ナビゲータで、Infrastructureワークスペースの横のドロップダウンを選択して、「 New Application...」を選択します。

 

2.

ウィザードの最初のCreate Applicationステップで、アプリケーションに FusionOrderAppと いう名前をつけます。 ワークスペースとすべての関連ファイルを格納するディレクトリ(たとえば、 c:\oracleFusion\tutorial\FusionOrderApp) を入力します。


「 Finish」をクリックします。

 

3.

ウィザードの2番目のCreate Projectステップで、Project Nameに ADFBC_Modelを 設定して、「 OK」をクリックします。

 

4.

アプリケーション・ナビゲータで「 ADFBC_Model」プロジェクトを右クリックし、コンテキ スト・メニューから「 New...」を選択します。

New Galleryで「 Business Tier」を開き、Categoriesリスト内の「 ADF Business Components」を選択します。

Itemsリスト内の「 Business Components from Tables」を選択します。


「 OK」をクリックします。

 

5.

Initialize Business Components Projectダイアログで、緑色のプラス記号をクリックして、新しい接続を作成します。

Create Database Connectionダイアログで、次の詳細を設定して、ほかのすべての値をデフォルトのままにします。

Connection Name FOD
Username fod
Password fusion
JDBC Port 1521(異なる場合は使用しているポート)
SID XE(異なる場合は使用しているSID)

「 Test Connection」をクリックして、接続の詳細が正しいことを確認します。


「 OK」をクリックしてCreate Database Connectionダイアログを終了し、再度「 OK」をクリックしてビジネス・コンポーネントの開発を続行します。

 

6.

Create Business Components from Tablesウィザードのステップ1/6で、パッケージ名を adfbc_model.entitiesに 設定します。

「 Query」をクリックして、使用可能な表のリストを表示させます。

Availableリストの「 ORDERS」、「 ORDER_ITEMS」、「 PERSONS」、 「 PRODUCTS_BASE」、「 PRODUCT_IMAGES 」 を[Ctrl]を押しながらクリックして選択します。

「 Add」ボタンをクリックして、選択した表を選択リストに移動します。


「 Next」をクリックして続行します。

 

7.

ステップ2/6で、パッケージを adfbc_model.queriesに設定します。 これで、永続オブジェクト(エンティティ)と問合せ可能オブジェクト(ビュー)が論理的に分離されます。

「 Add All」ボタンをクリックして、すべてのオブジェクトを選択リストに移動 します。


「 Next」をクリックします。


8.

ステップ3/6で、「 Next」をクリックします。 更新可能なビュー・オブジェクトのみを使用します。

 


9.

まだ選択されていない場合は、ステップ4/6で「 Application Module」チェック・ボックスをクリック します。 パッケージに adfbc_model.service、アプリケーション・モジュールに FusionOrderApp という名前をつけます。


「 Next」をクリックします。


10.

Oracle JDeveloperには、コンポーネントを管理するためのさまざまなテクノロジーがあります。 その1つは、コンポーネントおよびコンポーネントの関係を表すダイアグラムを使用することです。 ここでは、コンポーネントのダイアグラムをOracle JDeveloperで作成する方法を選択します。

ステップ5/6で、「 Business Components Diagram」チェック・ボック スを選択して、デフォルトのパッケージおよび名前を受け入れます。


「 Next」をクリックして続行します。

 

11.

ビジネス・コンポーネント・ウィザードの最後のページでは、Finishをクリックした時に作成されるオブジェクトと関係が表示されま す。

「 Finish」をクリックして、ウィザードを完了します。

 


12.

今作成したデフォルトのビジネス・コンポーネントをテストするには、アプリケーション・ナビゲータで「 Application Sources」、次に「 adfbc_model.service」を開きます。 「 FusionOrderApp」 を右クリックして、「 Run」を選択します。

 

13.

「 Connect」をクリックして、FOD接続をおこないます。

 

 

14.

メッセージ・ログに警告メッセージが表示されますが、新しいウィンドウが開いてBusiness Components Browserが表示されます。 このBusiness Components Browserウィンドウで、「 OrdersView1」 をダブルクリックすると、すべての注文を確認できます。 矢印を使用すると、注文の行を移動できます。 OrdersView1の下にネストされている「 OrderItemsOrdersFkLink1」 ビュー・リンクをダブルクリックします。 このリンクは、データベース・スキーマでOrderItems.OrderIdとOrders.OrderIdの間に外部キーが定義されているために作成 されました。 リンクされたビューには、注文レコードごとにすべての注文項目が表示されます。


終了したらBusiness Components Browserを閉じます。

 

トピック・リストに戻る

 

デフォ ルト・コンポーネントのカスタマイズ

アプリケーション・シナリオを完了するには、ウィザードで生成されたビジネス・コンポーネントの一部を修正する 必要があります。

1.

最初に、アプリケーション・ナビゲータで「 adfbc_model.entities」 を開き、表ベースのエンティティのOrderItems、Orders、Personsなどを確認します。 「 OrderItems」 をダブルクリックして、エディタで開きます。

エディタで「 Attributes」ノードをクリックして、 Order_Items表のすべての列がエンティティに追加されていることを確認します。 ここで、検証機能などの属性の修正、ほかの表からの属性の追加、およびこのダイアログからの非永続(一時)属性の追加を実行できます。

 

2.

「 Quantity」属性をダブルクリックして、属性エディタを開きます。

Edit Attributeダイアログで、「 Validation」ノードをクリックします。 「 New...」をクリックして、Quantity属性の新しい検証ルールを作成します(スキーマ・ベースの検証ルー ルはすでに追加されています)。

 

Rule Typeドロップダウンから「 Range」を選択します。
Operatorとして「 Between」を選択して、Minimum Valueに 1、 Maximum Valueに 10を入力します。


「 Failure Handling」タブをクリックします。

 

3.

検証の失敗時に処理が停止されるように「 Error」ラジオ・ボタンを選択します。 Message Textウィンドウで、虫メガネ・アイコンをクリックして、リソース・バンドルからテキストを選択します。

Select Text Resourceダイアログで、 Please enter a quantity between 1 and 10 を入力します。 Keyとして entities.OrderItems.Quantity.error を 入力します。

説明テキストを入力します。


「 Save and Select」をクリックします。

「 OK」を2回クリックして、OrderItemsエンティティ・エディタに戻ります。 このビジネス・コンポーネント・エンティティを使用して新しい数量が入力されるたびに、この検証ルールが適用されます。 また、UIを作成するクライアントのタイプに関係なく、国際化可能なエラー・メッセージの文字列を使用して、ユーザーにエラーを通知します。 実際のアプリケーションでは、さらに多くの検証ルールを追加してアプリケーションのビジネス・ロジックを作成します。 宣言的な検証ルール(Compare、Length、Rangeなど)ではアプリケーションの検証要件に対応できない場合、Groovyスクリプト、正規 表現、またはJavaメソッドを使用して、エンティティまたは属性の検証ルールを実装することもできます。

 

4.

一時属性をOrderItemsエンティティに追加して、数量および単価に基づくOrder Itemの合計金額を計算します。

OrderItemsエンティティのAttributesタブで、緑色のプラス記号アイコンをクリックして、エンティティ属性を追加し ます。

New Entity Attributeダイアログで、Nameに LineItemTotalを 入力します。 Typeに Numberを選択します。

「 Persistent」チェック・ボックスの選択を解除します。 式から属性が計算されるので、データベースには保存されません。

Value Typeに「 Expression」を選択します。 「 Edit」 をクリックして、式を作成します。

Edit Expression Editorダイアログで、式として次のGroovyスクリプトを入力します。

((Quantity == null) ? 0 : Quantity) * ((UnitPrice == null) ? 0 : UnitPrice)

「 Always」を選択して、常にこの式を再計算するようにします。
「 Quantity」および「 UnitPrice」を選択領域に移動して、これら の属性名を式で使用できるようにします。


「 OK」をクリックして式エディタを終了すると、再度新しいエンティティ属性を作成できます。

ツールバーの「 Save All」をクリックして作業を保存します。

 

5.

LineItemTotal属性をOrderItemsViewビュー・オブジェクトに追加しま す。 アプリケーション・ナビゲータで、「 adfbc_model.queries」を展開し、「 OrderItemsView」 をダブルクリックしてエディタで開きます。

エディタで「 Attributes」ノードをクリックして、「 Add from Entity...」をクリックします。

「 LineItemTotal」一時属性を選択して、選択列に 移動します。


「 OK」をクリックします。

 

6.

アプリケーション・ナビゲータで「 adfbc_model.entities」 を開き、表ベースのエンティティのOrderItems、Orders、Personsなどを確認します。 エンティティ間の関係は関連と呼ばれ、デフォルトで<DetailEntityMasterEntity>FkAssocという名前がつけら れています。

このチュートリアルのシナリオでは、ORDERITEM.PRODUCT_IDとPRODUCTS_BASE.PRODUCT_IDの間に関係があり、こ れは自動的に作成されていません。 ビジネス・コンポーネント・ダイアグラムを使用してこの関係を追加できますが、ここではOracle ADFフレームワークの宣言的機能を使用してタスクを実行します。

「 adfbc_model.entities」を右クリックし て、「 New Association...」を選択します。

 

7.

Create Associationダイアログで、デフォルトのパッケージ名を受け入れて、Nameに ProductsBaseOrderItemsFkAssocを 入力します。


「 Next」をクリックします。

 

8.

Select Source Attributeパネルで、「 OrderItems」を開き、「 ProductId」 属性を選択します。 Select Destination Attributeパネルで、「 ProductsBase」 を開き、「 ProductId」属性を選択します。 「 Add」をクリックして、 OrderItemsエンティティおよびProductsBaseエンティティの2つの属性の関連を作成します。


「 Next」を2回クリックし、「 Finish」をクリックす ると関連が作成されます。

「 Save All」をクリックして作業内容を保存します。

 

9.

ビュー・オブジェクトは、データの"スライス"で、1つ以上のエンティティ・オブジェクト属性の問合せを含みます。 また、SQL問合せに完全に基づくことができます。 ウィザードで生成されたビュー・オブジェクトの場合、エンティティ・オブジェクトごとに1つのビュー・オブジェクトがあり、これはエンティティのすべての 属性を含みます。 実際のアプリケーションでは、これらの属性のサブセットだけを選択したり、1つのエンティティに基づく複数のビュー・オブジェクトを作成したりすることも できます。複数のビュー・オブジェクトを作成した場合、複数の問合せで同じデータにアクセスするようになります。 作成されたビュー・オブジェクトを表示するには、アプリケーション・ナビゲータで「 adfbc_model.queries」 を開きます。

OrderItemsView、OrdersView、PersonsViewなどが表示されており、それらの間のビュー・リンクも表 示されています。 ウィザードによって、1つの外部キー関連に対して1つのビュー・リンクが生成されています。 ここに、前の手順で作成した関連に対するビュー・リンクを追加します。

「 adfbc_model.queries」を右クリックして、「 New View Link...」を選択します。

 

10.

Create View Linkダイアログで、デフォルトのパッケージ名を受け入れて、名前に ProductsBaseOrderItemsFkLinkを 入力します。


「 Next」をクリックします。

 

11.

Select Source Attributeパネルで、「 OrderItemsView」を開 き、「 ProductsBaseOrderItemsFkAssoc」を選択します。 Select Destination Attributeパネルで、「 ProductsBaseView」を開き、「 ProductsBaseOrderItemsFkAssoc」 を選択します。 「 Add」をクリックして、関連に基づくビュー・リンクを作成します。


「 Next」を2回クリックし、「 Finish」をクリックす ると関連が作成されます。

 

12.

ビュー・オブジェクトおよびビュー・リンクは、データの表示方法を定義します。 ビュー・オブジェクトにアクセスするクライアント(Web、モバイル、またはSwing)は、データ・モデルにアクセスしてデータを表示します。 Oracle ADFのデータ・モデルはアプリケーション・モジュールに格納されています。 このため、アプリケーション・モジュールは、サービスのタイプの1つになります。 WebサービスやEJBなどの他のサービスのデータも使用するクライアントが存在することもあるでしょう。 Oracle ADFでは、データ・モデルをテストできるOracle ADF Business Componentテスターが用意されています。

さらにデータ・モデルを定義するには、アプリケーション・ナビゲータで「 adfbc_model.service」 を開き、「 FusionOrderApp」をダブルクリックして、アプリケーション・モジュール・エディタを開きま す。

エディタで「 Data Model」タブを選択します。 データ・モデル・エディタの右側に表示されているProductsBaseView1、ProductImagesView1、 OrderItemsView1などのマスター・オブジェクトを確認します。 高レベルのビュー・オブジェクトには"1"が追加されます。これは、特定のビュー・オブジェクトの最初のインスタンスだからです。 従属ビュー・オブジェクト(ビュー・リンクに基づくオブジェクト)の場合、インスタンス番号が適宜増加します。 たとえば、OrdersView1は、ビュー・リンクによって関連づけられているOrderItemsView2のマスター・オブジェクトです。

前の手順で作成したProductsBaseOrderItemsFkLinkのこのOrderItemsView2インスタンスに新 しいインスタンスを追加します。 エディタの右側の「 OrderItemsView2」を選択します。 エディタの左側で、「 OrderItemsView」を開き、「 ProductsBaseView via ProductsBaseOrderItemsFkLink」を選択します。 New View Instanceフィールドにインスタンス名(この場合、ProductsBaseView2)が表示されます。 これらのインスタンスに任意の名前をつけられることを確認するため、New View Instanceの名前を OrderItemProductDetailに 変更します。

 

最後に、インスタンスを右側に移動して、データ・モデルに追加します。

 


これで、Orders、Order Items、およびProduct Detailsへの問合せを自動的にリンクするデータ・モデルが作成および公開されました。

 

13.

次に、アプリケーションの要件に応じてビュー・オブジェクトをさらにカスタマイズします。 ここでは、個々の顧客専用のOrdersを表示します。顧客がアプリケーションにログインすると、自分の注文しか見られなくなります。

アプリケーション・ナビゲータで、「 adfbc_model.queries」を展開し、「 OrdersView」 をダブルクリックしてビュー・オブジェクト・エディタを開きます。 「 Query」タブを選択し、エディタの右上の鉛 筆アイコンをクリックして、問合せを修正します。

 

14.

問合せエディタで、WHERE句に以下を入力します。

Orders.CUSTOMER_ID = :custId

 

15.

「 Bind Variables」ノードをクリックして、custIdバインド変数を定義します。 「 New」をクリックします。 Variableタブで、Nameに custId、 Typeに Numberを指定します。


「 Control Hints」タブを選択して、Label Textに Customer Id と入 力します。 UIコンポーネントにこの変数がバインドされるとラベルが使用されます。


「 OK」をクリックすると、ビュー・オブジェクトのWHERE句をが修正されます。

「 Save All」をクリックして作業内容を保存します。

 

16.

データ・モデルの変更をテストするには、Oracle ADF Business Componentテスターを実行します。 「 FusionOrderApp」 を右クリックして、「 Run」を選択します。

 

17.

「 Connect」をクリックして、FOD接続をおこないます。

 

 

18.

Business Components Browserで、「 OrdersView1」をダブル クリックします。 バインド変数を作成したので、テスターが値の入力を要求します。 108と入力し、「 OK」 をクリックします。

 

19.

矢印を使用すると、注文の行を移動します。 OrdersView1の下にネストされている「 OrderItemsOrdersFkLink1」 ビュー・リンクをダブルクリックし、「 OK」をクリックすると、同じバインド変数値を使用します。

作成したリンクの「 ProductsBaseOrderItemsFkLink1」をダブルクリッ クして、現在選択されている注文および注文項目の製品データを表示します。 ProductsBaseViewには多くの属性が含まれるので、ウィンドウおよび列のサイズを調整してデータを表示する必要がある場合があります。

終了したらBusiness Components Browserを閉じます。

 

トピック・リストに戻る

まとめ

Fusion Order Demoサンプルのクライアント・アプリケーションの作成に使用されるビジネス・サービスを構築しました。 次のレッスンでは、これらのサービスを公開し、このサンプルのユーザー・インタフェースを作成します。

このシリーズの次のハンズオン・ラボは、以下のとおりです。

Developing the User Interface

トピック・リストに戻る