第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
イベントを監視および出力するコード例
ksession.addEventListener( new DefaultAgendaEventListener() { public void afterMatchFired(AfterMatchFiredEvent event) { super.afterMatchFired( event ); System.out.println( event ); } });
デシジョンエンジンは、デバッグロギングに対して以下のアジェンダおよびワーキングメモリーイベントリスナーもサポートします。
-
DebugAgendaEventListener
-
DebugRuleRuntimeEventListener
これらのイベントリスナーは、同様のサポートされているイベントリスナーメソッドを実装し、デフォルトでデバッグ出力ステートメントを含んでいます。特定のサポートされるイベントを追加して監視およびドキュメント化するか、すべてのアジェンダまたはワーキングメモリーアクティビティーを監視することができます。
たとえば、以下のコードは 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>
org.drools パッケージにおける logback.xml 設定ファイルの例
<configuration> <logger name="org.drools" level="debug"/> ... <configuration>
org.drools パッケージにおける log4j.xml 設定ファイルの例
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <category name="org.drools"> <priority value="debug" /> </category> ... </log4j:configuration>
超軽量環境向けに開発している場合は slf4j-nop
または slf4j-simple
ロガーを使用します。