这是我的规则:
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的样本的情况下设置样本的值,或者修改样本的值,我该怎么做呢?我必须写两个规则吗?
发布于 2014-02-07 00:46:49
不,您只需添加应禁止插入新样本的条件:
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,则需要使用两个规则,但您可以使用扩展:
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 ) }
endhttps://stackoverflow.com/questions/21605977
复制相似问题