BPM / EIP 構成

各ワークスペースは、独自の BPMN プロセスエンジン(Camunda)EIP 統合エンジン(Apache Camel) を持ちます。ここでは、その構成と、ランタイムイベントの連携(EventAdmin ブリッジ)を説明します。

BPM の構成

設定ファイルは <workspace>/etc/bpm/bpm.yml(初回起動時に自動生成)。エンジンのデータは <workspace>/var/bpm/ に格納されます。

キー 既定 説明
jdbcURL jdbc:h2:<workspace>/var/bpm/data JDBC URL。\${workspace.name} などの変数置換に対応
username sa DB ユーザー
password (空) DB パスワード
driverClassName URL から解決 OSGi バンドルのドライバ(例 org.postgresql.Driver)では指定が必要
history audit Camunda の履歴レベル

共有 DB(クラスター)の例:

jdbcURL: jdbc:postgresql://db:5432/bpm_\${workspace.name}
username: bpm
password: secret
driverClassName: org.postgresql.Driver
history: audit

履歴レベルの変更に関する重要な注意

履歴レベル(none / activity / audit / full / auto)は、初回起動時に DB へ保存されます。以降の起動で設定と DB の値が食い違うと、エンジンは起動に失敗します(この検査は無効化できません)。

意図的に変更する場合は、ワークスペースを停止し、DB の ACT_GE_PROPERTYNAME_='historyLevel')を更新してから bpm.yml を合わせて再起動します。あるいは history: auto にすると、常に DB に保存済みのレベルを採用します。

EIP の構成

EIP エンジンは <workspace>/etc/eip/eip.ymlenabled で有効・無効を切り替えます(既定は有効)。ルートの設計は EIP Modeler、監視は EIP Console から行います。

ランタイムイベント(EventAdmin ブリッジ)

BPM・EIP の両エンジンは、ランタイムのライフサイクルを OSGi EventAdmin に発行します。トピックとプロパティの規約は両エンジンで共通で、workspace プロパティで横断的に購読できます。

トピックの命名

完全修飾型名の ./ に置き換え、末尾に大文字のアクションを付けます。

<fully/qualified/Type>/<ACTION>

BPM のトピック(例)

対象 トピックルート アクション
プロセスインスタンス org/camunda/bpm/engine/runtime/ProcessInstance STARTED, ENDED
ユーザータスク org/camunda/bpm/engine/task/Task CREATED, ASSIGNED, COMPLETED, UPDATED, DELETED
インシデント org/camunda/bpm/engine/runtime/Incident CREATED, RESOLVED, ...

プロセス・アクティビティ・ユーザータスクのイベントは履歴レベルに依存せず発行されます。変数・インシデントのイベントは履歴レベル(audit 以上)に従います。

EIP のトピック(例)

対象 トピックルート アクション
CamelContext org/apache/camel/CamelContext STARTED, STOPPED, ...
ルート org/apache/camel/Route ADDED, STARTED, STOPPED, ...
交換 org/apache/camel/Exchange CREATED, COMPLETED, FAILED, ...

CamelContext / Route / Service イベントは既定で有効です。Exchange とステップのイベントは大量になるため既定で無効で、必要に応じて有効化します。

購読する

OSGi の EventHandlerevent.topics フィルター付きで登録します。ワイルドカードが使えます。

org/camunda/bpm/engine/task/Task/*
org/apache/camel/Exchange/FAILED

すべてのイベントは workspace プロパティを持つため、両エンジンを統一的に扱えます。