Drools

  • 1,导入所需依赖
  • 2,创建规则文件/resources/rules/helloworld.drl
  • 3,编写配置类DroolsConfig.java
  • 4,创建RuleService类,测试使用
  • 5,在Controller使用

1,导入所需依赖

     <!--drools规则引擎--><dependency><groupId>org.drools</groupId><artifactId>drools-compiler</artifactId><version>7.10.0.Final</version></dependency><dependency><groupId>org.drools</groupId><artifactId>drools-core</artifactId><version>7.10.0.Final</version></dependency><dependency><groupId>org.drools</groupId><artifactId>drools-templates</artifactId><version>7.10.0.Final</version></dependency><dependency><groupId>org.kie</groupId><artifactId>kie-api</artifactId><version>7.10.0.Final</version></dependency><dependency><groupId>org.kie</groupId><artifactId>kie-spring</artifactId><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-core</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></exclusion></exclusions><version>7.10.0.Final</version></dependency>

2,创建规则文件/resources/rules/helloworld.drl

package helloworld
rule "rule_helloworld"wheneval(true)thenSystem.out.println("规则:rule_helloworld触发...");
end

3,编写配置类DroolsConfig.java

package com.myqxin.sx.common.config;import org.kie.api.KieBase;
import org.kie.api.KieServices;
import org.kie.api.builder.KieBuilder;
import org.kie.api.builder.KieFileSystem;
import org.kie.api.builder.KieRepository;
import org.kie.api.runtime.KieContainer;
import org.kie.internal.io.ResourceFactory;
import org.kie.spring.KModuleBeanFactoryPostProcessor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;import java.io.IOException;/*** @author: myqxin* @Desc: 规则引擎配置类* @create: 2021-09-13 14:07**/
@Configuration
public class DroolsConfig {// 指定规则文件存放目录,这里是可以根据自己存放的drl文件进行修改的private static final String RULES_PATH = "rules/";private final KieServices kieServices = KieServices.Factory.get();@Bean@ConditionalOnMissingBeanpublic KieFileSystem kieFileSystem() throws IOException {KieFileSystem kieFileSystem = kieServices.newKieFileSystem();ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();Resource[] files = resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "*.*");String path = null;for (Resource file : files) {path = RULES_PATH + file.getFilename();kieFileSystem.write(ResourceFactory.newClassPathResource(path, "UTF-8"));}return kieFileSystem;}@Bean@ConditionalOnMissingBeanpublic KieContainer kieContainer() throws IOException {KieRepository repository = kieServices.getRepository();repository.addKieModule(repository::getDefaultReleaseId);KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem());kieBuilder.buildAll();return kieServices.newKieContainer(repository.getDefaultReleaseId());}@Bean@ConditionalOnMissingBeanpublic KieBase kieBase() throws IOException {return kieContainer().getKieBase();}@Bean@ConditionalOnMissingBeanpublic KModuleBeanFactoryPostProcessor kiePostProcessor() {return new KModuleBeanFactoryPostProcessor();}
}

4,创建RuleService类,测试使用

import org.kie.api.KieBase;
import org.kie.api.runtime.KieSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** @author: myqxin* @Desc:* @create: 2021-09-13 14:22**/
@Service
public class RuleService {@Autowiredprivate KieBase kieBase;   // 主要是引用这个调用newKieSession()拿到会话对象public void rule(){// 获取会话对象,用于和规则引擎交互KieSession kieSession = kieBase.newKieSession();// 激活规则引擎,如果规则匹配成功则执行规则kieSession.fireAllRules();// 关闭会话kieSession.dispose();}
}

5,在Controller使用

@RestController
@RequestMapping("/hello")
public class HelloController {@Autowiredprivate RuleService ruleService;@RequestMapping("/rule")public String rule(){ruleService.rule();return "OK";}
}

控制台打印效果如下:

