在部分流氓统治时使用全局变量

时间:2016-11-09 09:26:09

标签: java drools rule-engine

我在规则文件中声明了全局变量,该类型是'员工'。我必须编写一条规则,我可以将全局员工对象的某些字段与“人物”字段进行比较。宾语。我怎样才能做到这一点 ?按照规则,我尝试了哪些不起作用:

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的属性进行比较?

1 个答案:

答案 0 :(得分:2)

您最有可能更改全局emp的值并期望触发规则,这是禁忌。

Globals可以在条件中使用,但假设它们保持稳定,因为规则引擎无法知道全局已被更改。

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