3.4. KIE スキャナーを使用した KIE コンテナーの監視および更新

Red Hat Decision Manager の KIE スキャナーは、Red Hat Decision Manager プロジェクトに新しい SNAPSHOT バージョンがないか、Maven リポジトリーを監視して、指定の KIE コンテナーにプロジェクトの最新バージョンをデプロイします。開発環境に KIE スキャナーを使用して、新規バージョンが利用できるようになった時に、Red Hat Decision Manager プロジェクトのデプロイメントをより効率的に管理できます。

重要

実稼働環境では、誤ってまたは予期せずにプロジェクトが更新されてしまわないように、SNAPSHOT のプロジェクトバージョンで、KIE スキャナーを使用しないでください。KIE スキャナーは、SNAPSHOT プロジェクトバージョンを使用する開発環境向けに設計されています。

前提条件

  • Red Hat Decision Manager プロジェクトのクラスパスに kie-ci.jar ファイルが利用できるようになっている。

手順

  1. プロジェクト内の、該当する .java クラスで、以下のコード例のように、KIE スキャナーを登録して起動します。

    KIE コンテナー向けの KIE スキャナーの登録および起動

    import org.kie.api.KieServices;
    import org.kie.api.builder.ReleaseId;
    import org.kie.api.runtime.KieContainer;
    import org.kie.api.builder.KieScanner;
    
    ...
    
    KieServices kieServices = KieServices.Factory.get();
    ReleaseId releaseId = kieServices
      .newReleaseId("com.sample", "my-app", "1.0-SNAPSHOT");
    KieContainer kContainer = kieServices.newKieContainer(releaseId);
    KieScanner kScanner = kieServices.newKieScanner(kContainer);
    
    // Start KIE scanner for polling the Maven repository every 10 seconds (10000 ms)
    kScanner.start(10000L);

    この例では、KIE スキャナーは一定の間隔で実行されるように設定しています。KIE スキャナーの最小のポーリング間隔は 1 ミリ秒 (ms) で、最大のポーリング間隔はデータ型 long の最大値です。ポーリングの間隔が 0 以下の場合は、java.lang.IllegalArgumentException: pollingInterval must be positive エラーが発生します。また、KIE スキャナーを scanNow() メソッドで呼び出してオンデマンドで実行するように設定することも可能です。

    この例のプロジェクトグループ ID、アーティファクト ID、およびバージョン (GAV) の設定は、com.sample:my-app:1.0-SNAPSHOT で設定されています。プロジェクトバージョンには、-SNAPSHOT の接尾辞を含めて、KIE スキャナーが指定のアーティファクトバージョンの最新ビルドを取得できるようにする必要があります。1.0.1-SNAPSHOT への更新など、スナップショットのプロジェクトバージョン番号を変更する場合は、KIE スキャナー設定の GAV 定義のバージョンも更新する必要があります。KIE スキャナーは、com.sample:my-app:1.0 など、静的バージョンのプロジェクトの更新を取得しません。

  2. Maven リポジトリーの settings.xml ファイルで、updatePolicy 設定を always に指定し、KIE スキャナーが正しく機能するようにします。

    <profile>
      <id>guvnor-m2-repo</id>
      <repositories>
        <repository>
          <id>guvnor-m2-repo</id>
          <name>BA Repository</name>
          <url>http://localhost:8080/decision-central/maven2/</url>
          <layout>default</layout>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
    </profile>

    KIE スキャナーがポーリングを開始した後に、KIE スキャナーが指定の KIE コンテナーで SNAPSHOT プロジェクトの更新バージョンを検出した場合に、KIE スキャナーは自動的に新しいプロジェクトバージョンをダウンロードして、新規プロジェクトのインクリメンタルビルドをトリガーします。この時点以降、KIE コンテナーから作成された新規の KieBase オブジェクトおよび KieSession オブジェクトで、新規プロジェクトバージョンが使用されるようになります。

    Decision Server API を使用して KIE スキャナーを開始または停止する方法については、KIE API を使用した Red Hat Decision Manager との対話を参照してください。