Drools和SpringBoot整合入门

本文介绍了如何在SpringBoot项目中整合Drools规则引擎,详细讲解了Drools的基础概念,并提供了测试类、Maven配置、规则文件、实体类、工具类和日志类的设置步骤,旨在帮助开发者快速入门Drools在实际项目中的应用。
摘要由CSDN通过智能技术生成

Drools入门

drools是一款由JBoss组织提供的基于Java语言开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存放在文件或特定的存储介质中(例如存放在数据库中),使得业务规则的变更不需要修改项目代码、重启服务器就可以在线上环境立即生效。

drools官网地址:https://drools.org/

drools源码下载地址:https://github.com/kiegroup/drools

在项目中使用drools时,即可以单独使用也可以整合spring使用。如果单独使用只需要导入如下maven坐标即可:

<dependency>
    <groupId>org.drools</groupId>
    <artifactId>drools-compiler</artifactId>
    <version>7.73.0.Final</version>
</dependency>

如果我们使用IDEA开发drools应用,IDEA中已经集成了drools插件。如果使用eclipse开发drools应用还需要单独安装drools插件。

在这里插入图片描述

测试类

package com.ppl.demo;

import com.ppl.demo.entity.Order;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
@DisplayName("junit5功能测试")
class DemoApplicationTests {
   

	@BeforeEach
	void testBeforeEach() {
   
		System.out.println("测试就要开始。。。");
	}

	@AfterEach
	void testAfterEach() {
   
		System.out.println("测试就要结束。。。");
	}

	@DisplayName("测试drools")
	@Test
	void contextLoads() {
   

		KieServices kieServices = KieServices.Factory.get();
		KieContainer kieClasspathContainer = kieServices.getKieClasspathContainer();
		//会话对象,用于和规则引擎交互
		KieSession kieSession = kieClasspathContainer.newKieSession();

		//事实对象,构造订单对象,设置原始价格,由规则引擎根据优惠规则计算优惠后的价格
		Order order = new Order();
		order.setOriginalPrice(210D);

		//将数据提供给规则引擎,规则引擎会根据提供的数据进行规则匹配
		kieSession.insert(order);

		//激活规则引擎,如果规则匹配成功则执行规则
		kieSession.fireAllRules();
		//关闭会话
		kieSession.dispose();

		System.out.println("优惠前原始价格:" + order.getOriginalPrice() +
				",优惠后价格:" + order.getRealPrice());
	}

}

Maven完整配置pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.7</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.ppl</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>17</java.version>
		<drools.version>7.73.0.Final</drools.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<ver
Drools是一款开源的规则引擎,可以实现业务规则的管理和执行。Spring Boot是一款快速开发框架,可以简化Java应用程序的搭建和部署过程。MyBatis Plus是MyBatis的增强工具,可以简化数据库操作。 要实现规则从数据库中读取,首先需要搭建一个Spring Boot项目。在项目的pom.xml文件中添加Drools和MyBatis Plus的依赖。 接着,在项目的配置文件中,配置MyBatis Plus的数据库连接信息。同时,在配置文件中也配置了Drools的规则文件存放位置,这里指定为数据库。 在代码中,使用MyBatis Plus的注解方式,创建一个规则的实体类。使用这个实体类来映射数据库中的规则表。然后,使用MyBatis Plus的Mapper接口,编写规则的数据库操作方法,包括插入、查询、更新和删除等。 接下来,创建一个Drools的规则文件,使用规则语言编写具体的规则。在规则文件中,可以引用数据库中的规则。在编写规则时,可以使用MyBatis Plus的规则对象来操作数据库。 在Java代码中,创建一个Drools的工作内存。使用Drools提供的API,将规则文件加载到工作内存中。然后,通过MyBatis Plus的规则对象,从数据库中读取规则。将读取到的规则添加到工作内存中。 最后,执行工作内存中的规则。根据业务数据和规则定义,Drools会自动匹配并执行符合条件的规则。规则引擎会根据规则中定义的操作,从数据库中读取或者更新数据。 通过整合Spring Boot、MyBatis Plus和Drools,我们可以实现规则从数据库中读取的功能。这样,当业务规则需要变更时,只需要修改数据库中的规则数据,而不需要修改代码。同时,由于规则的执行由规则引擎来完成,可以更加灵活和高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值