2. ビジネス・コンポーネントの構築

目的

このチュートリアルでは、アプリケーションのビジネス・サービスを作成します。 ビジネス・サービスはアプリケーションの一部であり、アプリケーション内でデータを維持し、中間層でビジネス・ルールを実装します。 これを実行するには、さまざまな方法があります。 このチュートリアルでは、ADF Business Componentsを中間層のビジネス・サービスとして使用します。

所要時間

約30分

トピック

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

 

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

Show all images

このアイコンの上にカーソルを置くか、[Alt]を押しながら[A](Firefoxでは[Alt]と[Shift]を押しながら[A])を押すと、すべてのスクリーンショットがロードし、表示されます。 各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。

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

概要

Oracle FormsまたはOracle Designerアプリケーションの開発者として、読者はデータ・ブロックの概念を熟知している必要があります。 データ・ブロックは、基盤となるデータベース表にマッピングされるコンポーネントまたはオブジェクトのようなもので、データベースへデータをコミットする前にアプリケーション内で維持する役割があります。 Javaアプリケーションの開発においては、Oracle ADF Business Componentsのエンティティ・オブジェクト、ビュー・オブジェクト、およびアプリケーション・モジュールを使用することで同様の機能を利用できます。

このチュートリアルでは、複数のエンティティ・オブジェクトとビュー・オブジェクトを作成し、1つのアプリケーション・モジュールに追加します。

トピック・リストに戻る

シナリオ

アプリケーションをベースとするデータベース表を決めて、ユーザー・インタフェースの基本的な流れの概念を構築したあと、実際に実装するビジネス・サービスを識別する必要があります。 操作するデータは、データベース表から指定します。

以下に、このワークショップの後半で作成するページのラフ・スケッチを示します。 browseCustomersページ、 editCustomersページ、 browseCustomerOrdersページです。 これらのスケッチから、計画しているアプリケーションがCUSTOMERS表、ORDERS表、ORDER_ITEMS表、およびPRODUCT_INFORMATION表からデータを操作していることがわかります。 ページには、すべての表の列が表示されていなかったり、一部のページに複数の表のデータが表示されていたりと、若干の違いがあることが確認できます。

Browse Customers Edit Customers
Browse Customer orders

 

 

トピック・リストに戻る

前提条件

このチュートリアルを始める前に次のことを確認してください。

  1. 前のハンズオン・チュートリアルにある前提条件を満たしていること。

  2. このチュートリアルの前のハンズオン・チュートリアルを終了していること。

トピック・リストに戻る

1. エンティティ・オブジェクトの作成

ADF Business Componentsの作成にはさまざまな方法があります。 このチュートリアルでは、これらを組み合わせて使用します。

まず始めに、エンティティ・オブジェクトを作成します。これは、データの維持とキャッシュ、検証、ビジネス・ルールのカプセル化をおこなうデータ・アクセス・オブジェクトです。 エンティティ・オブジェクトは、Oracle Forms内のブロックのレコード・マネージャと比較できます。 エンティティ・オブジェクトの作成は、Oracle Formsでデータ・ブロックのベースとなる表を選択する作業に似ています。

