intra-mart Accel Platform 履歴・コメントモジュールプログラミングガイド 第3版 2023-10-01

7. イベントハンドラ

7.1. イベントハンドラとは

イベントハンドラとは、ユーザによる履歴・コメントモジュールへのコメントや、別のアプリケーションのイベントの登録を、組み込んだアプリケーションで検知する機能です。

7.2. イベントハンドラの実装方法

履歴・コメントモジュールでイベントの登録を検知した際に、任意の処理を行うことができます。
処理は Java で実装します。

7.2.1. イベントハンドラの処理を行うJavaファイルの作成

プロジェクトのsrc/main/java/ 配下に、任意のフォルダを作成します。その配下にJavaファイルを作成し、以下のように実装を行います。
サンプルコードでは、jp/co/intra_mart/journal/sample/event/handler ディレクトリ配下に JournalEventHandlerSample.java というファイルを作成します。

getApplication の返却値でどのイベントの登録を検知するのかを指定します。
onRegisterJournalEvent は検知したイベントの情報を受け取り、任意の処理を行うことができます。
package jp.co.intra_mart.journal.sample.event.handler;

import jp.co.intra_mart.common.platform.log.Logger;
import jp.co.intra_mart.foundation.journal.event.JournalEvent;
import jp.co.intra_mart.foundation.journal.handler.JournalEventHandler;

// JournalEventHandler インタフェースを実装したクラスを作成することで、イベントの登録を検知できる
public class JournalEventHandlerSample implements JournalEventHandler {

    private static final Logger LOGGER = Logger.getLogger(JournalEventHandlerSample.class);

    private static final String application = "*";

    // イベントの登録を検知するアプリケーションを指定
    // "*"を返却することで、すべてのアプリケーションに対して実行される
    @Override
    public String getApplication() {
        return application;
    }

    // イベントの登録を検知した際に実行される処理
    @Override
    public void onRegisterJournalEvent(final JournalEvent event) {
        LOGGER.info(event.toString());
    }
}

7.2.2. イベントハンドラの処理を行うクラスの登録

作成したJournalEventHandlerSampleクラスは、ServiceLoaderクラスを利用して読み込まれるサービスプロバイダとして扱います。
その為、ServiceLoaderとして読み込みを行う為のプロバイダ構成ファイルを配置します。
プロバイダ構成ファイルはクラスパス上の /META-INF/services/jp.co.intra_mart.foundation.journal.handler.JournalEventHandler ファイルです。
intra-mart e Builder for Accel Platform を利用する場合には、プロジェクト配下より src/main/resources/META-INF/services ディレクトリを作成した後、 jp.co.intra_mart.foundation.journal.handler.JournalEventHandler ファイルを作成してください。
プロバイダ構成ファイルには、作成したパッケージ指定クラスのFQDNを指定します。
jp.co.intra_mart.journal.sample.event.handler.JournalEventHandlerSample