我正在尝试为 drools 业务规则系统建立一个基准,因为我必须考虑 RETE 算法的特点。Drools eclispe 插件中的 RETE 视图提供了根据 drl 显示相应 RETE 网络的机会。查看下面的代码,使用此代码 RETE 视图可以工作,但如果我用 ||-operator 替换 &&-operator,RETE 视图会显示 NullPointException。有人可以解释这种行为吗?正如我所看到的,这些语句对于 ||-operator 仍然有效。
编辑:我试图准确我的问题。RETE 网络看起来是否相同 || 或 && 被使用?
package performance.drools;
declare EvalFact0
e0_attrib0 : double
e0_attrib1 : double
end
declare EvalFact1
e1_attrib0 : double
e1_attrib1 : double
end
declare EvalFact2
e2_attrib0 : double
e2_attrib1 : double
end
declare EvalFact3
e3_attrib0 : double
e3_attrib1 : double
end
rule "R0"
when
$e0 : EvalFact0((e0_attrib0 > 0.187) && (e0_attrib1 > 0.469))
$e1 : EvalFact1((e1_attrib0 > 0.479) && (e1_attrib1 > 0.706))
$e2 : EvalFact2((e2_attrib0 > 0.479) && (e2_attrib1 > 0.706))
$e3 : EvalFact3((e3_attrib0 > 0.479) && (e3_attrib1 > 0.706))
then
// some action
end