Выборочные правила стрельбы из файла слюни - PullRequest
2 голосов
/ 11 августа 2011

Можно ли запускать правила в файле drool по именам правил?Мое требование, мой файл правил будет содержать список всех правил (S).Но у меня есть отдельная конфигурация, которая содержит список имен правил, которые должны быть запущены (A).Примечание (A) является подмножеством (S).Во время выполнения я хочу запускать только правила с именами (A) из (S).

Спасибо.

1 Ответ

7 голосов
/ 15 августа 2011

Вы можете использовать AgendaFilters для этого.

Вот как вы его установите:

StatelessSession session = ruleBase.newStatelessSesssion();

session.setAgendaFilter( new RuleNameMatches("<regexp to your rule name here>") );

Это позволит использовать только одно правило с указанным именем.

В вашем случае вам нужно написать собственный AgendaFilter:

public class CustomAgendaFilter extends AgendaFilter{

  private final Set<String> ruleNamesThatAreAllowedToFire;

  public CustomAgendaFilter(Set<String> ruleNamesThatAreAllowedToFire){
    this.ruleNamesThatAreAllowedToFire=ruleNamesThatAreAllowedToFire;
  }

  boolean accept(Activation activation){
    return ruleNamesThatAreAllowedToFire.contains(activation.getRule().getName());
  }
}
...