Как иметь правила слюни в каждой из групп повестки дня? - PullRequest
0 голосов
/ 02 декабря 2018

Я работаю с Drools в Eclipse, и у меня есть правило, которое должно срабатывать в каждой из определенных мной повесток дня (это очень важное правило).

Во-первых, я пытался не устанавливать повестку дня для этого правила, но оно было выполнено только в конце последней повестки дня.

Таким образом, единственное, что мне пришло в голову, было определение правила для каждой из повесток дня, то есть одно и то же правило повторяется во всех из них, что не является наиболее эффективным решением.

Это нормальная проблема?Есть ли лучшее решение?

Спасибо.

1 Ответ

0 голосов
/ 05 декабря 2018

Только что сделал быстрый тест, и он отлично сработал (Drools 7.14.Final) со следующей настройкой:

1) Правило без группы повестки дня
2) Правило с повесткой дня-group "Group1"
3) Еще одно правило с повесткой дня группы "Group2"

Я назвал правила следующим кодом:

    kSessionRules.getAgenda().getAgendaGroup("Group 1").setFocus();
    kSessionRules.fireAllRules();
    kSessionRules.update(tcHandle, tc); //tc is the object inserted in working memory, the FactHandle is the return value from the *insert* call
    kSessionRules.getAgenda().getAgendaGroup("Group 2").setFocus();
    kSessionRules.fireAllRules();

Конечный результат названных правилбыло:

Правило 2)
Правило 1) => конец первого вызова группы повестки дня
Правило 3)
Правило 1) снова

В этом примеремое правило 1) срабатывало оба раза, так что мне кажется, что вы ищете.Обратите внимание, что мне нужно использовать update в моем случае, потому что мое условие правила относится к свойству, которое не изменено другими правилами, поэтому без этого update правило не будетстрелять во второй раз.Также небольшая оговорка, похоже, что «универсальное» правило всегда будет срабатывать после текущей повестки дня группы.Это проблематично в вашем случае?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...