30 MAF共有ライブラリによるMAFアプリケーション・コンテンツの再使用

この章では、タスク・フロー、AMXページ・フラグメント、CSSファイルなどのコンテンツをMAF共有ライブラリ(共有ライブラリ)にパッケージし、再使用するために他のMAFアプリケーションに配布する方法について説明します。

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

MAF共有ライブラリによるMAFアプリケーション・コンテンツの再使用の概要

共有ライブラリにより、コンテンツを共有し、複数のMAFアプリケーションで再使用できます。

たとえば、タスク・フローを共有ライブラリに入れ、そこから複数のMAFアプリケーションで使用できるようにすることができます。共有できる他のコンテンツ・タイプには、AMXページ・フラグメント、イメージ、CSS、JavaScriptファイルに加え、iOS用のカスタム起動画面、カスタム・ログイン・ページなどのHTMLページが含まれます。FARがアプリケーション機能を共有するのに対して、共有ライブラリは、タスク・フローなどの個々のアーティファクトを共有するために使用するという点で、共有ライブラリは機能アーカイブ(FAR)と異なります。

他のMAFアプリケーション開発者がアプリケーションで使用できる共有ライブラリを開発する場合は、次のワークフローを使用します。

  1. 共有ライブラリ用のMAFアプリケーションのアプリケーション・テンプレートを使用して、アプリケーションを作成します。このテンプレートには、共有ライブラリに必要なファイルおよびディレクトリ構造と、共有ライブラリをデプロイするためのデプロイメント・プロファイルが用意されています。「共有ライブラリ用のMAFアプリケーションの作成」を参照してください。

  2. タスク・フローなど、共有ライブラリで配布するアーティファクトを追加します。「共有ライブラリ用のMAFアプリケーションへのアーティファクトの追加」を参照してください。

  3. 共有ライブラリをデプロイし、その共有ライブラリに含まれるアーティファクトをMAFアプリケーションが再使用できることを確認して、共有ライブラリをテストします。「共有ライブラリ用のMAFアプリケーションのデプロイ」および「MAFアプリケーションでの共有ライブラリの使用」を参照してください。

  4. 完成した共有ライブラリを含むZIPファイルを配布します。

他のMAFアプリケーション開発者が作成した共有ライブラリを使用する場合、JDeveloperの「リソース」ウィンドウで、他のMAFアプリケーション開発者が配布した共有ライブラリのZIPファイルからの抽出を含むディレクトリへのファイル・システム接続を作成します。その後、共有ライブラリをアプリケーションに追加できます。「MAFアプリケーションでの共有ライブラリの使用」を参照してください。

共有ライブラリ用のMAFアプリケーションの作成

他のMAFアプリケーションと共有するアーティファクトを共有ライブラリ用のMAFアプリケーションに追加します。

共有ライブラリ用のMAFアプリケーションの作成は、他のMAFアプリケーションとアーティファクトを共有する最初の手順です。これにより、2つのプロジェクト(ApplicationControllerLibraryおよびViewControllerLibrary)と、共有ライブラリの内容を説明するlibrary-content.xmlファイルが作成されます。共有ライブラリ用のアプリケーションと関連するプロジェクトを作成した後、次のタスクを実行します。

共有ライブラリ用のMAFアプリケーションの作成方法

JDeveloperの「新規ギャラリ」から呼び出したアプリケーション・ウィザードを使用して、共有ライブラリ用のMAFアプリケーションを作成します。

共有ライブラリを作成する手順:
  1. メイン・メニューで「ファイル」を選択し、次に「アプリケーション」「新規」を選択します。
  2. 「新規ギャラリ」の「アイテム」リストで、「共有ライブラリ用のモバイル・アプリケーション・フレームワーク・アプリケーション」をダブルクリックします。
  3. 共有ライブラリ用のモバイル・アプリケーション・フレームワーク・アプリケーションウィザードで、名前、ディレクトリ、アプリケーション・パッケージの接頭辞など、アプリケーションの詳細情報を入力します。ウィザードの残りのページのヘルプを参照するには、「ヘルプ」をクリックします。
    ウィザードのプロジェクト1名前ページに、ApplicationControllerLibraryプロジェクトを完了するために必要な機能のリストが表示されます。ウィザードのプロジェクト2名前ページに、ViewControllerLibraryプロジェクトを完了するために必要な機能のリストが表示されます。

    各プロジェクトのJava設定の構成ページで指定するデフォルト・パッケージの値の一意性を確保します。これにより、ライブラリ・ルート・ディレクトリのプロパティの値の一意性を確保され、「共有ライブラリ・アーカイブのファイル名が重複したMAFアプリケーションのデプロイ」に記載されているような、共有ライブラリのコンシューマのデプロイメントの問題が回避されます。

  4. 「終了」をクリックします。

