приоритет в строках таблицы решений в IBM ODM

Если у меня есть 10 строк в моей таблице решений, из которых я хочу выполнить только строку 6 и строку 4, не отключая оставшуюся строку. Как мы можем достичь этой функциональности? Однако в правиле действия мы можем установить приоритет, но мы не можем установить приоритет для каждой строки в таблице решений. Я пытался найти любую опцию, доступную в свойствах таблицы решений, но ее нет. Пожалуйста, помогите с этим.


person Gouse Shaik    schedule 14.05.2020    source источник


Ответы (1)


Возможно, вам потребуется реализовать подобную логику: это так называемая цепочка правил. правило (строка) вносит изменения, а затем активируется другое правило (строка) и так далее.

Для этого требуется режим RETE. Ознакомьтесь с документацией ODM для RETE и не забудьте установить метод SET NEXT для обновления RETE в настройках спецификации.
В этом примере показан механизм цепочки с различными параметрами на основе начальное значение NEXT.

|  NEXT ?   | CONDITION 2| ACTIVE ? | ACTION 1  | SET NEXT  |
|    aa1    |    bb1     |  true    | do this1  |    aa2    |
|    aa2    |    bb2     |  true    | do this2  |    aa3    |
|    aa3    |    bb3     |  true    | do this3  |    aa7    |
|    aa4    |    bb4     |  false   | do this4  |    aa6    |
|    aa5    |    bb5     |  true    | do this5  |    aa1    |
|    aa6    |    bb6     |  false   | do this6  |    xxx    |
|    aa7    |    bb7     |  true    | do this7  |    aa8    |
|    aa8    |    bb8     |  true    | do this8  |    aa9    |
|    aa9    |    bb9     |  true    | do this9  |    aa10   |
|    aa10   |    bb10    |  true    | do this10 |    xxx    |

Но это решение последней меры!

Я не знаю вашу модель, условия и т. д. ... на ровном месте, вы можете захотеть переработать свои условия, потому что выбор правила в DT с приоритетом как в обычных случаях не нужен, то есть 99,9% времени!

Однако, если все столбцы условий DT являются исключительными как раздел, у вас может быть только одно правило (строка) среди 10 строк, которое одновременно соответствует предоставленным данным. Тогда нет необходимости заказывать выполнение правила.

Но это не всегда так, иногда некоторые правила (строки) в DT могут совпадать, тогда несколько строк могут выполняться для одних и тех же данных, потому что некоторые условия могут перекрываться.

Например: давайте рассмотрим это DT с два столбца условий и две строки (правила) и один столбец действий (нет вербализации, только логика)

|  <= age >=  | Date after  |  action  |
|   18 ,   21 | 07-MAY-2020 | do this  |
|   16 ,   20 | 12-MAY-2020 | do that  |

В этом случае условие правила перекрывается, и для данных с возрастом = 19 и датой = 12-JUNE-2020 эти два правила (строки) будут совпадать, и будут выполняться действия do this и do that.

Если 10 правил (строк) вашего DT совпадают с предоставленными данными во время выполнения, условия недостаточно исключительны, и вам может потребоваться изменить/переработать структуру условий DT: например, добавить новые столбцы условий, чтобы различать правила ( ряды). Или исправьте перекрывающиеся условия

Возьмем предыдущий пример и добавим новый столбец условий различения: например, ПОЛ.

|  <= age >=  | Date after  | GENDER |  action  |
|   18 ,   21 | 07-MAY-2020 |   M    | do this  | 
|   16 ,   20 | 12-MAY-2020 |   F    | do that  | 

В этом случае новый столбец позволит иметь одновременно только одно правило. Или переработать начальные условия

|  <= age >=  | Date after  |  action  |
|   18 ,   21 | 07-MAY-2020 | do this  |
|   22 ,   24 | 12-MAY-2020 | do that  |

Теперь, хотя второе условие перекрывается, для данных с возрастом = 19 и датой = 12-июня-2020 будет соответствовать только первое правило (строка), и это будет выполнено.

Меня весьма озадачивает тот факт, что вы хотите расставить приоритеты. Приоритеты могут помочь в некоторых специфических случаях (опять же), но это всегда проблема, если они используются повсеместно (например, более 5 приоритетов в правилах), и это становится кошмаром для поддержания, потому что приоритеты никогда не объяснят, почему должно применяться правило. перед другим. Вместо этого рекомендуется использовать рабочий процесс для группировки правил в RuleTask с потоком правил для последовательных задач, тогда как имя RuleTask передает семантику группировки/разделения. например Инициализация данных, проверка данных, проверка данных, преобразование данных и т. д.

Всякий раз, когда вам нужно упорядочить правила, используйте задачи правил в потоке правил! Затем, если вам нужно это сделать, вы можете разделить свое DT на 2 таблицы решений, чтобы какое-то правило в первой таблице могло применяться до другого правила во второй таблице решений.

person fr9ncisco    schedule 23.06.2020