第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 つ以上の開発を完了している。
手順
プロジェクトの KJAR ファイルをすべてビルドします。デフォルトのビジネスアプリケーションでは、KJAR ソースは
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-kjar
ディレクトリーに含まれます。BUSINESS-APPLICATION
はビジネスアプリケーションの名前に置き換えます。プロジェクトには、他の KJAR ソースディレクトリーが含まれている可能性があります。すべての KJAR ソースのディレクトリーの KJAR ファイルをビルドするには、以下の手順を実行します。
- KJAR ソースディレクトリーに移動します。
以下のコマンドを入力します。
mvn install
このコマンドは、KJAR ファイルをビルドし、ローカルの Maven リポジトリーに配置します。デフォルトでは、このリポジトリーは
~/.m2/repo
ディレクトリーに配置されます。
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service/src/main/resources
ディレクトリーで、Spring Boot アプリケーションのapplication.properties
ファイルに以下のプロパティーを追加します。kieserver.classPathContainer=true
このプロパティーを
true
に設定すると、KIE Server はコンテナーが使用するクラ出力ダーを使用して KJAR ファイルとその依存関係を読み込みます。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 です。
必要に応じて、ビジネスアプリケーションを Red Hat OpenShift Container Platform Pod で実行するか、現在のディレクトリーが書き込み可能ではない他の環境で実行する場合は、
spring.jta.log-dir
プロパティーをapplication.properties
ファイルに追加し、書き込み可能な場所に設定します。以下に例を示します。spring.jta.log-dir=/tmp
このパラメーターは、トランザクションログの場所を設定します。
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service
ディレクトリーの Spring Bootpom.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>
オプション: WebSocket を使用して Business Central Monitoring インスタンスと通信できるように、KIE Server を設定可能にするには、以下の変更を加えます。
以下の行を
pom.xml
ファイルの<dependencies>
タグの下に追加します。<dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-controller-websocket-client</artifactId> <version>${version.org.kie}</version> </dependency>
Websocket と Business Central の Monitoring インスタンスとの通信は、Red Hat OpenShift Container Platform でインスタンスの実行など、すべてのケースでサポートされます。
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service/src/main/resources/application.properties
ファイルで、以下のプロパティーを追加するか、変更します。kieserver.location=${org.kie.server.location} kieserver.controllers=${org.kie.server.controller}
自己完結型 Spring Boot イメージをビルドするには、
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service
ディレクトリーで以下のコマンドを入力します。mvn install
オプション: 自己完結型 Spring Boot イメージを実行するには、
target
サブディレクトリーで JAR ファイルを見つけ、以下のコマンドを入力します。java -jar <FILENAME>.jar
このコマンドで
<FILENAME>
は JAR ファイルの名前に置き換えます。KIE Server が WebSocket を使用して Business Central の Monitoring インスタンスに接続し、イメージを実行するように設定するには、以下のコマンドを入力します。
java -Dorg.kie.server.location=http://<LOCATION>:<PORT>/rest/server -Dorg.kie.server.controller=ws://<BC-HOSTNAME>:<BC-PORT>/websocket/controller -Dorg.kie.server.controller.user=<USER> -Dorg.kie.server.controller.pwd=<PASSWORD> -jar <FILENAME>.jar
このコマンドでは、以下の値を置き換えてください。
-
<location>
: サービスにアクセスするための完全修飾ホスト名を指定します。Business Central Monitoring はサービスにアクセスしてプロセス情報を取得し、このホスト名を持つサービスの URL を表示します。 -
<PORT>
: サービスにアクセスするためのポート (例:8090
) -
<BC-HOSTNAME>
: Business Central Monitoring インスタンスの完全修飾名 -
<BC-PORT>
:8080
などの Business Central Monitoring インスタンスのポート -
<user>
: Business Central Monitoring インスタンスに設定したユーザーのユーザー名 -
<password>
: Business Central Monitoring インスタンスに設定したユーザーのパスワード <FILENAME>
: JAR ファイルの名前注記この設定では、サービスにセキュアでない HTTP 通信を使用します。Spring Boot ビジネスアプリケーションを有効な SSL 証明書で設定する場合は、
http:
はhttps:
に置き換えてセキュアな HTTPS 通信を使用できます。Spring Boot での SSL の設定に関する詳細は、Spring Boot の ドキュメント を参照してください。注記Business Central Monitoring からプロセス情報を表示する場合は、Business Central にログインしたユーザーが、同じパスワードを使用してサービスで認証できるようにする必要があります。
-