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

Drools搭建

程序员文章站 2022-05-28 12:36:17
...

搭建Drools

增加pom依赖文件

    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-core</artifactId>
      <version>7.7.0.Final</version>
    </dependency>
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-compiler</artifactId>
      <version>7.7.0.Final</version>
    </dependency>
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-templates</artifactId>
      <version>7.7.0.Final</version>
    </dependency>

创建model文件

package com.drools.chapter1.models;

public class Score {

    private Integer score;

    public Integer getScore() {
        return score;
    }

    public void setScore(Integer score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return "Score{" +
                "score=" + score +
                '}';
    }
}

创建kmodule.xml

在resources目录下创建META-NF文件夹,增加kmodule.xml文件。内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <kmodule xmlns="http://www.drools.org/xsd/kmodule">
    <kbase name="rules">
        <ksession name="all-rules"/>
    </kbase>
    </kmodule>

存疑:

  • kmodule.xml存放位置是否可以自定义
  • kmodule.xml文件名是否可以自定义
  • kmodule.xml格式问题

创建规则文件

创建resources/rules/score.drl文件

package rules;

import com.drools.chapter1.models.Score

dialect  "mvel"

rule "pass"
    when
        Score(score>=60)
    then
        System.out.println("及格");
end

rule "don`t pass"
    when
        Score(score<60)
    then
        System.out.println("不及格");
end

创建启动文件

package com.drools.chapter1;

import com.drools.chapter1.models.Score;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;

public class Chapter1Application {

    public static void main(String[] args) {

        //通过静态方法获取实例
        KieServices kieServices = KieServices.Factory.get();

        //默认去读取配置文件
        KieContainer kieContainer = kieServices.getKieClasspathContainer();

        //获取kieSession 注意参数与配置文件中保持一致
        KieSession kieSession = kieContainer.newKieSession("all-rules");

        Score score = new Score();

        score.setScore(40);

        kieSession.insert(score);

        kieSession.fireAllRules();

    }

}