当前位置: 首页 > 知识库问答 >
问题:

Drools在运行时禁用规则

裴兴言
2023-03-14

我正在开始一个项目,流口水和口水guvnor。

我的规则部署在drools Guvnor中。我的规则引擎实例可以通过drools Guvnor公开的pkg文件访问这些规则,当您进行包发布、构建和发布时。

这一切都很好,我正在寻找的是在运行时禁用规则的解决方案。

我现在唯一的解决方案是去guvnor,归档规则,并对包含该规则的包进行构建+发布。

不是还有别的策略吗?

共有1个答案

邵博艺
2023-03-14

根据您的需求和体系结构,有几种方法可以解决这个问题。

>

  • 一种方法是在不同的guvnor包中定义规则的每个子集。在构建kbase时,您只能加载具有特定kbase所需规则的包。

    另一种方法是始终加载所有规则,但使用“enabled”表达式动态启用/禁用规则。请注意,这种情况下的规则仍然被评估,但可以阻止激活它们。对于您希望根据插入到会话中的事实启用/禁用规则的情况,这是一种有用的技术。例如:

    有关更多信息,以下是界面:

    https://github.com/droolsjbpm/droolsjbpm-knowled/blob/master/knowled-api/src/main/java/org/drools/runtime/rule/agendafilter.java

    以下是文档(向下滚动到主题3.3.3.4.1):

    http://docs.jboss.org/drools/release/5.4.0.final/drools-expert-docs/html_single/index.html#d0e2792

  •  类似资料:
    • 有没有什么方法可以动态编辑加载到Drools中的规则,而不需要重新加载新的DRL文件? 我们试图使用Drools作为规则引擎,但在我们的用例中,规则的添加和删除非常频繁,我们希望避免每次发生这种情况时都必须重新加载整个.drl文件。

    • 假设我有一个议程组“daily”,它有两组drools规则集A有规则“default-1”,“default-2”,“default-3”,集B有规则“custom-1”,“custom-2”,“custom-3” 当议程组“daily”变得集中,并且当前事实与自定义模式匹配时,我只希望“custom-1”和/或“custom-2”和/或“custom-3”触发;否则,只有“Default-1”和

    • 1.我创建了一个JComboBox和Jtable。当用户从JComboBox中选择项目时,它们被添加到Jtable中 2.我不想让用户选择他以前在JComboBox中选择的项目 3.因此必须禁用选定的选项(不可选择)。我该怎么做?4.下面的代码在添加到JTable中后从JComboBox中删除该选定项,但我有兴趣禁用它

    • 问题内容: 到目前为止,我还没有找到在Drools 6.0.0中将规则添加到正在运行的KieSession的最佳方法(即以最小的开销),而仍然将我的事实保留在KieSession中。在Drools 5中,当更改KBase时更新了KSession,但对于Drools 6而言却并非如此,因为我的规则未在KieBase中创建。有没有一种方法可以替换整个KieFileSystem中的整个KieModule

    • 到目前为止,我还不知道在Drools 6.0.0中向正在运行的Kie会话添加规则并仍然将我的事实保存在Kie会话中的最佳方法(意味着以最小的开销)。在Drools 5中,当KBase更改时,K会话会更新,但Drools 6似乎并非如此,因为我的规则不是在KieBase中创建的。有没有一种方法可以在不更换KieFileSystem中的整个KieModules或Jars的情况下做到这一点。我认为应该有

    • 我在同一个drl文件中有两个Drools规则,如下所示: 我的想法是用第一条规则处理所有处于临界状态的事件。然后使用第二个规则,如果任何阀门有警报,这是由“如果临界”规则设置的,发送一个短信。 你知道吗?用口水可能吗?