Слюни - Повторное использование правил через setFocus () - или другие стратегии? - PullRequest
0 голосов
/ 18 февраля 2020

По сути, я нахожусь в ситуации, когда у меня есть десятки групп повестки дня, в основном выполняемые отдельно друг от друга и использующие разные подмножества одних и тех же правил.

Моя текущая настройка требует много копий / вставка правил:

agenda-group "agenda_group_1"
rule "Rule_A"
rule "Rule_B"
rule "Rule_C"
rule "Rule_D"

agenda-group "agenda_group_2"
rule "Rule_A"
rule "Rule_C"
rule "Rule_D"
rule "Rule_E"

... и т. Д.

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

У меня была идея повторно использовать реализации правил, следуя шаблону «1 правило для повестки дня»:

agenda-group "agenda_group_1"
rule "agenda_group_1"
when
        x
then
        WorkingMemory workingMemory = drools.getWorkingMemory();
        workingMemory.setFocus("Rule_A");
        workingMemory.setFocus("Rule_B");
        workingMemory.setFocus("Rule_C");
        workingMemory.setFocus("Rule_D");
end

agenda-group "agenda_group_2"
rule "agenda_group_2"
when
        x
then
        WorkingMemory workingMemory = drools.getWorkingMemory();
        workingMemory.setFocus("Rule_A");
        workingMemory.setFocus("Rule_C");
        workingMemory.setFocus("Rule_D");
        workingMemory.setFocus("Rule_E");
end

... и реализовать правила в своих файлах групп повторяющихся повесток дня.

Мне было интересно, подходит ли этот подход для моих нужд? ? У меня много правил (и много повторного использования), и производительность является важным фактором для меня.

Я не удивлюсь, если есть лучший способ выполнить sh повторное использование правила, так что если кто-то может указать мне на соответствующую документацию или примеры, которые были бы хорошими.

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

Спасибо

...