我这里有一个设计问题。我正在尝试对规则表进行建模。
我的示例规则如下: 给定一个数据行,我将检查配置的所有规则,如果任何列名与值规则匹配,则将命中。
例如
现在在传入数据行中,如果国家/地区列将美国作为值,我将遇到规则 1003。
以这种方式设计我的规则表可以帮助我轻松地将任何列(数据行的一部分)添加到规则中。我的用户可以查看规则并自行管理。
现在这里的问题是优先级列。每当需要添加具有优先级的新规则时,我需要更新之后所有行的优先级。 例如,在上面的示例中,我需要在优先级 3 处添加一些内容: 下面我需要更新两条规则。
随着表变大,将无法管理不断更新所有行。这让我觉得必须有更好的解决方案。
我需要优先级列,因为需要定义需要选择规则的顺序。
有人可以建议对于这个用例来说什么是更好的规则模型吗?
PS 由于我的执行环境,我无法使用 drools 或任何规则引擎。
谢谢
最佳答案
我有一些建议可以减少进行更多必要更新的问题
优先级列中的值必须是连续的吗?如果没有,请使用具有大量间隙的值(例如 100、200、300...)设置初始规则集,这不会影响排序,并且可以在空格中添加任何新规则。
任何排他的规则子集都可以共享相同的优先级值,例如只有一项“国家/地区”规则会匹配,因此无需依次评估它们(当然,您应该在这里考虑性能,如果 90% 的国家/地区规则与“美国”匹配,那么评估这一规则仍然有意义首先)。
当前设计除了更新问题之外还存在一些其他限制。例如如果将来您想以不同于美国股票的方式对待英国股票,您将如何制定这些规则?
关于java - 业务规则数据建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35618044/