Developer Tools
JDeveloper
目的
このチュートリアルでは、アプリケーションのビジネス・サービスを作成します。 ビジネス・サービスはアプリケーションの一部であり、アプリケーション内でデータを維持し、中間層でビジネス・ルールを実装します。 これを実行するには、さまざまな方法があります。 このチュートリアルでは、ADF Business Componentsを中間層のビジネス・サービスとして使用します。
所要時間
約30分
このチュートリアルでは、以下のトピックについて説明します。
スクリーンショットの表示
|
このアイコンの上にカーソルを置くか、[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表からデータを操作していることがわかります。 ページには、すべての表の列が表示されていなかったり、一部のページに複数の表のデータが表示されていたりと、若干の違いがあることが確認できます。
| |
|
| |
|
このチュートリアルを始める前に次のことを確認してください。
前のハンズオン・チュートリアルにある前提条件を満たしていること。
このチュートリアルの前のハンズオン・チュートリアルを終了していること。
ADF Business Componentsの作成にはさまざまな方法があります。 このチュートリアルでは、これらを組み合わせて使用します。
まず始めに、エンティティ・オブジェクトを作成します。これは、データの維持とキャッシュ、検証、ビジネス・ルールのカプセル化をおこなうデータ・アクセス・オブジェクトです。 エンティティ・オブジェクトは、Oracle Forms内のブロックのレコード・マネージャと比較できます。 エンティティ・オブジェクトの作成は、Oracle Formsでデータ・ブロックのベースとなる表を選択する作業に似ています。
このチュートリアルの最初の部分では、ダイアグラムを使用します。 ビジネス・コンポーネント・ダイアグラム上にエンティティ・オブジェクトを作成するには、以下の手順を実行します。
作業中のOrderEntryアプリケーションで「 Model」プロジェクトを右クリックし、コンテキスト・メニューから「 New...」を選択します。
New Galleryで、Categoriesリスト内の Business Tierを展開し、「 ADF Business Components」を選択して、 Itemsリストから「 Business Components Diagram」を選択します。
「 OK」をクリックします。
Create Business Components Diagramダイアログで、ダイアログ名として CustomerAppBC_Diagramと入力し、パッケージ名として modelを設定します。
「 OK」をクリックします。
ダイアグラム上にエンティティ・オブジェクトを作成する方法は複数あります。 もっとも簡単なのは、データベース表を直接ダイアグラムにドラッグしてエンティティ・オブジェクトを作成する方法です。
エディタで CustomerAppBC_Diagramダイアグラムを開いた状態で、 データベース・ナビゲータを開きます。
IDE Connectionsノード、 oeconn接続、および Tablesノードを展開します。
[Ctrl]を押しながらマウスをクリックして、「 CUSTOMERS」表、「 ORDERS」表、「 ORDER_ITEMS」表、および「 PRODUCT_INFORMATION」表をすべて選択し、ダイアグラムへドラッグします。
Create from Database Objectダイアログに、プロジェクト・テクノロジーに基づいた選択肢が表示されます。 「 Business Component Entity Objects」を選択します。 「 OK」をクリックして、エンティティ・オブジェクトを作成します。
これでダイアグラムには、4つのエンティティ・オブジェクトがデータベースの表や外部キーによる関連性に基づいてリンクし、表示されます。
注:データベースから表をドラッグすると、いくつかのドメイン・オブジェクトが追加で作成されます。 これは、Oracle Object Typesが CUSTOMERS表を使用するためです。 これは無視しても問題ありません。
時間があれば、前のセッションで表内のレイアウトを変更した方法と同じように、エンティティ・オブジェクトのレイアウトを変更してみてください。
アプリケーション・ナビゲータに戻り、「 Model」→「 Application Sources」→「 model」の順に展開します。 これで、表をADF Business Componentsダイアグラム内にドラッグすると、Modelプロジェクト内に作成されたオブジェクトが表示されるようになります。
Save All「
」をクリックするか、「
File」→「
Save All」を選択して作業内容を保存します。
通常、エンティティ・オブジェクトの属性は、データベースの列に1対1でマッピングし、アプリケーションの多くのビュー・オブジェクトで再利用されます。 ただし、状況によっては、エンティティ・オブジェクトの属性を制限する必要があります。 この例では、アプリケーションに使用されないエンティティ・オブジェクトから属性を削除します。
ダイアグラムで、「 Customer」エンティティ・オブジェクトを選択します。 コンテキスト・メニューの「 Open Customers...」を右クリックして、 Entity Object Flat Editorを起動します。
左のリストから「 Attributes」を選択して、右のEntity Attributesパネルから「 CustGeoLocation」属性を選択し、削除します。
注:別の方法として、ダイアグラムからこの属性を削除することも可能です。 この属性だけを削除し、エンティティ全体を削除しないように注意してください。
Save All「
」をクリックするか、「
File」→「
Save All」を選択して作業内容を保存します。
エンティティ・オブジェクトを作成したら、ビュー・オブジェクトを作成します。
ビュー・オブジェクトはエンティティ・オブジェクトに基づくオブジェクトで、表示して操作する必要があるデータを示します。通常、問合せと呼ばれます。 Oracle JDeveloperでビュー・オブジェクトを作成する作業は、Oracle FormsでLayoutウィザードを使用するときにOracle Formsのキャンバスへ列を選択し、含める作業とおおまかな点で似ています。
この項では、 CustomersView、 OrdersView、 OrderItemsViewのビュー・オブジェクトをウィザードから作成します。 ウィザードでビュー・オブジェクトを作成するには、以下の手順を実行します。
Business Componentsダイアグラムを開いたら、「 Customers」、「 Orders」、および「 OrderItems」を選択し、右クリックしたらコンテキスト・メニューで「 Generate」→「 Default Data Model Components」を選択します。
Selectedパネルには、 CustomersView、 OrdersView、 OrderItemsViewが表示されます。 これらは、それぞれの問合せオブジェクトの元となります。 ビュー・オブジェクトは、基盤となるエンティティ・オブジェクト間の関係性を通じて関連づけられます。 このほか、問合せ間の関連性も必要となるので、 OrderItemsOrderIdFkAssocと OrdersCustomerIdFkAssocにも関連性を追加します。 これが、ビュー・オブジェクト間のビュー・リンクとなります。
次のページへ移動する前に、 .queriesをパッケージ名に追記します。 これにより、ビュー・オブジェクトがそのパッケージに確実に入ります。
「 Next」をクリックします。
ウィザードの第2ステップでは、すべてのビュー・オブジェクトを含むアプリケーション・モジュールを作成します。 これは次の項で作成するので、ここでは「 Application Module」チェック・ボックスを オフにします。
「 Finish」をクリックして、ウィザードを完了します。
アプリケーション・ナビゲータにノードが2つ表示されていることを確認してください。 問合せノードを展開して、作成されたオブジェクトを表示します。
これらのオブジェクトは、ダイアグラムでも検証できます。 「 CustomersView」、「 OrdersView」、「 OrderItemsView」の3つのビュー・オブジェクトを選択して、ダイアグラム上の空き領域にドラッグします。 ビュー・オブジェクト間のビュー・リンクを確認します。 これらのビュー・リンクは、ビュー・オブジェクト間の関係性を維持しています。
オブジェクトは、好きなようにレイアウトできます。 次に例を示します。
前に述べたとおり、ビュー・オブジェクトは問合せであり、エンティティ・オブジェクトのすべての属性を反映するわけではありません。 ダイアグラムで「
OrdersView」をダブルクリックしてビュー・オブジェクト・エディタを起動し、「
Attributes」ノードを選択します。 「
PromotionId」属性を選択して、
Delete「
」をクリックします。
ダイアグラムで「 ProductInformation」エンティティ・オブジェクトを選択して、 OrderItemsViewビュー・オブジェクトへドラッグします。
これでダイアグラムに表示されたビュー・オブジェクトには、OrderItemsとProductInformationの2つのエンティティ・オブジェクトが含まれました。エンティティ・オブジェクトの左には、属性が表示されています。 ビュー・オブジェクトとエンティティ・オブジェクトは、初期の状態では重なって表示されるため、両方を表示するには、ビュー・オブジェクトのサイズを変更する必要があります。
その場合、ビュー・オブジェクトを右クリックして「 Lay Out Shapes」→「 Hierarchical (Bottom to Top)」を選択します。
ダイアグラム上の「 OrderItemsView」ビュー・オブジェクトをダブルクリックして、ビュー・オブジェクト・エディタを開きます。
左のツリー内にある「 Entity Objects」ノードを選択したら、Selectedリストの「 ProductInformation1」を選択します。
エイリアスを ProductInformationに変更します。
Updatableのチェックがオフになっていることと、 Referenceのチェックがオンになっていることを確認します。 これは、Order Itemsビューで、Product Information表の情報が、表示されるだけで更新はされないためです。 これは、Oracle Formsでポスト問合せトリガーを使用して別の表から情報を取得し、ブロック内のベースの表以外の表示アイテムへ挿入することと似ています。
ビュー・オブジェクト・エディタで、「
Attributes」ノードを選択します。 必要なのは、
ProductInformationエンティティ・オブジェクトの
ProductId1、
ProductName、および
ProductDescriptionです。 それぞれのSelectedリストにある、そのほかの
ProductInformation属性をすべて
[Shift]を押しながらクリックして選択し、
Remove「
」をクリックします。
Save All「
」をクリックするか、「
File」→「
Save All」を選択して作業内容を保存します。
ADF Business Componentsアプリケーション・モジュールは、通常フォームが単一のユーザー・タスクをカプセル化するのと同じように、特定のタスクのためにビュー・オブジェクトを調整するサービス・オブジェクトです。 これには、アプリケーションが必要とするビジネス・サービスのみが含まれ、Oracle Formsのモジュールと比較できます。
アプリケーション・モジュールは、前項と同じウィザードを使用して作成できます。 ウィザードは必要以上の設定を追加するので、代わりにアプリケーション・モジュールを視覚的に作成します。 ダイアグラムを使用してアプリケーション・モジュールを作成するには、以下の手順を実行してください。
Business Componentダイアグラムに戻ったら、コンポーネント・パレットの上部にあるドロップダウン・リストで「 Business Components」が選択されていることを確認します。
ダイアグラムに「 Application Module」をドラッグします。
アプリケーション・モジュールで、 CustomerOrdersBusinessServiceという名前を入力します。
「 CustomersView」および「 OrdersView」ビュー・オブジェクトを選択して、 CustomerOrdersBusinessServiceアプリケーション・モジュールにドラッグします。
同様に、「 OrderItemsView」ビュー・オブジェクトを選択して、 CustomerOrdersBusinessServiceアプリケーション・モジュール内のそのほかのビュー・オブジェクトの下へドラッグします。
CustomersViewと OrdersViewビュー・オブジェクト間にはビュー・リンクがありますが、これらと OrderItemsViewビュー・オブジェクト間にはリンクがないことを確認します。
コンポーネント・パレットで「 View Link Instance」を選択して「 OrdersView1」をクリックしたら、「 OrderItemsView1」をクリックしてビュー・リンクを追加します。
CustomerOrdersBusinessServiceアプリケーション・モジュールをダブルクリックして、ダイアログを起動します。 ビュー・オブジェクト間の階層関係を確認します。 これは重要です。 つまり、サービスは各階層で選択されたレコードを追跡し、階層の下の方で関連するレコードだけを表示します。これは、Oracle Formsのマスター/ディテール・ブロックと似ています。
ダイアグラムを使用して、アプリケーション・モジュールを作成しましたが、異なるプロジェクト内にモジュールを作成することはできませんでした。 プロジェクトは、論理的な作業をグループ化するのに有効です。 最後の項では、リファクタリングを使用してアプリケーション・モジュールをそれぞれのプロジェクトへ移動させます。
アプリケーション・ナビゲータに戻り、「 Model」→「 Application Sources」→「 model」を展開します。 「 CustomerOrdersBusinessService 」アプリケーション・モジュールを選択して右クリックしたら、「 Refactor」→「 Move...」を選択します。
表示されたダイアログ内で「 model.services」と入力します。
「 OK」をクリックします (特定のパッケージを作成する場合は、「 Yes」をクリックします)。
Application Servicesの下に3つのプロジェクト・ノードが表示され、 CustomerOrdersBusinessService アプリケーション・モジュールが新規プロジェクトのmodel.servicesへ移動したことを確認します。
Save All「
」をクリックするか、「
File」→「
Save All」を選択して作業内容を保存します。
このチュートリアルでは、データベース内の表をベースとして、これらの表と同じ名前をもつエンティティ・オブジェクトを作成する方法を学習しました。 また、ウィザードを使用して、アプリケーションで使用する予定のデータ(特定の列)を表すビュー・オブジェクト、およびビュー・オブジェクト間のマスター/ディテール関係を維持するビュー・リンクを作成しました。 最後に、受注タスクで使用されるビュー・オブジェクトとビュー・リンクを格納および調整するアプリケーション・モジュールを作成しました。
このアイコンの上にカーソルを置くか、または[Shift]と[Alt]を押しながら[H]を押すと、すべてのスクリーンショットが非表示になります。 アイコンをクリックして、ナビゲーション・バーを表示します。
| |
|
|