Запуск определенного правила по имени правила в слюнях без использования фильтров повестки дня

Я читаю файл правил и добавляю их в свою базу знаний, а затем хочу запустить определенное правило в этой базе знаний. Возможна ли эта задача в текущей версии drools?


person Hasitha    schedule 26.10.2015    source источник
comment
Как бы вы хотели активировать правило? - У вас должны быть объекты (факты), соответствующие шаблону(ам) в условии правила, и если они у вас есть, вы можете вставить их в рабочую память, и тогда правило сработает. Без таких объектов запуск правила не имеет смысла.   -  person laune    schedule 26.10.2015
comment
Представьте, что в моей базе знаний 10 правил. Внешний API отправит мне объект (например, человек) и имя правила (например, правило_3). Я должен вернуть результат после оценки полученного объекта человека только по правилу_3. Я не хочу навязывать человеку другие правила.   -  person Hasitha    schedule 26.10.2015


Ответы (1)


Если у вас есть база правил, в которой правила должны быть активизированы динамически в соответствии с каким-либо критерием, у вас есть несколько вариантов.

  1. Фильтр повестки дня. Вы говорите, что не хотите этого, но почему?
  2. Поместите альтернативные правила в группы повестки дня. Выберите группу повестки "group_3" перед вставкой факта вызовом
kieSession.getAgenda().getAgendaGroup( "group_3" ).setFocus();
  1. Напишите свои правила, чтобы включить факт «выбора», например.
rule rule_3
when
    Select( rule == "rule_3" )
    Person( ... )
then ... end

Факт Select может быть вставлен вместе с фактом данных, но должен быть отозван после срабатывания правила.

person laune    schedule 26.10.2015
comment
Спасибо @laune. Не могли бы вы объяснить, как моя задача может быть достигнута с помощью фильтров повестки дня? - person Hasitha; 28.10.2015