共有ライブラリ用のMAFアプリケーションの作成時に行われる処理

JDeveloperは、2つのプロジェクトと、それらのプロジェクトが必要とする様々なファイルを使用して、新しいアプリケーションを作成します。

図は、新しく作成された共有ライブラリ用のMAFアプリケーションを示しています。

図30-1 新しく作成された共有ライブラリ用のMAFアプリケーション

図30-1の説明が続きます
「図30-1 新しく作成された共有ライブラリ用のMAFアプリケーション」の説明

例30-1は、新しく作成された共有ライブラリ用のMAFアプリケーションの内容を示しています。2つのプロジェクト(ApplicationControllerLibraryおよびViewControllerLibrary)が含まれており、他のMAFアプリケーションで使用するために配布するアーティファクトを追加します。また、共有ライブラリを説明するファイルであるlibrary-content.xmlファイルも含まれています。

例30-1 新しく作成された共有ライブラリ用のMAFアプリケーションの内容

MAFappForSharedLib
+---.adf
|   \---META-INF
|           library-content.xml
+---.data
|   ...
+---ApplicationControllerLibrary
|   |   ApplicationControllerLibrary.jpr
|   |
|   +---adfmsrc
|   |   +---application
|   |   |   \---library
|   |   |           DataControls.dcx
|   |   |
|   |   \---META-INF
|   |           adfm.xml
|   |
|   \---public_html
|       \---application
|           \---library
|               \---ApplicationControllerLibrary
|                   \---resources
\---ViewControllerLibrary
    |   ViewControllerLibrary.jpr
    |
    \---public_html
        \---mobile
            \---library
                \---ViewControllerLibrary
                    \---resources

共有ライブラリ・ルート・ディレクトリの設定方法

MAFライブラリ・ルート・ディレクトリのプロジェクト・プロパティに対して、MAFアプリケーションが使用する共有ライブラリのすべてのプロジェクトで一意の値を設定します。

Javaパッケージの名前などに命名規則を採用し、ライブラリ・ルート・ディレクトリのプロパティの一意性を確保します。これにより、複数の共有ライブラリを使用するMAFアプリケーションで共有ライブラリを使用できます。ライブラリ・ルート・ディレクトリのプロパティの値が同じ共有ライブラリがすでにアプリケーションに含まれている場合、MAFは共有ライブラリをそれを使用するMAFアプリケーションに追加しません。
ライブラリ・ルート・ディレクトリの設定手順:
  1. 「アプリケーション」ウィンドウで、MAFライブラリ・ルート・ディレクトリのプロジェクト・プロパティを設定するプロジェクトをダブルクリックします(ViewControllerLibraryなど)。
  2. 「プロジェクト・プロパティ」ダイアログで「MAFライブラリ」を選択し、「MAFライブラリ」ページを表示します。
    MAFライブラリ・ルート・ディレクトリのプロジェクト・プロパティのデフォルトの値は、共有ライブラリのMAFアプリケーションおよびプロジェクト名の作成時に指定するJava設定の構成ページのデフォルト・パッケージの値を連結したものです。
  3. プロパティの一意の値を設定し、「OK」をクリックします。

    図30-2 MAFライブラリ・ルート・ディレクトリのプロパティ

    図30-2の説明が続きます
    「図30-2 MAFライブラリ・ルート・ディレクトリのプロパティ」の説明

コンシューマへの共有ライブラリの内容の説明方法

library-content.xmlファイルを使用して、共有ライブラリを正常に使用するために知る必要がある、バージョン番号、依存性の説明など、共有ライブラリの情報をコンシューマに提供します。

library-content.xmlファイルで説明する必要がある依存性の一例に、MAFがカスタムCordovaプラグインを共有ライブラリにパッケージ化しないため、共有ライブラリで必要なカスタムCordovaプラグインがあります。共有ライブラリのコンシューマは、必要なカスタムCordovaプラグインを個別に取得する必要があります。
コンシューマに共有ライブラリの内容を説明する手順:
  1. 「アプリケーション・リソース」パネルで、「ディスクリプタ」および「ADF META-INF」ノードを開き、「library-content.xml」をダブルクリックします。
  2. ソース・エディタで、共有ライブラリの名前、バージョン番号、共有ライブラリの目的の説明を追加します。
    例30-2は、library-content.xmlファイルを示しています。

