intra-mart Accel Platform ユーザモジュール開発ガイド 第4版 2016-12-01

モジュール間の依存関係

概要

本章ではモジュール間の依存関係の概念について説明します。

依存関係とは

依存関係の定義はモジュール間の関係性を示します。
依存関係はモジュールごとに定義を行います。
定義されたモジュールは、定義したモジュールを含むwarを作成する際に必須のモジュールとなります。

ex. サンプルモジュールのmodule.xml
<?xml version="1.0" encoding="UTF-8"?>
<module conf:schemaLocation="urn:intramart:jackling:toolkit:configurations configurations.xsd" xmlns="urn:intramart:jackling:module" xmlns:conf="urn:intramart:jackling:toolkit:configurations" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemeLocation="urn:intramart:jackling:module module.xsd">
  <id>jp.co.sample.sample_module</id>
  <version>1.0.0</version>
  <type>module</type>
  <name>サンプルモジュール</name>
  <vendor>サンプル会社</vendor>
  <description>サンプルモジュールです</description>
  <dependencies>
    <dependency>
      <module-id>jp.co.intra_mart.im_workflow</module-id>
      <verified-version min="8.0.5" max="8.0.7">8.0.5</verified-version>
    </dependency>
  </dependencies>
</module>
例として上記のmodule.xmlで設定されている依存関係の例を見てみます。
これは「サンプルモジュール」と名付けられたモジュールのmodule.xmlです。
サンプルモジュールは依存関係として、IM-Workflow モジュール(jp.co.intra_mart.im_workflow)を定義しています。
これはサンプルモジュールを同梱した環境をwarで作る際に、必ずIM-Workflowモジュールもwarで含まれるように
設定しないといけないことになります。
実際にIM-Jugglingでwarを作成する際に依存関係に含まれているモジュールが含まれないと
依存関係の対象モジュール、およびそのモジュールに依存関係で紐づくモジュールが足りないことをエラーで表示します。
依存関係エラー
選択するモジュールが定義している依存モジュール、および依存関係で紐づくモジュールの一覧は「モジュールプロパティビュー」にて確認することができます。
IM-WorkFlowモジュールの依存関係

依存関係の設定の必要性

開発者は自身が作成したモジュールがどのモジュールに依存しているかを定義すべきです。
もし、intra-mart Accel Platformのバージョンアップに伴って対応を行う時に、依存関係を記述しておくことによって、調査すべき変更内容と自らのモジュールに対する影響の調査範囲を絞り込むことができます。
また、定義しておくことによって、ユーザモジュールを含んだ環境を作成する際に必要なモジュールがぬけていたといったような設定漏れを防ぐことができます。

依存関係の定義方法

モジュールプロジェクトでは、プロジェクト直下にあるmodule.xmlで依存関係を示します。
module.xml内の<dependencies>の子要素である<dependency>に依存関係あるモジュールの情報を記述します。
<?xml version="1.0" encoding="UTF-8"?>
<module conf:schemaLocation="urn:intramart:jackling:toolkit:configurations configurations.xsd" xmlns="urn:intramart:jackling:module" xmlns:conf="urn:intramart:jackling:toolkit:configurations" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemeLocation="urn:intramart:jackling:module module.xsd">
  <id>jp.co.sample.sample_module</id>
  <version>1.0.0</version>
  <type>module</type>
  <name>サンプルモジュール</name>
  <vendor>サンプル会社</vendor>
  <description>サンプルモジュールです</description>
  <dependencies>
    <dependency>
      <module-id>jp.co.intra_mart.im_workflow</module-id>
      <verified-version min="8.0.5" max="8.0.7">8.0.5</verified-version>
    </dependency>
  </dependencies>
</module>
module.xmlにおける<dependency>の各要素の定義は以下のようになります。
要素名 説明
module-id
依存関係に設定するモジュールのIDです。
モジュールのIDは以下で確認することができます。
・「モジュールプロパティビュー」に表示されるプロパティ「ID」の値
・IM-Jugglingの「 モジュール構成Excel出力 」で出力したExcelファイル
verified-version
依存関係に設定するモジュールのバージョンです。
値にバージョンを指定することにより、依存関係に設定したモジュールのバージョンを指定できます。

範囲指定の属性として「min」属性と「max」属性を指定できます。
minは依存するモジュールの最小バージョンを、maxは依存するモジュールの最大バージョンを指定できます。
min、maxを指定することによって、そのモジュールに依存するバージョンの範囲を指定することができます。
min、maxをいずれも指定しなかった場合は、値に指定したバージョン以上となります。
なお、minのみ設定した場合は設定したバージョンより大きいバージョンのいずれか、maxのみ指定した場合は設定したバージョンより小さいバージョンのいずれかという範囲になります。
また、minにバージョンを指定する場合は、上記の例のように、この要素の値にはminに指定したバージョンと同じものを指定してください。

コラム

「モジュール構成Excel出力」は以下のように行います。
  1. juggling.imをエディタで開きます。
  2. エディタ右上のアイコンでビルドウィザードを起動します。
  3. Jugglingビルドウィザードで、「モジュール構成Excel出力」を選択して、「次へ」をクリックします。
  4. 出力場所などを設定して、「次へ」をクリックします。
  5. 内容を確認して、「終了」をクリックします。
  6. モジュール構成情報のExcelファイルが出力されます。

依存関係に設定するモジュールの選別

本項では、開発者が作成するモジュールに対して、何を基準にして依存関係のモジュールを設定すべきかについて例をあげます。
  • 利用している開発フレームワークモジュール

    開発者がユーザモジュールを開発する際に利用する開発フレームワークのモジュールです。
    開発フレームワークモジュールとは、 IM-Jugglingにおいて、juggling.im ファイルを「IM-Juggling Editor」で開いたときにベースモジュールの開発フレームワーク内にて選択できるモジュール群です。
    開発フレームワーク群
    開発者は開発フレームワークの依存関係を指定してあげることで、開発フレームワークモジュール、もしくは開発フレームワークが依存するサードパーティライブラリの漏れを防ぐことができます。
  • 利用しているAPI、もしくは機能を含んでいるモジュール

    例えば開発者が、IMBoxのAPIを利用して、特定のアクションが発生した際にIMBoxに投稿するような機能をユーザモジュールに含む場合、依存関係にIMBoxのモジュールを含める必要があります。
    さらにこのIMBox投稿機能をジョブスケジューラにて定期実行を行いたいとした場合、IMBoxのモジュールだけでなくジョブスケジューラのモジュールを依存関係に含める必要があります。
  • カスタマイズするソースを含んでいるモジュール

    intra-mart Accel Platformにて提供されているソースのカスタマイズを行いたい場合、カスタマイズ元のソースを提供しているモジュールを依存関係に含みます。
    カスタマイズしたいソースがどのモジュールに含まれているかはIM-Jugglingの「 モジュール構成Excel出力 」で出力したExcelファイルにて確認することができます。
    もし、Excel上に複数存在していた場合、シート番号がより大きいモジュールを依存関係として設定してください。
    カスタマイズしているモジュールの依存関係を正しく設定してあげることにより、展開時にカスタマイズしたソースが反映されるようになります。

    注意

    同一のパッケージ名とクラス名でのカスタマイズしたJavaソースの作成は非推奨です。
    上記のようなクラスを作成した場合、 jar に含んだ場合は正常にカスタマイズソースが呼び出されない可能性があります。
    そのため、カスタマイズしたJavaソースに対して、お客様独自で配置したソースかどうかが分かるよう、明確な違いが分かるパッケージ名、およびクラス名でのカスタマイズを行ってください。