第26章 トランザクションのコミット時に情報を ElasticSearch に送信するように KIE Server を設定する手順
KIE Server が情報を ElasticSearch に自動的に送信するように設定することができます。この場合、KIE Server は、タスク、プロセス、ケース、または変数が作成、更新、または削除されるたびに ElasticSearch インデックスエントリーを作成します。インデックスエントリーには、変更されたオブジェクトに関する情報が含まれます。KIE Server は、変更でトランザクションをコミットする際にインデックスエントリーを書き込みます。
この機能は、ビジネスプロセスまたはケースと合わせて使用できます。プロセス設計で何も変更する必要はありません。
この設定は、Spring Boot を使用してプロセスサービスを実行する場合にも利用できます。
KIE Server は、JSON ドキュメントとしてプロセス、ケース、タスク情報をシリアライズします。以下の ElasticSearch インデックスを使用します。
-
プロセス情報の
プロセス
-
ケース情報の
ケース
-
タスク情報の
タスク
前提条件
- ビジネスプロセスまたはケースを作成している。ビジネスプロセスまたはケースの作成に関する詳細は、Red Hat Process Automation Manager でのプロセスサービスの開発 を参照してください。
手順
ElasticSearch への情報送信を有効にするには、以下のいずれかの手順を実行します。
Red Hat JBoss EAP または別のアプリケーションサーバーに KIE Server をデプロイした場合は、以下の手順を実行します。
-
Red Hat カスタマーポータルの Software Downloads ページから製品配信可能ファイル
rhpam-7.12.0-maven-repository.zip
をダウンロードします。 - ファイルの内容を展開します。
-
maven-repository/org/jbpm/jbpm-event-emitters-elasticsearch/7.59.0.Final-redhat-00006/jbpm-event-emitters-elasticsearch-7.59.0.Final-redhat-00006.jar
ファイルをアプリケーションサーバーのdeployments/kie-server.war/WEB-INF/lib
サブディレクトリーにコピーします。
-
Red Hat カスタマーポータルの Software Downloads ページから製品配信可能ファイル
Spring Boot を使用してアプリケーションをデプロイした場合は、サービスの
pom.xml
ファイルの<dependencies>
リストに以下の行を追加します。<dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-event-emitters-elasticsearch</artifactId> <version>${version.org.kie}</version> </dependency>
必要に応じて、以下の KIE Server システムプロパティーのいずれかを設定します。
-
org.jbpm.event.emitters.elasticsearch.url
: ElasticSearch サーバーの URL。デフォルト値はhttp://localhost:9200
です。 -
org.jbpm.event.emitters.elasticsearch.date_format
: 情報のタイムスタンプ形式。デフォルト値はyyyy-MM-dd'T'HH:mm:ss.SSSZ
です。 -
org.jbpm.event.emitters.elasticsearch.user
: ElasticSearch サーバーに対して認証を行うためのユーザー名。 -
org.jbpm.event.emitters.elasticsearch.password
: ElasticSearch サーバーに対してユーザーを認証するパスワード。 -
org.jbpm.event.emitters.elasticsearch.ignoreNull
: このプロパティーがtrue
の場合、ElasticSearch の JSON 出力に null 値は書き込まれません。
-
26.1. ElasticSearch 用のデータのカスタマイズ
Red Hat Process Automation Manager が ElasticSearch に送信するデータをカスタマイズするために、トランスフォーマークラスを開発することができます。
プロセス、ケース、タスク、およびタスクの操作に関する情報は、ビュー として利用できます。Red Hat Process Automation Manager には、以下のビュータイプがあります。
-
CaseInstanceView
-
ProcessInstanceView
-
TaskInstanceView
-
TaskOperationView
これらのビューの定義は、GitHub リポジトリー で確認することができます。
各ビューには、識別子を返す getCompositeId()
メソッドがあります。この識別子は、ケース、プロセス、タスク、またはタスク操作の特定のインスタンスを示しています。
プロセス、ケース、タスク、またはタスク操作が作成、更新、または削除されるたびに、プロセスエンジンは トランスフォーマー を呼び出し、関連するビューを提供します。
トランスフォーマーは、ESRequest
オブジェクトを生成しなければなりません。このオブジェクトのコンストラクターのパラメーターで、トランスフォーマーはインデックスを含む ElasticSearch リクエストに必要な情報を提供する必要があります。
トランスフォーマークラスと ESRequest
クラスの定義は、GitHub リポジトリー で公開されています。
カスタムトランスフォーマーを作成して使用するには、以下の手順を実行します。
手順
以下のクラスの Java ソースコードを作成します。
ESInstanceViewTransformer
: トランスフォーマークラス。index()
メソッドとupdate()
メソッドを提供します。どちらのメソッドも、パラメーターとしてビューを受け取り、ESRequest
オブジェクトを返します。プロセス、ケース、タスク、またはタスク操作のインスタンスが最初に作成されるとき、プロセスエンジンは
index()
メソッドを呼び出します。同じインスタンスに関するその後の変更については、プロセスエンジンはupdate()
メソッドを呼び出します。ビューのタイプに応じて、異なる
ESInstanceViewTransformer
実装を作成することができます。-
ESInstanceViewTransformerFactory
: トランスフォーマーファクトリークラス。ビューのタイプごとに、ESInstanceViewTransformer
クラスのインスタンスを返します。
-
Business Central でプロジェクトを入力し、Settings
Dependencies タブをクリックします。 - オプション: トランスフォーマークラスが必要とする依存関係を追加します。
- アセット タブをクリックします。
各クラスソースファイルについて、以下の手順を実行します。
- Import Asset をクリックします。
- Please select a file to upload フィールドで、カスタムシリアライザークラスの Java ソースファイルの場所を選択します。
- OK をクリックしてファイルをアップロードします。
-
サービスを実行する KIE Server インスタンスの場合、
org.jbpm.event.emitters.elasticsearch.factory
システムプロパティーを、ESInstanceViewTransformerFactory
の実装の完全修飾クラス名に設定します。