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

6. カスタムイベント

カスタムイベント情報の登録方法および独自の表示用テンプレートの作成方法について説明します。

6.1. カスタムイベントとは

カスタムイベントとは、任意のアプリケーションに対して独自に作成できる1つの履歴データです。
任意のアプリケーションに対して紐づけを行うことで、データの変更などを検知し、履歴・コメントモジュールに自動で反映します。

6.2. カスタムイベントの実装

実装は、履歴・コメントモジュールへのイベント登録と、カスタムイベント情報の設定に分けて行います。
カスタムイベントの処理はJavaで実装します。

6.2.1. 履歴・コメントモジュールへのイベント登録

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

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import jp.co.intra_mart.foundation.journal.JournalServiceFactory;
import jp.co.intra_mart.foundation.journal.action.JournalActionRegisterModel;
import jp.co.intra_mart.foundation.journal.action.JournalActionType;
import jp.co.intra_mart.foundation.journal.event.JournalEventGroupKey;
import jp.co.intra_mart.foundation.journal.event.JournalEventRegisterModel;
import jp.co.intra_mart.foundation.journal.event.JournalEventService;
import jp.co.intra_mart.foundation.journal.exception.JournalException;

public class MyService {
    // カスタムイベント情報の設定
    private JournalEventRegisterModel registerJournal() throws JsonProcessingException {

        // 独自のイベントを作成する
        final JournalEventRegisterModel event = new JournalEventRegisterModel();

        // eventGroupKeyを設定する
        final JournalEventGroupKey eventGroupKey = new JournalEventGroupKey();
        eventGroupKey.put("journalSampleId", "1");
        event.setEventGroupKey(eventGroupKey);
        event.setApplication("im-journal-sample");

        // eventTypeId (設定ファイルのevent-type-idに設定した値)
        event.setEventTypeId("im_journal_sample_log");

        // アクションを設定する
        final Set<JournalActionRegisterModel> actions = new HashSet<JournalActionRegisterModel>();
        final JournalActionRegisterModel action = new JournalActionRegisterModel();
        action.setKey("my-action-key");
        action.setType(JournalActionType.REGISTER);

        final Map<String, String> actionData = new HashMap<String, String>();
        final ObjectMapper jsonMapper = new ObjectMapper();
        actionData.put("myData", "123456");

        final String jsonString = jsonMapper.writeValueAsString(actionData);

        action.setData(jsonString);
        actions.add(action);
        event.setActions(actions);

        return event;
    }

    // イベント登録
    public void registerMyEvent() throws JsonProcessingException, JournalException {

        // サービスクラスを呼び出す
        final JournalEventService service = JournalServiceFactory.getJournalEventService();

        // 関数の呼び出し
        final JournalEventRegisterModel event = registerJournal();

        // カスタムイベントを登録する
        service.registerEvent(event);
    }
}

コラム

イベント操作日時とイベント操作ユーザの初期値には、それぞれシステム時刻とログインしているユーザのユーザコードが設定されています。そのため、時刻およびユーザコードを変えたい場合は、operationDateおよびoperationUserCdを設定してください。