我在规则文件中声明了全局变量,该类型是'员工'。我必须编写一条规则,我可以将全局员工对象的某些字段与“人物”字段进行比较。宾语。我怎样才能做到这一点 ?按照规则,我尝试了哪些不起作用:
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 :(得分:2)
您最有可能更改全局emp
的值并期望触发规则,这是禁忌。
Globals可以在条件中使用,但假设它们保持稳定,因为规则引擎无法知道全局已被更改。
如果您希望规则对更改数据做出反应,请插入事实。这就是我们拥有它们的原因。