Drools存在与“正常”模式

时间:2015-09-05 18:30:28

标签: drools

我很难理解为什么exists关键字是必要的。 我有以下规则: 1)

rule "normal"
  when
    Bus( seats > 20 )
  then
    System.out.println("There is a 20+ bus);
end

2)

rule "with exists"
  when
    exists Bus( seats > 20 )
  then
    System.out.println("There is a 20+ bus existing...);
end

第一条规则的LHS与第二条规则有何不同?

谢谢!

1 个答案:

答案 0 :(得分:3)

exists的{​​{3}}说明以下内容

  

CE存在是一阶逻辑的存在量词和检查   因为工作记忆中存在某种东西。考虑到   "存在"作为意义"至少有一个......"。它不同于   只是拥有自己的模式,更像是说" for   每一个......"。如果您使用存在模式,则该规则将仅   无论工作中有多少数据,最多只能激活一次   与存在模式内部条件匹配的内存。以来   只有存在才重要,不会有任何约束力。

因此,对于您的示例,第一条规则是针对每个拥有超过20个座位的公交车而被解雇,但是第二条规则只会被触发一次,即使座位数超过20的公交车数量也是如此。