3.5. 使用 KIE 扫描程序来监控和更新 KIE 容器

Red Hat Process Automation Manager 中的 KIE 扫描程序会监控您的 Maven 存储库是否有新版本的 Red Hat Process Automation Manager 项目,然后将项目的最新版本部署到指定的 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 必须是正 错误。您还可以通过调用 scanNow () 方法将 KIE 扫描程序配置为按需运行。

    示例中的项目组 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 容器创建的所有新 KieBaseKieSession 对象都使用新项目版本。

    有关使用 KIE 服务器 API 启动或停止 KIE 扫描程序的详情,请参考 使用 KIE API 与 Red Hat Process Automation Manager 交互