このチュートリアルの最初の部分では、ダイアグラムを使用します。 ビジネス・コンポーネント・ダイアグラム上にエンティティ・オブジェクトを作成するには、以下の手順を実行します。

  1. 作業中のOrderEntryアプリケーションで「 Model」プロジェクトを右クリックし、コンテキスト・メニューから「 New...」を選択します。

    Hover to see image

  2. New Galleryで、Categoriesリスト内の Business Tierを展開し、「 ADF Business Components」を選択して、 Itemsリストから「 Business Components Diagram」を選択します。

    OK」をクリックします。

    Hover to see image

  3. Create Business Components Diagramダイアログで、ダイアログ名として CustomerAppBC_Diagramと入力し、パッケージ名として modelを設定します。

    OK」をクリックします。

    Hover to see image

  4. ダイアグラム上にエンティティ・オブジェクトを作成する方法は複数あります。 もっとも簡単なのは、データベース表を直接ダイアグラムにドラッグしてエンティティ・オブジェクトを作成する方法です。

    エディタで CustomerAppBC_Diagramダイアグラムを開いた状態で、 データベース・ナビゲータを開きます。

    IDE Connectionsノード、 oeconn接続、および Tablesノードを展開します。

    [Ctrl]を押しながらマウスをクリックして、「 CUSTOMERS」表、「 ORDERS」表、「 ORDER_ITEMS」表、および「 PRODUCT_INFORMATION」表をすべて選択し、ダイアグラムへドラッグします。

    Hover to see image

  5. Create from Database Objectダイアログに、プロジェクト・テクノロジーに基づいた選択肢が表示されます。 「 Business Component Entity Objects」を選択します。 「 OK」をクリックして、エンティティ・オブジェクトを作成します。

    Hover to see image

  6. これでダイアグラムには、4つのエンティティ・オブジェクトがデータベースの表や外部キーによる関連性に基づいてリンクし、表示されます。

    :データベースから表をドラッグすると、いくつかのドメイン・オブジェクトが追加で作成されます。 これは、Oracle Object Typesが CUSTOMERS表を使用するためです。 これは無視しても問題ありません。

    時間があれば、前のセッションで表内のレイアウトを変更した方法と同じように、エンティティ・オブジェクトのレイアウトを変更してみてください。

    Hover to see image

  7. アプリケーション・ナビゲータに戻り、「 Model」→「 Application Sources」→「 model」の順に展開します。 これで、表をADF Business Componentsダイアグラム内にドラッグすると、Modelプロジェクト内に作成されたオブジェクトが表示されるようになります。

    Hover to see image

  8. Save AllSave All button」をクリックするか、「 File」→「 Save All」を選択して作業内容を保存します。

トピック・リストに戻る

2. エンティティのカスタマイズ

通常、エンティティ・オブジェクトの属性は、データベースの列に1対1でマッピングし、アプリケーションの多くのビュー・オブジェクトで再利用されます。 ただし、状況によっては、エンティティ・オブジェクトの属性を制限する必要があります。 この例では、アプリケーションに使用されないエンティティ・オブジェクトから属性を削除します。

  1. ダイアグラムで、「 Customer」エンティティ・オブジェクトを選択します。 コンテキスト・メニューの「 Open Customers...」を右クリックして、 Entity Object Flat Editorを起動します。

    Hover to see image

  2. 左のリストから「 Attributes」を選択して、右のEntity Attributesパネルから「 CustGeoLocation」属性を選択し、削除します。

    Hover to see image

    :別の方法として、ダイアグラムからこの属性を削除することも可能です。 この属性だけを削除し、エンティティ全体を削除しないように注意してください。

  3. Save AllSave All button」をクリックするか、「 File」→「 Save All」を選択して作業内容を保存します。

トピック・リストに戻る

3. ビュー・オブジェクトの作成

エンティティ・オブジェクトを作成したら、ビュー・オブジェクトを作成します。

ビュー・オブジェクトはエンティティ・オブジェクトに基づくオブジェクトで、表示して操作する必要があるデータを示します。通常、問合せと呼ばれます。 Oracle JDeveloperでビュー・オブジェクトを作成する作業は、Oracle FormsでLayoutウィザードを使用するときにOracle Formsのキャンバスへ列を選択し、含める作業とおおまかな点で似ています。

