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();
}
}

最新文章

  1. 移动端web开发
  2. DATETIME类型和BIGINT 类型互相转换
  3. Codeforces Round #375 (Div. 2) - D
  4. iOS Xcode behaviors个人常用Debug配置
  5. iOS开发之App启动原理
  6. CSS字体大小设置时的参考(转)
  7. JS数组操作常用方法
  8. HDU 5813 Elegant Construction
  9. 芝麻HTTP:Scrapy-Splash的安装
  10. java继承方法规则或规律
  11. 数组属性的习题、Arrays工具、二维数组
  12. AWS deepracer
  13. springmvc中messageConverter用法
  14. HSSFWorkbook操作excel读写
  15. Python之旅Day3 文件操作 函数(递归|匿名|嵌套|高阶)函数式编程 内置方法
  16. PowerDesigner 参照完整性约束(转载)
  17. 【HDU1693】Eat the Trees(插头dp)
  18. Submatrix Sum
  19. C语言lseek()函数:移动文件的读写位置
  20. python中del函数的垃圾回收

热门文章

  1. 使用 New Relic 监控接口服务性能 (APM)
  2. Java坦克大战(二)
  3. Java基础——Oracle(八)
  4. lfs(systemv版本)学习笔记-第3页
  5. 3038 3n+1问题
  6. Android学习笔记----天地图API开发之UnsatisfiedLinkError
  7. c#中ofType的用法
  8. Xamarin入门,开发一个简单的练手APP
  9. PL/SQL 删除主键 ORA-02443: 无法删除约束条件-不存在的约束条件
  10. zabbix疑难之时区问题