ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド
11g リリース2(11.1.2.3.0)
B69399-02
  目次へ移動
目次

前
 
次
 

37 Fusion Webアプリケーションのリファクタ

この章では、ファイル、構成ファイル、オブジェクト、属性およびFusion Webアプリケーションの要素の、名前変更、移動および削除に関する注意事項を説明します。ほとんどの場合、JDeveloperにより自動的にリファクタが実行されます。ただし、リファクタする前に、いくつかの手動ステップを完了する必要があることがあります。

この章の内容は次のとおりです。

37.1 Fusion Webアプリケーションのリファクタについて

JDeveloperには、アプリケーションが使用する属性、名前付き要素およびADF Business Componentsオブジェクトの名前の変更、移動および削除を行うリファクタ・オプションが用意されています。これらのリファクタ・オプションは、行った変更と、その変更に依存するアプリケーションの他の部分とを同期させます。たとえば、「名前の変更」オプションを使用して、ビュー・オブジェクトなどのADF Business Componentsオブジェクトの名前を変更すると、他のXMLソース・ファイル内にそのオブジェクトへの参照があれば、その参照の名前も変更されます。

37.1.1 リファクタのユースケースと例

開発中、必要に応じてアプリケーションのニーズを満たすように、エンティティ・オブジェクトなどのオブジェクトを作成します。その後、不要になったオブジェクトを削除したり、ネーミング規則に合うようにオブジェクトの名前を変更したり、一連のオブジェクトを別のパッケージに移動してその場所をまとめたりする必要が生じる場合があります。JDeveloperを使用して、これらのオブジェクトをリファクタして更新し、また、他のオブジェクトでのこれらのオブジェクトへの参照も更新して、アプリケーション全体の整合性を維持できます。

37.2 ファイルの名前の変更

次のメソッドを使用して、構成ファイルなどのファイルの名前を変更することができます。

37.3 JSFページの移動

他のリファクタ操作に加えて、JSFページのパッケージを変更できます。アプリケーション・ナビゲータで、JSFページを右クリックして「リファクタ」「パッケージへ移動」を選択し、ページを別のパッケージに移動します。JSFページを別のパッケージに移動すると、次のものが更新されます。

37.4 pagedef.xmlバインディング・オブジェクトのリファクタ

リファクタできるpagedef.xmlバインディング・オブジェクトには、バインディングと実行可能ファイルが含まれます。詳細は、13.7項「ページ定義ファイルでの作業」を参照してください。

作業を始める前に、次のようにします。

リファクタに使用できるオプションに関する知識が役立つ場合があります。詳細は、37.1項「Fusion Webアプリケーションのリファクタについて」を参照してください。

JDeveloperで、リファクタするオブジェクトを含むアプリケーションを開きます。

pagedef.xmlバインディング・オブジェクトをリファクタする手順:

  1. アプリケーション・ナビゲータで、ADFフォームや選択リストなどのバインド・オブジェクトを追加したページ・ノードを選択します。

  2. ページ・ノードを右クリックして、「ページ定義に移動」を選択します。

    ページにまだページ定義がない場合は、「ページ定義の作成」ダイアログが表示されます。「OK」をクリックすると、そのページのページ定義が作成されます。

  3. 概要エディタで、「モデル」セクションを展開します。

    図37-1に示すように、ページで定義されているリスト・バインディングやイテレータ・バインディングなどのデータ・バインディングが、「バインディング」「実行可能ファイル」の下に表示されます。

    図37-1 「ページ・データ・バインディング定義」概要タブ

    「ページ・データ・バインディング定義」
  4. データ・バインディングまたは実行可能ファイルを右クリックして「リファクタ」を選択し、「名前の変更」「削除」などのリファクタ・オプションを選択します。

  5. バインディング、実行可能ファイルおよびデータ・コントロールの間の使用方法を表示するには、バインディングや実行可能ファイルを右クリックして、「使用方法の検索」を選択します。

37.5 ADF Business Componentsのリファクタ