注意:

MAFはデプロイ時に、共有ライブラリの作成時に使用されたMAFのバージョンをlibrary-content.xmlファイルに挿入します。

例30-2 library-content.xmlファイル

<library-container 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://xmlns.oracle.com/adf/mf/sharedlibrary"
         name="DocExample">

 <version>2.1</version>
  <library-description>
    This library includes a task flow that enables end users to edit employee details.
  </library-description>
   
</library-container>

共有ライブラリ用のMAFアプリケーションへのアーティファクトの追加

共有するアーティファクトを共有ライブラリ用のMAFアプリケーションの適切なプロジェクトに追加します。

共有ライブラリ用のMAFアプリケーションのテンプレートでは、2つのプロジェクト(ApplicationControllerLibraryおよびViewControllerLibrary)が作成されます。リソースが使用されるMAFアプリケーションのプロジェクトに対応するライブラリ・プロジェクトにリソースを追加してください。たとえば、iOSデバイスでデフォルトのMAFの起動画面の代わりの起動画面を表示するために追加するカスタムHTMLページは、MAFアプリケーションのApplicationControllerプロジェクトにパッケージ化されます。このアーティファクトを共有ライブラリで配布する場合、共有ライブラリ用のMAFアプリケーション内のApplicationControllerLibraryプロジェクトに追加します。

一般的に、CSSファイル、イメージ、カスタム・ログイン・ページなどのHTMLページを共有するには、ApplicationControllerLibraryプロジェクトを使用します。AMXページ・フラグメント、タスク・フロー、CSSファイル、イメージおよびJavaScriptファイルを共有するには、ViewControllerLibraryを使用します。

アーティファクトを使用するのに必要な依存性が共有ライブラリに追加してください。たとえば、データ・コントロールの基礎となるログイン接続およびJavaクラスを含めます。MAFは、共有ライブラリのデプロイ時に、これらの依存性を共有ライブラリにパッケージ化して、共有ライブラリを使用するMAFアプリケーションが使用できるようにします。1つの例外は、Cordovaプラグインです。MAFは、Cordovaプラグインを共有ライブラリにパッケージ化しません。Cordovaプラグインについては、「コンシューマへの共有ライブラリの内容の説明方法」に従って、依存性を説明するエントリをlibrary-content.xmlファイルに追加して、共有ライブラリのコンシューマに、共有ライブラリとは別にCordovaプラグインを取得する必要があることを通知します。また、共有ライブラリのコンシューマは、共有ライブラリのデプロイ時にMAFが生成するjar-maf-plugins.xmlファイルを参照して、必要なすべてのCordovaプラグインがMAFアプリケーションに登録されていることを確認できます。

JDeveloperの「新規ギャラリ」を使用して、共有ライブラリに追加するアーティファクトを作成します。たとえば、MAFログイン接続を共有ライブラリに追加する場合、「新規ギャラリ」を起動し、「新規ギャラリ」の検索入力フィールドに「login」と入力して、MAFログイン・サーバー接続のエントリをすばやく見つけることができます。JDeveloperは、アーティファクトと関連するファイルおよびメタデータを適切なプロジェクトに生成します。たとえば、共有ライブラリでログイン接続を作成すると、共有ライブラリのADF META-INFディレクトリにconnections.xmlファイルが作成されます。この方法に従って、他のアーティファクトを共有ライブラリに追加できます(タスク・フロー、AMXページ・フラグメントなど)。

共有するすべてのアーティファクトをライブラリ・ルート・ディレクトリに作成します。ただし、タスク・フローまたはCSSファイルを共有ライブラリに作成する際、JDeveloperはデフォルトでライブラリ・ルート・ディレクトリに移動しません。これらのアーティファクトを作成するには、ライブラリ・ルート・ディレクトリまたはルート・ディレクトリのサブディレクトリに移動してください。これを行わない場合、共有するアーティファクトはデプロイされる共有ライブラリにパッケージ化されません。たとえば、図ではViewControllerLibraryディレクトリまたはサブディレクトリを選択してタスク・フローを作成します。

図30-3 ライブラリのルート・ディレクトリでのタスク・フローの作成

図30-3の説明が続きます
「図30-3 ライブラリのルート・ディレクトリでのタスク・フローの作成」の説明

共有ライブラリ用のMAFアプリケーションのデプロイ

作成した共有ライブラリをテスト、または完成した共有ライブラリをMAFアプリケーションで使用するアプリケーション開発者に配布するため、共有ライブラリ用のMAFアプリケーションをデプロイします。

