2016-06-25 10 views
1

У меня есть требование для обработки нескольких правил и выбора значения в соответствии с критериями соответствия.Какой механизм правил использовать?

Правило может быть

случай-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 | 
---------------------------------------- 

Если два противоречивых RUL es с одинаковым количеством критериев соответствия, затем найдите приоритет и выберите правило с наивысшим приоритетом. В этом случае (Правило со значением «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).

Я знаю, что это выглядит очень специфично, но я пытался использовать Google, но не смог найти ни одного механизма правил, который можно использовать в этом случае. Пожалуйста, помогите мне с некоторыми указатели и идеи для начала.

+1

Я не думаю, что любая поисковая система найдет «лучшее решение для проблемы пользователя». OTOH, почему вы думаете, что какой-то механизм правил не сможет решить эту простую проблему? Поэтому ответ на ваш вопрос: любой механизм правил будет делать. – laune

+0

Согласен с laune. Любой механизм правил должен быть в порядке. – Alex

ответ

0

Как и другие, указывалось, что в вашем случае должен действовать любой механизм правил. Поскольку на первый взгляд это выглядит очень легким, вы можете использовать Rulette, чтобы сделать это почти тривиально (раскрытие - я автор). Вы можете определить свои правила, а затем использовать getAllRules API, чтобы получить список применимых правил, по которым вы могли бы выполнить min/max по мере необходимости.

Мне любопытно, однако, понять, почему вы хотите определить конфликтующие правила, а затем применить к ним «приоритет»?