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

Can I force a Drools rule to match all objects of a type instead of just one

我有一个业务规则需要在 Drools 中建模。规则规定我有一组正在旅行的火车。如果每列火车都符合以下条件,我需要触发规则:

如果有任何火车符合上述条件,我可以写一个匹配的规则,例如

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

但是我可以编写一个规则来确保知识库中的所有火车都符合条件吗?

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

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