この項では、 CustomersViewOrdersViewOrderItemsViewのビュー・オブジェクトをウィザードから作成します。 ウィザードでビュー・オブジェクトを作成するには、以下の手順を実行します。

  1. Business Componentsダイアグラムを開いたら、「 Customers」、「 Orders」、および「 OrderItems」を選択し、右クリックしたらコンテキスト・メニューで「 Generate」→「 Default Data Model Components」を選択します。

    Hover to see image

  2. Selectedパネルには、 CustomersViewOrdersViewOrderItemsViewが表示されます。 これらは、それぞれの問合せオブジェクトの元となります。 ビュー・オブジェクトは、基盤となるエンティティ・オブジェクト間の関係性を通じて関連づけられます。 このほか、問合せ間の関連性も必要となるので、 OrderItemsOrderIdFkAssocOrdersCustomerIdFkAssocにも関連性を追加します。 これが、ビュー・オブジェクト間のビュー・リンクとなります。

    次のページへ移動する前に、 .queriesをパッケージ名に追記します。 これにより、ビュー・オブジェクトがそのパッケージに確実に入ります。

    Next」をクリックします。

    Hover to see image

  3. ウィザードの第2ステップでは、すべてのビュー・オブジェクトを含むアプリケーション・モジュールを作成します。 これは次の項で作成するので、ここでは「 Application Module」チェック・ボックスを オフにします。

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

    Hover to see image

  4. アプリケーション・ナビゲータにノードが2つ表示されていることを確認してください。 問合せノードを展開して、作成されたオブジェクトを表示します。

    Hover to see image

  5. これらのオブジェクトは、ダイアグラムでも検証できます。 「 CustomersView」、「 OrdersView」、「 OrderItemsView」の3つのビュー・オブジェクトを選択して、ダイアグラム上の空き領域にドラッグします。 ビュー・オブジェクト間のビュー・リンクを確認します。 これらのビュー・リンクは、ビュー・オブジェクト間の関係性を維持しています。

    オブジェクトは、好きなようにレイアウトできます。 次に例を示します。

    Hover to see image

  6. 前に述べたとおり、ビュー・オブジェクトは問合せであり、エンティティ・オブジェクトのすべての属性を反映するわけではありません。 ダイアグラムで「 OrdersView」をダブルクリックしてビュー・オブジェクト・エディタを起動し、「 Attributes」ノードを選択します。 「 PromotionId」属性を選択して、 DeleteAdd Instance button」をクリックします。

    Hover to see image

  7. ダイアグラムで「 ProductInformation」エンティティ・オブジェクトを選択して、 OrderItemsViewビュー・オブジェクトへドラッグします。

    Hover to see image

  8. これでダイアグラムに表示されたビュー・オブジェクトには、OrderItemsとProductInformationの2つのエンティティ・オブジェクトが含まれました。エンティティ・オブジェクトの左には、属性が表示されています。 ビュー・オブジェクトとエンティティ・オブジェクトは、初期の状態では重なって表示されるため、両方を表示するには、ビュー・オブジェクトのサイズを変更する必要があります。

    その場合、ビュー・オブジェクトを右クリックして「 Lay Out Shapes」→「 Hierarchical (Bottom to Top)」を選択します。

    Hover to see image

  9. ダイアグラム上の「 OrderItemsView」ビュー・オブジェクトをダブルクリックして、ビュー・オブジェクト・エディタを開きます。

    左のツリー内にある「 Entity Objects」ノードを選択したら、Selectedリストの「 ProductInformation1」を選択します。

    • エイリアスを ProductInformationに変更します。

    • Updatableのチェックがオフになっていることと、 Referenceのチェックがオンになっていることを確認します。 これは、Order Itemsビューで、Product Information表の情報が、表示されるだけで更新はされないためです。 これは、Oracle Formsでポスト問合せトリガーを使用して別の表から情報を取得し、ブロック内のベースの表以外の表示アイテムへ挿入することと似ています。

    Hover to see image

  10. ビュー・オブジェクト・エディタで、「 Attributes」ノードを選択します。 必要なのは、 ProductInformationエンティティ・オブジェクトの ProductId1ProductName、および ProductDescriptionです。 それぞれのSelectedリストにある、そのほかの ProductInformation属性をすべて [Shift]を押しながらクリックして選択し、 RemoveAdd Instance button」をクリックします。

    Hover to see image

  11. Save AllSave All button」をクリックするか、「 File」→「 Save All」を選択して作業内容を保存します。

トピック・リストに戻る

4. アプリケーション・モジュールの作成

ADF Business Componentsアプリケーション・モジュールは、通常フォームが単一のユーザー・タスクをカプセル化するのと同じように、特定のタスクのためにビュー・オブジェクトを調整するサービス・オブジェクトです。 これには、アプリケーションが必要とするビジネス・サービスのみが含まれ、Oracle Formsのモジュールと比較できます。