ADF Business Componentsには、ビュー・オブジェクト、エンティティ・オブジェクトなどのオブジェクトが含まれます。表37-1で、ADF Business Componentsのリファクタのサポートについて説明します。

表37-1 「ADF Business Componentsのリファクタ」

アクション 結果

移動

オブジェクトを異なるパッケージまたはディレクトリへ移動し、すべての参照を更新する。

削除

JDeveloperでオブジェクト上のすべての依存性が表示され、強制削除が許可される。この時点ではアプリケーションが機能しないことがある。ブレーク中の参照を解決しなければならないことがある。

名前の変更

ADF Business Componentsオブジェクトは、XMLファイルによって定義される。このXMLファイルのファイル名はオブジェクト名と同一である。たとえば、Persons1Viewという名前のビュー・オブジェクトのためのXMLファイルの名前は、Persons1View.xmlである。名前を変更すると、Name属性が変更され、XMLファイルの名前が変更され、すべての参照が更新される。

たとえば、あるエンティティの名前(Customer)は、XMLファイルに属性(name=Customer)として格納されます。このXMLファイルの名前はエンティティ名と同一(Customer.xml)である。

使用方法の検索

JDeveloperによってオブジェクトのすべての依存性が表示されます。



注意:

抽象レイヤーを越えてリファクタすることはありません。たとえば、Deptエンティティ・オブジェクトに基づいてビュー・オブジェクトが作成された場合、デフォルトでDeptViewという名前になります。Deptエンティティ・オブジェクトの名前を変更すると、DeptViewのエンティティの慣用名は更新されますが、ビュー・オブジェクトの名前は変更されません。


作業を始める前に、次のようにします。

リファクタに使用できるオプションに関する知識が役立つ場合があります。詳細は、37.1項「Fusion Webアプリケーションのリファクタについて」を参照してください。

JDeveloperで、リファクタするオブジェクトを含むアプリケーションを開きます。

ADF Business Componentsオブジェクトをリファクタする手順:

  1. アプリケーション・ナビゲータで、リファクタするオブジェクトを含む「プロジェクト」ノードを展開します。

  2. プロジェクト内で、まず「アプリケーション・ソース」ノードを展開し、次にリファクタするオブジェクトを含むパッケージを展開します。

  3. オブジェクトを右クリックして、「リファクタ」→「名前の変更」または「リファクタ」→「移動」を選択します。

  4. オブジェクトを削除するには、「削除」を選択します。

    オブジェクトがアプリケーションの他の箇所で使用される場合、ダイアログに次のオプションが表示されます。

    • 無視: 解決されていない慣用名は、未定義参照としてコードに残ります。

    • 使用方法の表示: コンパイラ・ログに、要素の慣用名のプレビューが表示されます。ログを使用して、残りの慣用名を調査および解決することができます。

37.6 ADF Business Componentsオブジェクト属性のリファクタ

表37-1で、ADF Business Componentのエンティティ・オブジェクトおよびビュー・オブジェクトの属性のリファクタのサポートについて説明します。

表37-2 属性のリファクタ

アクション 結果

移動

サポートされない。

削除

JDeveloperで属性上のすべての依存性が表示され、強制削除が許可されます。この時点ではアプリケーションが機能しないことがある。ブレーク中の参照を解決しなければならないことがある。

名前の変更

属性は、エンティティ・オブジェクトやビュー・オブジェクト内で表現されるデータ要素を共有する(詳細は4.1項「エンティティ・オブジェクトについて」を参照)。属性の名前を変更すると、属性への参照が更新される。名前を変更すると、Name属性が変更され、XMLファイルの名前が変更され、すべての参照が更新される。

属性の名前を変更しても、それが表すデータは変更されず、基礎となる表の列名も変更されない。

使用方法の検索

JDeveloperによって属性のすべての依存性が表示されます。


作業を始める前に、次のようにします。

リファクタに使用できるオプションに関する知識が役立つ場合があります。詳細は、37.1項「Fusion Webアプリケーションのリファクタについて」を参照してください。

JDeveloperで、リファクタする属性を含むアプリケーションを開きます。