共有ライブラリ用のMAFアプリケーションをデプロイした後、ZIPファイルに格納して他のMAFアプリケーション開発者に配布できます。これらの開発者は、MAFアプリケーションで共有ライブラリを使用するため、ZIPの中身を抽出し、JDeveloperの「リソース」ウィンドウから抽出ディレクトリへのファイル・システム接続を追加します。配布前に、JDeveloperの「リソース」ウィンドウでdeployディレクトリのコンテナ・ディレクトリ(MAFappForSharedLibRootDir/deploy/MafSharedLibraryContainer)へのファイル・システム接続を作成し、テスト用に作成するMAFアプリケーションで共有ライブラリを使用することにより、共有ライブラリをテストできます。「MAFアプリケーションでの共有ライブラリの使用」を参照してください。

MAFには、次のすぐに使用できるデプロイメント・プロファイルが用意されています。

  • MafSharedLibraryContainer1

  • ApplicationControllerLibrary_MafSharedLibraryArchive1 to JAR file

  • ViewControllerLibrary_MafSharedLibraryArchive1 to JAR file

MafSharedLibraryContainer1デプロイメント・プロファイルを使用して、共有ライブラリ用のMAFアプリケーションをデプロイします。MafSharedLibraryContainer1デプロイメント・プロファイルには、すぐに使用できる他の2つのデプロイメント・プロファイルに対するライブラリ依存関係があります。独自のMAF共有ライブラリ・コンテナ・プロファイルを作成する場合、たとえば、JDeveloperにより生成されるZIPファイルの名前などのデプロイメント・オプションをカスタマイズする必要があるため、作成した共有ライブラリ・デプロイメント・プロファイルに対するライブラリ依存関係を構成する必要があります。

デプロイメント・プロファイルが作成するファイル名が一意で、共有ライブラリのコンシューマが容易に区別できることを確認することをお薦めします。デフォルトでは、MafSharedLibraryContainer1デプロイメント・プロファイルにより、ZIPファイルの名前が付けられ、MafSharedLibraryContainer1.zipが生成されます。同様に、プロジェクトレベルのデプロイメント・プロファイル(ViewControllerLibraryおよびApplicationControllerLibrary)により、JARファイルが生成され、ViewControllerLibrary1.jarおよびApplicationControllerLibrary1.jarが生成されたJARファイルの名前に付加されます。次の図の左側は、2つの共有ライブラリ(SharedLibOneおよびSharedLibTwo)を使用するMAFアプリケーションの「アプリケーション」および「リソース」ウィンドウであり、それぞれ生成されたJARファイルとZIPファイルのデフォルトのファイル名が表示されています。図の右側は、「MAF共有ライブラリ・コンテナ・オプション」ページであり、生成されたZIPファイルのデフォルト名を編集できます。ZIPおよびJARファイル名を生成するデプロイメント・プロファイルを編集することにより、エンド・ユーザーは共有ライブラリを区別しやすくなり、デプロイメントの問題を回避できる場合があります。データ・プロファイルの編集の詳細は、「デプロイメント・プロファイルでの作業」を参照してください。

図30-4 デフォルトのファイル名を含む共有ライブラリおよびデフォルトのファイル名を編集するためのデプロイメント・プロファイル

図30-4の説明が続きます
「図30-4 デフォルトのファイル名を含む共有ライブラリおよびデフォルトのファイル名を編集するためのデプロイメント・プロファイル」の説明

共有ライブラリ用のMAFアプリケーションのデプロイ方法

共有ライブラリをZIPファイルにデプロイするMAF共有ライブラリ・コンテナのデプロイメント・プロファイルを使用して、共有ライブラリ用のMAFアプリケーションをデプロイします。

MAFアプリケーションを共有ライブラリにデプロイする手順:
  1. JDeveloperのメイン・メニューから、「アプリケーション」「デプロイ」「MafSharedLibraryContainer1」を選択します。
    ここで、「MafSharedLibraryContainer1」は、デプロイメント・プロファイルの名前です。
  2. 表示されるダイアログのリストから「MAF共有ライブラリ・コンテナZIPファイルにデプロイします。」オプションを選択し、「終了」をクリックします。

共有ライブラリ用のMAFアプリケーションのデプロイ時に行われる処理

JDevelopeは、MafSharedLibraryContainerデプロイメント・プロファイルを使用して、次のアーティファクトを含むZIPファイル(デフォルト名MafSharedLibraryContainer1.zip)を作成します。

