一、环境概述
Drools 7.0当前最新的是7.74.1 Final,Drools 8.0不兼容JDK8了(你发任你发,我用java8),7.73.0.Final这个兼容最稳定所以选这个
JDK:openjdk version "1.8.0_452"
Maven: maven 3.8.8
Drools:Drools 7.73.0.Final
二、项目依赖
当前为纯粹的Drools环境,没有引入Spring或者SpringBoot,Drools官方没有提供SpringBoot整合包,只有一个简单的Spring整合包。
<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><drools.version>7.73.0.Final</drools.version><slf4j.version>1.7.30</slf4j.version><logback.version>1.2.13</logback.version><mvel2.version>2.4.14.Final</mvel2.version><lombok.version>1.18.30</lombok.version><junit.version>4.13.2</junit.version></properties><dependencies><!-- Drools 核心依赖(必须) --><dependency><groupId>org.drools</groupId><artifactId>drools-core</artifactId><version>${drools.version}</version></dependency><dependency><groupId>org.kie</groupId><artifactId>kie-api</artifactId><version>${drools.version}</version></dependency><!-- 编译drl文件需要 --><dependency><groupId>org.drools</groupId><artifactId>drools-compiler</artifactId><version>${drools.version}</version></dependency><!-- drool-mvel --><dependency><groupId>org.drools</groupId><artifactId>drools-mvel</artifactId><version>${drools.version}</version></dependency><!-- mvel2 --><dependency><groupId>org.mvel</groupId><artifactId>mvel2</artifactId><version>${mvel2.version}</version></dependency><!-- 日志 SL4J+logback --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>${logback.version}</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><scope>provided</scope></dependency><!-- junit 4 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency></dependencies>
三、实体、kmodule.xml以及测试的drl文件
src/main/java/com/online/admin/entity/Person.java
package com.online.admin.entity;import lombok.AllArgsConstructor;
import lombok.Data;@Data
@AllArgsConstructor
public class Person
{private String name;private int age;
}
src/main/resources/META-INF/kmodule.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 这里需要注意,kbase的那么可以随便起,但是packages的名称必须和你drl文件的package声明一致 -->
<kmodule xmlns="http://www.drools.org/xsd/kmodule"><kbase name="rules" packages="rules"><ksession name="ksession-rules"/></kbase>
</kmodule>
src/main/resources/rules/rule1.drl
package rules;import com.online.admin.entity.Person;rule "Age Check Rule"when$p : Person(age >= 18)thenSystem.out.println("[规则触发] " + $p.getName() + " 是成年人,年龄: " + $p.getAge());endrule "Check using eval"when$p : Person()eval( $p.getAge() >= 18 )thenSystem.out.println("条件满足");end
四、单元测试
import com.online.admin.entity.Person;
import org.junit.Test;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class AppTest {private static final Logger logger = LoggerFactory.getLogger(AppTest.class);@Testpublic void testRuleExecution() {KieServices kieServices = null;KieContainer kieContainer = null;KieSession kieSession = null;try {//1、获取KieServicekieServices = KieServices.Factory.get();if (kieServices == null) {throw new IllegalStateException("无法获取KieServices实例");}//2、获取KieContainerkieContainer = kieServices.getKieClasspathContainer();if (kieContainer == null) {throw new IllegalStateException("无法创建KieContainer");}//3、获取KieSessionkieSession = kieContainer.newKieSession("ksession-rules");if (kieSession == null) {throw new IllegalStateException("无法创建KieSession: ksession-rules");}//4、准备数据,插入事实对象Person adult = new Person("李四", 25);kieSession.insert(adult);//5、触发规则int firedRules = kieSession.fireAllRules();logger.info("执行的规则数量: {}", firedRules);}catch (IllegalArgumentException e){logger.error("参数错误: {}", e.getMessage(), e);throw e;}catch (IllegalStateException e){logger.error("状态错误: {}", e.getMessage(), e);throw e;}catch (Exception e){logger.error("规则执行过程中发生未知错误: {}", e.getMessage(), e);throw e;}finally{// 6. 释放KieSessionif (kieSession != null) {try{kieSession.dispose();logger.debug("KieSession已释放");}catch (Exception e){logger.warn("释放KieSession时发生错误: {}", e.getMessage());}}}}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/921817.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
o2o网站大全asp.net网站
系列文章目录 本系列课程主要针对于Ehcache缓存框架功能的开发实践全流程技术指南!
第一节:Ehcache缓存框架的基本概念和简介第二节:Ehcache缓存框架的配置分析和说明第三节:Ehcache缓存框架的缓存方式的探索第四节:E…
邯郸市网络建站aspx网站开发 案例
前段时间到印度的马德拉斯市出差了3个月(4月到6月),今天终于有时间将自己的出差心得和见闻记录下来,可能以后就会忘记。下午16:00时在深圳坐车到香港机场,上车没多久会让填一个入境香港的单子,然后是过海关,过海关时会…
自动驾驶中的传感器技术54——USS(0) - 实践
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …
网站整体规划建设银行网站半天进不去
XSS 概念:由于web应用程序对用户的输入过滤不严,通过html注入篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。XSS类型:Reflected(反射型):只是简单的把用户输入的数据反…
基于微信小程序的旅游景点体系【2026最新】
基于微信小程序的旅游景点体系【2026最新】pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…
US$64 NEC KEY II Adapter for CKM100 and Digimaster III
NEC KEY II Adapter for CKM100 and Digimaster IIIPackage List:1set x NEC KEY II Adapter for CKM100 and Digimaster III
Pictures of NEC KEY II Adapter for CKM100 and Digimaster IIINEC KEY II Adapter for C…
反电动势法控制BLDC电机的原理图分析
1.概述
无霍尔的BLDC控制方案与有霍尔BLDC的基本原理相似,都是用所谓“六步换向法”,根据转子当前的位置,按照一定的顺序给定子绕组通电使BLDC电机转动。所不同的是无霍尔BLDC不需要霍尔效应传感器,通过检测定子绕…
网站建设属于网络设计解决:如何将初步规划中的各个子系统从内部
一、 提示
需要重启服务器 操作之前备份 k8s 中所有资源的 yaml 文件 如下是备份脚本,仅供参考
# 创建备份目录
test -d $3 || mkdir $3
# $1 命名空间
# $2 资源名称: sts deploy configMap svc 等
# $3 资源备份存放的目录名称for app in kubec…
完整教程:Altium Designer(AD)设计规则检查设置
完整教程:Altium Designer(AD)设计规则检查设置pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …
理查德西尔斯做的网站dw个人网页制作教程学生
1、Dubbo的基本架构是怎样的?
Dubbo是一个高性能的Java RPC(远程过程调用)框架,它的基本架构主要由以下几个核心组件构成: Provider(服务提供方): Provider是指暴露服务的服务提供者…
企业物联网安全必须优先考虑的5个不可否认的理由
本文探讨了企业物联网安全面临的五大挑战,包括设备数量激增带来的安全风险、安全团队能力不足、行业快速发展带来的隐私问题、信息共享的重要性以及海量设备管理的复杂性。文章为企业信息安全实践者提供了重要的安全建…
网站开发是叫系统吗怎么做返利网之类的网站
简介:传统MySQL基于binlog复制的主备架构有它的局限性,包括存储空间有限,备份恢复慢,主备复制延迟等问题,为了解决用户对于云上RDS(X-Engine)大容量存储,以及弹性伸缩的诉求,PolarDB推出了历史库…
PSM敏捷认证自考学习指南
PSM敏捷认证自考学习指南来分享我自考psm认证课程心得吧,希望可以帮到你。
第一,关于复习
(Scrum指南) 必读材料,读5遍以上,别问为什么,题目基本都是围绕这个的。
第二,关于考试
考试题型有,选择题,单选,多…
(基于江协科技)51单片机入门:3.静态数码管 - 实践
(基于江协科技)51单片机入门:3.静态数码管 - 实践2025-09-29 12:02
tlnshuju
阅读(0)
评论(0) 收藏
举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displ…
US$7 12Pin Welding Line for CG Pro 9S12 Programmer
12Pin Welding Line for CG Pro 9S12 ProgrammerIf your CG Pro 9S12 is with new design, please choose New Design--SK238-B6If your CG Pro 9S12 is with old design, please choose Old Design--SK238-6We will a…
江阴市住房与建设局网站wordpress菜单设计
我们可以利用OpenCV的直方图,backproject直方图和meanshift算法来跟踪物体。下面通过简单的例子来说明如何实现跟踪算法,我们有两幅狒狒的图片,如下图所示:我们首先在左图中框选狒狒的脸,计算出框选区域的色度(HSV空间…
seo网站推广优化就找微源优化网站租用一年服务器费用多少
getAttribute获得class属性时,IE6,IE7的传參是className,IE7和现代游览器都是class全部游览器DOMElement均有的className属性,其在IE各版本号下的均表现良好返回属性class值的字符串此外html5中DOMElement有个classList属性,它返回一个类型为DOMTokenList的对象,它当中有非常多…
商城网站做推广有什么好处做网站书面报告申请
介绍高光谱图像的基本知识,便通过MATLAB对高光谱图像进行基本的处理。 文章目录前言一、高光谱图像二、MATLAB高光谱图像处理1.加载.MAT文件数据2.图像的显示3.图像维度变换总结前言 高光谱图像是一个立方体结构,维度为M x N x B,M为水平方向…
2025内网聊天工具排行 4款好用的内网聊天软件推荐
本文盘点2025年主流内网聊天工具,聚焦企业微信私有化、有度即时通、飞秋、FastMsg四款局域网通讯软件的私有化部署、安全性、适用场景及扩展能力,为企业选型提供高安全通讯与高效协作的解决方案。一、企业微信私有化…
【正则表达式】正则表达式零基础入门:从“抄”到“写”,附性能测试实战案例 - 教程
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …