我开始使用 NRules。以下是我正在构建的应用程序的一些关键要求的概述:
一些规则确定是否应应用其他规则组。例如(在伪代码中):“当类型
vehicle
是汽车时,应用适用于汽车的所有规则”。某些规则将确定应排除特定规则。
可能有很多种
vehicle
;理想情况下,我不想在启动时为所有车辆加载所有规则。
这意味着应该将规则组织成在执行期间以某种方式启用/禁用的模块。我想到了一些解决方案:
标记规则并使用议程过滤器根据用于启用/禁用将规则添加到议程的服务来过滤规则。我已经尝试过了,但它并没有像我希望的那样工作,因为引擎没有接收到对服务的更改。
添加确定是否应应用规则的规则,并在每个规则的匹配条件中使用它。这导致每个规则中有很多重复的代码,我不太喜欢。
在规则执行期间加载新的规则组。我不知道如何做到这一点,如果它被推荐或应该预期工作。
有没有正确的方法来做我想做的事情?