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

drools是否支持任何形式的“规则激活概率”(比如规则离触发有多近)?

葛炯
2023-03-14

我想知道drools中是否有什么东西可以用来确定一条规则离激活(或已经激活)有多近?据我所知,标准的drools不支持任何类似的东西,我只是想知道我是否错过了什么。

我看了一眼Drools Chance(https://github.com/droolsjbpm/drools-chance),但它似乎最近没有开发太多,似乎还没有为Drools 6. x做好准备。

我知道可以使用AgendaEventListeners在触发规则时进行拦截,但如果规则的单个条件被计算为true,则看起来没有什么可以拦截的。

我是否遗漏了什么,或者这是目前口水的限制,无法支持这种事情?

谢谢

共有2个答案

尹英华
2023-03-14

这与我所说的“学习失败的原因”有关。考虑到你必须通过n项资格。与其被告知你失败了,不如列出“通过”(和“失败”)标准。

一次性评估所有这些的一个规则是没有用的。你必须为n个标准中的每一个写一个规则,并收集积极的一面,同时保留被调查的属性。最后,一个低优先级规则可以检查你是否拥有所有n个(“万岁”),另一个规则可以告诉你“对不起,不”,但它可以给你一个成功(和不成功)的列表。

很多努力,但是好的信息总是昂贵的。

刁浩言
2023-03-14

也许你可以找个变通的办法。构建一组额外的规则,根据您对close的定义,编写触发时的度量——可以是1。。n个LHS部分,用于关注规则和/或接近LHS任何部分的阈值(假设您想知道某个值何时接近另一个值的90%)。对于源代码中的复杂条件(与Drools无关),我使用了如下方法来跟踪复杂的嵌套逻辑:

boolean a1 = property1 > property2
boolean a2 = (!isHigh || isMedium)
boolean a3 = property 4 == property5
System.out.println ("rule2:  " + a1 + " " + a2 + " " + a3);
if (a1 && a2 && a3) {
   ...do something
}
 类似资料:
  • 我是Drools Fusion的新手,我想知道为什么我的规则不总是被取消。我用的是Drools 6.3。以下是我要插入的事件: 这是我的规则文件: 这是我的输出: 我预计我的规则将触发2次,并给出以下输出: 我可能忽略了一些事情,但我没有找到关于我的问题的太多信息。有人能解释一下这里到底发生了什么吗?非常感谢。

  • 我有两个事实,分别命名为OptionalCover和OptionalPremiumComponent,其中有OptionalPremiumComponent的参考。这就是我在工作记忆中插入的内容。 我在drools中创建了以下规则 问题是,插入父对象时没有触发上述规则。我还需要做些什么来实现这种行为吗?是否支持? 谢谢你。

  • 我对drools和KIE服务器是新手。我遇到了一个问题,即如何通过触发规则RHS(then action)在工作记忆中插入新的事实,然后通过这些动态插入的事实激活其他规则。 我所期望的是,当BaseFeature从外部插入工作内存并激活RuleOne时,在RuleOne内部“然后”它将插入新的事实RuleResult,并希望激活RuleTwo,但它没有激活RuleTwo,只是RuleOne被激活了

  • 假设我有一个对象类型MyObject,其中包含成员数据someValue和otherValue,我插入两个逻辑规则,如下所示: 我的问题是,有没有办法验证这些规则是否已针对同一个MyObject实例触发?另外,对于MyObject的一个特定实例,是否有办法知道这些规则是否已经触发了它?

  • 我是个流口水的新手。我创建了以下对象: 和a*。包含规则的drl文件: 在Postman中,我试图用以下主体调用规则: 我得到了以下答案: 问题是,我的值为空,而不是我期望作为响应的对象。server.log是空的,我看不出有什么问题。请你帮我。 非常感谢你。

  • 假设我有一个议程组“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”和