intra-mart Accel Platform IM-共通マスタ 仕様書 第7版 2019-04-01

4.4. リスナー

マネージャはさまざまな更新処理(登録や削除を含みます)を行います。
このとき、マネージャ本来の処理の後に独自の処理を追加することができます。これをリスナーといいます。
リスナーはマネージャの更新処理に対してPluginとして追加することが出来ます。

4.4.1. リスナーの種類

リスナーはIM-共通マスタで提供しているAppCommonManager以外のマネージャに対して追加する事が出来ます。
リスナーはマネージャ毎に呼び出すタイミングが決まっており、大きく分類して以下のようなタイミングで呼び出しを行います。
  • 基本となる情報を追加、更新、削除した時点
  • 期間を分割、更新した時点
  • 内包構造のセットを作成したり、内包関係を追加、削除、更新した時点
  • 所属の追加、更新、解除の時点
それぞれ、必要に応じて必要なタイミングの処理を実装する必要があります。
リスナーの具体的な実装方法や、仕様の詳細については「IM-共通マスタ 拡張プログラミングガイド 」を参照して下さい。

4.4.2. リスナーの動作

リスナーの動作の概要を【図:リスナーの動作概要】に示します。
../../_images/listener_actions_summary.png

【図:リスナーの動作概要】


  1. アプリケーションは更新(登録や削除を含みます)用のオブジェクトを生成します。
  2. アプリケーションはトランザクションを開始します。
  3. アプリケーションはマネージャに対して更新処理を依頼します。
  4. マネージャは本来の更新処理を行います。
  5. マネージャは設定(Plugin.xml)をもとにリスナー情報を取得します。
  6. マネージャは取得できたリスナーに対し、取得できた順に更新用のオブジェクトを渡して呼び出しを行います。
  7. リスナーでは更新用のオブジェクトを参照し、独自の処理を行います。
  8. マネージャおよびすべてのリスナーの処理が正常終了した場合、アプリケーションはトランザクションをコミットします。
    一部でも例外を返した場合、アプリケーションはトランザクションをロールバックする必要があります。