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

article/2025/9/8 21:47:26

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

 

转载于:https://www.cnblogs.com/youcong/p/9088680.html


http://chatgpt.dhexx.cn/article/wfAZdpcF.shtml

相关文章

drool 7.x 属性:duration

规则 package com.rulesimport entity.Pingdeclare Ping@role(event) // 要把插入的数据声明为event,默认是fact,@expires(20s) // 用来显示设置事件的过期时间,也就是说过了这个时间,该事件就会从会话中移除,不能再使用 endrule "testComplexEvent1"du…

drool-6.5的自学demo

先丢代码地址 https://gitee.com/a247292980/drools 再丢pom.xml <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…

Drool学习记录(一) 概念、Helloworld

1 关于规则引擎 基于知识库和规则的专家系统是早期最主流的人工智能&#xff0c;不同于现在流行的基于统计、机器学习的智能算法&#xff0c;基于规则的算法相对来说更加直观和易于理解&#xff0c;毕竟如果简单理解的话&#xff0c;就是定义好了If-Than结构&#xff0c;从而让…

LiteFlow vs Drool的规则引擎深度对比

规则引擎的定义 两款框架的异同点 规则表达式 和Java的数据交换 API以及集成 侵入性耦合比较 规则的学习成本 是否有语言插件 规则的存储 规则的变更能否实时改变逻辑 是否有界面形态来支持 框架的性能表现 结语 Drools是一款老牌的java规则引擎框架&#xff0c;早…

Drools概述和基本原理

目录 ​编辑 一、Drools是什么&#xff1f; 二、Drools使用场景 三、Drool架构内容 3.1 总体架构 3.2 构成内容说明 3.2.1 Rules 3.2.2 Production memory 3.2.3 Facts 3.2.4 Working memory 3.2.5 Pattern matcher 3.2.6 Agenda 四、为什么要用规则引擎&#xff1f; 4.1 声明…

Uipath Workbook与Excel差别

学习目标&#xff1a; 了解Uipath Workbook与Excel 两组差别 Workbook 使用Workbook: 1.所有工作簿活动都将在后台执行。 2.不需要安装Microsoft Excel&#xff0c;只需在Excel应用程序中不打开文件&#xff0c;就可以更快、更可靠地进行某些操作。 3.仅适用于.xls和.xlsx文件…

Workbook.SaveAs方法

Workbook.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local) excel vba 保存代码 Sub 保存工作簿() ThisWorkbook.Save .save相当于按…

Workbook

工作需要。话不多说。 我们来看传统的poi。使用HSSFWorkbook创建2003格式为xls后缀的文档。如下&#xff1a; [html] view plain copy public String toTotal() { String strs "40288b163a72fd15013a730d44430004,40288b163a72fd15013a730d44430004," &q…

excel workbook

引用不同的workbook 1.索引号 workbooks.item&#xff08;3&#xff09;workbooks&#xff08;3&#xff09; 2.名称 当新建的文件&#xff0c;并没有保存的时候 workbooks(“book1”) 当已经存在的文件&#xff0c;要加上后缀 workbooks(“book1.xls”) workbook信息 cell…

UserWarning: Workbook contains no default style, apply openpyxl‘s default warn no default style 解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。 本文主要介绍了UserWarning: W…

VBA基础,工作簿workbook相关的方法和属性

0 我觉得VBA和VB,VBS最大的区别就在A&#xff08;application&#xff09;上了 所以application里的 workbook , worksheet range ,cell等应该是VBA语言的核心&#xff0c;最复杂内容了 本身VBA里的VB语言部分&#xff0c;其实和很多语言语法结构也差不多每种语言的差别一在…

Python操作excel文件创建workbook和批量创建Sheet

第一步&#xff0c;创建workbook和sheet from openpyxl import WorkbookwbWorkbook() wb.create_sheet(index1,title"sheet2")wb.save(test1.xlsx)创建成功&#xff0c;workbook 名称test1&#xff0c;有sheet 和sheet2两张表 第二步&#xff0c;批量创建多个sheet …

SpringBoot使用Workbook读取excel中内容

SpringBoot使用Workbook读取excel中内容 maven文件中导入依赖 获取excel文件 FileInputStream fileInputStream new FileInputStream("文件路径");获取Workbook对象 Workbook workbook new XSSFWorkbook(fileInputStream);获取Sheet对象 Sheet sheet workbook.…

已解决ModuleNotFoundError: No module named ‘Workbook‘

已解决&#xff08;python xlwt库写入Excel表格报错&#xff09;ModuleNotFoundError: No module named ‘Workbook‘ 文章目录 报错代码报错翻译报错原因解决方法千人全栈VIP答疑群联系博主帮忙解决报错 报错代码 粉丝群里的一个小伙伴&#xff0c;想用xlwt库写入Excel表格的…

【干货】Python:load_workbook用法(持续更新)

【干货】Python中load_workbook用法&#xff08;持续更新&#xff09; 功能方法示例文件模块读取导入excel表格获取Sheet查看行与列查看单元格批量访问数据 功能 读取excel文件&#xff0c;并进行操作 方法 示例文件 本文用到的示例文件为一个excel表格&#xff0c;含有名为…

【Python_笔记】openpyxl中Workbook()和.load_workbook()区别

记录学习旅程~ 欢迎各位道友指教与交流~ 准备开始实操时发现一个问题&#xff0c;即Workbook()是创建一个类对象&#xff0c;而load_workbook()是一个方法加载存在的excel。 由于在学习openpyxl时吸取了不同教程&#xff0c;按照读取→编辑→再编辑→保存的逻辑列举了常用的基…

POI(excel)中WorkBook和Sheet应用实践总结

WorkBook定义 工作簿的高级表现形式&#xff0c;是sheet的上级对象。一个excel就是一个工作簿&#xff0c;一个工作簿含有多个工作表(sheet)。 【1】WorkBook两种创建形式 ① 使用直接对象 // 03版本 .xls org.apache.poi.hssf.usermodel.HSSFWorkbook or //07版本 .xls…

Java多线程:Executors

Executors类位于java.util.concurrent包下&#xff0c;提供了一些方便构建ThreadPoolExecutor和线程管理的方法。 主要方法有以下几个&#xff1a; 1.创建一个固定大小的线程池 public static ExecutorService newFixedThreadPool(int nThreads) {return new ThreadPoolExecu…

【Java多线程】线程池【ExecutorServicec和Executors】

➤ Java多线程编程【一文全解】 背景&#xff1a;经常创建和销毁、使用量特别大的资源&#xff0c;比如并发情况下的线程&#xff0c;对性能影响很大&#xff1b; 思路&#xff1a;提前创建好多个线程&#xff0c;放入线程池中&#xff0c;使用时直接获取&#xff0c;使用完放…