2017-02-01 3 views
0

ПРОБЛЕМА: У меня есть три таблицы правил в таблице принятия решений (таблицы), правила первых двух таблиц правил определяют, какое правило должно быть уволено из третьей таблицы правил. В таблице первых правил в соответствии с некоторыми условиями я обновил этот факт, и этот факт используется для запуска правила из второй таблицы правил. И в столбце ACTION второй таблицы правил я обновил этот факт, и я хочу, чтобы правила правил в 3-й таблице правил были основаны на этом обновленном факте, но из-за обновленного факта правило из первой таблицы снова срабатывает, а затем второе и цикл продолжается ,Как запускать зависимые правила в drools xls Таблица решений

Я не могу найти способ добавить RuleFlow-Group в таблицу правил всякий раз, когда добавляю RuleFlow-Group, правила прекращают стрельбу по любому факту.

ЧТО Я ПРОБОВАЛ: Я добавил No-Loop к истине, так что никаких правил не обстреливают из тех же таблиц правил для обновленного факта.

Я попытался добавить атрибут LOCK-ON-ACTIVE, правила из правила. Таблица 1 работает нормально, но никакие другие правила не срабатывают. Я думаю, что после запуска правила из таблицы правил 1 он блокирует все правило пакета правил вместо этого, я добавляю «lock-on-active» в таблице правил, а не в Rule Set.

Spread Sheet, иллюстрирующий постановку задачи. enter image description here

ответ

0

Это очень абстрактный набор правил, и я не чувствую, что это стоит обсудить в деталях. Обновление факта означает, что оно переоценивается везде, где оно происходит, что соответствует всем правилам. Чтобы избежать повторной оценки, используйте ограничения, которые запрещают правилу, если результат RHS уже установлен в этом факте.

rule "table_1_1" 
when 
    $input: Input(a==1, b!=1) 
then 
    modify($input){ setB(1); } 
end 

rule "table_2_1" 
when 
    $input: Input(b==1, c!=1) 
then 
    modify($input){ setC(1); } 
end 

Третья таблица не использует модификацию, поэтому она не вызывает цикл.

+0

Спасибо за ответ. Добавление условия может решить мою проблему, но это небольшой набор данных, которые я создал для определения моей проблемы, но в моем приложении есть много таблиц правил, и все содержит множество правил. Добавление условий приведет к замедлению производительности. Я хочу знать, есть ли другой вариант сделать это. И да, третья таблица не вызовет цикл. – ishu

+0

Знаете ли вы, как добавить RuleFlow-Group или Agenda-Group в таблицу решений с расширением листа – ishu