3.5. 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ファイルが利用できるようになっている。
手順
プロジェクト内の、該当する
.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など、静的バージョンのプロジェクトの更新を取得しません。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オブジェクトで、新規プロジェクトバージョンが使用されるようになります。KIE Server API を使用して KIE スキャナーを開始または停止する方法は、KIE API を使った Red Hat Decision Manager の操作 を参照してください。