第87章 デシジョンエンジンのイベントリスナーおよびデバッグロギング
Red Hat Process Automation Manager では、ファクトの挿入やルールの実行など、デシジョンエンジンのイベントリスナーを追加または削除できます。デシジョンエンジンのイベントリスナーを使用すると、デシジョンエンジンのアクティビティーの通知を受けることができ、ロギングと監査をアプリケーションのコアから分けることができます。
デシジョンエンジンは、アジェンダおよびワーキングメモリーに対して、以下のデフォルトのイベントリスナーをサポートします。
-
AgendaEventListener -
WorkingMemoryEventListener
各イベントリスナーについて、デシジョンエンジンは、監視するように指定できる以下の特定のイベントもサポートします。
-
MatchCreatedEvent -
MatchCancelledEvent -
BeforeMatchFiredEvent -
AfterMatchFiredEvent -
AgendaGroupPushedEvent -
AgendaGroupPoppedEvent -
ObjectInsertEvent -
ObjectDeletedEvent -
ObjectUpdatedEvent -
ProcessCompletedEvent -
ProcessNodeLeftEvent -
ProcessNodeTriggeredEvent -
ProcessStartEvent
たとえば、以下のコードは、KIE セッションにアタッチされた DefaultAgendaEventListener リスナーを使用して、AfterMatchFiredEvent イベントが監視されるように指定します。コードは、ルールの実行後にパターンの一致を出力します。
アジェンダの AfterMatchFiredEvent イベントを監視および出力するコード例
デシジョンエンジンは、デバッグロギングに対して以下のアジェンダおよびワーキングメモリーイベントリスナーもサポートします。
-
DebugAgendaEventListener -
DebugRuleRuntimeEventListener
これらのイベントリスナーは、同様のサポートされているイベントリスナーメソッドを実装し、デフォルトでデバッグ出力ステートメントを含んでいます。特定のサポートされるイベントを追加して監視およびドキュメント化するか、すべてのアジェンダまたはワーキングメモリーアクティビティーを監視することができます。
たとえば、以下のコードは DebugRuleRuntimeEventListener イベントリスナーを使用して、すべてのワーキングメモリーイベントを監視および出力します。
すべてのワーキングメモリーイベントを監視および出力するコード例
ksession.addEventListener( new DebugRuleRuntimeEventListener() );
ksession.addEventListener( new DebugRuleRuntimeEventListener() );
87.1. デシジョンエンジンでのロギングユーティリティーの設定 リンクのコピーリンクがクリップボードにコピーされました!
デシジョンエンジンは、システムロギングに Java ロギング API SLF4J を使用します。以下のロギングユーティリティーのいずれかをデシジョンエンジンで使用して、トラブルシューティングまたはデータ収集などのデシジョンエンジンのアクティビティーを調査できます。
- Logback
- Apache Commons Logging
- Apache Log4j
-
java.util.loggingパッケージ
手順
使用するロギングユーティリティーについては、Maven プロジェクトに関連する依存関係を追加するか、Red Hat Process Automation Manager ディストリビューションの org.drools パッケージに関連する XML 設定ファイルを保存します。
Logback の Maven 依存関係の例
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
org.drools パッケージにおける logback.xml 設定ファイルの例
<configuration> <logger name="org.drools" level="debug"/> ... <configuration>
<configuration>
<logger name="org.drools" level="debug"/>
...
<configuration>
org.drools パッケージにおける log4j.xml 設定ファイルの例
超軽量環境向けに開発している場合は slf4j-nop または slf4j-simple ロガーを使用します。