我可以强制 Drools 规则匹配所有 objects 类型而不是只匹配一个类型吗
Can I force a Drools rule to match all objects of a type instead of just one
我有一个业务规则需要在 Drools 中建模。规则规定我有一组正在旅行的火车。如果每列火车都符合以下条件,我需要触发规则:
- driver 的名字是泰德
- 或者 driver 的名字是乔,他要去苏格兰的一个车站
- 或者 driver 的名字是 Andy,他将从伦敦前往伯明翰
如果有任何火车符合上述条件,我可以写一个匹配的规则,例如
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"))
我有一个业务规则需要在 Drools 中建模。规则规定我有一组正在旅行的火车。如果每列火车都符合以下条件,我需要触发规则:
- driver 的名字是泰德
- 或者 driver 的名字是乔,他要去苏格兰的一个车站
- 或者 driver 的名字是 Andy,他将从伦敦前往伯明翰
如果有任何火车符合上述条件,我可以写一个匹配的规则,例如
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"))