Drools官网地址为:https://www.drools.org/

maven环境

入门程序例子如下:

项目结构截图:

一、导入pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.drools</groupId><artifactId>drools-demo</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency>  <groupId>org.drools</groupId>  <artifactId>drools-core</artifactId>  <version>6.2.0.Final</version>  </dependency>  <dependency>  <groupId>org.drools</groupId>  <artifactId>drools-compiler</artifactId>  <version>6.2.0.Final</version>  </dependency>  </dependencies>
</project>

二、准备JavaBean

package com.test.bean;public class Person {private String name;  private int age;  private String desc;  public Person(String name, int age) {  this.name = name;  this.age = age;  }  public String getName() {  return name;  }  public void setName(String name) {  this.name = name;  }  public int getAge() {  return age;  }  public void setAge(int age) {  this.age = age;  }  public String getDesc() {  return desc;  }  public void setDesc(String desc) {  this.desc = desc;  }  public String toString()  {  return "[name="+name+",age="+age+",desc="+desc+"]";  }  }  

三、在resource下建立rule文件夹编写drl文件

package com.person;  import com.test.bean.Person;  rule "boy"  salience 1  when  $p : Person(age > 0);  then  $p.setDesc("少年");  retract($p);
end  rule "youth"  salience 2  when  $p : Person(age > 12);  then  $p.setDesc("青年");  retract($p);
end  rule "midlife"  salience 3  when  $p : Person(age > 24);  then  $p.setDesc("中年");  retract($p);
end  rule "old"  salience 4  when  $p : Person(age > 60);  then  $p.setDesc("老年");  retract($p);
end

四、编写kmodule.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">  <kbase name="SimpleRuleKBase" packages="rule">  <ksession name="simpleRuleKSession" default="true"/>  </kbase>
</kmodule>

五、编写测试类

package com.test.bean;import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;public class Test {static KieSession getSession()  {  KieServices ks = KieServices.Factory.get();  KieContainer kc = ks.getKieClasspathContainer();  return kc.newKieSession("simpleRuleKSession");  }  public static void main(String[] args)   {  KieSession ks = getSession();  Person p1 = new Person("A", 68);  Person p2 = new Person("B", 32);  Person p3 = new Person("C", 18);  Person p4 = new Person("D", 8);  System.out.println("before p1 : " + p1);  System.out.println("before p2 : " + p2);  System.out.println("before p3 : " + p3);  System.out.println("before p4 : " + p4);  ks.insert(p1);  ks.insert(p2);  ks.insert(p3);  ks.insert(p4);  int count = ks.fireAllRules();  System.out.println("总执行了"+count+"条规则");  System.out.println("after p1 : " + p1);  System.out.println("after p2 : " + p2);  System.out.println("after p3 : " + p3);  System.out.println("after p4 : " + p4);  ks.dispose();  }
}

转载于:https://www.cnblogs.com/youcong/p/9088680.html

Drool实战系列(一)之入门程序相关推荐

  1. shiro实战系列(一)之入门实战

    一.什么是shiro? Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密.   Apache Shiro 的首要目标是易于使用和理解.安全有 ...

  2. [SpringBoot实战系列]实现发送邮件API/发件人中文别名

    前言 由于价格监控项目的需求,实现了一个小的邮件发送接口服务,使用了一个单独的SpringBoot项目,给他取名为spring-mail-sender,开源在了Github上.内部我给他命名为提醒服务 ...

  3. Spark入门实战系列--6.SparkSQL(中)--深入了解SparkSQL运行计划及调优

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.1  运行环境说明 1.1.1 硬软件环境 l  主机操作系统:Windows 64位, ...

  4. Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.编译Spark Spark可以通过SBT和Maven两种方式进行编译,再通过make-d ...

  5. Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l&qu ...

  6. Spark入门实战系列--4.Spark运行架构

    注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1. Spark运行架构 1.1 术语定义 lApplication:Spark Applic ...

  7. Spark入门实战系列--6.SparkSQL(上)--SparkSQL简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.SparkSQL的发展历程 1.1 Hive and Shark SparkSQL的前身 ...

  8. Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.Spark Streaming简介 1.1 概述 Spark Streaming 是Sp ...

  9. Spark入门实战系列--3.Spark编程模型(上)--编程模型及SparkShell实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.Spark编程模型 1.1 术语定义 l应用程序(Application): 基于Spa ...

  10. Spark入门实战系列--6.SparkSQL(下)--Spark实战应用

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.运行环境说明 1.1 硬软件环境 l  主机操作系统:Windows 64位,双核4线程 ...

最新文章

  1. python代码变量作业_python - 是否可以在Jenkins的代码中注入变量,然后像往常一样运行作业? - SO中文参考 - www.soinside.com...
  2. 代码中设置excel自定义格式为[红色]的处理方法
  3. php证书格式,常用的证书格式转换 - niceguy_php的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. 审稿人,我想跟您谈谈心
  5. 从0到1入门:7天玩转IoT物联网实战营丨IoT喊你加入学习之旅!
  6. 死锁发生的条件和预防
  7. 为何身为程序员的你,不选择开源?
  8. Android写log到文件模版
  9. FormBorderStyle 枚举
  10. ssh框架的构成分析和代码构架小结 .
  11. 毕业论文格式修改方法
  12. 这种文件别打开, 大小不足1KB, 却可以让你电脑瘫痪
  13. 骁龙200/400/600/800芯片型号对应及规格介绍
  14. dell台式计算机恢复出厂设置,戴尔电脑如何恢复出厂设置
  15. java版我的世界怎么疾跑,我的世界怎么疾跑?疾跑快捷键介绍
  16. 有些话很轻、很淡、很疼!+ 有些话,经典的让人想流泪
  17. python getsize函数_Python getsizeof()和getsize()区分详解
  18. python做乘法运算定律_《乘法运算定律》(一)教学设计
  19. Win10 安装VC++6.0
  20. 安徽省六安市谷歌卫星地图下载

热门文章

  1. Android定位功能实现
  2. 兰光bl2000_蓝光bl2000电梯主板.pdf
  3. 编译原理龙书第四章部分习题(编译原理作业三)
  4. 简单详细叙述FpGrowth算法思想(附python源码实现)
  5. php url伪静态,PHP url伪静态
  6. 基于Springboot的个人健康监控管理系统 毕业论文+项目源码、
  7. android开机画面大集合,汇总各种Android 开机画面修改方法 第二屏
  8. 中级软件评测师考什么
  9. 2010年软件评测师真题精选
  10. A311D项目开发总结