2016-08-04 4 views
0

Iは、単純なルールファイルを有するDroolsの6 - StatelessKieSession - イベントリスナー

rule 'rule name 1' 
    when 
    $i: Test(param1 < 20) 
    then 
    $i.setStatus('Param1 has invalid value'); 
end 

rule 'rule name 2' 
     when 
     $i: Test(param1 > 20) 
     then 
     $i.setStatus('Param2 has invalid value'); 
    end 

rule 'rule name 3' 
     when 
     $i: Test(param1 == 100) 
     then 
     $i.setStatus('Param3 has invalid value'); 
    end 

Iが上記の規則にデータ・オブジェクトを実行するStatelessKieSessionを使用します。

Qn 1:すべてのルールを実行した後でメソッド/リスナーをトリガーする最も簡単な方法は何ですか?または、どのようにすべてのルールが実行されたのですか?

Qn 2:StatelessKieSessionオブジェクトにリスナーを追加できる場合、オブジェクトをリスナーに渡す方法はありますか?

+0

*「すべてのルール」は、「DRLで定義されたすべてのルールが少なくとも1つ実行された」または「実行された可能性があるすべてのルールが実際に実行された」ことを意味しますか? –

+0

@Esteban、私は「実行された可能性があるすべてのルールは実際に実行された」 – Jay

答えて

1

KieBaseを調べると、すべてのルール名を取得できます。詳細については、APIのマニュアルを参照してください。

APIに従ってリスナーを設定できます。ルールが起動したときに呼び出されるメソッドは、Mapやそれに類するものに登録することができます。

リスナーは特定のインタフェースを持つオブジェクトであるため、任意のコンストラクタや任意のデータをそのリスナーに渡すための追加メソッドを持つことができます。

関連する問題