初识Drools(一): Drools 之 hello world

超、凢脫俗 2022-04-08 18:45 258阅读 0赞

简单了解

  1. Drools是一个开源的,基于java的规则引擎,用于匹配规则。会有人问,java if - else 也能实现,为什么要用着一个新技术,一两个条件,当然是硬编码在程序中更为方便,但是在大量规则条件下,碰到例如电商中的优惠券,大量的规则,满减,跨店,商品限制,这种多规则切复杂度极高还会随时发生变化的情况下,使用 if - else 硬编码就会大大的增加代码的复杂性,经常变化也能导致程序的维护问题,那么这个时候就能使用到 Drools 规则引擎,从硬编码中解放出来,用规则脚本的形式存放在文件中,就算规则发生变化也不需要更改代码重启服务。

hello world

  1. 开始第一个drools demo吧。(使用的是 idea

1、创建一个 maven 项目。

  1. pom.xml 添加 drools 相关依赖
  2. <dependency>
  3. <groupId>org.kie</groupId>
  4. <artifactId>kie-spring</artifactId>
  5. <version>6.3.0.Final</version>
  6. <exclusions>
  7. <exclusion>
  8. <groupId>org.springframework</groupId>
  9. <artifactId>spring-tx</artifactId>
  10. </exclusion>
  11. <exclusion>
  12. <groupId>org.springframework</groupId>
  13. <artifactId>spring-beans</artifactId>
  14. </exclusion>
  15. <exclusion>
  16. <groupId>org.springframework</groupId>
  17. <artifactId>spring-core</artifactId>
  18. </exclusion>
  19. <exclusion>
  20. <groupId>org.springframework</groupId>
  21. <artifactId>spring-context</artifactId>
  22. </exclusion>
  23. </exclusions>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.drools</groupId>
  27. <artifactId>drools-compiler</artifactId>
  28. <version>6.3.0.Final</version>
  29. </dependency>

2、添加配置文件

  1. resources 创建目录 META-INF rules
  2. META-INF 目录下创建 kmodule.xml 文件,编写代码
  3. <?xml version="1.0" encoding="UTF-8"?>
  4. <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
  5. <kbase name="rules" packages="rules">
  6. <ksession name="session"/>
  7. </kbase>
  8. </kmodule>
  9. rules 目录下创建 helloworld.drl 文件 ,编写代码
  10. package helloworld
  11. rule "helloworld"
  12. when
  13. eval(true)
  14. then
  15. System.out.println("HelloWorld");
  16. end
  17. 完成后目录结构
  18. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5oYW9fY19o_size_16_color_FFFFFF_t_70][]

3、编写测试类

  1. public class HelloworldTest {
  2. @Test
  3. public void testHelloWorld() {
  4. // KieServices就是一个中心,通过它来获取的各种对象来完成规则构建、管理和执行等操作。
  5. KieServices kieServices = KieServices.Factory.get();
  6. // 个知识仓库(包含了若干的规则、流程、方法)的容器。
  7. KieContainer kieContainer = kieServices.newKieClasspathContainer();
  8. // 与drools引擎打交道的会话。
  9. KieSession kieSession = kieContainer.newKieSession("session");
  10. // 执行所有规则,返回满足规则的数量
  11. int i = kieSession.fireAllRules();
  12. System.out.println(i);
  13. // 销毁对象
  14. kieSession.dispose();
  15. }
  16. }

4、执行,查看控制台

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5oYW9fY19o_size_16_color_FFFFFF_t_70 1

发表评论

表情:
评论列表 (有 0 条评论,258人围观)

还没有评论,来说两句吧...

相关阅读

    相关 TestNG- Hello World

    最近因为工作需要,要了解TestNG并应用到项目的单元测试和集成测试中。准备写点文章,记录一下对TestNG的使用和了解。这篇文章是这个系列的第一篇,简要介绍TestNG是什么