//Contents of MafSharedLibraryContainer1.zip
|   ApplicationControllerLibrary_MafSharedLibraryArchive1.jar
|   ViewControllerLibrary_MafSharedLibraryArchive1.jar
|
\---META-INF
        jar-maf-plugins.xml
        library-content.xml
        MANIFEST.MF
        oracle.adf.common.services.ResourceService.sva

ZIPのJARファイルには、共有ライブラリ用のMAFアプリケーション内の各プロジェクトからのリソースが含まれます。ただし、ZIPファイルを共有ライブラリのコンシューマに配布する必要があります。

MAFアプリケーションでの共有ライブラリの使用

MAFアプリケーションに含まれるアーティファクトを再使用できるよう、ファイル・システムの共有ライブラリへのIDE接続を作成します。

library-content.xmlファイルの内容を調べ、共有ライブラリをMAFアプリケーションで正常に使用するために実装する必要がある依存性が含まれているかどうか確認します。たとえば、Cordovaプラグインを取得し、MAFアプリケーションに登録する必要がある場合があります。共有ライブラリの作成者は、共有ライブラリを含むZIPファイルを配布する前に、library-content.xmlファイルに依存性が含まれていることを確認してください。ファイル・システムの共有ライブラリへのIDE接続を作成した後、library-content.xmlファイルの内容を確認できます。

共有ライブラリをアプリケーションに追加した後、共有ライブラリを使用するMAFアプリケーションのAMXページで、AMXページ・フラグメントなど共有ライブラリのアーティファクトを使用できます。

MAFアプリケーションでの共有ライブラリの使用方法

共有ライブラリのZIPファイルから抽出したものを含むディレクトリへのファイル・システムのIDE接続を追加します。これにより、共有ライブラリのアーティファクトをJDeveloperの「リソース」ウィンドウからMAFアプリケーションで使用できるようになります。

共有ライブラリの作成者が共有ライブラリをテストする場合、共有ライブラリ用のMAFアプリケーションのdeployディレクトリの子コンテナ・ディレクトリ(MAFappForSharedLibRootDir/deploy/MafSharedLibraryContainer)へのファイル・システムのIDE接続を作成し、共有ライブラリをテストするために作成したMAFアプリケーションで使用します。
MAFアプリケーションで共有ライブラリを使用する手順:
  1. 「リソース」ウィンドウで、「新規」「IDE接続」「ファイルシステム」の順にクリックします。
  2. 「ファイルシステム接続」ダイアログに入力し、抽出された共有ライブラリのZIPファイルを格納するディレクトリへのファイル接続を作成します。詳細は、Oracle JDeveloperのオンライン・ヘルプを参照してください。
  3. MAFアプリケーションでプロジェクト(ApplicationControllerなど)を選択します。

    注意:

    MAFアプリケーションに複数のViewControllerプロジェクトが存在する場合、共有ライブラリのリソースを追加するViewControllerプロジェクトを選択します。ViewControllerプロジェクトを選択しない場合、MAFは、「アプリケーション」ウィンドウの最初のViewControllerプロジェクトに共有ライブラリのリソースを追加します。
  4. 図に示すように、MAFライブラリを右クリックし、「アプリケーションに追加」を選択します。

    ヒント:

    同じディレクトリを選択し、MAFアプリケーションが共有ライブラリを使用する際に有効化される「アプリケーションから削除」オプションを選択して、共有ライブラリをMAFアプリケーションから削除できます。

    図30-5 JDeveloperの「リソース」ウィンドウの共有ライブラリ

    図30-5の説明が続きます
    「図30-5 JDeveloperの「リソース」ウィンドウの共有ライブラリ」の説明
  5. MAFアプリケーションで適切なダイアログ・ピッカーを使用して、MAFアプリケーションで使用する共有ライブラリのリソースを参照します。
    1. 共有ライブラリからAMXページ・フラグメントを参照するには、AMXページ・フラグメントをAMXページに追加し、src属性を共有ライブラリのページ・フラグメントの場所に設定します。

      図30-6 共有ライブラリのAMXページ・フラグメントの使用

      図30-6の説明が続きます
      「図30-6 共有ライブラリのAMXページ・フラグメントの使用」の説明
    2. 共有ライブラリのタスク・フローを使用するには、maf-feature.xmlファイルの概要エディタの「コンテンツ」タブから参照するか、タスク・フロー・コール・アクティビティをタスク・フローに追加します。

      maf-feature.xmlファイルの概要エディタの「コンテンツ」タブから参照するには、maf-feature.xmlファイルの概要エディタの「コンテンツ」タブで「参照」アイコンをクリックし、共有ライブラリからタスク・フローを選択します。

      図30-7 共有ライブラリのタスク・フローの使用

      図30-7の説明が続きます
      「図30-7 共有ライブラリのタスク・フローの使用」の説明

      タスク・フロー・コール・アクティビティを使用するには、タスク・フロー・コール・アクティビティをタスク・フローに追加し、「プロパティ」ウィンドウから呼び出す「プロパティの編集」ダイアログを使用して、共有ライブラリのタスク・フローに移動します。

      図30-8 タスク・フロー・コール・アクティビティによる共有ライブラリのタスク・フローの呼出し

      図30-8の説明が続きます
      「図30-8 タスク・フロー・コール・アクティビティによる共有ライブラリのタスク・フローの呼出し」の説明