アプリケーション・モジュールは、前項と同じウィザードを使用して作成できます。 ウィザードは必要以上の設定を追加するので、代わりにアプリケーション・モジュールを視覚的に作成します。 ダイアグラムを使用してアプリケーション・モジュールを作成するには、以下の手順を実行してください。

  1. Business Componentダイアグラムに戻ったら、コンポーネント・パレットの上部にあるドロップダウン・リストで「 Business Components」が選択されていることを確認します。

    ダイアグラムに「 Application Module」をドラッグします。

    Hover to see image

  2. アプリケーション・モジュールで、 CustomerOrdersBusinessServiceという名前を入力します。

    Hover to see image

  3. CustomersView」および「 OrdersView」ビュー・オブジェクトを選択して、 CustomerOrdersBusinessServiceアプリケーション・モジュールにドラッグします。

    Hover to see image

  4. 同様に、「 OrderItemsView」ビュー・オブジェクトを選択して、 CustomerOrdersBusinessServiceアプリケーション・モジュール内のそのほかのビュー・オブジェクトの下へドラッグします。

    Hover to see image

  5. CustomersViewOrdersViewビュー・オブジェクト間にはビュー・リンクがありますが、これらと OrderItemsViewビュー・オブジェクト間にはリンクがないことを確認します。

    Hover to see image

  6. コンポーネント・パレットで「 View Link Instance」を選択して「 OrdersView1」をクリックしたら、「 OrderItemsView1」をクリックしてビュー・リンクを追加します。

    Hover to see image

  7. CustomerOrdersBusinessServiceアプリケーション・モジュールをダブルクリックして、ダイアログを起動します。 ビュー・オブジェクト間の階層関係を確認します。 これは重要です。 つまり、サービスは各階層で選択されたレコードを追跡し、階層の下の方で関連するレコードだけを表示します。これは、Oracle Formsのマスター/ディテール・ブロックと似ています。

    Hover to see image

  8. ダイアグラムを使用して、アプリケーション・モジュールを作成しましたが、異なるプロジェクト内にモジュールを作成することはできませんでした。 プロジェクトは、論理的な作業をグループ化するのに有効です。 最後の項では、リファクタリングを使用してアプリケーション・モジュールをそれぞれのプロジェクトへ移動させます。

    アプリケーション・ナビゲータに戻り、「 Model」→「 Application Sources」→「 model」を展開します。 「 CustomerOrdersBusinessService 」アプリケーション・モジュールを選択して右クリックしたら、「 Refactor」→「 Move...」を選択します。

    Hover to see image

  9. 表示されたダイアログ内で「 model.services」と入力します。

    OK」をクリックします (特定のパッケージを作成する場合は、「 Yes」をクリックします)。

    Hover to see image

  10. Application Servicesの下に3つのプロジェクト・ノードが表示され、 CustomerOrdersBusinessService アプリケーション・モジュールが新規プロジェクトのmodel.servicesへ移動したことを確認します。

    Hover to see image

  11. Save AllSave All button」をクリックするか、「 File」→「 Save All」を選択して作業内容を保存します。

トピック・リストに戻る

まとめ

このチュートリアルでは、データベース内の表をベースとして、これらの表と同じ名前をもつエンティティ・オブジェクトを作成する方法を学習しました。 また、ウィザードを使用して、アプリケーションで使用する予定のデータ(特定の列)を表すビュー・オブジェクト、およびビュー・オブジェクト間のマスター/ディテール関係を維持するビュー・リンクを作成しました。 最後に、受注タスクで使用されるビュー・オブジェクトとビュー・リンクを格納および調整するアプリケーション・モジュールを作成しました。

トピック・リストに戻る

Hide all images このアイコンの上にカーソルを置くか、または[Shift]と[Alt]を押しながら[H]を押すと、すべてのスクリーンショットが非表示になります。 アイコンをクリックして、ナビゲーション・バーを表示します。