drools 是否支持任何形式的 "rule activation probability"(比如离触发有多近是一条规则)?
Does drools support any form of "rule activation probability" (as in how close to firing is a rule)?
我想知道 drools 中是否有任何东西可以用来确定规则(或已经)被激活的程度?
据我所知,标准流口水不支持类似的东西,我只是想知道我是否错过了什么。
我看了一眼 Drools Chance (https://github.com/droolsjbpm/drools-chance),但它似乎最近没有得到太多开发,似乎还没有为 Drools 做好准备6.x。
我知道 AgendaEventListeners 可用于在触发规则时进行拦截,但如果规则的单个条件已被评估为真,则似乎没有任何可拦截的内容。
我是不是遗漏了什么,或者这是流口水的当前限制,不支持这种事情吗?
谢谢!
这与我所说的有关"learning the reason for failure"。考虑你必须通过 n 个资格。与其被告知您失败了,不如拥有一份 "pass"(和 "fail")标准的列表。
一次性评估所有这些的一条规则是不好的。您必须为 n 个标准中的每一个都编写一个规则,并收集具有被调查属性的事实的积极因素。最后,一个低优先级规则可以检查你是否拥有所有 n ("hooray"),另一个可以告诉你 "sorry, no",但它 可以给你一个成功的列表(还有什么不是)。
很多努力,但好的信息总是很昂贵。
也许您可以使用变通方法。构建一组额外的规则,根据您对关闭的定义编写它们何时触发的指标——对于感兴趣的规则,这可能是 LHS 的 1..n 部分 and/or 接近任何部分的阈值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 中是否有任何东西可以用来确定规则(或已经)被激活的程度? 据我所知,标准流口水不支持类似的东西,我只是想知道我是否错过了什么。
我看了一眼 Drools Chance (https://github.com/droolsjbpm/drools-chance),但它似乎最近没有得到太多开发,似乎还没有为 Drools 做好准备6.x。
我知道 AgendaEventListeners 可用于在触发规则时进行拦截,但如果规则的单个条件已被评估为真,则似乎没有任何可拦截的内容。
我是不是遗漏了什么,或者这是流口水的当前限制,不支持这种事情吗?
谢谢!
这与我所说的有关"learning the reason for failure"。考虑你必须通过 n 个资格。与其被告知您失败了,不如拥有一份 "pass"(和 "fail")标准的列表。
一次性评估所有这些的一条规则是不好的。您必须为 n 个标准中的每一个都编写一个规则,并收集具有被调查属性的事实的积极因素。最后,一个低优先级规则可以检查你是否拥有所有 n ("hooray"),另一个可以告诉你 "sorry, no",但它 可以给你一个成功的列表(还有什么不是)。
很多努力,但好的信息总是很昂贵。
也许您可以使用变通方法。构建一组额外的规则,根据您对关闭的定义编写它们何时触发的指标——对于感兴趣的规则,这可能是 LHS 的 1..n 部分 and/or 接近任何部分的阈值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
}