规则引擎Drools简单使用

规则引擎Drools简单使用

Drools依赖引入


    org.kie
    kie-api
    6.5.0.Final


    org.drools
    drools-compiler
    6.5.0.Final
    runtime


    org.drools
    drools-core
    6.5.0.Final

新增xml配置文件

kbase定义

name:kbase名称
packages:规则文件所在包路径,多个使用逗号分隔

ksession定义

name:ksession名称



    
        
    

新增drl文件

package:标识每个drl文件,无实际含义
DeliverDocumentRule:规则文件

package rules
import xxx.DeliverDocumentRule
import org.apache.commons.lang.StringUtils

rule "rule_catalogueMatch"
    when
        $deliverDocumentRule : DeliverDocumentRule(!StringUtils.isEmpty(filePathRule) && filePath contains filePathRule)
    then
        System.out.println("文件路径【" + $deliverDocumentRule.getFilePath() + "】匹配规则【"
            + $deliverDocumentRule.getFilePathRule() + "】成功");
end

获取KieContainer

private KieContainer getKieContainer() {
    KieServices ks = KieServices.Factory.get();
    return ks.getKieClasspathContainer(this.getClass().getClassLoader());
}

获取KieSession

private KieSession getKieSession(KieContainer kContainer) {
    return kContainer.newKieSession(DOCUMENT_MATCH_SESSION);
}

规则匹配

documentRule:匹配规则
ruleName:匹配的规则名称
matchNum:匹配的成功的数量

// 插入
kSession.insert(documentRule);
// 执行规则
int matchNum = kSession.fireAllRules(new RuleNameStartsWithAgendaFilter(ruleName));

你可能感兴趣的:(Drools,java)