第6章 自己完結型 Red Hat Process Automation Manager Spring Boot JAR ファイルの作成

KIE Server および 1 つ以上の KJAR ファイルなど、完全なサービスを含む、自己完結型 Red Hat Process Automation Manager Spring Boot JAR ファイル 1 つを作成できます。Red Hat Process Automation Manager Spring Boot JAR ファイルは、ランタイム時に読み込まれる KJAR ファイルには依存しません。

必要に応じて、Red Hat Process Automation Manager Spring Boot JAR ファイルには、モジュールを含む、同じ KJAR ファイルの複数のバージョンを含めることができます。これらの KJAR ファイルは、artifactID 属性値と groupID 属性値が同じですが、version の値は異なります。

含める KJAR ファイルは、クラ出力ダーの衝突を避けるために BOOT-INF/lib ディレクトリーの JAR ファイルから分離されています。各 KJAR クラスパスコンテナーファイルは、他の KJAR クラスパスコンテナーファイルから分離され、Spring Boot クラ出力ダーに依存しません。

前提条件

  • 既存の Red Hat Process Automation Manager Spring Boot プロジェクトがある。
  • プロジェクトの KJAR ファイル 1 つ以上の開発を完了している。

手順

  1. プロジェクトの KJAR ファイルをすべてビルドします。デフォルトのビジネスアプリケーションでは、KJAR ソースは <BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-kjar ディレクトリーに含まれます。BUSINESS-APPLICATION はビジネスアプリケーションの名前に置き換えます。プロジェクトには、他の KJAR ソースディレクトリーが含まれている可能性があります。

    すべての KJAR ソースのディレクトリーの KJAR ファイルをビルドするには、以下の手順を実行します。

    1. KJAR ソースディレクトリーに移動します。
    2. 以下のコマンドを入力します。

      mvn install

      このコマンドは、KJAR ファイルをビルドし、ローカルの Maven リポジトリーに配置します。デフォルトでは、このリポジトリーは ~/.m2/repo ディレクトリーに配置されます。

  2. <BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service/src/main/resources ディレクトリーで、Spring Boot アプリケーションの application.properties ファイルに以下のプロパティーを追加します。

    kieserver.classPathContainer=true

    このプロパティーを true に設定すると、KIE Server はコンテナーが使用するクラ出力ダーを使用して KJAR ファイルとその依存関係を読み込みます。

  3. KIE Server が必要な KJAR モジュールを読み込むには、以下のいずれかのアクションを実行します。

    • KIE Server を設定して、Spring Boot アプリケーションで利用可能なすべての KJAR モジュールをスキャンし、デプロイするには、以下のプロパティーを application.properties ファイルに追加します。

      kieserver.autoScanDeployments=true

      このプロパティーを true に設定すると、プログラムを使用して宣言されているか、Maven プラグインを介して宣言されているかに関係なく、KIE Server はアプリケーションで利用可能なすべての KJAR モジュールをデプロイします。

      このオプションは、すべての KJAR モジュールを含める最も簡単な方法です。ただし、欠点が 2 つあります。

      • アプリケーションは、すべての KJAR モジュールのグループ、アーティファクト、バージョン (GAV) に基づいて、すべてのコンテナー ID およびエイリアスを自動的に設定します。KJAR モジュールのカスタムコンテナー ID またはエイリアスを設定できません。
      • 起動時に、アプリケーションは JAR ファイルおよび KJAR モジュールのクラスパスをスキャンします。そのため、起動期間は長くなる可能性があります。

      このような欠点を回避するには、以下のいずれかのオプションで説明されているように application.properties ファイルを使用するか、Java ソースコードを使用して、すべての KJAR モジュールを個別に設定できます。

    • サービスに追加する KJAR モジュールごとに、application.properties ファイルを使用して、すべての KJAR モジュールを個別に設定するには、以下のプロパティーを application.properties ファイルに追加します。

      kieserver.deployments[<n>].containerId=<container>
      kieserver.deployments[<n>].alias=<alias>
      kieserver.deployments[<n>].artifactId=<artifact>
      kieserver.deployments[<n>].groupId=<group>
      kieserver.deployments[<n>].version=<version>

      以下の値を置き換えます。

      • <n>: 連番: 1 番目の KJAR モジュールは 0、2 番目のモジュールの場合は 1 など。
      • <container>: KJAR モジュールのコンテナー ID
      • <alias>: KJAR モジュールのエイリアス
      • <artifact>: KJAR モジュールのアーティファクト ID
      • <group>: KJAR モジュールのグループ ID
      • <version>: KJAR モジュールのバージョン ID

      以下の例では、Evaluation 用の KJAR モジュールの 2 つのバージョンを設定します。

      kieserver.deployments[0].alias=evaluation_v1
      kieserver.deployments[0].containerId=evaluation_v1
      kieserver.deployments[0].artifactId=Evaluation
      kieserver.deployments[0].groupId=com.myspace
      kieserver.deployments[0].version=1.0.0-SNAPSHOT
      
      kieserver.deployments[1].alias=evaluation_v2
      kieserver.deployments[1].containerId=evaluation_v2
      kieserver.deployments[1].artifactId=Evaluation
      kieserver.deployments[1].groupId=com.myspace
      kieserver.deployments[1].version=2.0.0-SNAPSHOT
    • Java ソースコードを使用してすべての KJAR モジュールを個別に設定するには、以下の例のように、ビジネスアプリケーションサービスにクラスを作成します。

      @Configuration
      public class KieContainerDeployer {
      
          @Bean
          public KieContainerResource evaluation_v1() {
              KieContainerResource container = new KieContainerResource("evaluation_v1", new ReleaseId("com.myspace", "Evaluation", "1.0.0-SNAPSHOT"), STARTED);
              container.setConfigItems(Arrays.asList(new KieServerConfigItem(KieServerConstants.PCFG_RUNTIME_STRATEGY, "PER_PROCESS_INSTANCE", "String")));
              return container;
          }
      
          @Bean
          public KieContainerResource evaluation_v2() {
              KieContainerResource container = new KieContainerResource("evaluation_v2", new ReleaseId("com.myspace", "Evaluation", "2.0.0-SNAPSHOT"), STARTED);
              container.setConfigItems(Arrays.asList(new KieServerConfigItem(KieServerConstants.PCFG_RUNTIME_STRATEGY, "PER_PROCESS_INSTANCE", "String")));
              return container;
          }
      }

      追加するすべての KJAR モジュールについて、このクラスに KieContainerResource Bean を作成します。Bean の名前はコンテナー名であり、KieContainerResource() の最初のパラメーターはエイリアス名で、ReleaseId() のパラメーターは、KJAR モジュールのグループ ID、アーティファクト ID、およびバージョン ID です。

  4. <BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service ディレクトリーの Spring Boot service/pom.xml ファイルに以下の Maven プラグインを追加します。<GROUP_ID><ARTIFACT_ID> および <VERSION> は、プロジェクトが使用する KJAR アーティファクトのグループ、アーティファクト、バージョン (GAV) に置き換えます。これらの値は、KJAR ソースディレクトリーにある pom.xml ファイルにあります。

    注記

    アーティファクトのバージョンを複数追加できます。

      <build>
        <plugins>
          <plugin>
            <groupId>org.kie</groupId>
            <artifactId>kie-maven-plugin</artifactId>
            <version>${version.org.kie}</version>
            <executions>
              <execution>
                <id>copy</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>package-dependencies-kjar</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId><GROUP_ID></groupId>
                  <artifactId><ARTIFACT_ID></artifactId>
                  <version><VERSION></version>
                </artifactItem>
              </artifactItems>
            </configuration>
          </plugin>
        <plugins>
      <build>

    KJAR の実行に必要なアーティファクトは、ビルド時に解決されます。

    以下の例では、Evaluation アーティファクトのバージョンを 2 つ追加します。

      <build>
        <plugins>
          <plugin>
            <groupId>org.kie</groupId>
            <artifactId>kie-maven-plugin</artifactId>
            <version>${version.org.kie}</version>
            <executions>
              <execution>
                <id>copy</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>package-dependencies-kjar</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>com.myspace</groupId>
                  <artifactId>Evaluation</artifactId>
                  <version>1.0.0-SNAPSHOT</version>
                </artifactItem>
                <artifactItem>
                  <groupId>com.myspace</groupId>
                  <artifactId>Evaluation</artifactId>
                  <version>2.0.0-SNAPSHOT</version>
                </artifactItem>
              </artifactItems>
            </configuration>
          </plugin>
        <plugins>
      <build>
  5. 自己完結型 Spring Boot イメージをビルドするには、<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service ディレクトリーで以下のコマンドを入力します。

    mvn install
  6. オプション: 自己完結型 Spring Boot イメージを実行するには、target サブディレクトリーで JAR ファイルを見つけ、以下のコマンドを入力します。

    java -jar <FILENAME>.jar

    このコマンドで <FILENAME> は JAR ファイルの名前に置き換えます。