drools6入门例子

电玩女神 2022-08-04 05:16 279阅读 0赞

项目结构如下:

Center

pom.xml依赖:

  1. <dependency>
  2. <groupId>org.drools</groupId>
  3. <artifactId>drools-core</artifactId>
  4. <version>6.2.0.Final</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.drools</groupId>
  8. <artifactId>drools-compiler</artifactId>
  9. <version>6.2.0.Final</version>
  10. </dependency>

person.drl规则文件为:

  1. package com.person;
  2. import com.lala.bean.Person;
  3. rule "boy"
  4. salience 1
  5. when
  6. $p : Person(age > 0);
  7. then
  8. $p.setDesc("少年");
  9. retract($p);
  10. end
  11. rule "youth"
  12. salience 2
  13. when
  14. $p : Person(age > 12);
  15. then
  16. $p.setDesc("青年");
  17. retract($p);
  18. end
  19. rule "midlife"
  20. salience 3
  21. when
  22. $p : Person(age > 24);
  23. then
  24. $p.setDesc("中年");
  25. retract($p);
  26. end
  27. rule "old"
  28. salience 4
  29. when
  30. $p : Person(age > 60);
  31. then
  32. $p.setDesc("老年");
  33. retract($p);
  34. end

kmodule.xml

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

Person.java

  1. package com.lala.bean;
  2. public class Person
  3. {
  4. private String name;
  5. private int age;
  6. private String desc;
  7. public Person(String name, int age) {
  8. this.name = name;
  9. this.age = age;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. public int getAge() {
  18. return age;
  19. }
  20. public void setAge(int age) {
  21. this.age = age;
  22. }
  23. public String getDesc() {
  24. return desc;
  25. }
  26. public void setDesc(String desc) {
  27. this.desc = desc;
  28. }
  29. public String toString()
  30. {
  31. return "[name="+name+",age="+age+",desc="+desc+"]";
  32. }
  33. }

测试文件:

  1. package com.lala.mydrools;
  2. import org.kie.api.KieServices;
  3. import org.kie.api.runtime.KieContainer;
  4. import org.kie.api.runtime.KieSession;
  5. import com.lala.bean.Person;
  6. public class Test
  7. {
  8. static KieSession getSession()
  9. {
  10. KieServices ks = KieServices.Factory.get();
  11. KieContainer kc = ks.getKieClasspathContainer();
  12. return kc.newKieSession("simpleRuleKSession");
  13. }
  14. public static void main(String[] args)
  15. {
  16. KieSession ks = getSession();
  17. Person p1 = new Person("白展堂", 68);
  18. Person p2 = new Person("李大嘴", 32);
  19. Person p3 = new Person("佟湘玉", 18);
  20. Person p4 = new Person("郭芙蓉", 8);
  21. System.out.println("before p1 : " + p1);
  22. System.out.println("before p2 : " + p2);
  23. System.out.println("before p3 : " + p3);
  24. System.out.println("before p4 : " + p4);
  25. ks.insert(p1);
  26. ks.insert(p2);
  27. ks.insert(p3);
  28. ks.insert(p4);
  29. int count = ks.fireAllRules();
  30. System.out.println("总执行了"+count+"条规则");
  31. System.out.println("after p1 : " + p1);
  32. System.out.println("after p2 : " + p2);
  33. System.out.println("after p3 : " + p3);
  34. System.out.println("after p4 : " + p4);
  35. ks.dispose();
  36. }
  37. }

运行,输出为:

  1. before p1 : [name=白展堂,age=68,desc=null]
  2. before p2 : [name=李大嘴,age=32,desc=null]
  3. before p3 : [name=佟湘玉,age=18,desc=null]
  4. before p4 : [name=郭芙蓉,age=8,desc=null]
  5. 总执行了4条规则
  6. after p1 : [name=白展堂,age=68,desc=老年]
  7. after p2 : [name=李大嘴,age=32,desc=中年]
  8. after p3 : [name=佟湘玉,age=18,desc=青年]
  9. after p4 : [name=郭芙蓉,age=8,desc=少年]

发表评论

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

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

相关阅读