AgendaFilter 接口
int fireAllRules(AgendaFilter agendaFilter);
在提交规则执行,如果不传参数,那么默认是将内存中的规则全部执行一遍。此外,也允许我们传递 AgendaFilter 参数。该参数是一个过滤器接口。允许使用者自行实现,Drools 也内置了几种过滤器。
/**
* Fire all Matches on the Agenda
*
* @param agendaFilter
* filters the Matches that may fire
* @return
* returns the number of rules fired
*/
int fireAllRules(AgendaFilter agendaFilter);
AgendaFilter 接口定义:
public interface AgendaFilter {
/**
* Determine if a given match should be fired.
*
* @param match
* The match that is requested to be fired
* @return
* boolean value of "true" accepts the match for firing.
*/
boolean accept(Match match);
}
RuleNameEndsWithAgendaFilter
指定以XXX结尾的规则,根据指定的规则名称后缀过滤器激活。RuleNameEndsWithAgendaFilter 实现了 AgendaFilter 接口, accept 函数获取了规则的名称并且进行后缀比较。
public boolean accept(Match activation) {
if (activation.getRule().getName().endsWith(this