0

ビジネスレベルの検証にdroolsを使用しています。 作業メモリに2つのオブジェクトをロードしてそれらの値を比較することは可能ですか?Drools:2つの異なるオブジェクトの属性を比較する方法

Object1{ 
String name; 
} 

Object2{ 
String sname; 
} 

私はDRLファイルでSNAME(Object2に)と名前(オブジェクト1)を比較することができます: は私が2つのオブジェクトを考えてみましょうか?

Object1(name)==Object(name) 

私はDRLファイルに次の行を追加しようとしましたが、それはまた、作業メモリにこれらのオブジェクトを挿入するために私を助けてエラー「予期しないトークン名」

を与えます。私は、下記の使用KIEセッションがオブジェクト1を挿入することができます今

KieContainer container=KieServices.Factory.get().getKieClasspathContainer(); 

KieSession kieSession = container.newKieSession("SampleSession"); 

ステップ取得していますし、Object2には、同時にinsertメソッドを使用していますか?

オブジェクトを挿入する方法
kieSession.insert(object); 

答えて

0

その属性を比較する方法
Object1 o1 = ...; 
Object2 o2 = ...; 
kieSession.insert(o1); 
kieSession.insert(o2); 

rule namecomp 
when 
    Object1($n1: name) 
    Object2(sname == $n1) 
then 
    System.out.println("Names are equal"); 
end 

これらは基本的な質問です。 Droolsのドキュメントを必ず読んでください。

+0

ありがとうございました。 drlファイルに他のルールを追加します。最初の2つの事実についてのみ、上記の規則の発射を制限する方法はありますか?私は4つの事実をセッションに挿入するつもりで、上記のルールは最初の2つの事実についてのみ発動されるべきです –

+0

"最初"と "2番目"は挿入順で決まりますか?これらの序数の属性を維持し、それに基づいていくつかの制約を作成する必要があります。しかし、それは奇妙な要件です。 - おそらく、別の質問を書いて、すべての背景を提供します。一度に4つ、なぜ#1と#2だけが一致するのかなど – laune

関連する問題