ダイアログ・ピッカーを使用できないユース・ケースとしては、MAFアプリケーションのCSSファイルの共有ライブラリからのイメージの参照があります。現在のCSSファイルから共有ライブラリのイメージ・ファイルへの相対ファイル・パスを使用して、イメージを参照します。

相対パスを作成するには、現在のCSSファイルからWebコンテンツ・フォルダ(ファイル・システムのpublic_html)に移動します。その後、共有ライブラリ・プロジェクトのライブラリ・ルート・ディレクトリのプロパティおよび追加のサブディレクトリの値、および参照したいイメージのファイル名を付加します。

ライブラリ・ルート・ディレクトリのプロパティがapppackprefix/application/library/ApplicationControllerLibraryの共有ライブラリ・プロジェクトのimageサブディレクトリのac_img.pngイメージ・ファイルを参照する例を図に示します。イメージを参照するCSSファイルは、public_htmlディレクトリから2ディレクトリ分離れています。そのため、CSSファイルのイメージに使用する相対ファイル・パスは次のようになります。

"../../apppackprefix/application/library/ApplicationControllerLibrary/image/ac_img.png"

ヒント:

次の図に示すように、JDeveloperで「表示」「アプリケーション・プロジェクト」「ライブラリの表示」を選択して、「アプリケーション」ウィンドウの共有ライブラリを表示します。

図30-9 CSSファイルの共有ライブラリからのイメージの参照

図30-9の説明が続きます
「図30-9 CSSファイルの共有ライブラリからのイメージの参照」の説明

共有ライブラリ用のMAFアプリケーションの使用時に行われる処理

MAFは、共有ライブラリのApplicationControllerLibraryプロジェクトの内容をMAFアプリケーションのApplicationControllerプロジェクトに追加します。同様に、共有ライブラリのViewControllerLibraryプロジェクトの内容はMAFアプリケーションのViewControllerプロジェクトに追加されます。

MAFは、共有ライブラリのJARファイルをそれらを使用するMAFアプリケーションに追加します。図に示すように、これらのJARファイルはこれらを使用するMAFアプリケーションの「アプリケーション」ウィンドウで表示できます。これらのライブラリを表示するには、JDeveloperで「表示」「アプリケーション・プロジェクト」「ライブラリの表示」を選択します。

図30-10 使用するMAFアプリケーションでの共有ライブラリ

図30-10の説明が続きます
「図30-10 使用するMAFアプリケーションでの共有ライブラリ」の説明

共有ライブラリが、それを使用するMAFアプリケーションを開発するのに使用しているバージョンと異なるバージョンのMAFを使用して作成された場合、MAFは共有ライブラリをMAFアプリケーションに追加しません。つまり、リリース2.4.0.0.1で開発された共有ライブラリは、リリース2.4.0.0.2で開発されたMAFアプリケーションで使用できますが、リリース2.4.0.1.1では使用できません。使用するMAFアプリケーションを作成するのに使用するMAFのリリースをサポートするには、共有ライブラリの作成者は共有ライブラリをアップグレードする必要があります。また、既存のライブラリ・ルート・ディレクトリがMAFアプリケーションが使用する既存の共有ライブラリのライブラリ・ルート・ディレクトリと一致する場合も、MAFは共有ライブラリをMAFアプリケーションに追加しません。共有ライブラリ・ルート・ディレクトリの値の変更の詳細は、「共有ライブラリ・ルート・ディレクトリの設定方法」を参照してください。

共有ライブラリで定義する接続は、共有ライブラリを使用するMAFアプリケーションの接続とマージされます。次の例のように、MAFは、共有ライブラリからMAFアプリケーションのconnections.xmlファイルに追加する各接続を識別するコメントを追加します。

