2016-11-09 64 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的值,并期望规则触发,这是一个禁忌。

全局变量可用于条件中,但由于规则引擎无法知道全局变化,所以它们被假定为保持稳定。

如果您希望自己的规则对更改数据做出反应,请插入事实。这就是我们拥有它们的原因。