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

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

重要

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

ビジネスプロセスと KIE スキャナーを併用しないようにしてください。プロセスで KIE スキャナーを使用すると、予期せぬ更新が発生し、プロセスインスタンスの実行と互換性のない変更が加えられた場合に、長時間実行中のプロセスでエラーが発生する可能性があります。

前提条件

  • kie-ci.jar ファイルを Red Hat Process Automation Manager プロジェクトのクラスパスに用意しておく。

手順

  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/business-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 オブジェクトで、新規プロジェクトバージョンが使用されるようになります。

    KIE Server API を使用して KIE スキャナーを開始または停止する方法は、KIE API を使用した Red Hat Process Automation Manager の操作 を参照してください。