我这里有一个设计问题。我正在尝试为规则表建模。

我的示例规则如下:
给定数据行,我将遍历所有已配置的规则,如果任何列名与值匹配,则将命中规则。

例如

java - 建模业务规则数据-LMLPHP

现在在传入数据行中,如果该列国家/地区具有美国作为值,则我将遵守规则1003。

以这种方式设计规则表有助于我轻松地将任何列(属于数据行的一部分)添加到规则中。我的用户可以查看规则并自己进行管理。

现在这里的问题是优先级列。每当需要添加优先级介于两者之间的新规则时,我都需要在此之后更新所有行的优先级。
例如,在上面的示例中,我需要在优先级3处添加一些内容:
下面,我需要再更新两个规则。
java - 建模业务规则数据-LMLPHP

随着表变大,保持更新所有行将变得不可管理。这使我感到必须为此提供更好的解决方案。

我需要优先级列,以定义需要选择规则的顺序。

有人可以建议这个用例有什么更好的规则模型吗?

PS:由于我的执行环境,我不能使用流口水或任何规则引擎。

谢谢

最佳答案

我有一些建议可以减少需要进行更多更新的问题

优先级列中的值必须连续吗?否则,请设置初始规则集,并在其间留出足够大的空隙(例如100、200、300 ...),这不会影响顺序,并且可以在空格中添加任何新规则。

排除规则的任何子集都可以共享相同的优先级值,例如只有一项“国家/地区”规则可以匹配,因此无需依次评估(当然,您应该在此处考虑效果,如果90%的国家/地区规则与“美国”匹配,那么评估这一条仍然有意义第一)。

当前设计还有其他一些局限性,这些局限性不仅仅在于更新问题。例如如果将来您想将英国股票与美国股票区别对待,您将如何制定这些规则?

关于java - 建模业务规则数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35618044/

10-11 22:35
查看更多