<!--
 The following connections were added by MAF Shared Library 'DocExample': test 
-->

コメントでは、接続のソースおよび接続の名前が識別されます。前述の例では、'DocExample'は、共有ライブラリの名前(library-content.xmlファイルのname属性に指定された値)を参照し、testは、接続の名前を参照します。library-content.xmlファイルのname属性の値が指定されていない場合、MAFはコンテナZIPの名前(MafSharedLibraryContainer1など)を使用します。たとえば、MAFアプリケーションが接続をconnections.xmlファイルにマージした共有ライブラリを使用しなくなった場合や、後述するように、新しいバージョンの共有ライブラリにアップグレードする場合に、このコメントを使用して、MAFアプリケーションのconnections.xmlファイルから削除できる接続を識別できます。また、JDeveloperは、次の例に示すように、共有ライブラリから追加された接続と、接続を使用する前にさらなる構成が必要かどうかを識別するメッセージを「ログ」ウィンドウに表示します。

[04:42:06 AM] These connections were added by the Add to Application operation.
[04:42:06 AM] {
[04:42:06 AM]    test - new, incomplete LoginConnection connection will be added. Configure before use.
[04:42:06 AM] }

MAFが共有ライブラリおよびそれを使用するMAFアプリケーションで重複された接続が定義されていることを検出した場合、共有ライブラリの接続情報をマージせず、MAFアプリケーションから共有ライブラリを削除します。使用するMAFアプリケーションのconnections.xmlファイルは変更されません。MAFアプリケーションが使用する新しいバージョンの共有ライブラリにアップグレードする場合は、MAFアプリケーションと共有ライブラリに重複する接続が存在するため、MAFによりアップグレードが妨げられることがないよう、既存の接続をMAFアプリケーションから削除するか、共有ライブラリの作成者と連携して、既存の接続をMAFアプリケーションから削除します。

共有ライブラリ・アーカイブのファイル名が重複したMAFアプリケーションのデプロイ

共有ライブラリの内容をパッケージ化する複数のJARに同じファイル名を使用する共有ライブラリによる、使用するMAFアプリケーションのデプロイ方法について説明します。

2つの共有ライブラリ(SharedLib_OneおよびSharedLib_Two)を使用するコンシューマ・アプリケーションがあると仮定します。これらの共有ライブラリには、ルート・ディレクトリのプロパティに一意の値が設定されています。たとえば、test/mobile/library/ViewControllerLibrary_SharedLib_Oneは、 SharedLib_One共有ライブラリのViewControllerLibraryプロジェクトの値です。同様に、他のプロジェクトのルート・ディレクトリの値は、共有ライブラリのアプリケーションの名前(SharedLib_OneまたはSharedLib_Two)を付加しているため、一意です。ただし、これらの共有ライブラリのアプリケーションの作成者は、2つの共有ライブラリを作成する際、アプリケーション・パッケージの接頭辞に同じ値(test)を選択しました。

これらの共有ライブラリのデプロイメント・プロファイルが生成するZIPおよびJARファイルのファイル名はデフォルト値のままで、2つの共有ライブラリのアプリケーションは、同じファイル名でZIPおよびJARファイルにパッケージ化されています。

|   MafSharedLibraryContainer1.zip
...
    |   test_application_library_ApplicationControllerLibrary1.jar
    |   test_mobile_library_ViewControllerLibrary1.jar

2つの共有ライブラリのアプリケーションの各プロジェクトのルート・ディレクトリのプロパティに一意の値が設定されているため、コンシューマ・アプリケーションは正常に2つの共有ライブラリを追加できます。ただし、2つの共有ライブラリのアプリケーションの追加後にコンシューマ・アプリケーションをデプロイしようとすると失敗し、次のメッセージがJDeveloperの「ログ」ウィンドウに表示されます。

[11:45:00 AM] ----  Deployment started.  ----
...
[11:45:07 AM] Deployment cancelled.
[11:45:07 AM] ----  Deployment incomplete  ----.
[11:45:07 AM] Failed deployment to Android emulator. Encountered exception: Cannot deploy the 
              MAF Shared Libraries included in the application because one or more MAF Shared Library 
              archive files have the same name and are configured to be included in the same archive 
              destination directory.

