首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drools eval()优化

Drools eval()优化
EN

Stack Overflow用户
提问于 2017-11-02 10:27:38
回答 1查看 4.1K关注 0票数 1

在这里提到的文档( https://docs.jboss.org/drools/release/7.2.0.Final/drools-docs/html_single/ )中,没有为when子句中使用的eval()方法提供优化细节。假设callMethod将输入字符打印到日志中,并盲目地返回false。

代码语言:javascript
复制
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

为什么引擎会打印:

代码语言:javascript
复制
r //probably from rule 1
r //Rule 4
x //Rule 4 again

而不是

代码语言:javascript
复制
r
r
r
r
x
x

drools在这里使用的优化技术是什么?这有点令人困惑。

EN

回答 1

Stack Overflow用户

发布于 2017-11-02 15:49:08

由Charles L.Forgy博士在1979年开发的Rete算法的基本思想是从产生式规则的左侧组件中提取逻辑表达式网络。

结果是,相同表达式的求值不能再与其在规则代码中的文本外观相关联。

无法以此格式解释详细信息。谷歌和研究。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47066616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档