我可以强制Drools规则匹配所有类型的对象而不只是一个

时间:2015-04-24 03:04:25

标签: drools

我有一个业务规则,我需要在Drools中建模。该规则规定我有一套列车开往旅途中。如果每列火车都符合以下标准,我需要启动规则:

  • 司机的名字是Ted
  • 或者司机的名字是Joe,他要去苏格兰的一个车站
  • 或者司机的名字是安迪,他将从伦敦前往伯明翰

如果任何列车符合上述标准,我可以编写匹配的规则,例如

Train(driver == "Ted" || (driver == "Joe" && destCountry == "Scotland") || (driver == "Andy" && origin == "London" && dest == "Birmingham"))

但是,我可以编写一条规则,确保知识库中的所有列车都符合标准吗?

1 个答案:

答案 0 :(得分:2)

非常简单:使用实现否定存在量词的条件元素not。当然,你必须确定没有否定的条件,即

not Train( ! (driver == "Ted") 
         && ! (driver == "Joe" && destCountry == "Scotland") 
         && ! (driver == "Andy" && origin == "London" && dest == "Birmingham"))