我需要处理多个规则并根据匹配条件选择一个值。
规则可以是
情况下-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 |
----------------------------------------
在这种情况下,如果找到多个具有相同匹配条件数且具有相同优先级的规则,则选择具有最高值的规则(即规则4,其值为400)。
我知道它看起来非常具体,但我试图谷歌,但无法遇到可以在这种情况下使用的任何规则引擎。 请先帮我一些指示和想法。
答案 0 :(得分:0)
正如其他人所指出的那样,任何规则引擎都应该在你的情况下做。由于这看起来乍一看是一个非常轻量级的用例,你可以使用Rulette来做到这一点(Disclosure - 我是作者)。您可以定义规则,然后使用 getAllRules API获取可根据需要执行min / max的适用规则列表。
我很好奇,理解你为什么要定义冲突的规则,然后对它们应用“优先级”?