Java Drools eval()优化
在这里提到的这个文档()中,没有为when子句中使用的eval()方法提供优化细节。假设callMethod将输入字符打印到日志中,然后盲目地返回falseJava Drools eval()优化,java,drools,rule-engine,kie,Java,Drools,Rule Engine,Kie,在这里提到的这个文档()中,没有为when子句中使用的eval()方法提供优化细节。假设callMethod将输入字符打印到日志中,然后盲目地返回false rule "Rule1" when eval( callMethod('r') ) then .. drools.halt(); end rule "Rule2" when eval( callMethod('r') ) then .. drools.halt(); end rule "Rule3"
rule "Rule1"
when
eval( callMethod('r') )
then
..
drools.halt();
end
rule "Rule2"
when
eval( callMethod('r') )
then
..
drools.halt();
end
rule "Rule3"
when
eval( callMethod('r') )
then
..
drools.halt();
end
rule "Rule4"
when
eval( callMethod('r') &&
callMethod('x')
)
then
..
drools.halt();
end
rule "Rule5"
when
eval(callMethod('x')
)
then
..
drools.halt();
end
为什么引擎正在打印:
r //probably from rule 1
r //Rule 4
x //Rule 4 again
而不是
r
r
r
r
x
x
drools在这里使用的优化技术是什么?这有点令人困惑。查尔斯·L·福吉博士在1979年开发的Rete算法的基本思想是从产生式规则左侧的组件中提取逻辑表达式网络 其结果是,相同表达式的计算不能再与规则代码中的文本外观相关联
详细信息不能用这种格式解释。Google和research.Charles L.Forgy博士在1979年开发的Rete算法的基本思想是从产生式规则左侧的组件中提取逻辑表达式网络 其结果是,相同表达式的计算不能再与规则代码中的文本外观相关联
详细信息不能用这种格式解释。谷歌和研究。甚至r,r,x,x:如果我假设它缓存了以前类似的评估结果?或者甚至r,r,x,x:如果我假设它缓存了以前类似的评估结果?