我有两个 int 字段的简单 JAVA bean:'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
Run Code Online (Sandbox Code Playgroud)
实际结果:首先触发“第二条规则”(更高的显着性),第二条触发“第一条规则”。
预期结果:仅触发一条规则(具有最高显着性)。其他规则被忽略。这该怎么做?在 Drools 中可能吗?我正在使用 Drools 6.0.0 Final。
要求: 1. 我不能使用“激活组”。2. 我不想在每个 bean 上使用 'retract'。
更新
真的很感谢你的回答。
也许我应该详细描述我的问题。我有一套 1500 条规则。每条规则:
我想得到什么? 当我有冲突(输入事实与两个或更多规则匹配)时,我只想触发一个具有最高显着性的规则。应该忽略这一事实的其他匹配规则。最重要的是性能 - 这应该尽可能快地工作。
我所做的? 目前我有两种解决方案,但我不知道哪个更好,或者我应该以不同的方式解决这个问题。
解决方案 1 …