Drools7.x 学习一-简单入门

DROOLS(JBOSS RULES )具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。

规则引擎的基本套路是:用一套规则,去检查数据是否符合规则,如果符合规则,那么可以在数据上执行一些操作(增删查改都可以)。

规则是写在drools脚本里的,以 .drl 格式结尾
数据就存在 Java 的类实例中。规则引擎跑起来的时候,需要将数据放在一个 Session 的结构中,规则只会对 Session 中的数据进行检查。

一、简单入门

现在用Drools实现一个最简单的功能:用户可以在系统提交申请,如果用户年龄小于18岁,则判断申请是无效的。
本文章使用的是IDEA+Gradle开发,Drools版本:7.25.0.Final

1.项目结构结构展示

在这里插入图片描述

2.环境准备

2.1 IDEA安装Drools插件

使用IDEA开发需要安装Drools插件
在这里插入图片描述
新建文件中出现Drools Rule File即为插件安装成功
在这里插入图片描述

2.2 添加Gradle依赖

    //drools
    compile 'org.kie:kie-api:7.25.0.Final'
    compile 'org.kie:kie-internal:7.25.0.Final'
    compile 'org.drools:drools-core:7.25.0.Final'
    compile 'org.drools:drools-compiler:7.25.0.Final'
    compile 'org.drools:drools-decisiontables:7.25.0.Final'
    compile 'org.drools:drools-templates:7.25.0.Final'

3.项目创建步骤

3.1 先创建一个对象Applicant

package drools.sample;

public class Applicant {
    public String name;
    public int age;
    public boolean valid;
    @Override
    public String toString() {
        return "Applicant{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", valid=" + valid +
                '}';
    }
}

3.2 创建规则文件validAge

package drools.sample;
dialect  "mvel"

rule "validAge"
when
    $a : Applicant( age < 18 ) // 规则
then
    // 符合规则后执行的操作,是Java代码
    System.out.println("----------------rule执行开始---------------");
    $a.valid = false;
    System.out.println($a.name + "小于18岁,不能申请");
    System.out.println("----------------rule执行结束---------------");
end

注意:规则文件也有 package 名,这个package名必须和Main函数所在的package一致!!!

在这里插入图片描述

3.3 编写执行处理类

也可以用main方法,本人习惯使用单元测试

package drools.sample;
import org.junit.Test;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;

public class App {
    
    @Test
    public void test01(){

        //建立了规则引擎执行环境,创建了一个 Session
        KieServices ks = KieServices.Factory.get();
        KieContainer kc = ks.newKieClasspathContainer();
        KieSession kSession = kc.newKieSession("ksession1");

        //创建了一个申请对象,设置年龄15岁
        Applicant a = new Applicant();
        a.name = "Xiao,ming";
        a.age = 15;
        a.valid = true;

        System.out.println(a);

        //把该对象插入到 Session 中
        kSession.insert(a);
        //执行规则
        kSession.fireAllRules();

        //规则执行完成,清理 Session 中的数据
        kSession.dispose();

        System.out.println(a.valid);

        System.out.println(a);

    }
}

3.4 运行App

运行Drools需要一个XML配置,固定名称叫kmodule.xml,默认位置在这里
在这里插入图片描述内容如下:

<kmodule xmlns="http://www.drools.org/xsd/kmodule">
    <kbase name="kbase1" packages="drools.sample">
        <ksession name="ksession1" />
    </kbase>
</kmodule>

XML配置定义了规则所属的 package (要和.drl文件里的 package 名一致)。还定义了一个Session,这里的ksession的name要与App里创建的 Session名称要一致。

3.5 运行结果解读

在这里插入图片描述
本示例的目的虽然只是想获得判断申请的结果,但是a.valid 其实也是作为实例的一个变量,所以,可以通过drools可以实现根据规则,修改内存里变量的目的。

参考文章:链接: Drools7.x环境搭建与简单示例.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值