第14章 デプロイメント記述子
プロセスとルールは Apache Maven ベースのパッケージに保存され、ナレッジアーカイブ、または KJAR と呼ばれます。ルール、プロセス、アセット、およびその他のプロジェクトアーティファクトは、Maven がビルドおよび管理する JAR ファイルの一部です。kmodule.xml
と呼ばれる、KJAR の META-INF
ディレクトリー内に保存されるファイルを使用して、KIE ベースとセッションを定義できます。デフォルトでは、この kmodule.xml
ファイルは空です。
Business Central のようなランタイムコンポーネントが KJAR を処理しようとする際には、ランタイム表記のビルドのために kmodule.xml
を検索します。
デプロイメント記述子は kmodule.xml
ファイルを補い、デプロイメントにおいてより詳細な制御を提供します。このような記述子は任意で、記述子がなくてもデプロイメントは正常に行われます。記述子を使用して、persistence、auditing、runtime strategy といったメタ値を含む技術的属性を設定することができます。
記述子を使用すると、(サーバーレベルのデフォルト、KJAR ごとに異なるデプロイメント記述子、その他のサーバー設定など) 複数レベルで Process Server を設定できるようになります。記述子を使用して、デフォルトの Process Server 設定にシンプルなカスタマイズが可能になります (KJAR ごとなど)。
記述子は kie-deployment-descriptor.xml
と呼ばれるファイルで定義し、META-INF
ディレクトリーの kmodule.xml
ファイルの隣に置くことができます。このデフォルトの場所とファイル名は、システムパラメーターとして指定すると変更できます。
-Dorg.kie.deployment.desc.location=file:/path/to/file/company-deployment-descriptor.xml
14.1. デプロイメント記述子の設定
デプロイメント記述子を使用すると、ユーザーは以下の複数レベルで実行サーバーを設定することができるようになります。
- サーバーレベル: メインのレベルで、サーバーにデプロイされているすべての KJAR に適用されます。
- KJAR レベル: このレベルでは、KJAR ベースで記述子を設定できます。
- デプロイ時レベル: KJAR のデプロイ時に適用される記述子です。
デプロイメント記述子で指定されたより詳細な設定アイテムは、マージされるコレクションベースの設定アイテムを除いて、サーバーレベルのものよりも優先されます。優先順位は、デプロイ時設定 > KJAR 設定 > サーバー設定 となります。
デプロイ時の設定は、REST API によるデプロイメントに適用されます。
たとえば、サーバーレベルで定義された (設定可能なアイテムの 1 つである) persistence mode が NONE
で、同じモードが KJAR レベルでは JPA
と指定されている場合、その KJAR の実際のモードは JPA
になります。その KJAR についてデプロイメント記述子で persistence mode に何も指定されていない場合 (またはデプロイメント記述子がない場合) は、サーバーレベルの設定にフォールバックします。このケースでは、NONE
(またはサーバーレベルのデプロイメント記述子がない場合は JPA
) になります。
設定内容
デプロイメント記述子では、高度な技術的設定が可能です。以下の表では、設定可能な詳細と、それぞれの許容値とデフォルト値を掲載しています。
設定 | XML エントリー | 許容値 | デフォルト値 |
---|---|---|---|
ランタイムデータの永続ユニット名 | persistence-unit | 有効な永続パッケージ名 | org.jbpm.domain |
監査データの永続ユニット名 | audit-persistence-unit | 有効な永続パッケージ名 | org.jbpm.domain |
永続モード | persistence-mode | JPA, NONE | JPA |
監査モード | audit-mode | JPA、JMS、または NONE | JPA |
ランタイムストラテジー | runtime-strategy | SINGLETON、PER_REQUEST、または PER_PROCESS_INSTANCE | SINGLETON |
登録するイベントリスナー一覧 | event-listeners |
| デフォルト値なし |
登録するタスクイベントリスナー一覧 | task-event-listeners |
| デフォルト値なし |
登録する作業アイテムハンドラー一覧 | work-item-handlers |
| デフォルト値なし |
登録するグローバル一覧 | globals |
| デフォルト値なし |
登録するマーシャリングストラテジー (プラグ可能変数永続) | marshalling-strategies |
有効な | デフォルト値なし |
KJAR のリソースにアクセス可能となるために必要なロール | required-roles | 文字列のロール名 | デフォルト値なし |
KIE セッションの追加の環境エントリー | environment-entries |
有効な | デフォルト値なし |
KIE セッションの追加の設定オプション | configurations |
有効な | デフォルト値なし |
リモートサービスのシリアル化に使用するクラス | remoteable-class |
有効な | デフォルト値なし |
EJB Timer スケジューラー (Process Server のデフォルトのスケジューラー) では、Singleton ランタイム戦略を使用しないでください。この組み合わせを使用すると、負荷がかかると、Hibernate で問題が発生する可能性があります。具体的に他のストラテジーを使用する理由がない限り、プロセスインスタンス別のランタイムストラテジーの使用を推奨します。この制約に関する詳細情報は、Hibernate issues with Singleton strategy and EJBTimerScheduler を参照してください。