我这里有个设计问题。我在试着模拟一个规则表。
我的示例规则是这样的:给定一个数据行,我将遍历所有已配置的规则,如果任何列名与值规则匹配,则将命中值规则。
e.g
现在,在传入数据行中,如果列country有US作为值,我将按规则1003。
这样设计我的规则表可以帮助我轻松地将任何列(数据行的一部分)添加到规则中。我的用户可以查看规则并自己管理它。
现在这里的问题是优先级列。每当需要添加具有优先级的新规则时,我需要更新之后所有行的优先级。例如,在上面的示例中,我需要在优先级3处添加一些内容:下面我需要更新另外两个规则。
当表变得很大时,就无法继续更新所有行。这使我觉得必须有更好的解决办法。
我需要优先级列,就像需要定义规则需要选择的顺序一样。
有人能告诉我们用例更好的规则模型吗?
PS我不能使用drools或任何规则引擎,因为我的执行环境.
谢谢
发布于 2016-03-02 00:42:38
我有几个建议可以减少有更多必要更新的问题。
优先级列中的值必须是连续的吗?如果没有,则设置具有大量空白值的初始规则集(例如100、200、300.)这不会影响排序,任何新规则都可以添加到空格中。
任何排他性规则子集都可以共享相同的优先级值,例如,只有一条“国家”规则将永远匹配,因此没有必要依次对它们进行评估(当然,如果90%的国家规则与“US”匹配,那么首先评估这一项仍然是有意义的)。
目前的设计还有一些其他限制,超出了更新问题的范围。例如,如果将来你想把英国的股权和美国的股权区别对待,你会如何制定这些规则?
https://stackoverflow.com/questions/35618044
复制相似问题