第 87 章 决策引擎事件监听程序和调试日志记录


在执行操作时,决策引擎会生成事件,如事实插入和规则执行。如果您注册事件监听程序,则决策引擎会在执行活动时调用每个监听程序。

事件监听程序具有与不同类型的活动对应的方法。决策引擎将事件对象传递给每个方法;此对象包含有关特定活动的信息。

您的代码可以实施自定义事件监听程序,您还可以添加和删除注册的事件监听程序。这样,您的代码可以收到决策引擎活动的通知,您可以将日志记录和审核工作与应用程序的核心分开。

决策引擎使用以下方法支持以下事件监听程序:

参与事件监听程序

public interface AgendaEventListener
    extends
    EventListener {
    void matchCreated(MatchCreatedEvent event);
    void matchCancelled(MatchCancelledEvent event);
    void beforeMatchFired(BeforeMatchFiredEvent event);
    void afterMatchFired(AfterMatchFiredEvent event);
    void agendaGroupPopped(AgendaGroupPoppedEvent event);
    void agendaGroupPushed(AgendaGroupPushedEvent event);
    void beforeRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event);
    void afterRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event);
    void beforeRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event);
    void afterRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event);
}
Copy to Clipboard Toggle word wrap

规则运行时事件监听程序

public interface RuleRuntimeEventListener extends EventListener {
    void objectInserted(ObjectInsertedEvent event);
    void objectUpdated(ObjectUpdatedEvent event);
    void objectDeleted(ObjectDeletedEvent event);
}
Copy to Clipboard Toggle word wrap

有关事件类的定义,请参阅 GitHub 存储库

Red Hat Decision Manager 包括这些监听程序的默认实现: DefaultAgendaEventListenerDefaultRuleRuntimeEventListener。您可以扩展这些实施来监控特定的事件。

例如,以下代码扩展了 DefaultAgendaEventListener 以监控 AfterMatchFiredEvent 事件,并将这个监听程序附加到 KIE 会话。执行规则时代码打印模式匹配(填充):

在日程表中监控和打印 AfterMatchFiredEvent 事件的代码示例

ksession.addEventListener( new DefaultAgendaEventListener() {
   public void afterMatchFired(AfterMatchFiredEvent event) {
       super.afterMatchFired( event );
       System.out.println( event );
   }
});
Copy to Clipboard Toggle word wrap

Red Hat Decision Manager 还包括以下决策引擎和规则运行时事件监听程序:

  • DebugAgendaEventListener
  • DebugRuleRuntimeEventListener

这些事件监听器实施相同的受支持的 event-listener 方法,并默认包括一个 debug print 语句。您可以为特定支持的事件添加额外的监控代码。

例如,以下代码使用 DebugRuleRuntimeEventListener 事件监听程序来监控和打印所有工作内存(规则运行时)事件:

监控和打印所有工作内存事件的代码示例

ksession.addEventListener( new DebugRuleRuntimeEventListener() );
Copy to Clipboard Toggle word wrap

87.1. 事件监听程序开发实践

决策引擎在规则处理过程中调用事件监听程序。调用会阻止决策引擎的执行。因此,事件监听程序可能会影响决策引擎的性能。

要确保中断最小,请遵循以下指南:

  • 任何操作都必须尽可能短。
  • 侦听器类不能处于状态。决策引擎可以随时销毁并重新创建监听程序类。
  • 不要使用依赖于不同事件监听程序执行顺序的逻辑。
  • 不要包括与监听器内决策引擎之外的不同实体交互。例如,请勿包含用于事件通知的 REST 调用。一个例外是日志信息的输出,但日志记录监听程序必须尽可能简单。
  • 您可以使用监听程序来修改决策引擎的状态,例如更改变量的值。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat