2016-11-09 70 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的屬性與另一個Bean上我作爲注射全局變量的財產?

+0

請提供完整的代碼來重現問題:您如何創建會話,定義全局,插入什麼...並請發佈正確的代碼 - 全局emp沒有模式,這是不可能的。 – laune

+0

'emp'是僱員類型。我只想知道全局變量的字段是否可以與我指定的另一個Bean字段進行比較? – rishi

+0

如果你可以編譯它,它應該可以工作 - 但看到我的答案。事實上,我無法告訴你我看到的更多。 – laune

回答

1

最有可能你改變全球emp的值,並期望規則觸發,這是一個禁忌。

全局變量可用於條件中,但由於規則引擎無法知道全局變化,所以它們被假定爲保持穩定。

如果您希望自己的規則對更改數據做出反應,請插入事實。這就是我們擁有它們的原因。