属性をリファクタする手順:

  1. アプリケーション・ナビゲータで、リファクタするオブジェクトを含む「プロジェクト」ノードを展開します。

  2. プロジェクト内で、まず「アプリケーション・ソース」ノードを展開し、次にリファクタするオブジェクトを含むパッケージを展開します。

  3. オブジェクトをダブルクリックします。

  4. 概要エディタで、「属性」タブを選択します。

  5. 「名前」リストで属性を選択します。

  6. 右クリックして、「名前の変更」または「削除」オプションを選択します。

  7. 属性を削除するには、「削除」を選択します。

    属性がアプリケーションの他の箇所で使用される場合、ダイアログに、次のオプションが表示されます。

    • 無視: 解決されていない慣用名は、未定義参照としてコードに残ります。

    • 使用方法の表示: コンパイラ・ログに、属性の慣用名のプレビューが表示されます。ログを使用して、残りの慣用名を調査および解決することができます。

37.7 名前付き要素のリファクタ

表37-3で、XMLスキーマの名前付き要素のリファクタのサポートについて説明します。名前付き要素は、Name属性によって参照できるXMLスキーマの任意の要素です。名前付き要素は、オブジェクトや属性ではありません。

表37-3 名前付き要素のリファクタ

アクション 結果

移動

サポートされない。

削除

サポートされない。

名前の変更

名前付き要素の定義に関する1つの例外は、設計時の要素Attrです。これにはName属性が含まれています。Attrは名前/値ペアであり、コード・エディタでアクセスできません。名前は変更しないでください。

使用方法の検索

JDeveloperによって名前付き要素のすべての依存性が表示されます。


作業を始める前に、次のようにします。

リファクタに使用できるオプションに関する知識が役立つ場合があります。詳細は、37.1項「Fusion Webアプリケーションのリファクタについて」を参照してください。

JDeveloperで、リファクタするオブジェクトを含むアプリケーションを開きます。

名前付き要素をリファクタする手順:

  1. アプリケーション・ナビゲータで、リファクタするオブジェクトを含む「プロジェクト」ノードを展開します。

  2. プロジェクト内で、まず「アプリケーション・ソース」ノードを展開し、次にリファクタするオブジェクトを含むパッケージを展開します。

  3. オブジェクトをダブルクリックします。

  4. 概要エディタで、「ソース」タブをクリックします。

  5. 名前付き要素にスクロール・ダウンします。

    名前付き要素は、ソース・コードでName="<element>"などのように示されます。

    <Key Name="PersonsAffContactChk">
          
    

    名前付き要素は、オブジェクトや属性ではありません。

  6. 要素の名前を変更するには、要素を右クリックして「名前の変更」を選択します。

  7. 要素を削除するには、「削除」を選択します。

    要素がアプリケーションの他の箇所で使用される場合、ダイアログに、次のオプションが表示されます。

    • 無視: 解決されていない慣用名は、未定義参照としてコードに残ります。

    • 使用方法の表示: コンパイラ・ログに、要素の慣用名のプレビューが表示されます。ログを使用して、残りの慣用名を調査および解決することができます。

37.8 ADFタスク・フローのリファクタ

詳細は、18.6項「新規タスク・フローおよびタスク・フロー・テンプレート作成のためのリファクタ」を参照してください。

37.9 DataBindings.cpxファイルのリファクタ

DataBindings.cpxファイルは、アプリケーション全体のOracle ADFバインディング・コンテキストを定義し、Oracle ADFバインディング・オブジェクトが実行時に作成される元となるメタデータを提供します(詳細はA.7.1項「DataBindings.cpxの構文」を参照)。このファイルは、すべての.cpx.dcx.jpx、and .xcfgファイルを短時間で検索するために使用されるレジストリで、それ自身もメタデータのレジストリです。

DataBindings.cpxファイルの名前を新しい名前に変更して、たとえばDataBindingsNew.cpxにすると、adfm.xmlファイルにその変更が追加されます。

例37-1に、DataBindings.cpxDataBindingsNew.cpxにリファクタされた後のadfm.xmlファイルの内容を示します。

