Если у меня есть 10 строк в моей таблице решений, из которых я хочу выполнить только строку 6 и строку 4, не отключая оставшуюся строку. Как мы можем достичь этой функциональности? Однако в правиле действия мы можем установить приоритет, но мы не можем установить приоритет для каждой строки в таблице решений. Я пытался найти любую опцию, доступную в свойствах таблицы решений, но ее нет. Пожалуйста, помогите с этим.
приоритет в строках таблицы решений в IBM ODM
Ответы (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 таблицы решений, чтобы какое-то правило в первой таблице могло применяться до другого правила во второй таблице решений.