博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
drools 的一个小demo
阅读量:6978 次
发布时间:2019-06-27

本文共 5013 字,大约阅读时间需要 16 分钟。

直接上代码:

第一步,maven引入相关包

4.0.0
com.example
demo
0.0.1-SNAPSHOT
jar
demo
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.1.RELEASE
UTF-8
UTF-8
1.8
6.1.0.Final
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-webflux
org.kie
kie-spring
${drools.version}
org.drools
drools-compiler
${drools.version}
org.springframework.boot
spring-boot-maven-plugin

 

 

第二步,编写一个规则文件:

//包名package testimport com.example.demo.drools.test.Stu;//rule 就是三大块中的规则体,以rule开头,以end 结尾,每个规则文件可以包含多个rule。规则体分为三个部分,LHS RHS 属性 三大部分//LHS:条件部分又被称之为 LeftHand Side,简称为 LHS,在一个规则当中 when 与 then 中间的部分就是 LHS 部分。//在 LHS 当中,可以包含 0~n 个条件,如果 LHS 部分没空的话,那么引擎会自动添加一个eval(true)的条件,由于该条件总是返回 true,所以 LHS 为空的规则总是返回 true。//RHS:结果部分又被称之为 RightHand Side,简称为 RHS,在一个规则当中 then后面部分就是 RHS,只有在 LHS 的所有条件都满足时 RHS 部分才会执行。rule "rule1"    salience 1        when            $stu:Stu(age>30)//这里就是LHS        then            System.out.println("age>30岁的人:"+$stu.getName());//RHSendrule "rule2"    salience 2    when         $stu:Stu(gender=="male",age>25)    then        System.out.println("性别为男,age>25岁的人:"+$stu.getName());     endrule "rule3"     salience 3     when        $stu:Stu(getName()=="张三")        then         System.out.println("名字为:"+$stu.getName());         end

 

 

第三步:测试代码

package com.example.demo.drools.test;import org.drools.core.io.impl.ClassPathResource;import org.kie.api.io.ResourceType;import org.kie.internal.KnowledgeBase;import org.kie.internal.KnowledgeBaseFactory;import org.kie.internal.builder.KnowledgeBuilder;import org.kie.internal.builder.KnowledgeBuilderFactory;import org.kie.internal.definition.KnowledgePackage;import org.kie.internal.runtime.StatefulKnowledgeSession;import java.util.ArrayList;import java.util.Collection;import java.util.List;/** * Created by ming on 2018/5/24. */public class Test {    public static void main(String[] args) {        KnowledgeBuilder kb = KnowledgeBuilderFactory.newKnowledgeBuilder();        kb.add(new ClassPathResource("test.drl"), ResourceType.DRL);        Collection
collection = kb.getKnowledgePackages(); KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase(); knowledgeBase.addKnowledgePackages(collection); StatefulKnowledgeSession statefulSession = knowledgeBase.newStatefulKnowledgeSession(); List
list = getStus(); for (Stu stu : list) { statefulSession.insert(stu); } statefulSession.fireAllRules(); statefulSession.dispose(); System.out.println("end...."); } public static List
getStus() { List
stus = new ArrayList<>(); stus.add(new Stu("张三", 16, "male")); stus.add(new Stu("huhu", 18, "male")); stus.add(new Stu("王五", 32, "male")); stus.add(new Stu("张红", 23, "female")); stus.add(new Stu("李四", 35, "male")); stus.add(new Stu("张小雅", 31, "female")); return stus; }}

 

package com.example.demo.drools.test;/** * Created by Administrator on 2018/5/24. */public class Stu {    private String name;    private int age;    private String gender;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getGender() {        return gender;    }    public void setGender(String gender) {        this.gender = gender;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public Stu(String name,int age,String gender){        this.name=name;        this.age=age;        this.gender=gender;    }}

 

 

然后看见规则文件生效了....

 

转载地址:http://amupl.baihongyu.com/

你可能感兴趣的文章
Service的基本组成
查看>>
通过案例练习掌握SSH 的整合
查看>>
find ip from hostname or find hostname from ip
查看>>
谈谈UI架构设计的演化
查看>>
DNS 到底怎么工作的? (How does dns work?)
查看>>
从当前日期算起,获取几天前的日期和几个月前的日期
查看>>
linux中普通文件和块设备文件的区别
查看>>
Android中Service深入学习
查看>>
[转]CentOS 5.5下FTP安装及配置
查看>>
Python中的注释(转)
查看>>
[转] Android开发之如何保证Service不被杀掉(broadcast+system/app)
查看>>
JavaScript模块化 --- Commonjs、AMD、CMD、es6 modules
查看>>
nginx tomcat https
查看>>
AlwaysVisibleControlExtender
查看>>
开源代码hosting openfoundryfrom tw
查看>>
HDU 4738 Caocao's Bridges (2013杭州网络赛1001题,连通图,求桥)
查看>>
topas解析(AIX)
查看>>
wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验
查看>>
为什么企业选择年底裁员?如何选择一个正确的公司!
查看>>
高德联手凯迪拉克 发布全球首个高精地图应用
查看>>