例37-1 adfm.xml内の、名前を変更されたDataBindings.cpxファイル

<?xml version="1.0" encoding="UTF-8" ?> 
<MetadataDirectory xmlns="http://xmlns.oracle.com/adfm/metainf" version="11.1.1.0.0">                 
<DataBindingRegistry path="adf/sample/view/DataBindingsNew.cpx"/>
</MetadataDirectory> 

この変更を行うと、データ・コントロールを見つけられないため、アプリケーションは動作しません。例37-2に、DataBindingsNew.cpxファイル内の古いIDを示します。アプリケーションが正しいバインディング・ファイルにアクセスできるようにするには、DataBindingsNew.cpxファイル内のID値を新しいファイルに更新します。

例37-2 DataBindingsNew.cpx ID

<Application xmlns="http://xmlns.oracle.com/adfm/application"
version="11.1.1.49.28" id="DataBinding" SeparateXMLFiles="false"
Package="adf.sample.view" ClientType="Generic">

これを、例37-3に示すようなIDに変更してください。

例37-3 更新されたDatabindingNew.cpx ID

<Application xmlns="http://xmlns.oracle.com/adfm/application" 
version="11.1.1.49.28" id="DataBindingNew" SeparateXMLFiles="false"
Package="adf.sample.view" ClientType="Generic">

37.10 リファクタの制限

表37-4、JDeveloperでのリファクタのサポートに関する制限を要約して示します。

表37-4 リファクタの制限

領域 制限

データベース

ADF Business Componentsオブジェクトで使用されるデータベース・アーティファクトの名前を変更した場合、オブジェクトを更新する必要がある。このタイプのリファクタは、現在サポートされていない。

サービス・インタフェース

サービス・インタフェースによって、2つの異なるソフトウェアの間の規定が定義されます。たとえば、ADF Business Componentsのサービス・インタフェースは、ビュー・レイヤーとモデル・レイヤーへのビジネス・コンポーネントの公開に対応します。サービス・インタフェースの名前を変更すると競合が発生する可能性があります。アプリケーションを開発する際は、サービス・インタフェースを削除してからオブジェクトをリファクタし、その後でサービス・インタフェースを再生成することを検討してください。また、サービス・インタフェースで定義される検索操作が、バインド変数を指定するビュー基準に基づいている場合は、基礎となるビュー基準のバインド変数の数または順序を変更すると、サービス・インタフェースを再生成する必要があります。

詳細は、第11章「サービス対応アプリケーション・モジュールの統合」を参照してください。

Javaリテラル参照

ADF Business Componentsによって生成されるJavaコードは、XMLメタデータへのリテラル参照を持つ。このリテラル参照は、リファクタ操作の際に更新される。生成された(型保証の)メソッドも更新される。リファクタの削除操作はローカルJava変数に対しても使用できる。

ただし、アプリケーション・コードが直接メタデータを参照する場合は、この参照は更新されない。

ドメイン

ドメインの名前の変更や移動が必要な場合は、新しいドメインを作成してから、既存ドメインの使用方法のタイプを変更します。たとえば、ドメイン名をEmployeeIDからEmployeeNumberに変更するとします。このとき、エンティティEmpにはタイプがEmployeeIDの属性Empnoがあるとします。新しいドメインEmployeeNumberを作成した後で、エンティティの属性ページに移動し、Empnoを右クリックして「タイプの変更」を選択します。こうすると、EmpnoEmployeeIDからEmployeeNumberに切り替わります。

セキュリティ

ポリシー・ストアのセキュリティ・ポリシーは、エンティティ・オブジェクト、属性、ページまたはタスク・フローの名前を参照することがあります。このポリシー定義は、オブジェクト自体のリファクタに対応して更新されません。

リソース・バンドル

