Jboss Drools-EventListener

Jboss Drools-EventListener,jboss,drools,Jboss,Drools,我们计划使用Drools/JBoss BRMS 6进行业务规则管理。我们的计划是使用工作台编写规则,在多个执行服务器中部署规则包,并允许应用程序通过调用RESTAPI来访问规则包。在调用应用程序和规则包之间没有任何Java包装器或自定义类 我正在尝试将一些日志记录合并到规则引擎中。我知道可以实现EventListener接口 请提供一些关于如何在我们的设置中实现侦听器的信息/指导?我将在哪里创建和存储实现事件侦听器的Java类/方法 调用应用程序如何将事件侦听器插入会话?它会成为xml/json

我们计划使用Drools/JBoss BRMS 6进行业务规则管理。我们的计划是使用工作台编写规则,在多个执行服务器中部署规则包,并允许应用程序通过调用RESTAPI来访问规则包。在调用应用程序和规则包之间没有任何Java包装器或自定义类

我正在尝试将一些日志记录合并到规则引擎中。我知道可以实现EventListener接口

  • 请提供一些关于如何在我们的设置中实现侦听器的信息/指导?我将在哪里创建和存储实现事件侦听器的Java类/方法
  • 调用应用程序如何将事件侦听器插入会话?它会成为xml/json有效负载的一部分吗
    谢谢你。在哪里实现侦听器?

    监听器显然必须用Java实现。我发现将这些实现放在一个单独的maven项目中是一个简单的地方。毕竟,kie工作台中的项目本身就是一个maven项目。因此,您可以创建一个单独的项目(在kie workbench之外)来实现您想要的侦听器,然后将这个新项目作为依赖项添加到kie workbench的项目中(查看有关如何做到这一点的文档)

    我发现这种方法的唯一问题是,一旦定义了项目之间的依赖关系,kie工作台就会扫描其中的每一个类以及它拥有的任何其他依赖关系。查看更多信息

    因此,如果您的侦听器项目没有太多依赖项,那么您应该可以继续。请注意,理论上,您可以在侦听器项目中添加任何kie/drools依赖项,如提供的

    2。如何配置这些侦听器?

    我经常使用的一个技巧是使用我称之为“配置”的规则来完成这种工作

    “配置”规则是一个没有LHS的规则(如果您不信任,则为高显著性)。这种规则保证只执行一次。只需确保在第一次与kie服务器交互之前调用
    fireAllRules()
    ,或者第一次交互总是以
    fireAllRules
    命令开始

    您的配置规则可能如下所示:

    /**
    Configures the session's listeners.
    **/
    rule "[SUB-CONFIG] Listeners Configuration"
    salience 1000
    when
    then
        ((org.drools.impl.StatefulKnowledgeSessionImpl)kcontext.getKnowledgeRuntime()).addEventListener(new MyWorkingMemoryEventListener());
        ((org.drools.impl.StatefulKnowledgeSessionImpl)kcontext.getKnowledgeRuntime()).addEventListener(new MyAgendaEventListener());
    end
    
    您可以将此规则放置在kie服务器项目中


    希望能有所帮助,

    1。在哪里实现侦听器?

    监听器显然必须用Java实现。我发现将这些实现放在一个单独的maven项目中是一个简单的地方。毕竟,kie工作台中的项目本身就是一个maven项目。因此,您可以创建一个单独的项目(在kie workbench之外)来实现您想要的侦听器,然后将这个新项目作为依赖项添加到kie workbench的项目中(查看有关如何做到这一点的文档)

    我发现这种方法的唯一问题是,一旦定义了项目之间的依赖关系,kie工作台就会扫描其中的每一个类以及它拥有的任何其他依赖关系。查看更多信息

    因此,如果您的侦听器项目没有太多依赖项,那么您应该可以继续。请注意,理论上,您可以在侦听器项目中添加任何kie/drools依赖项,如提供的

    2。如何配置这些侦听器?

    我经常使用的一个技巧是使用我称之为“配置”的规则来完成这种工作

    “配置”规则是一个没有LHS的规则(如果您不信任,则为高显著性)。这种规则保证只执行一次。只需确保在第一次与kie服务器交互之前调用
    fireAllRules()
    ,或者第一次交互总是以
    fireAllRules
    命令开始

    您的配置规则可能如下所示:

    /**
    Configures the session's listeners.
    **/
    rule "[SUB-CONFIG] Listeners Configuration"
    salience 1000
    when
    then
        ((org.drools.impl.StatefulKnowledgeSessionImpl)kcontext.getKnowledgeRuntime()).addEventListener(new MyWorkingMemoryEventListener());
        ((org.drools.impl.StatefulKnowledgeSessionImpl)kcontext.getKnowledgeRuntime()).addEventListener(new MyAgendaEventListener());
    end
    
    您可以将此规则放置在kie服务器项目中

    希望有帮助