Springboot整合Drools规则引擎相关推荐

  1. SpringBoot整合Drools规则引擎动态生成业务规则

    最近的项目中,使用的是flowable工作流来处理业务流程,但是在业务规则的配置中,是在代码中直接固定写死的,领导说这样不好,需要规则可以动态变化,可以通过页面去动态配置改变,所以就花了几天时间去研究 ...

  2. Spring Boot整合Drools规则引擎实例

    1.DRools介绍 官网:https://www.drools.org/ 规则引擎主要完成的就是将业务规则从代码中分离出来. DRools一款由JBoss组织提供的基于Java语言开发的开源规则引擎 ...

  3. SpringBoot2 整合 Drools规则引擎,实现高效的业务规则

    本文源码:GitHub·点这里 || GitEE·点这里 一.Drools引擎简介 1.基础简介 Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的 ...

  4. springboot2整合drools规则引擎(kie-spring+drools-core)

    What&Why Drools? Drools(JBoss Rules )的前身是Codehaus的一个开源项目叫Drools,后来纳入JBoss门下,更名为JBoss Rules,成为了JB ...

  5. Flink整合Drools规则引擎

    业务功能:根据告警规则,从告警流中将主告警和次告警进行关联. pom maven配置: <drools.version>6.5.0.Final</drools.version> ...

  6. 大数据风控项目实战 Drools规则引擎

    可以借鉴的干货 1,统一存储服务,包含:多种存储库连接封装和服务封装 在统一存储服务 2.获取配置的环境 类:EnvVariable 一.风控项目介绍 对一个复杂支付系统提供统一.全面.高效的风险控制 ...

  7. 黑马Drools学习笔记(一)——Drools规则引擎示例概述以及SpringBoot整合示例

    文章目录 1. 问题引出 2. 规则引擎概述 2.1 什么是规则引擎 2.2 使用规则引擎的优势 2.3 规则引擎应用场景 2.4 Drools介绍 3. Drools入门案例 3.1 业务场景说明 ...

  8. springboot中使用规则引擎Drools

    文章目录 规则引擎的场景 规则引擎介绍 使用规则引擎的优势 规则引擎应用场景 rools介绍 Drools入门案例 规则引擎构成 Drools基础语法 springboot使用规则引擎 规则引擎的场景 ...

  9. SpringBoot整合Drools

    文章目录 关于Drools 整合Drools 一般流程 快速整合 关于Drools 博客: 规则引擎 Drools 上面那篇博客详细的介绍了Drools,还要语法规则,关于什么是Drools,看这篇博 ...

  10. Drools 规则引擎

    官网:https://www.drools.org/ 累了听听歌:http://www.hy57.com/p/158102.html 1. 快速度入门 1. 导入依赖 <dependencies ...

最新文章

  1. CentOS 7磁盘格式化
  2. 针对脑出血识别的AI匹配准确性
  3. 最落寞的C9高校:从未没落
  4. rabbit-mq cluster安装
  5. restful api_将Spring MVC RESTful Web服务迁移到Spring 4
  6. 64位传参利用方法LibcSearcher使用入门ROPgadget利用
  7. 用最科学的方法展示最形象的图表——前段数据可视化选型实践
  8. 设计模式---桥接模式
  9. 利用非循环顺序队列采用广度搜索法求解迷宫问题(一条路径)
  10. 关于产品设计的一点儿感想
  11. H5搜索页调起软键盘
  12. 数据库系统常用的数据模型
  13. 一文读懂Faster RCNN(大白话,超详细解析)
  14. 量子恒道统计-淘宝添加步骤
  15. TSFS终端存储文件系统边缘计算项目介绍-海洋
  16. consul服务注册中心
  17. CRM系统-----学员管理系统---admin自定义开发2
  18. HTTPS学习笔记:(3)一文彻底了解PKI与证书
  19. Jsp(二)——简单的Jsp程序
  20. 源码学习之Vector

热门文章

  1. 软件集成测试工作流程指南
  2. 【已解决】戴尔笔记本电脑的卡顿问题.
  3. 开启旧版DirectX组件解决Win10系统游戏报错异常问题
  4. Tomcat 设置系统默认文件编码
  5. 【Espruino】NO.18 使用L298N驱动直流电机
  6. TextWatcher使用
  7. CSDN账号,你需要不
  8. P2525 Uim的情人节礼物·其之壱 【字典序】【STL:prev_permutation】
  9. Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了
  10. 全国计算机等级考试三级数据库知识点总结