11 MDSを使用したMAFアプリケーションのアーティファクトのカスタマイズ
この章の内容は次のとおりです。
MDSカスタマイズをMAFファイルに適用する方法の概要
MDSは、再ブランディング、カスタマイズおよびパーソナライズによって、様々な業界、地域、またはユーザー・グループにアプリケーションを適応させるために使用できます。
Oracle Metadata Services (MDS)を使用して、デザインタイムにMAFアプリケーションを再ブランド設定、カスタマイズおよびパーソナライズします。MDSにより、単一のアプリケーションを様々な産業、場所またはユーザー・グループに適応させます。たとえば、MDSでは、ユーザー・グループまたはユーザー職責にあわせてアプリケーションのルック・アンド・フィールを調整できます。
カスタマイズしたアプリケーションは、ベース・アプリケーションとカスタマイズの1つ以上のレイヤーで構成されます。各レイヤーには、複数のレイヤー値を指定できます。これらのレイヤー値を、指定の優先順位に従ってベース・メタデータの最上位に適用できます。
MAFでは、MDSシード・カスタマイズ・パターンがサポートされます。デザインタイムに適用されるカスタマイズ・レイヤーを定義することで、汎用アプリケーションを特定のグループ(特定の産業やサイトなど)に適応させます。これらのシード・カスタマイズはデプロイされたアプリケーションの一部として存在し、特定のデプロイの存続期間中保持されます。
MDSを使用して、MAFアプリケーションの次のアーティファクトをカスタマイズします。
-
maf-feature.xml
ファイル -
maf-skins.xml
ファイル -
maf-application.xml
ファイル -
maf-config.xml
ファイル -
MAF AMXファイルおよびメタデータ・ファイル(「MAF AMXアプリケーション機能アーティファクトのカスタマイズ」を参照)。
MDSによるMAFアプリケーションのカスタマイズ
MDSを使用してMAFアプリケーションをカスタマイズするには、グローバルまたはアプリケーション固有のカスタマイズ・レイヤーを定義して、カスタマイズ・クラスを作成し、そのクラスをJARファイルとしてパッケージ化してJDeveloperでアクセスできるようにします。MDSを使用してMAFアプリケーションをカスタマイズする手順を使用してください。
MDSを使用してMAFアプリケーションをカスタマイズするには、次の手順を実行します。
-
1つ以上のグローバルまたはアプリケーション固有のカスタマイズ・レイヤーを定義します。「カスタマイズ・レイヤーの構成」を参照してください。
-
MDSでベース・アプリケーションに適用するカスタマイズの決定に使用するカスタマイズ・クラスを作成します。各カスタマイズ・クラスは、ベース・カスタマイズ・レイヤーを定義します。「カスタマイズ・クラスの作成」を参照してください。
-
カスタマイズ・クラス(
.java
ファイル)をJARファイルとしてパッケージ化して、JDeveloperデザインタイムがカスタマイズにアクセスできるようにします。次に、MAFアプリケーションのいずれかのプロジェクトにJARファイルを追加します。「カスタマイズ・クラスの使用」を参照してください。 -
adf-config.xml
ファイルのcust-config
セクションにカスタマイズ・クラスを追加して、優先順位に従ってカスタマイズ・クラスを登録します。 -
「カスタマイズ開発者」ロールでJDeveloperを起動するか、そのロールに切り替えます。「「カスタマイズ開発者」ロールの理解」を参照してください。
-
必要に応じてファイルを変更します。変更はMDSにより、ViewControllerプロジェクトの
mdssys
ディレクトリに記録されます。 -
「カスタマイズ・コンテキスト」ウィンドウからカスタマイズ・レイヤーを選択します。
注意:
「カスタマイズ開発者」ロールで作業する際、「カスタマイズ・コンテキスト」ウィンドウで選択したレイヤーとレイヤー値をヒント・レイヤーと呼びます。「カスタマイズ開発者」ロールで作業中に行った変更は、このレイヤーにのみ適用されます。
-
アプリケーションを、デバイス、エミュレータにデプロイするか、プラットフォーム固有のアプリケーション・パッケージとしてデプロイします。カスタマイズしたアプリケーションをデプロイするには、次のように「カスタマイズ開発者」ロールを使用する必要があります。
-
「カスタマイズ開発者」ロールで、アプリケーションを起動します。
-
「カスタマイズ・コンテキスト」ウィンドウ(図11-2)で、カスタマイズを実装するレイヤーと値を選択します。
-
「アプリケーション」をクリックしてから、「デプロイ」をクリックし、デプロイメント・オプションとデプロイメント・プロファイルを選択します。「MAFアプリケーションのデプロイ」を参照してください。
-
各カスタマイズ・コンテキストを個別にデプロイします。
デプロイメント時に、ベース・ファイルおよびデルタ・ファイルがマージされ、実行時のアプリケーションのカスタマイズ・バージョンが作成されます。デプロイされたアプリケーションには、MDSの依存性はありません。
ヒント:
別のカスタマイズやアップグレードを実行するには、カスタマイズしたアプリケーションをMAFアプリケーション・アーカイブ(
.maa
)ファイルとしてデプロイして、そのファイルをアプリケーションにインポートします。.maa
ファイルに含まれるデルタ・ファイルは、デプロイメント後にベース・ファイルとマージされます。「カスタマイズを使用したMAFアプリケーションのアップグレード」を参照してください。カスタマイズ・プロセスが完了すると、JDeveloperによりカスタマイズ用のメタデータ・ファイルとこれらを格納するサブパッケージの両方が作成されます。メタデータ・ファイルにはカスタマイズしたオブジェクトのカスタマイズが含まれ、これらは実行時にベース・メタデータに適用されます。JDeveloperでは、新しいメタデータ・ファイルにオブジェクトのベース・ファイルと同じ名前が付けられますが、図の
maf-feature.xml.xml
に示すように、.xml
拡張子が追加されます。 -
カスタマイズ・レイヤーの構成
アプリケーションのカスタマイズは、カスタマイズ・レイヤーとその値をCustomizationLayerValues.xml
ファイルで指定して、JDeveloperで認識されるようにします。
カスタマイズ可能なアプリケーションを「カスタマイズ開発者」ロールで開くと、JDeveloperによりadf-config.xml
ファイルが読み取られ、使用するカスタマイズ・クラスと優先順位が判別されます。また、CustomizationLayerValues.xml
ファイルも読み取られ、「カスタマイズ・コンテキスト」ウィンドウで使用可能にするレイヤー値が判別されます。CustomizationLayerValues.xml
ファイルで定義されたレイヤー値がカスタマイズ・クラス(adf-config.xml
ファイルにリストされている)で定義されていない場合、これらは「カスタマイズ・コンテキスト」ウィンドウに表示されません。
したがって、CustomizationLayerValues.xml
ファイルにすべてのカスタマイズ・プロジェクトの包括的なレイヤー値リストを含めて、現在のアプリケーションに適したもののみを「カスタマイズ・コンテキスト」ウィンドウに表示できます。逆に、MAFアプリケーションの包括的なカスタマイズ・クラスのリストをadf-config.xml
ファイルに含めて、作業するレイヤー値のサブセットのみをCustomizationLayerValues.xml
ファイルに含めることもできます。
注意:
デザインタイムには、JDeveloperはCustomizationLayerValues.xml
ファイルからカスタマイズ・レイヤー値を取得します。ただし、ランタイムには、レイヤー値はカスタマイズ・クラスから取得されます。
CustomizationLayerValues.xml
ファイルに入力するレイヤー名およびレイヤー値は、カスタマイズ・クラスで指定されたものと一致する必要があります。次の例は、サンプルのCustomizationLayerValues.xml
ファイルの内容を示しています。
<cust-layers xmlns="http://xmlns.oracle.com/mds/dt"> <cust-layer name="industry" id-prefix="i"> <cust-layer-value value="financial" display-name="Financial" id-prefix="f"/> <cust-layer-value value="healthcare" display-name="Healthcare" id-prefix="h"/> </cust-layer> <cust-layer name="site" id-prefix="s"> <cust-layer-value value="headquarters" display-name="HQ" id-prefix="hq"/> <cust-layer-value value="remoteoffices" display-name="Remote" id-prefix="rm"/> </cust-layer> </cust-layers>
各レイヤーとレイヤー値に、id-prefix
トークンを追加できます。これにより、id
の一意性を確保し、カスタマイズを正確に適用できます。カスタマイズ中に新規要素を追加すると、(選択したヒント・レイヤーで決定された)レイヤーとレイヤー値のid-prefix
が要素の自動生成識別子に追加され、カスタマイズ・メタデータ・ファイルで新たに追加された要素のid
が作成されます。前述の例では、siteレイヤーにs
というid-prefix
が付けられ、headquartersレイヤー値にhq
というid-prefix
が付けられています。 そのため、ヒント・レイヤーとしてsite/headquarters
を選択して要素を追加すると、その要素のid
はメタデータ・カスタマイズ・ファイルでshqel
に設定されます。
各レイヤー値にdisplay-name
トークンを追加して、レイヤー値に人間が判読可能な名前を指定することもできます。「カスタマイズ開発者」ロールで作業する際、そのレイヤー値のdisplay-name
トークンの値が「カスタマイズ・コンテキスト」ウィンドウに表示されます。
レイヤーごとに、カスタマイズ・レイヤーに対する値セットのサイズを定義するvalue-set-size
トークンを、オプションで設定できます。これは、たとえば、設計時にアプリケーション固有のCustomizationLayerValues.xml
ファイルを使用する場合などに役立ちます。value-set-size
をno_values
に設定することで、デザインタイムにランタイムのみのレイヤーを除外できます。
<cust-layer name="runtime_only_layer" value-set-size="no_values"/>
カスタマイズ・レイヤー値はJDeveloper用にグローバルにまたはアプリケーション固有ファイルで定義できます。アプリケーション固有ファイルを使用する場合、このファイルはグローバル・ファイルより優先されます。JDeveloperでのレイヤー値のグローバルな構成の詳細は、「レイヤー値をグローバルに構成する方法」を参照してください。アプリケーション固有のレイヤー値の構成方法の詳細は、「Studio開発者ロールの使用方法」を参照してください。
レイヤー値をグローバルに構成する方法
カスタマイズ・レイヤーの値は、デザインタイムにCustomizationLayerValues.xml
ファイルでJDeveloperに対してグローバルに構成されます。このファイルは、JDeveloperインストール・ディレクトリのjdev
サブディレクトリ内にあります。デザインタイム・カスタマイズ・レイヤー値をJDeveloperに対してグローバルに構成する手順を使用してください。
始める前に:
-
「カスタマイズ・クラスの作成」の説明に従ってカスタマイズ・クラスを作成します
-
「カスタマイズ・クラスの使用」の説明に従って、クラスをJDeveloperで使用できるようにします
JDeveloper用にデザインタイム・カスタマイズ・レイヤー値をグローバルに構成するには:
注意:
特定のアプリケーションのCustomizationLayerValues.xmlファイルを構成する手順は、「Studio開発者ロールの使用方法」および「「カスタマイズ開発者」ロールの使用方法」を参照してください。アプリケーションレベルのレイヤー値の構成方法
アプリケーションレベルのカスタマイズ・レイヤーの値は、Studio開発者ロールまたは「カスタマイズ開発者」ロールのいずれかを使用して構成できます。
アプリケーションのレイヤー値を構成する場合、Studio開発者ロール(「Studio開発者ロールの使用方法」を参照)または「カスタマイズ開発者」ロール(「「カスタマイズ開発者」ロールの使用方法」を参照)のいずれかを使用できます。アプリケーション固有のCustomizationLayerValues.xml
ファイルを構成する場合、レイヤー値を作成および変更できますが、追加のカスタマイズ・レイヤーを作成できません。アプリケーション固有のレイヤー値に対して行った変更を適用するためにJDeveloperを再起動する必要はありません。
アプリケーション固有のCustomizationLayerValues.xml
ファイルを作成すると、JDeveloperはこのファイルをアプリケーションレベルのディレクトリに格納します(workspace-directory\.mds\dt\customizationLayerValues\CustomizationLayerValues.xml
など)。このファイルは、「アプリケーション」ウィンドウの「アプリケーション・リソース」ウィンドウのMDS DTノードの下にあります。
Studio開発者ロールの使用方法
JDeveloperで使用できるカスタマイズ・クラスを作成したら、Studio開発者ロールから特定のアプリケーションのCustomizationLayerValues.xml
ファイルを構成する手順を使用してください。
次に、Studio開発者ロールで特定アプリケーションのCustomizationLayerValues.xml
ファイルを構成する手順について説明します。
始める前に:
-
「カスタマイズ・クラスの作成」の説明に従ってカスタマイズ・クラスを作成します
-
「カスタマイズ・クラスの使用」の説明に従って、クラスをJDeveloperで使用できるようにします
Studio開発者ロールからワークスペース・レベルでデザインタイム・カスタマイズ・レイヤー値を構成するには:
「カスタマイズ開発者」ロールの使用方法
カスタマイズ・クラスを作成してJDeveloperで使用できるようにしたら、「カスタマイズ開発者」ロールから特定のアプリケーションのCustomizationLayerValues.xml
ファイルを構成する手順を使用してください。
次に、「カスタマイズ開発者」ロールで特定アプリケーションのCustomizationLayerValues.xml
ファイルを構成する手順について説明します。
始める前に:
-
「カスタマイズ・クラスの作成」の説明に従ってカスタマイズ・クラスを作成します
-
「カスタマイズ・クラスの使用」の説明に従って、クラスをJDeveloperで使用できるようにします
「カスタマイズ開発者」ロールからワークスペース・レベルでデザインタイム・カスタマイズ・レイヤー値を構成するには:
「カスタマイズ開発者」ロールの間にアプリケーション固有のCustomizationLayerValues.xml
ファイルに対して変更を行った後、「カスタマイズ・コンテキスト」ウィンドウで選択したヒント・レイヤーが選択解除されます。必要なヒント・レイヤーを選択できます。
カスタマイズ・クラスの作成
カスタマイズは、MAFアプリケーションを特定の業種ドメインに適合させるために使用します。カスタマイズ・クラス用にJavaアプリケーションを作成し、Javaクラスを完成させて、そのクラスをMAFアプリケーションにインポートして、カスタマイズ・クラスを作成する手順を使用してください。
カスタマイズ・クラスはoracle.mds.cust.CustomizationClass
を拡張するPOJOクラスです。現在のコンテキストが評価されてStringの結果が戻されます。このStringの結果を使用してカスタマイズ・レイヤーが検索されます。
カスタマイズ・クラスによって、次の情報が提供されます。
-
レイヤー名を表す名前。
-
レイヤーで作成されたオブジェクトのIDPrefix。カスタマイズ・レイヤーで新しいオブジェクトを作成する場合、一意のIDが必要です。オブジェクトの自動生成IDにIDPrefixが追加されて、新たに追加されたオブジェクトのIDが作成されます。異なるカスタマイズ・レイヤーで作成されたオブジェクトに一意のIDを指定するために、各レイヤーに一意のIDPrefixを指定する必要があります。
-
カスタマイズ・クラスによって定義されたレイヤーのキャッシュ・ヒント(CacheHint)。MAFでは、キャッシュ・ヒントによって静的なカスタマイズ・レイヤーが定義され、
getCacheHint
メソッドは常にALL_USERS
を返し、これは特定のデプロイメントに対しカスタマイズがグローバルに(無条件で)適用されることを意味します。
注意:
カスタマイズ・クラスは頻繁に実行されることが多いため(レイヤー名とレイヤー値を取得するために、アクセスされるドキュメントごとに1回)、効率性を確保する必要があります。
カスタマイズを使用して、特定の業種ドメインにあわせてMAFアプリケーションを調整できます(垂直統合)。このようなドメインはそれぞれカスタマイズ・レイヤーを表しており、カスタマイズ・クラスを使用して示されます。
静的なカスタマイズには、アプリケーションのすべての実行に適用されるレイヤー値が1つのみあります。静的なカスタマイズでは、アプリケーションを実行するすべてのユーザーでカスタマイズの値が同じです。
MAFアプリケーションで使用されるカスタマイズ・クラスでは、getCacheHint
メソッドは常にALL_USERS
を返し、これはカスタマイズ・レイヤーが常に静的であることを意味します。
カスタマイズ・クラスの実装方法によっては、すべてのオブジェクトが静的なカスタマイズ・レイヤーを持つことができます。
カスタマイズするMAFアプリケーション内にカスタマイズ・ファイルを作成しないでください。かわりに、カスタマイズ・クラスに対して別のJavaアプリケーションを作成します。Javaクラスの作成が完了した後で、カスタマイズするMAFアプリケーションにそのクラスをインポートします。
カスタマイズ・クラスを作成するには:
-
Javaアプリケーションを作成します。
-
「ファイル」メニューで、「新規」をクリックしてから、「プロジェクト」をクリックします。
-
「新規ギャラリ」で、「Javaアプリケーション・プロジェクト」を選択し、ウィザードを完了します。
-
「アプリケーション」ウィンドウで、「Javaアプリケーション・プロジェクト」を右クリックして、「プロジェクト・プロパティ」を選択します。
-
「プロジェクト・プロパティ」ダイアログで、「ライブラリとクラスパス」を選択し、「ライブラリの追加」をクリックします。
-
「ライブラリの追加」ダイアログで、MDSランタイムを選択し、「OK」をクリックします。「OK」をクリックして「プロジェクト・プロパティ」ダイアログを閉じます。
-
「アプリケーション」ウィンドウで、「Javaアプリケーション・プロジェクト」を右クリックし、「新規」を選択してから「Javaクラス」を選択します。
-
「Javaクラスの作成」ダイアログで、クラスの名前およびパッケージを入力します。
-
図に示すように、「拡張」フィールドでクラス階層を参照し、
oracle.mds.cust.CustomizationClass
を取得して、「OK」をクリックします。注意:
「抽象メソッドの実装」(デフォルトの設定)を「Javaクラスの作成」ダイアログで選択する必要があります。
-
スタブ・ファイルを更新します。次の例は、カスタマイズ・クラスを示しています。
package mobile; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import oracle.mds.core.MetadataObject; import oracle.mds.core.RestrictedSession; import oracle.mds.cust.CacheHint; import oracle.mds.cust.CustomizationClass; public class SiteCC extends CustomizationClass { public SiteCC() { super(); } public CacheHint getCacheHint() { return CacheHint.ALL_USERS; } /** {@inheritDoc} */ public String getName() { return "company"; } /** {@inheritDoc} */ public String[] getValue(RestrictedSession rs, MetadataObject metadataObject) { String sites[] = {"company1", "company2"}; return sites; } }
-
Javaアプリケーション・プロジェクトを再ビルドします。
カスタマイズ・クラスの使用
作成したカスタマイズ・クラスは、設計時には「カスタマイズ開発者」ロールで使用できます。また、実行時にはアプリケーションで使用できます。カスタマイズ・クラスをJARに追加し、カスタマイズ・クラスをMAFアプリケーションに登録して、adf-config.xml
ファイルでカスタマイズ・クラスを特定する手順を使用してください。
カスタマイズ・クラスは再利用可能なコンポーネントです。これらを格納するための別のプロジェクトを作成し、独自のJARファイルにパッケージ化します。カスタマイズ・クラスをJDeveloperで使用できるようにするには、これらのクラスを使用するアプリケーションにJARをインポートします。
カスタマイズ・クラスをJARファイルとしてパッケージ化してから、このクラスをMAFアプリケーションに登録します。カスタマイズ・クラスおよび関連するアーティファクトをJARファイルにパッケージ化するには、「デプロイメント・プロファイルの作成」ウィザードを使用してデプロイメント・プロファイルを作成します。「自動的に生成されるデプロイメント・プロファイルについて」を参照してください。
JARにカスタマイズ・クラスを追加する手順:
-
「アプリケーション」ウィンドウで、「Javaアプリケーション・プロジェクト」を右クリックし、「新規」を選択してから「ギャラリから」を選択します。
-
「新規ギャラリ」で、「一般」を開き、「デプロイメント・プロファイル」、「JARファイル」の順に選択して、「OK」をクリックします。
ヒント:
「カテゴリ」ツリーに「デプロイメント・プロファイル」ノードが表示されない場合、「すべての機能」タブをクリックします。
-
「デプロイメント・プロファイルの作成」 -- 「JARファイル」ダイアログで、プロジェクト・デプロイメント・プロファイルの名前(図の
SiteCC
など)を入力して、「OK」をクリックします。 -
「JARデプロイメント・プロファイルのプロパティの編集」ダイアログで、「JARオプション」を選択します。
-
必要に応じて、JARファイルの場所を入力します。または、デフォルトの場所を使用します。
-
「ファイル・グループ」、「プロジェクトの出力」、「フィルタ」の順に開き、JARに含むように選択できるファイルを一覧表示します。
-
「フィルタ」ページの「ファイル」タブで、JARファイルに追加するカスタマイズ・クラスを選択します。
-
「OK」をクリックして、「JARデプロイメント・プロファイルのプロパティの編集」ダイアログを終了します。
-
「OK」を再度クリックして、「プロジェクト・プロパティ」ダイアログを終了します。
-
「アプリケーション」ウィンドウで、「Javaアプリケーション・プロジェクト」を右クリックし、「デプロイメント・プロファイル」を選択します。「デプロイメント・アクション」ページでは、「JARファイルにデプロイ」がデフォルトで選択されています。「次へ」をクリックします。
-
JARファイルの出力場所の確認メッセージを確認します。「OK」をクリックします。
次の図に示す「ログ・ファイル」ウィンドウには、デプロイメントのステータスが表示されます。
次の手順を使用してアプリケーションでカスタマイズ・クラスを表示できるようにしてから、カスタマイズ・クラスをadf-config.xml
ファイルのcust-config
セクションに追加します。
注意:
使用するアプリケーションのデータ・モデル・プロジェクトでカスタマイズ・クラスを作成した場合、次の手順は不要です。
始める前に:
-
外部プロジェクトにカスタマイズ・クラスを作成します。
-
カスタマイズ・クラスを含むJARファイルを作成します。
-
Studio開発者ロールを使用してJDeveloperを起動し、カスタマイズするアプリケーションを開きます。
カスタマイズ・クラスをMAFアプリケーションに登録する手順:
-
「アプリケーション」ウィンドウで、「アプリケーション・メニュー」アイコンをクリックして、「アプリケーションのプロパティ」を選択します
-
「アプリケーションのプロパティ」ダイアログで、「ライブラリとクラスパス」を選択し、「JAR/ディレクトリの追加」をクリックします。
-
「アーカイブまたはディレクトリの追加」ダイアログで、カスタマイズ・クラスを含む作成済JARファイルを選択して、「開く」をクリックします。
-
「OK」をクリックします。
次に、カスタマイズ・クラスをadf-config.xml
ファイルに追加します。アプリケーションのadf-config.xml
ファイルでは、mds-config
セクションで適切なcust-config
要素が指定されている必要があります。クライアントはcust-config
要素を使用して、順序付けされ、名前が付けられたカスタマイズ・クラスのリストを定義できます。adf-config.xml
ファイルの概要エディタを使用して、カスタマイズ・クラスを追加します(図11-10を参照)。
adf-config.xml
ファイルでカスタマイズ・クラスを識別するには:
-
「アプリケーション・リソース」ウィンドウで、「ディスクリプタ」および「ADF META-INF」ノードを開き、adf-config.xmlをダブルクリックします
-
概要エディタで、「MDS」ナビゲーション・タブを選択し、「追加」(+)をクリックします。
-
「カスタマイズ・クラスの編集」ダイアログで、作成済のカスタマイズ・クラスを検索するか、作成済のカスタマイズ・クラスに移動します。
-
適切なクラスを選択して、「OK」をクリックします。
-
カスタマイズ・クラスをすべて追加した後、矢印アイコンを使用して適切な順序で配置できます。
図は、2つのカスタマイズ・クラスが追加されたadf-config.xml
ファイルの概要エディタを示しています。
customization-class
要素の順序により、カスタマイズ・レイヤーの優先順位が指定されます。たとえば、adf-config.xml
ファイルのカスタマイズ・クラス順序を表す次のコードでは、IndustryCC
クラスはSiteCC
クラスの前にリストされています。これは、industryレイヤーでのカスタマイズがベース・アプリケーションに適用されてから、siteレイヤーでのカスタマイズが適用されることを示します。
<adf-config xmlns="http://xmlns.oracle.com/adf/config"> <adf-mds-config xmlns="http://xmlns.oracle.com/adf/mds/config"> <mds-config xmlns="http://xmlns.oracle.com/mds/config" version="11.1.1.000"> <cust-config> <match path="/"> <customization-class name="com.mycompany.IndustryCC"/> <customization-class name="com.mycompany.SiteCC"/> </match> </cust-config> </mds-config> </adf-mds-config> </adf-config>
完了したら、JDeveloperでプロジェクトをローカルに実行するためやカスタマイズのために、カスタマイズ・クラスを使用できます。またカスタマイズ・クラスは、アプリケーションをパッケージ化するときに、EARクラス・パスにパッケージ化されます。
「カスタマイズ開発者」ロールの理解
カスタマイズ機能は、「カスタマイズ開発者」ロールでのみ利用可能です。このロールは、プロジェクトのメタデータをカスタマイズするために使用されます。
JDeveloperでは、「カスタマイズ開発者」ロールを使用して、プロジェクトのメタデータをカスタマイズします。カスタマイズ機能は、このロールでのみ使用できます。「カスタマイズ開発者」ロールでは、次の作業を実行できます。
-
カスタマイズの作成および更新
-
カスタマイズしたアプリケーションのヒント・レイヤーの選択および編集
-
既存のカスタマイズの削除。
「カスタマイズ開発者」ロールでJDeveloperを使用する場合、ソース・エディタは読取り専用になり、次のJDeveloperの機能が無効になります。
-
ワークスペースの移行。
-
アプリケーションおよびIDE接続の作成、削除および変更「カスタマイズ開発者」ロールでアプリケーションを開く前に、デフォルト・ロールで接続を構成する必要があります。
「カスタマイズ開発者」ロールでアプリケーションを使用する場合、新規オブジェクトやファイルは作成できず、カスタマイズ不能オブジェクトは変更できません。また、Javaクラス、リソース・バンドル、セキュリティ・ポリシー、デプロイメント・ディスクリプタ、構成ファイルなどのカスタマイズ不能ファイルの編集もできません。
注意:
「カスタマイズ開発者」ロールで作業している際、カスタマイズ不能ファイルはロック・アイコンで示されます。
また、プロジェクト設定も変更できないので、カスタマイズ不能ファイルの変更が必要になる場合には、カスタマイズ可能ファイルのリファクタや変更もできません。
『Oracle JDeveloperによるアプリケーションの開発』のJDeveloperのロールの使用に関する項を参照してください。
JDeveloperでの「カスタマイズ開発者」ロールへの切替え
JDeveloperの起動時に「カスタマイズ開発者」ロールを選択しなかったユーザーは、所定の手順を実行することで、JDeveloperの起動後でもロールの切替えが可能です。
「カスタマイズ開発者」ロールでは、JDeveloperのカスタマイズ機能を使用できます。このロールで作業するには、JDeveloperの起動時に選択するか、JDeveloperがすでに実行されている場合は「ロールの切替え」メニューで「カスタマイズ開発者」ロールに切り替えます。
JDeveloperで「カスタマイズ開発者」ロールに切り替えるには:
JDeveloperのメイン・メニューで、「ツール」、「ロールの切替え」、「カスタマイズ開発者」の順に選択します。
オプションで、「ツール」、「ロールの切替え」の順に選択して「起動時にロール選択を常に要求」メニューを切り替え、JDeveloper起動時にロールを選択するかどうかを指定できます。この選択を解除すると、JDeveloperは、最後に閉じたときのロールで起動します。
ヒント・レイヤーに関する必知事項
「カスタマイズ開発者」ロールのユーザーによる変更は、ヒント・レイヤー(「カスタマイズ・コンテキスト」ウィンドウで選択したレイヤーとレイヤー値の組合せ)に適用されます。
「カスタマイズ開発者」ロールで作業する際、「カスタマイズ・コンテキスト」ウィンドウで選択したレイヤーとレイヤー値の組合せをヒント・レイヤーと呼びます。このレイヤーには、「カスタマイズ開発者」ロールで作業中に行った変更が適用されます。
注意:
「カスタマイズ開発者」ロールで作業しているときに、「カスタマイズ・コンテキスト」ウィンドウが表示されない場合は、JDeveloperの「ウィンドウ」メニューからアクセスしてください。
JDeveloperのエディタに表示されるメタデータは、ベース・メタデータと(adf-config.xml
で設定された優先順位に従った)ヒント・レイヤーまでのカスタマイズ・レイヤーを組み合せたもので、各レイヤーの値は「カスタマイズ・コンテキスト」ウィンドウで指定したものです。
「カスタマイズ開発者」ロールでの作業時には、アプリケーションのカスタマイズされていない状態も確認できます。「カスタマイズ・コンテキスト」ウィンドウで「カスタマイズなしで表示」が選択されている場合、現在使用しているヒント・レイヤーはありません。したがって、表示されているのはカスタマイズされていない状態です。このビューでは、(「アプリケーション」ウィンドウの)カスタマイズ可能ファイルすべてにロック・アイコンが表示され、これらのファイルが読取り専用であることが示されます。
ヒント・レイヤーで行ったカスタマイズは、「プロパティ」ウィンドウではオレンジのアイコンで示されます。緑のアイコンは、ヒント以外のレイヤーのカスタマイズを示します。プロパティの横にオレンジのアイコンが表示されている場合は、そのプロパティのドロップダウン・メニューから「カスタマイズ・アクションの削除」を選択すると、そのカスタマイズを削除できます。
リソース・バンドルでのカスタマイズの有効化
Studio開発者ロールで、アプリケーション・リソースバンドルまたはプロジェクト・リソース・バンドルを作成して、それをカスタマイズするために編集します。
リソース・キーのカスタマイズを実装する場合、追加のリソース・バンドル・ファイルを作成する必要があります(ベース・リソース・バンドル・ファイルは使用できません)。
Studio Developerロールで、次のいずれかを作成します。
-
アプリケーション・リソース・バンドル(「アプリケーション・リソース・バンドルの作成方法」を参照)。
-
プロジェクト・リソース・バンドル(「プロジェクト・リソース・バンドルの作成方法」を参照)。
作成するバンドルを編集して、リソース・キーの文字列値を定義します。
始める前に:
『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の複数のリソース・バンドルの使用方法に関する項を参照してください。
アプリケーション・リソース・バンドルの作成方法
Studio開発者ロールの場合は、「リソース・バンドル」ページからアプリケーション・リソース・バンドルを作成する手順を使用してください。
アプリケーション・リソース・バンドルを作成するには:
プロジェクト・リソース・バンドルの作成方法
「新規ギャラリ」メニューから汎用XMLオプションを選択して、プロジェクト・リソース・バンドルを作成する手順を使用してください。
プロジェクト・リソース・バンドルを作成するには:
-
Studio開発者ロールで、リソース・バンドルを作成するプロジェクトを右クリックして、「新規」、「ギャラリから」の順に選択してから、「一般」、「XML」および「XMLローカリゼーション・ファイル(XLIFF)」を選択します。
-
表示された「Xliffファイルの作成」ダイアログで、リソース・バンドルの名前を入力し、「OK」をクリックします。
-
「リソース・バンドルのリソースの編集」の説明に従ってリソース・バンドルを編集します。
-
「リソース・バンドル」ページの「バンドル検索」タブで、プロジェクト(
.jpr
)ファイルを選択してリソース・バンドルを登録します。次の図に示すように、リソース・バンドルを登録すると、「テキスト・リソースの選択」ダイアログに表示されます。
-
「テキスト・リソースの選択」ダイアログを使用して、次のようにキーを定義します。
-
「リソース・バンドル」ドロップダウン・リストからバンドルを選択します。
ダイアログには、選択したリソース・バンドルで現在定義されている文字列が表示されます。
-
新しい文字列を入力して、「保存して選択」をクリックします。
JDeveloperでは、選択したリソース・バンドルに文字列を書き込みます。
-
-
「カスタマイズ開発者」ロールで、「テキスト・リソースの選択」ダイアログを開き、適切な文字列を含むリソース・バンドルから選択します。「カスタマイズ開発者」ロールでは文字列の変更または新しい文字列の作成ができないため、選択したバンドルの文字列から選択することのみが可能です。
注意:
「カスタマイズ開発者」ロールで、ベース・リソース・バンドルから文字列を選択すると、アプリケーションのアップグレード時に問題が発生する可能性があるため選択しないでください。
カスタマイズを使用したMAFアプリケーションのアップグレード
「アーカイブからモバイル・アプリケーションをアップグレード」ウィザードを使用して、カスタマイズを維持しながらアプリケーションを上位バージョンに更新する手順を使用してください。
カスタマイズはベース・アプリケーションとは別に保存されているため、安全にアップグレートができます。カスタマイズは変更を保持するため、これらの変更をアプリケーションの新しいバージョンに適用して、アプリケーションをアップグレードできます。MAFアプリケーション・アーカイブ(.maa
)ファイルによって、MAFアプリケーションをアップグレードするためのメカニズムが提供されます。.maa
ファイルからアプリケーションを作成する場合、.maa
ファイルの更新バージョンを使用してアプリケーションをアップグレードできます。
「アーカイブからモバイル・アプリケーションをアップグレード」ウィザードを使用すると、アップグレードの前に行われたカスタマイズを保持しながら新しいバージンにアプリケーションをアップグレードできます。
始める前に:
MAFアプリケーション・アーカイブ(.maa
)ファイルについて理解しておいてください。「モバイル・アプリケーション・アーカイブ・ファイルの作成」および「アプリケーション・アーカイブからの新規アプリケーションの作成」を参照してください。
.maa
ファイルにパッケージ化され、アップグレードに使用されるアプリケーションのアプリケーションIDが、適用されるアプリケーションと同じであることを確認してください。また、アップグレードの対象となるアプリケーションより新しいバージョン番号である必要があります。
MAFアプリケーションのアップグレード手順:
-
.maa
ファイルからMAFアプリケーションを作成します。 -
「リソース・バンドルでのカスタマイズの有効化」の説明に従って、MAFアプリケーションにカスタマイズを適用します。
-
「アプリケーション」をクリックして、アーカイブからモバイル・アプリケーションを選択を選択します。
-
.maa
ファイルを参照して選択します。.maa
にパッケージ化されたアプリケーションが、現在のアプリケーションと同じ(または古い)バージョンであったり、異なるアプリケーションIDである場合、ウィザードによりアップグレードは中止されます。 -
手動マージが必要なファイルの「サマリー」ページを確認します。次の図に示すように、MAFでは、
Temp
ディレクトリにアプリケーションの初期バージョン(バージョン1)が保存されます。「サマリー」ページにもログ・ファイルの一時的な場所が表示されます。 -
アップグレードが正常に完了すると、JDeveloperは再起動します。異なるバージョンの構成ファイルに調整が必要な場合、JDeveloperにより通知されます。
アップグレード中に、MAFでは、バージョン1のアプリケーションとバージョン2 (アップグレードしたバージョンのアプリケーション)の両方に対してカスタマイズできないファイル・セットがコピーされます。これらのファイルには、connections.xml
ファイル、adf-config.xml
ファイルなどがあります。MAFによって、バージョン1とバージョン2のconnections.xml
ファイルとadf-config.xml
ファイルに差異が検出されると、これらのファイルの両方のコピーを保持し、マージ・ログ・ファイルに対してエントリを記述します。バージョン番号がある場合、MAFではファイル名にバージョン番号を追加してバージョン1を区別します。バージョン番号がない場合、MAFでは_old
をファイル名に追加します(図11-16のconnections_old.xml
を参照)。必要に応じて、この差異を新しいバージョンに手動でマージできます。図に示すように、MAFでは、「サマリー」ページに表示された一時的な場所にマージ・ファイル・ログを配置します。MAFでは、ファイルにworkspace name
_
timestamp
という名前を付けます。
アプリケーションをアップグレードする場合のJDeveloperでの処理
「アーカイブからモバイル・アプリケーションをアップグレード」ウィザードでアプリケーションをアップグレードすると、関連ファイルはJDeveloperによって保存、インポートおよび更新されます。
Temp
ディレクトリへのバージョン1のコピー、およびバージョン1とバージョン2のアップグレード不可の構成ファイルのコピーの作成に加えて、「アーカイブからモバイル・アプリケーションをアップグレード」ウィザードを使用してアプリケーションをアップグレードする場合、MAFでは次のことも実行します。
-
各プロジェクトのライブラリおよびリソース・バンドル設定を、に保存します。プロジェクト・ファイル名が入力されたマップに保存します。
-
ワークスペースのリソース・バンドル設定を保存します。
-
登録したカスタマイズ・クラスを
adf-config.xml
ファイルに保存します。 -
バージョン2の
.maa
ファイルを一時ディレクトリにインポートします。 -
バージョン1へのアップグレードに使用される
.maa
ファイルからアプリケーションをコピーします。 -
バージョン2の各プロジェクト(
.jpr
)ファイルを、登録したリソース・バンドルおよびライブラリ依存マップで更新します。ライブラリの新しいバージョンにより以前のバージョンがオーバーライドされます。ただし、バージョン1で使用されるライブラリと同じ名前を共有している場合、バージョン1ライブラリは変更されません。 -
バージョン2のワークスペース(
.jws
)ファイルを、登録したリソース・バンドル設定で更新します。 -
バージョン2の
adf-config.xml
ファイルを更新し、カスタマイズ・クラスを登録します。
FARのアップグレードに関する必知事項
アプリケーションの作成やアップグレードに使用された.maa
ファイルに含まれていなかったFARファイルは、個別に(単独で)アップブレードする必要があります。
アプリケーションの作成に使用された元の.maa
ファイル内にパッケージ化されていないFARファイルがアプリケーションに含まれる場合(または、アプリケーションのアップグレードに使用される.maa
ファイルに含まれる場合)、FARファイルを個別にアップグレードする必要があります。たとえば、.maa
ファイルからアプリケーションを作成し、FARファイルを追加してカスタマイズを実行できます。「MAFアプリケーションでのFARコンテンツの使用方法」で説明されているように、「リソース」ウィンドウから更新したFARを追加することで、新しいバージョンのFARを使用するようにアプリケーションをアップグレードできます。