假设我在一家大型制造公司工作。我正在监控公司销售数据的质量。各个区域经理对其所在区域的销售都有自己的要求。8 个区域经理中的每一个都向我提供了一个 DRL 文件,该文件仅适用于他自己区域的销售,他们会经常对 DRL 进行调整。
让我们假设我正在使用一个销售对象,每个对象都包含一个区域属性。我不能对来自错误地区的销售应用规则。如果我不小心将太平洋西北地区的规则应用于俄亥俄河谷的销售,那么我将被解雇!
我可以想到三种方法来做到这一点:
- 信任(并验证)每个区域经理在每次提交新规则时在其规则的 LHS 中包含一个 region = "..." 术语。将所有 DRL 文件加载到 Kie 会话中并运行所有 Sales。
- 将我的 List<Sale> 划分为 8 个特定于区域的列表,并针对相应的 DRL 文件运行每个列表。
- 将销售抽象化并实现 PacificNorthwestSale、OhioRiverValleySale 等,其理论是给定区域的 DRL 文件可能不会尝试引用来自另一个区域的特定于区域的销售。
有没有更好的办法?有什么方法可以向 DRL 中的所有规则添加另一个 LHS 条件(区域 =“...”)?或者我可以通过其他方式强制执行此策略而无需执行以下操作:
- 多个规则执行
- 还是手动验证所有规则都指定了适当的区域?