エンティティ・オブジェクト定義は、作成した1つ以上の任意のリソース・バンドル・ファイル(.properties)を参照できます。このファイルを使用してエンティティ・オブジェクトの属性のラベルを定義できます。ただし、作成した.propertiesファイルの名前を変更すると、JDeveloperによってエンティティ・オブジェクト定義が更新されず、新しいファイル名が反映されません。作成するリソース・バンドル・ファイルのかわりに、データ・モデル・プロジェクトのために1つのデフォルト・リソース・バンドル・ファイルを生成するようにプロジェクト設定を指定できます。この場合、生成されたファイルの名前を変更することはできません。ただし、プロジェクトレベルのデフォルト・リソース・バンドル・ファイルを変更しようとすると、JDeveloperによって変更について警告されます。データ・モデル・プロジェクトでは、デフォルト・リソース・バンドル・ファイルにまだリンクされていないすべてのオブジェクトについて、新しいADF Business Componentsプロジェクトレベル設定が尊重されます。元のデフォルト・ファイルにすでにリンクされている既存のすべてのBusiness Componentsでは、元のファイルが引続き使用されます。

.jpxプロジェクト構成ファイル

ADF Business Componentsプロジェクト構成ファイル(.jpx)の名前の変更はサポートされません。

JDeveloperの前のバージョンでは、ADF Business Componentsプロジェクト構成.jpxファイルは、プロジェクトのsrcディレクトリのルート・パッケージのみに作成され、プロジェクトと同じベース名が付けられました。ADF Business Componentsオブジェクト(エンティティ、ビューおよびアプリケーション・モジュール)は、/Model.jpxを除き、すべてモデル・パッケージ(たとえば/model/AppModule.xml)に作成されます。このため、クラス・パスで使用するためにこれらをADF JARファイルにパッケージ化しようとする際に再利用に関して問題が発生することがあります。複数のプロジェクトの名前がModelであるため、名前の競合が発生する可能性があります。


37.11 ADF Business Componentsプロジェクト構成ファイル (.jpx)の移動

ADF Business Componentsプロジェクト構成ファイル(.jpx)のリファクタはサポートされていませんが、この名前または場所を変更して、プロジェクトの内容をADFライブラリとして共有する際の競合を回避する必要がある場合があります。.jpxファイルにはJDeveloperが設計時に使用して、ADF Business Componentsを使ったデータ・モデル・プロジェクトの作成を可能にするための構成情報が含まれます。このファイルをリファクタする必要がある場合は、手動で実行してください。

作業を始める前に、次のようにします。

リファクタに使用できるオプションに関する知識が役立つ場合があります。詳細は、37.1項「Fusion Webアプリケーションのリファクタについて」を参照してください。

ADF Business Componentsプロジェクト構成ファイル (.jpx)を手動で移動するには:

  1. .jpxファイルを新しいソース・ツリーの場所に移動します。

    たとえば、Model.jpxファイルをsrc/Model.jpxからsrc/newpackage/name/here/Model.jpxに移動できます。

  2. .jpxファイルの内容を変更します。ルート要素JboProjectPackageName属性は、正しい値を持つ必要があります。

    たとえば、PackageName="newpackage.name.here"と指定できます。

  3. .jpxファイルで参照されている要素を含むすべてのcommon/bc4j.xcfgファイルで、jbo.project属性を変更して、新しいパッケージ名を含むようにします。

    たとえば、次のように入力します。

    <AppModuleConfig name="ScottDeptAMLocal" ApplicationName="newpackage.name.here.ScottDeptAM" DeployPlatform="LOCAL" JDBCName="scottdb" jbo.project="newpackage.name.here.Model">

  4. JDeveloperプロジェクト・ファイル(.jprファイル)の内容を変更します。

    • 新しい.jpxパッケージの場所を設定します。後からプロジェクト・プロパティでデフォルト・パッケージを変更する場合、.jpxファイルが原因となって再びNotFoundエラーが発生します。

      たとえば、次のように入力します。

      <value n="defaultPackage" v="newpackage.name.here"/>

    • .jpxファイルの古い場所への参照を含むownerMapで、いずれかのownerURL要素を修正します。

      たとえば、次のように入力します。

      <url n="ownerURL" path="src/newpackage/name/here/Model.jpx"/>