首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drools多个Modify语句与单个Modify语句

问Drools多个Modify语句与单个Modify语句
EN

Stack Overflow用户
提问于 2016-07-02 18:48:30
回答 1查看 2.1K关注 0票数 1

如果我有一个modify语句和多个Modify语句,在Drools重新考虑要触发的新批量规则的方式上有什么不同吗,如下所示

代码语言:javascript
复制
rule "Multiple Modify Statements"
    dialect "mvel"
    when
        $m : Message( status == Message.HELLO )
    then
        modify ( $m ) { message = "Hope" };
        modify ( $m ) { status = Message.GOODBYE };
end

rule "Single Modify Statements"
    dialect "mvel"
    when
        $m : Message( status == Message.HELLO )
    then
        modify ( $m ) { message = "Never Give Up",
                       status = Message.GOODBYE };
end

而且,是否有任何性能影响。

实际上,我们正在尝试创建一个excel决策表,每个列都有操作,因此多个修改语句更可取,因为这些语句可以在excel文件中由多个列表示。

任何真知灼见都会受到高度赞赏。

EN

回答 1

Stack Overflow用户

发布于 2016-07-02 19:14:23

这个问题很有趣。

Drools中规则的RHS被编译成Java类。如果您查看示例中生成的类,您将看到以下内容:

使用2条modifies语句时,会生成以下代码:

代码语言:javascript
复制
$m.setMessage("Hope");
update($m);
$m.setStatus(Message.GOODBYE);
update($m);

现在,当使用单个修改语句时,生成的代码如下所示:

代码语言:javascript
复制
$m.setMessage("Hope");
$m.setStatus(Message.GOODBYE);
update($m);

不同之处在于调用方法update的次数。此方法触发与Message类相关的任何条件的求值。

我假设在使用单个modify时会有某种性能上的好处,但我不能向您保证这种好处是否明显。我想您在这里唯一的选择就是准备一个基准测试,这样您就可以自己测量性能增益(如果有的话)。

希望能有所帮助,

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

https://stackoverflow.com/questions/38159269

复制
相关文章

相似问题

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