既存のアプリケーション・モジュールの拡張

アプリケーション・モジュールは、データ・モデルの論理コンテナと、アプリケーション・タスクのサポートに必要なオプションのプログラミング・ロジックを提供します。データ・モデルには、アプリケーションで使用されるビュー・オブジェクトだけでなく、クライアントで必要なマスター/ディテールの自動整合を行うビュー・リンクも含まれます。

新規または既存のビュー・オブジェクトを結合して別の構成にし、新規のデータ・ビューを操作する場合は、新規のアプリケーション・モジュールを作成し、ビューとそれらの関係をデータ・モデルに追加するほうが簡単です。ただし、既存のデータ・モデルを補強して利用する場合は、アプリケーション・モジュールを拡張します。

一般的に、アプリケーション・モジュールの拡張は、元のデータ・モデルでは何も関連付けられていないが、アプリケーションのコンテキストにおいては有益な新規の最上位レベルのビューを追加する場合に行います。アプリケーション・モジュールの拡張は、他に次のような場合でも行われます。

拡張アプリケーション・モジュールは、元のアプリケーション・モジュールと同じデータ・モデルおよびプログラミング・ロジックを継承します。拡張アプリケーション・モジュールを使用することにより、既存のアプリケーションにより提供されるすべてのサービスおよび機能にアクセスできます。新規の最上位レベルのビュー・オブジェクトおよびディテール・ビュー・オブジェクト、ビュー・リンクおよびプログラミング・コードの形式で新規のデータ・ビューを追加することにより、データ・モデルを自由に変更できます。アプリケーション・モジュールを拡張する際の制限事項は、元のデータ・モデルの機能を削除できないということのみです。

例として、データ・モデルに加えることができる変更を次の図に示します。この図の記号VOは、元のデータ・モデルに属すビュー・オブジェクトを表します。記号VOは、追加されたビュー・オブジェクトを表します。ビュー・オブジェクトを追加し、ビュー・オブジェクト間に新規のリンク(赤色の部分)を作成できます。元のデータ・モデル(黒色の部分)は変更されていないことに注意してください。

Figure that shows a data model and its extended version, as described in the preceding paragraph.

拡張アプリケーション・モジュールを作成するには、元のアプリケーション・モジュールに次のような変更を加えます。

アプリケーション・モジュールを拡張するには、次のようにします。

  1. カスタマイズしたアプリケーション・モジュールを含めるパッケージを右クリックし、「新規アプリケーション・モジュール」を選択します。アプリケーション・モジュール・ウィザードが開きます。

  2. 「名前」ページで、拡張アプリケーション・モジュールの名前(NewModuleEx)を「名前」フィールドに入力します。柔軟性を高めるために、このページでは、「名前」「パッケージ」および「拡張アプリケーション・モジュール」フィールドが編集可能になっています。

  3. 「拡張アプリケーション・モジュール」フィールドの隣にある「参照」ボタンをクリックし、「親」ダイアログを開きます。元のコンポーネントのパッケージを開き、拡張するアプリケーション・モジュールの名前を選択します。「OK」をクリックし、ダイアログを閉じます。「名前」ページで「次へ」をクリックし、「データ・モデル」ページに進みます。

  4. 「データ・モデル」ページで、既存のデータ・モデルに追加する最上位レベルのビュー・オブジェクトおよびディテール・ビュー・オブジェクトを選択します。データ・モデルにオブジェクトを追加する方法の詳細は、「アプリケーション・モジュールのデータ・モデルでのビュー・オブジェクトおよびビュー・リンクの指定」を参照してください。「次へ」をクリックし、「Java」ページに進みます。

  5. 「Java」ページで、「Javaファイルの生成」チェックボックスをチェックし、アプリケーション・モジュールの動作をカスタマイズするために編集可能なJavaファイルを生成します。通常、クライアント層に公開するメソッドはこのファイルに追加します。

    このチェックボックスのチェックを外した場合は、XMLファイルのみが生成されます。「終了」をクリックし、拡張アプリケーション・モジュールを生成します。

JDeveloperにより、ナビゲータ・ウィンドウ内に、拡張アプリケーション・モジュールの .xmlファイルと、オプションで .javaファイルが生成されます。

生成された拡張アプリケーション・モジュール・ファイルの理解

NewModuleExアプリケーション・モジュールは、ソース・コードを変更せずに、Package27Moduleアプリケーション・モジュールの機能を拡張して作成されています。JDeveloperによりNewModuleEx.xmlファイルと、オプションで .javaファイルが生成され、このファイルはパッケージ化されたアプリケーション内にシームレスに統合できます。これで、NewModuleExアプリケーション・モジュールを実行時に使用できるようになります。アプリケーション・モジュール・メソッドの追加など、.javaファイルに機能を追加し、クライアントで使用できるようそれをエクスポートする場合もあります。その場合、元のアプリケーション内のPackage27Moduleのすべてのインスタンスのかわりにこのアプリケーション・モジュールを使用できます。

拡張アプリケーション・モジュールのXMLファイルには、そのデータ・モデルに追加されたビュー・オブジェクトとビュー・リンクしかリスト表示されないので注意してください。次に、NewModuleEx.xmlのコード・サンプルを示します。

1    <?xml version="1.0" encoding='WINDOWS-1252'?>
2 <!DOCTYPE AppModule SYSTEM "jbo_03_01.dtd">
3    <AppModule
4   Name="NewModuleEx"
5   Extends="package27.Package27Module"
6   ComponentClass="Extender.NewModuleExImpl" >
7   <DesignTime>
8   <Attr Name="_isCodegen" Value="true" />
9   <Attr Name="_deployType" Value="0" />
10   <Attr Name="_exportName" Value="NewModuleEx" />
11   </DesignTime>
12   <ViewUsage
13   Name="NewDeptViewEx"
14   ViewObjectName="Extender.NewDeptViewEx" >
15   </ViewUsage>
16   <ViewUsage
17   Name="NewEmpViewEx"
18   ViewObjectName="Extender.NewEmpViewEx" >
19   </ViewUsage>
20   <ViewLinkUsage
21   Name="NewViewLinkEx"
22   ViewLinkObjectName="Extender.NewViewLinkEx"
23   SrcViewUsageName="Extender.NewModuleEx.NewDeptViewEx"
24   DstViewUsageName="Extender.NewModuleEx.NewEmpViewEx" >
25   <DesignTime>
26   <Attr Name="_isCodegen" Value="true" />
27   </DesignTime>
28   </ViewLinkUsage>
29 </AppModule>

4から6行: NameフォールドおよびExtendsフィールドは、拡張アプリケーション・モジュールの名前(NewModuleEx)および拡張する元のアプリケーション・モジュールの名前(package27.Package27Module)を示します。ComponentClassフィールドは、拡張アプリケーション・モジュールの実装ファイル(*Implファイル)の名前を示します。

12から14、17、18行: ViewUsageタグ内のNameフィールドおよびViewObjectNameフィールドは、拡張アプリケーション・モジュールのデータ・モデルに追加されたビュー・オブジェクトの名前および完全なパッケージ名を示します。

20から24行: ViewLinkUsageタグ内のNameフィールドおよびViewLinkObjectNameフィールドは、拡張ビュー・リンクの名前および完全なパッケージ名を示します。SrcViewUsageNameフィールドおよびDstViewUsageNameフィールドは、ビュー・リンクのリンク元ビュー・オブジェクトおよびリンク先ビュー・オブジェクトの名前を示します。