drool-6.5的自学demo

article/2025/9/8 21:31:51

先丢代码地址

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.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.yy</groupId><artifactId>drools</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>drools Maven Webapp</name><url>http://maven.apache.org</url><properties><runtime.version>6.5.0.Final</runtime.version></properties><repositories><repository><id>jboss-public-repository-group</id><name>JBoss Public Repository Group</name><url>http://repository.jboss.org/nexus/content/groups/public/</url><releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases><snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots></repository></repositories><dependencies><dependency><groupId>org.kie</groupId><artifactId>kie-api</artifactId><version>${runtime.version}</version></dependency><dependency><groupId>org.drools</groupId><artifactId>drools-core</artifactId><version>${runtime.version}</version></dependency><dependency><groupId>org.drools</groupId><artifactId>drools-decisiontables</artifactId><version>${runtime.version}</version></dependency><dependency><groupId>org.jbpm</groupId><artifactId>jbpm-test</artifactId><version>${runtime.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies>
</project>

 最后丢目录结构

 

 

老规矩要说的基本都在注释里面,想看的去看源码就好了,只说几个重要的

Message

pojo类

DecisionTableTest

drools使用xxx.xls的例子

public class DecisionTableTest {public static final void main(String[] args) {try {// load up the knowledge baseKieServices ks = KieServices.Factory.get();KieContainer kContainer = ks.getKieClasspathContainer();
//    	    写名字则取相应的ksession下的东西
//        	KieSession kSession = kContainer.newKieSession("ksession-dtables");
//            不写名字则全取了KieSession kSession = kContainer.newKieSession();// go !Message message = new Message();message.setMessage("Hello World");message.setStatus(Message.HELLO);kSession.insert(message);kSession.fireAllRules();} catch (Throwable t) {t.printStackTrace();}}}

 DroolsTest

drools操作xxxx.drl的例子

public class DroolsTest  {public static final void main(String[] args) {try {// load up the knowledge baseKieServices ks = KieServices.Factory.get();KieContainer kContainer = ks.getKieClasspathContainer();KieSession kSession = kContainer.newKieSession("ksession-rules");// go !Message message = new Message();message.setMessage("Hello World");message.setStatus(Message.HELLO);kSession.insert(message);kSession.fireAllRules();} catch (Throwable t) {t.printStackTrace();}}}

 ProcessTest

drools操作xxxx.bpmn的例子

public class ProcessTest {public static final void main(String[] args) {try {// load up the knowledge baseKieServices ks = KieServices.Factory.get();KieContainer kContainer = ks.getKieClasspathContainer();KieSession kSession = kContainer.newKieSession("ksession-process");// start a new process instancekSession.startProcess("com.sample.bpmn.hello");} catch (Throwable t) {t.printStackTrace();}}}

StatelessTest

用来区分StatelessKieSession和KieSession

public class StatelessTest {protected KieServices kieServices;protected KieContainer kieContainer;protected KieSession kieSession;protected StatelessKieSession statelessKieSession;@Beforepublic void init() {
//从Factory得到ServiceskieServices = KieServices.Factory.get();
//        在类路径中找到的所有DRL文件kieContainer = kieServices.getKieClasspathContainer();
//得到kmodule的ksessionkieSession = kieContainer.newKieSession("ksession-rules");
//stateless必须注释kmodule里全部的kbase
//		statelessKieSession=kieContainer.newStatelessKieSession();}//kieSession和statelessKieSession的调用是不一样的@Testpublic void testKieSession() {Message message = new Message();message.setMessage("Hello World");message.setStatus(Message.HELLO);kieSession.insert(message);kieSession.fireAllRules();}@Testpublic void testStatelessKieSession() {Message message = new Message();message.setMessage("Hello World");message.setStatus(Message.HELLO);statelessKieSession.execute(message);}
}

 kmodule.xml

<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule"><!--<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">--><!--name kbase的唯一标志packages 路径必须正确可少写可多写可不写不写的话放于根目录(不建议)ksession 的唯一标记--><!--<kbase name="rules" packages="Drools.rules">--><kbase name="rules" packages="rules"><!--<kbase name="rules" packages="">--><!--<kbase name="rules" packages="myrules">--><!--默认用最后一个--><!--<kbase name="rules" packages="rules,myrules">--><ksession name="ksession-rules"/></kbase><kbase name="dtables" packages="dtables"><ksession name="ksession-dtables"/></kbase><kbase name="process" packages="process"><ksession name="ksession-process"/></kbase>
</kmodule>

 

转载于:https://www.cnblogs.com/ydymz/p/8342195.html


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

相关文章

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;使用完放…

为什么不建议用Executors创建线程池???

来源 | www.cnblogs.com/zjfjava/p/11227456.html 01、通过Executors创建线程池的弊端02、通过ThreadPoolExecutor创建线程池03、ThreadPoolExecutor参数解释04、corePoolSize & maximumPoolSize05、keepAliveTime & unit06、等待队列07、拒绝策略08、ThreadPoolExecut…

Executors和ThreadPoolExecutor详解

概述 在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供&#xff0c;不允许在应用中自行显示的创建线程&#xff0c;这样一方面是线程的创建更加规范&#xff0c;可以合理控制开辟线程的数量&#xff1b;另一方面线程的细节管理交给线程池处理&#xff0c;优化了资…