第15章 デプロイメント記述子

プロセスとルールは Apache Maven ベースのパッケージに保存され、ナレッジアーカイブ、または KJAR と呼ばれます。ルール、プロセス、アセット、およびその他のプロジェクトアーティファクトは、Maven がビルドおよび管理する JAR ファイルの一部です。kmodule.xml と呼ばれる、KJAR の META-INF ディレクトリー内に保存されるファイルを使用して、KIE ベースとセッションを定義できます。デフォルトでは、この kmodule.xml ファイルは空です。

KIE Server のようなランタイムコンポーネントが KJAR の処理を開始するタイミングで常に kmodule.xml を検索して、ランタイム表記を構築します。

デプロイメント記述子は kmodule.xml ファイルを補い、デプロイメントにおいてより詳細な制御を提供します。このような記述子は任意で、記述子がなくてもデプロイメントは正常に行われます。記述子を使用して、persistence、auditing、runtime strategy といったメタ値を含む技術的属性を設定することができます。

記述子を使用すると、(サーバーレベルのデフォルト、KJAR ごとに異なるデプロイメント記述子、その他のサーバー設定など) 複数レベルで KIE Server を設定できるようになります。記述子を使用して、デフォルトの KIE Server 設定にシンプルなカスタマイズが可能になります (KJAR ごとなど)。

記述子は kie-deployment-descriptor.xml と呼ばれるファイルで定義し、META-INF ディレクトリーの kmodule.xml ファイルの隣に置くことができます。このデフォルトの場所とファイル名は、システムパラメーターとして指定すると変更できます。

-Dorg.kie.deployment.desc.location=file:/path/to/file/company-deployment-descriptor.xml

15.1. デプロイメント記述子の設定

デプロイメント記述子を使用すると、ユーザーは以下の複数レベルで実行サーバーを設定することができるようになります。

  • サーバーレベル: メインのレベルで、サーバーにデプロイされているすべての KJAR に適用されます。
  • KJAR レベル: このレベルでは、KJAR ベースで記述子を設定できます。
  • デプロイ時レベル: KJAR のデプロイ時に適用される記述子です。

デプロイメント記述子で指定されたより詳細な設定アイテムは、マージされるコレクションベースの設定アイテムを除いて、サーバーレベルのものよりも優先されます。優先順位は、デプロイ時設定 > KJAR 設定 > サーバー設定 となります。

注記

デプロイ時の設定は、REST API によるデプロイメントに適用されます。

たとえば、サーバーレベルで定義された (設定可能なアイテムの 1 つである) persistence mode が NONE で、同じモードが KJAR レベルでは JPA と指定されている場合、その KJAR の実際のモードは JPA になります。その KJAR についてデプロイメント記述子で persistence mode に何も指定されていない場合 (またはデプロイメント記述子がない場合) は、サーバーレベルの設定にフォールバックします。このケースでは、NONE (またはサーバーレベルのデプロイメント記述子がない場合は JPA) になります。

設定内容

デプロイメント記述子では、高度な技術的設定が可能です。以下の表では、設定可能な詳細と、それぞれの許容値とデフォルト値を掲載しています。

表15.1 デプロイメント記述子

設定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

ObjectModel のような有効なリスナークラス名

デフォルト値なし

登録するタスクイベントリスナー一覧

task-event-listeners

ObjectModel のような有効なリスナークラス名

デフォルト値なし

登録する作業アイテムハンドラー一覧

work-item-handlers

NamedObjectHandler のような有効な作業アイテムハンドラークラス

デフォルト値なし

登録するグローバル一覧

globals

NamedObjectModel のような有効なグローバル変数

デフォルト値なし

登録するマーシャリングストラテジー (プラグ可能変数永続)

marshalling-strategies

有効な ObjectModel クラス

デフォルト値なし

KJAR のリソースにアクセス可能となるために必要なロール

required-roles

文字列のロール名

デフォルト値なし

KIE セッションの追加の環境エントリー

environment-entries

有効な NamedObjectModel

デフォルト値なし

KIE セッションの追加の設定オプション

configurations

有効な NamedObjectModel

デフォルト値なし

リモートサービスのシリアル化に使用するクラス

remoteable-class

有効な CustomClass

デフォルト値なし

警告

実稼働環境では、EJB Timer スケジューラー (KIE Server のデフォルトのスケジューラー) を使用した Singleton ランタイムストラテジーを使用しないでください。この組み合わせを使用すると、負荷がかかると、Hibernate で問題が発生する可能性があります。具体的に他のストラテジーを使用する理由がない限り、プロセスインスタンス別のランタイムストラテジーの使用を推奨します。この制約に関する詳細情報は、Hibernate issues with Singleton strategy and EJBTimerScheduler を参照してください。