从流涎文件触发选择性规则



是否可以根据规则名称在流注文件中触发规则?我的要求是,我的规则文件将包含所有规则(S)的列表。但我有一个单独的配置,其中包含要触发的规则名称列表(a)。注意(a)是(S)的子集。在运行时,我想只从(S)中触发名称(a)的规则。

谢谢。

您可以使用议程过滤器。

设置方法如下:

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

这将只允许触发一个指定名称的规则。

在您的情况下,您将需要编写自己的议程过滤器:

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());
  }
}

最新更新