首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drools:仅当存在时才修改()或更新(),否则添加

Drools:仅当存在时才修改()或更新(),否则添加
EN

Stack Overflow用户
提问于 2014-02-06 22:44:12
回答 1查看 12.1K关注 0票数 0

这是我的规则:

代码语言:javascript
复制
rule "Set value of LeftArm fluent" 
when
    $ev: Start()
    $fl:LeftArm()
then
    Sample s = new Sample();
    s.setFluent($fl);
    s.setValue(-1.0);
    insert(s);
end

好吧,但是如果我只想在没有具有相同$fl的样本的情况下设置样本的值,或者修改样本的值,我该怎么做呢?我必须写两个规则吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-07 00:46:49

不,您只需添加应禁止插入新样本的条件:

代码语言:javascript
复制
rule "Set value of LeftArm fluent" 
when
  $ev: Start()
  $fl:LeftArm()
  not Sample( fluent == $fl )
then
  Sample s = new Sample();
  s.setFluent($fl);
  s.setValue(-1.0);
  insert(s);
end

在修改Q之后,如果您已经有了一个示例事实,并且需要将setValue设置为-1.0,则需要使用两个规则,但您可以使用扩展:

代码语言:javascript
复制
rule "StartLeftArm" 
when
  $ev: Start()
  $fl:LeftArm()
then
end

rule "create Sample" extends "StartLeftArm"
when
    not Sample( fluent == $fl )
then
    Sample s = new Sample();
    s.setFluent( $fl );
    insert( s );
end
rule "set Sample Value" extends "StartLeftArm"
when
    $s: Sample( fluent == $fl, value != -1.0 )
then
    modify( $s ){ setValue( -1.0 ) }
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21605977

复制
相关文章

相似问题

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