我有一个简单的JAVA bean,有两个int字段:'a'和'b'。
rule "First rule"
salience 10
when
$bean : Bean ( a == 1)
then
$bean.setB(10);
end
rule "Second rule"
salience 20
when
$bean : Bean ( a == 1)
then
$bean.setB(20);
end
更新
非常感谢你的回答。
也许我应该详细描述一下我的问题。我有一套1500条规则。每条规则:
for (Object fact : facts) {
FactHandle fh = session.insert(fact);
session.fireAllRules(1);
session.delete(fh);
}
Java代码:
for (Object fact : facts) {
session.execute(fact);
}
解决方案2的DRL文件:我向每个规则添加了相同的激活组:
rule "Rule"
activation-group "group"
salience X
when
...
then
...
可以使用drools.halt();在你的最高显著性规则中。
这样做就是终止流并结束规则执行(正是您所需要的)。
假设我有一个议程组“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”和
我使用显著性来确定每个规则的优先级,但当我使用所有规则时,它并不总是选择显著性更高的规则。如何使规则引擎始终选择显著性较高的规则? 输出 触发规则的Actionlistener 口水主 规则结构
我在同一个drl文件中有两个Drools规则,如下所示: 我的想法是用第一条规则处理所有处于临界状态的事件。然后使用第二个规则,如果任何阀门有警报,这是由“如果临界”规则设置的,发送一个短信。 你知道吗?用口水可能吗?
我对drools和KIE服务器是新手。我遇到了一个问题,即如何通过触发规则RHS(then action)在工作记忆中插入新的事实,然后通过这些动态插入的事实激活其他规则。 我所期望的是,当BaseFeature从外部插入工作内存并激活RuleOne时,在RuleOne内部“然后”它将插入新的事实RuleResult,并希望激活RuleTwo,但它没有激活RuleTwo,只是RuleOne被激活了
我必须在java方面这样做吗? 编辑:同时,非常欢迎针对Drools的教程/指南建议。
我对商业规则的世界还很陌生,但我想我已经理解了Drools Expert和Drools Guvnor的概念,但我仍然有点困惑,与Expert相比,到底是如何/何时/为什么使用Guvnor的。而且,无论他们是相互排斥,还是有能力,甚至更愿意并肩工作。下面是一些让我感到困惑的突出主题,以及我关注的问题背后的一些解释,主要集中在应用程序的可维护性上。 Guvnor是否具有Expert plus more