2016-08-08 5 views
0

Droolsではかなり新しく、RHSが終了したときにのみ変更/更新の事実をトリガできるかどうかを知りたいと思います。このサンプルのDrools 6.4複数の変更と名前付きの結果

ルック:このサンプルで

rule "test" 
    when 
     $o1 : MyObject(isNew == null) // isNew is a Boolean() 
     do[initNew] 
     $o2 : MySecondObject(name = "ABC") 
    then 
     ... //do stuff 
     modify($o1) { setNew(true) }; //set to true if we arrived here 
     modify($o2) { setName("DEF") }; 
    then[initNew] 
     ... //do stuff 
     modify($o1) { setNew(false) }; //init to false 
end 

が、私はそうでないtrueに設定したい、事実には$o2ありませんisNewfalseに設定したいと思います。 ....

アイデア

私はこのルールをテスト

do[initNew]が呼び出されたが、修正はとてもルールが即座に再生され発射されると then部分が呼び出されることはありませんか?

感謝:)

答えて

1

手続き型プログラミングのルアーがで導入されたが、その後、[] []やると。あなたが必要とするものは、2つのルールです:

rule "test Second true" 
when 
    $o1 : MyObject(isNew == null) // isNew is a Boolean() 
    $o2 : MySecondObject(name = "ABC") 
then 
    modify($o1) { setNew(true) }; 
    modify($o2) { setName("DEF") }; 
end 

rule "test Second missing" 
when 
    $o1 : MyObject(isNew == null) // isNew is a Boolean() 
    not MySecondObject(name = "ABC") 
then 
    modify($o1) { setNew(false) }; //init to false 
end 
+0

あなたは正しいです、私は常にそれぞれの異なる結果のためのルールを書くことを覚えておく必要があります。ありがとう – Yoplaboom

関連する問題