intra-mart Accel Platform IM-LogicDesigner拡張プログラミングガイド 第3版 2016-12-01

3. 拡張パッケージ

本章では、IM-LogicDesigner における全ての拡張機能を実装する為に必要なパッケージ指定方法を解説します。
指定されたパッケージは、そのパッケージ配下のサブパッケージを含めて拡張機能を検索します。検索対象となるパッケージの範囲が広い場合には、起動時の解析に時間がかかる可能性があります。
指定するパッケージは最小限の範囲を指定してください。

3.1. パッケージ指定クラスの作成

パッケージの指定を行うには、パッケージを提供するためのクラスを実装する必要があります。
パッケージ指定を行うクラスは、必ず jp.co.intra_mart.system.logic.factory.ElementScanPackageFactory インタフェースを実装する必要があります。
本書では、拡張パッケージとして org.example.logicdesigner パッケージを指定します。
以降の章で解説するすべての機能は org.example.logicdesigner パッケージ配下に作成します。
パッケージを指定するためのMyPackageFactoryクラスを作成します。
package org.example.logicdesigner;

import java.util.Arrays;
import java.util.Collection;

import jp.co.intra_mart.system.logic.factory.ElementScanPackageFactory;

public class MyPackageFactory implements ElementScanPackageFactory {

    @Override
    public Collection<String> getTargetPackages() {
        return Arrays.asList("org.example.logicdesigner");
    }
}

3.2. パッケージ指定クラスの登録

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