建模业务规则数据

时间:2016-02-25 04:01:31

标签: java database-design data-modeling modeling

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

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

e.g

enter image description here

现在在传入数据行中,如果列国家/地区具有美国作为值,则会达到规则1003。

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

现在问题在于优先级列。每当需要添加具有优先级的新规则时,我需要在此之后更新所有行的优先级。 例如,在上面的示例中,我需要添加优先级为3的内容: 下面我需要更新两个规则。 enter image description here

随着表变大,继续更新所有行将无法管理。这让我觉得必须有一个更好的解决方案。

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

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

PS由于我的执行环境,我无法使用drools或任何规则引擎。

由于

1 个答案:

答案 0 :(得分:1)

我有一些建议可以减少必要的更新更新的问题

优先级列中的值必须是连续的吗?如果没有,设置初始规则集,其中包含大量间隙的值(例如100,200,300 ......),这不会影响排序,并且可以在空格中添加任何新规则。

独占的任何子规则集可以共享相同的优先级值,例如只有一个国家'规则将永远匹配,因此无需依次评估它们(当然,如果90%的国家/地区规则与“美国”相匹配,那么您应该考虑此处的表现,那么首先评估此规则仍然有意义)

当前设计还存在一些超出更新问题的其他限制。例如如果您将来希望以不同于美国股权的方式对待英国股权,您将如何制定这些规则?