アプリケーションレベルのデプロイメント・プロファイルが呼び出すプロジェクトレベルのFARデプロイメント・プロファイルは、生成されたデプロイメントJARのlibディレクトリに共有ライブラリJARをパッケージ化するため、デプロイメントが失敗します。これは、ViewControllerプロジェクトのViewController_MobileFeatureArchive1.jarです。MAFが同じファイル名を持つ2つの共有ライブラリJARを検出した場合、libディレクトリの別の共有ライブラリJARで上書きせずに、デプロイメントを中止します。

前述のシナリオは、共有ライブラリの作成者が、最初に共有ライブラリを作成したり、デプロイメント・プロファイルを編集して、前述のデフォルト値以外のファイル名を生成する際に、アプリケーション・パッケージの接頭辞の値の一意の命名規則を採用していれば回避できました。使用するMAFアプリケーションのアプリケーション開発者は、プロジェクトレベルのFARデプロイメント・プロファイルを編集し、MAFが同じファイル名を持つ2番目の共有ライブラリJARをパッケージ化する2番目のディレクトリ(lib2など)を作成することにより、この問題を回避し、アプリケーションを正常にデプロイできます。この構成の変更により、デプロイメントが正常に行われ、MAFは、プロジェクトレベルのデプロイメントJAR内の次のディレクトリ構造に2つの共有ライブラリJARをパッケージ化します。次の例では、ViewControllerプロジェクトのAndroidへのデプロイメントが仮定されています。

ViewController_MobileFeatureArchive1.jar
	+---lib
	|   |   test_mobile_library_ViewControllerLibrary1.jar
	+---lib2
	|   |   test_mobile_library_ViewControllerLibrary1.jar
	+---META-INF
	...
	|
	\---public_html
	...

ApplicationControllerおよびViewControllerの2つのプロジェクトレベルのデプロイメント・プロファイルでこの構成の変更を実行します。

デプロイメント・プロファイルを編集する手順:

  1. 「アプリケーション」ウィンドウでプロジェクトをダブルクリックし、表示される「プロジェクト・プロパティ」ダイアログで「デプロイメント」ノードをダブルクリックします。

  2. プロジェクトのデプロイメント・プロファイルを選択し、編集アイコンをクリックして、プロパティのダイアログを開きます。

    デフォルト名は、ProjectName_MobileFeatureArchive1 (MAF Feature Archive)です。

  3. 表示されるダイアログで「ファイル・グループ」ノードを選択し、「新規作成」をクリックします。

  4. 「ファイル・グループの作成」にLibraries2などの名前を入力し、「ライブラリ」ラジオ・ボタンを選択し、「OK」をクリックします。

  5. 新しく作成されたLibraries2ファイル・グループで、「アーカイブのターゲット・ディレクトリ」プロパティを一意の値(lib2など)に設定します。

  6. 「コントリビュータ」ノードの最初のライブラリのチェック・ボックスの選択を解除します。

  7. 最初のLibrariesファイル・グループの「コントリビュータ」ノードで、2番目のライブラリのチェック・ボックスの選択を解除します。

    図30-11 ファイル名が重複した共有ライブラリ・アーカイブの2番目のファイル・グループ・ライブラリの定義の作成

    図30-11の説明が続きます
    「図30-11 ファイル名が重複した共有ライブラリ・アーカイブの2番目のファイル・グループ・ライブラリの定義の作成」の説明
  8. 「OK」をクリックしてダイアログを閉じ、MAFアプリケーションを再度デプロイする前に、「ビルド」「すべてクリーンし、アプリケーションをリフレッシュ」をクリックします。

共有ライブラリでのCordovaプラグインの使用方法

デプロイされる共有ライブラリには、その共有ライブラリが使用するCordovaプラグインは含まれていません。共有ライブラリとは別にCordovaプラグインを取得し、それを使用するMAFアプリケーションに登録する必要があります。

MAFは、共有ライブラリのMETA-INFディレクトリのjar-maf-plugins.xmlファイルのファイル名を使用して、maf-plugins.xmlファイルの変更されたコピーをパッケージ化します。jar-maf-plugins.xmlファイルのすべてのCordovaプラグインのpath属性を空の文字列に設定します。MAFアプリケーションが共有ライブラリを使用する場合、jar-maf-plugins.xmlファイルの内容は、それを使用するMAFアプリケーションのmaf-plugin.xmlファイルとマージされません。jar-maf-plugins.xmlファイルを使用して、共有ライブラリが必要とするすべてのCordovaプラグインが、それを使用するMAFアプリケーションのmaf-plugins.xmlファイルに登録されていることを確認します。

Cordovaプラグインの詳細は、「MAFアプリケーションでのプラグインの使用方法」を参照してください。