2016-11-09 9 views
0

ルールファイルのグローバル変数を 'Employee'タイプと宣言しました。私はグローバルな従業員オブジェクトのいくつかのフィールドを 'Person'オブジェクトのフィールドと比較できるルールを作成する必要があります。どうやってやるの ?ドループルールの一部でグローバル変数を使用する

global Employee emp; 

rule "abc" 
when 
$person : Person(joinDate == null , emp.joinDate != null , notify == false) 
then 
$person.setNotify(Person.NOTIFY); 
update($person); 
end 

rule "cde" 
when 
$person : Person(joinDate != null , ! joinDate.equals(emp.joinDate) , notify == false) 
then 
$person.setNotify(Person.NOTIFY); 
update($person); 
end 

がどのように私はグローバル変数として注入しています別のBeanのプロパティを使用して1、Beanのプロパティを比較することができます動作しません、私が試してみましたルールに従いますか?

+0

問題を再現するための完全なコードを提供してください:どのようにセッションを作成し、グローバルを定義し、何を挿入するのですか?そして正しいコードを投稿してください - グローバルempにはモードはありません。 – laune

+0

'emp'は従業員タイプです。グローバル変数のフィールドを、私が問題にしている別のBeanのフィールドと比較できるかどうかを知りたいだけでしたか? – rishi

+0

コンパイルできればうまくいくはずですが、私の答えを見てください。それがそうであるように、私はあなたが私に見えるものより多くを伝えることはできません。 – laune

答えて

1

ほとんどの場合、グローバルempの値を変更し、ルールが発生すると予想します(これは、いいえではありません)。

グローバルは条件で使用できますが、ルールエンジンはグローバルが変更されたことを知る方法がないため、安定していると見なされます。

ルールをデータの変更に対応させる場合は、ファクトを挿入します。だから私たちはそれらを持っている。

関連する問題