欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

规则引擎Drools使用讲解 第六篇 Drools 指定规则运行

程序员文章站 2022-05-28 11:18:17
...

我们前面有说道drools指定规则运行,具体使用是在kieSession.fireAllRules()时,通过指定方法来实现运行会指定的规则,下面具体开始讲解如何指定规则。

int fireAllRules(org.kie.api.runtime.rule.AgendaFilter agendaFilter);
public interface AgendaFilter {
    boolean accept(org.kie.api.runtime.rule.Match match);
}

//运行规则名称以指定字符串结束的规则

kieSession.fireAllRules(new RuleNameEndsWithAgendaFilter(""));

//运行规则名称与指定字符串相等的规则

kieSession.fireAllRules(new RuleNameEqualsAgendaFilter(""));

//运行规则名称符合正则表达式的规则

kieSession.fireAllRules(new RuleNameMatchesAgendaFilter(""));

//运行规则名称以指定字符串开头的规则

kieSession.fireAllRules(new RuleNameStartsWithAgendaFilter(""));

 

我们也可以自定义过滤规则,只需要实现AgendaFilter 接口


public class MyRuleFilter implements AgendaFilter {

    private List<String> names;

    public MyRuleFilter(List<String> names) {
        this.names = names;
    }

    @Override
    public boolean accept(Match match) {
        return names.contains(match.getRule().getName());
    }
}

 使用

kieSession.fireAllRules(new MyRuleFilter(null));

运行规则名称包括指定字符串的规则

public RuleNameMatchesAgendaFilter(java.lang.String regexp) { /* compiled code */ }
int count = kieSession.fireAllRules(new RuleNameMatchesAgendaFilter(".*" + fileType + ".*"));
相关标签: 规则引擎 drools