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

规则引擎Drools的资料整理

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

规则引擎Drools的资料整理
1.Drools使用
官方文档:
https://docs.jboss.org/drools/release/7.25.0.Final/drools-docs/html_single/index.html
Idea:自带JBoss Drools Support 插件,直接在项目中引入jar包,新建.drl配置文件即可
Eclipse:需要安装drools插件和drools运行时,建议参考https://blog.csdn.net/sinat_25551085/article/details/83213701

2.Drools的规则文件.drl的基本结构
①package com.sample //包名,不可以与关键字冲突
②import com.sample.DroolsTest.Message;//本文件需要导入的类
③global java.util.List myGlobalList;//全局变量
④//定义函数体
function String hello(String name) {
return “Hello “+name+”!”;
}
⑤rule “myRule”
no-loop true //执行一次后,是否能被再次**
salience 100 //优先级别
⑥when
m : Message( status == Message.HELLO, message : message )
⑦then
m.setMessage( “Goodbye cruel world” );
m.setStatus( Message.GOODBYE );
update( m );
myGlobalList.add( “Hello World” );//使用global 变量
System.out.println( hello( “Bob” ) );//调用定义函数
End
详细解释:
③可以用于java程序与drl文件里的交互,定义一个全局变量,从java程序传入到drl文件
具体可见demo参考
④用于在drl文件中定义一个方法函数,与java程序方法定义一致,将drl文件里公共使用的代码封装成方法
⑤定义一个规则名,重点在于no-loop true及salience 100等语法
⑥⑦相当于java程序里的if(条件)else结构,⑥中条件可以有多种条件约束,如:
&& 和|| 约束,字符串约束,复合值约束(in和not in)
具体可参考:http://www.drools.org.cn/228.html

3.Drools在程序中的集成
(1):新建一个规则实体类

package com.example.droolstest.model;

public class Label {
    private String sex;

    private Integer age;

    private Integer weight;

    private Integer salary;

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getWeight() {
        return weight;
    }

    public void setWeight(Integer weight) {
        this.weight = weight;
    }

    public Integer getSalary() {
        return salary;
    }

    public void setSalary(Integer salary) {
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "Label{" +
                "sex='" + sex + '\'' +
                ", age=" + age +
                ", weight=" + weight +
                ", salary=" + salary +
                '}';
    }
}

(2):Pom文件引入jar包

		<dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-api</artifactId>
            <version>${drools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-compiler</artifactId>
            <version>${drools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-spring</artifactId>
            <version>${drools.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-tx</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-beans</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-context</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

(3):新增一个DroolsConfig类,用于读取drl配置文件及开启kieSession和kieBuilder
(4):在java类中使用kieSession来触发规则文件
demo地址:https://github.com/kexiaobo/drools-test

4.Drools相关资料及论坛
http://www.drools.org.cn/
https://cloud.tencent.com/developer/search/article-drools
https://www.aliyun.com/ss/ZHJvb2xz6KeE5YiZ5byV5pOO/1_b

5.Drools调试,目前只找到在eclipse中的调试方法
https://www.yiibai.com/drools/drools_debugging.html

相关标签: drools 规则引擎

上一篇: Kafka基础

下一篇: Drools搭建