Drools规则引擎使用入门

参考书籍:《Drools规则引擎技术指南》来志辉 | 微信读书

最简单的示例

规则引擎的配置方式最基本的方式有2种,一个是静态配置文件,另一个是动态加载

静态配置文件
动态加载配置

(一) 静态配置文件方式


  1. 新建一个空maven项目
  2. resoures下建META-INF目录,并新建kmodule.xml文件
  3. resoures下建reules.collect文件夹, 并新建一个drools-rule1.drl文件
  4. src 下新建com.pojo包路径,新建一个Person
  5. 建立一个测试类,这里是MainTest

此时文件目录结构




以下几个是文件内容详解

pom文件引用maven

<dependency>
    <groupId>org.drools</groupId>
    <artifactId>drools-compiler</artifactId>
    <version>7.10.0.Final</version>
</dependency>

kmodule.xml 文件内容

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

    <kbase name="rule_test1" packages="rules.collect">
        <ksession name="rule_test1_session"/>
    </kbase>

</kmodule>

drools-rule1.drl文件内容

package rules.collect //当前drl文件所在resources中的路径
import com.pojo.Person //引用包是 Person 类的路径名

rule "test001"
    when
        eval(true);
    then
        System.out.println("Hello World");

end

rule "test002"
    when
        $p:Person(age>21,$n:name=="liuyb")
    then
        $p.setName("Banana");
        update($p);
        System.out.println("检查姓名:"+$n);
        System.out.println("输出引用对象 "+$p);

end

实体类Person内容

@Data
public class Person {

    private int age;
    private String name;
}

测试代码

public static void main(String[] args) {
    KieServices factory = KieServices.Factory.get();
    KieContainer container = factory.getKieClasspathContainer();
    KieSession session = container.newKieSession("rule_test1_session");

    Person person = new Person();
    person.setName("liuyb");
    person.setAge(22);

    session.insert(person);
    int count = session.fireAllRules();
    System.out.println("总共执行了条" + count + "规则");
    session.dispose();
}

这样静态配置的方式就完成了, 执行MainTest测试代码

在这里插入图片描述




(二) 动态配置加载

这里是用字符串形式进行简单使用示例

将规则文件中的字符串全部拷贝出来,准备好

实战应用中规则内容比较少,可以通过数据库字段进行存取,量特别大时候要使用写配置文件的方式

测试代码

public static void main(String[] args) {
    	// 规则文本字符串
        String drlStr = "package rules.collect\n" +
                "import com.pojo.Person\n" +
                "\n" +
                "rule \"test001\"\n" +
                "    when\n" +
                "        eval(true);\n" +
                "    then\n" +
                "        System.out.println(\"Hello World\");\n" +
                "\n" +
                "end\n" +
                "\n" +
                "rule \"test002\"\n" +
                "    when\n" +
                "        $p:Person(age>21,$n:name==\"liuyb\")\n" +
                "    then\n" +
                "        $p.setName(\"Banana\");\n" +
                "        update($p);\n" +
                "        System.out.println(\"检查姓名:\"+$n);\n" +
                "        System.out.println(\"输出引用对象 \"+$p);\n" +
                "\n" +
                "end";

        Person person = new Person();
        person.setName("liuyb");
        person.setAge(22);

        KieHelper helper = new KieHelper();
        helper.addContent(drlStr, ResourceType.DRL);
        KieSession kieSession = helper.build().newKieSession();

        kieSession.insert(person);
        kieSession.fireAllRules();
        kieSession.dispose();
    }

直接运行即可

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Drools规则引擎是一款基于Java语言开发的开源规则引擎,它能够对规则进行管理和执行,用于处理复杂的业务逻辑和决策。Drools规则引擎使用情况非常广泛。 首先,Drools规则引擎在金融领域得到了广泛的应用。金融机构通常需要处理大量的规则,例如风险评估、信用评级、合规监管等。Drools规则引擎能够高效地处理这些规则,自动进行规则匹配和执行,帮助金融机构提高决策的准确性和效率。 其次,Drools规则引擎在物流和供应链领域也有很大的用武之地。物流过程中经常需要进行路由规划、库存管理、订单处理等。这些业务逻辑和规则通常需要根据实时的数据进行调整和执行。Drools规则引擎能够根据不同的条件和数据,动态地匹配和执行规则,帮助物流企业优化运营效率和降低成本。 此外,Drools规则引擎还在电子商务、人力资源管理、医疗健康等领域得到了广泛的应用。在电子商务中,Drools规则引擎可以用于个性化推荐、促销活动等;在人力资源管理中,它可以用于招聘筛选、绩效评估等;在医疗健康领域,它可以用于辅助诊断、治疗决策等。Drools规则引擎的灵活性和高效性,使得它能够应对各种复杂的业务场景。 总之,Drools规则引擎是一款功能强大且应用广泛的规则引擎。它在金融、物流、供应链、电子商务、人力资源管理、医疗健康等领域均有广泛的使用情况,帮助各个行业应对复杂的业务逻辑和决策需求,提高效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值