drools6入门例子
项目结构如下:
pom.xml依赖:
<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>
person.drl规则文件为:
package com.person;
import com.lala.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>
Person.java
package com.lala.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+"]";
}
}
测试文件:
package com.lala.mydrools;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import com.lala.bean.Person;
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("白展堂", 68);
Person p2 = new Person("李大嘴", 32);
Person p3 = new Person("佟湘玉", 18);
Person p4 = new Person("郭芙蓉", 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();
}
}
运行,输出为:
before p1 : [name=白展堂,age=68,desc=null]
before p2 : [name=李大嘴,age=32,desc=null]
before p3 : [name=佟湘玉,age=18,desc=null]
before p4 : [name=郭芙蓉,age=8,desc=null]
总执行了4条规则
after p1 : [name=白展堂,age=68,desc=老年]
after p2 : [name=李大嘴,age=32,desc=中年]
after p3 : [name=佟湘玉,age=18,desc=青年]
after p4 : [name=郭芙蓉,age=8,desc=少年]
还没有评论,来说两句吧...