Drool实战系列(一)之入门程序

简介: Drools官网地址为:https://www.drools.org/maven环境入门程序例子如下:项目结构截图:   一、导入pom文件  4.0.0 cn.drools drools-demo 0.

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

 

目录
相关文章
|
15天前
|
存储 Python
Python编程入门:从零开始的代码之旅
【9月更文挑战第4天】本文将带领初学者步入Python的世界,通过简明的语言和直观的例子,逐步揭示编程的乐趣。我们将一起构建基础的数据结构,探索控制语句的奥秘,并实现简单的函数。无论你是编程新手还是希望巩固基础,这篇文章都是你理想的起点。让我们开始吧,一步步将代码块搭建成思维的宫殿!
18 2
|
3月前
|
算法 开发工具 数据安全/隐私保护
练手必备!Python编程实战—23个有趣的实战项目带你快速进阶
Python的练手项目有哪些值得推荐? 已经有6.4W关注,700W次浏览,回答都有450条了,本来遇到这种问题我是不会回答的,毕竟已经有太多人给出了答案,我再去回答就没什么意义了。 但想了想确实有很多刚学Python的并不清楚从哪里去找项目来练手,于是就有了这篇文章,基于这个目的,我也是找了好久,最后还是选择了分享这份手册,毕竟里面有细致的讲解,确实更适合练手一些。
|
4月前
|
IDE 算法 开发工具
Python编程入门:基础知识与环境搭建
【4月更文挑战第8天】探索Python编程之旅,了解其易学、易读、可维护的特性及丰富的标准库。设置开发环境,包括安装Python、验证安装、选择IDE(如PyCharm、VS Code)并编写首个&quot;Hello, World!&quot;程序。熟悉IDE和Python标准库,通过实践提升技能,踏上编程征程。开始你的Python学习之旅吧!
55 2
|
4月前
|
存储 程序员 开发工具
Python 进阶指南(编程轻松进阶):十四、实践项目
Python 进阶指南(编程轻松进阶):十四、实践项目
48 0
|
9月前
|
编译器 Linux C语言
【C++】C++入门详解 I【C++入门 这一篇文章就够了】(上)
【C++】C++入门详解 I【C++入门 这一篇文章就够了】
52 1
|
4月前
|
消息中间件 存储 分布式计算
学习笔记:StructuredStreaming入门(十二)
学习笔记:StructuredStreaming入门(十二)
68 0
|
9月前
|
小程序 前端开发 JavaScript
小程序的入门
小程序的入门
52 0
|
9月前
|
编译器 Linux C语言
【C++】C++入门详解 I【C++入门 这一篇文章就够了】(下)
【C++】C++入门详解 I【C++入门 这一篇文章就够了】
57 0
|
9月前
|
Java 编译器 测试技术
【C++】C++入门详解 II【深入浅出 C++入门 这一篇文章就够了】(上)
【C++】C++入门详解 II【深入浅出 C++入门 这一篇文章就够了】
47 0
|
9月前
|
存储 安全 编译器
【C++】C++入门详解 II【深入浅出 C++入门 这一篇文章就够了】(下)
【C++】C++入门详解 II【深入浅出 C++入门 这一篇文章就够了】(上)
88 0