我需要处理多个规则,并根据匹配条件选择一个值。
规则可能是
案例1
----------------------------------------
| A | B | C | D | priority | value |
----------------------------------------
| a1 | b1 | | c1 | 1 | 250 |
----------------------------------------
| | b2 | c2 | d2 | 3 | 200 |
----------------------------------------
| a3 | b3 | c3 | d3 | 2 | 100 |
----------------------------------------根据上面定义的规则,我们首先寻找最大数量的匹配条件,并选择该规则的值(即值为“100”的规则)
案例2
----------------------------------------
| A | B | C | D | priority | value |
----------------------------------------
| a1 | b1 | | c1 | 1 | 100 |
----------------------------------------
| | b2 | c2 | d2 | 2 | 200 |
----------------------------------------如果发现两个冲突的规则具有相同数量的匹配标准,则查找优先级,并选择具有最高优先级的规则。在这种情况下(值为"100“的规则。
案例3
----------------------------------------
| A | B | C | D | priority | value |
----------------------------------------
| a1 | b1 | | c1 | 3 | 100 |
----------------------------------------
| | b2 | c2 | d2 | 2 | 200 |
----------------------------------------
| a3 | b3 | c3 | d3 | 1 | 300 |
----------------------------------------
| a4 | b4 | c4 | d4 | 1 | 400 |
----------------------------------------在这种情况下,如果找到多个具有相同匹配条件数和相同优先级的规则,则选择具有最高值的规则(即,值为400的Rule4 )。
我知道它看起来很具体,但我试图谷歌,但没有遇到任何规则引擎,可以在这种情况下使用。请帮我提供一些建议和想法。
发布于 2016-09-03 18:27:14
正如其他人所指出的那样,任何规则引擎都应该适用于您的情况。由于乍一看这似乎是一个非常轻量级的用例,你可以使用Rulette来做这件事(披露-我是作者)。您可以定义自己的规则,然后使用getAllRules应用编程接口获取适用的规则列表,您可以根据需要对这些规则执行最小/最大值操作。
然而,我很好奇,为什么你想要定义冲突的规则,然后对它们应用“优先级”?
https://stackoverflow.com/questions/38025704
复制相似问题