让我们假设我在一家大型制造公司工作。我正在监控公司销售数据的质量。各区域经理各自对其所在地区的销售有自己的要求。 8位区域经理中的每一位都向我提供了一份DRL文件,该文件仅适用于他自己所在地区的销售,他们会经常调整DRL。
让我们假设我正在使用Sale对象,每个对象都包含一个region属性。我不得将规则应用于错误地区的销售。如果我不小心将太平洋西北地区的规则应用于俄亥俄河谷的销售,那么我将被解雇!
我可以想到三种方法:
有更好的方法吗?是否有某种方法可以为DRL中的所有规则添加另一个LHS条件(region =“...”)?或者其他一些方法我可以执行此策略而不执行:
答案 0 :(得分:2)
#1已经出局,因为没有万无一失的方法可以确定在所有规则中包含区域约束。 (当然,这让你想知道:那些区域人员是否足够好,能够正确地编写他们的规则,超出区域约束?怎么做?这些规则中的一个会计算他们的奖金吗?)
#2安然无恙。它需要一些额外的处理,但这可以忽略不计。
#3使得Java代码库不必要地复杂化。从本质上讲,匹配一个类的不同子类,所有其他条件相同,只不过是#1的加糖版本。唯一的好处是检查更容易,例如,你可以在每个DRL上运行一个简单的grep。
如果在单个会话中全部运行比#2所需要的更方便,那么我将采用#4。为此,请以编程方式将DRL文件与一些粘合剂":组合在一起package what.ever;
import this.and.that.*;
agenda-group "PacificNorthwest"
// DRL from Pacific-Northwest
agenda-group "OhioRiverValley"
// DRL from Ohio River Valley
要运行,请将应用驱动程序中的焦点设置为这八个议程组中的每一个,然后插入相应的事实,确保在完成一个区域后清除WM。