三分钟教你入门规则引擎Drools

Drools规则引擎 Drools(Drools Rule Engine)是一个开源的规则引擎,它主要用于在Java应用程序中实现规则管理。Drools规则引擎将规则定义和管理从应用程序代码中分离出来,使得规则可以独立于应用程序运行。这样可以提高规则的可靠性和可维护性,同时也可以使得规则的更新和管理更加方便。将规则定义和管理从应用程序代码中分离出来,使得规则可以独立于应用程序运行。提供基于规则的访问和操作数据的功能,例如过滤、排序、检索等。支持动态规则扩展和维护,可以根据需要添加、删除或修改规则。 阅读详情

Drools是一款基于Java语言的开源的规则引擎,可以将复杂且多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件或者特定的存储介质中(eg:数据库表),使得业务规则的变更不需要修正项目代码,重启服务器就可以在线上环境立即生效。可以理解为动态代码(动态业务)。

规则引擎的核心目的之一就是将业务决策从程序代码中分离出来,使其代码与业务解耦合。通过特定的语法内容编写业务模块,由API进行解析并对外提供执行接口,再接收输入数据、进行业务逻辑处理并返回执行结果。

常见的规则引擎

IBM的iLog,商业产品

Drools,开源

最近比较火的FLink CEP,开源

Easy Rule,开源

阿里的qlexpress,开源

SpringBoot整合Drools初步实战

1.引入maven依赖

<?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.5.12</version>        <relativePath/>    </parent>    <groupId>com.mfc</groupId>    <artifactId>drools-test</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>drools-test</name>    <description>Demo project for Spring Boot</description>    <properties>        <java.version>8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>        </dependency>
        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>
        <dependency>            <groupId>org.drools</groupId>            <artifactId>drools-compiler</artifactId>            <version>7.14.0.Final</version>        </dependency>
        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <version>1.18.20</version>            <scope>compile</scope>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>        </dependency>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>RELEASE</version>            <scope>test</scope>        </dependency>
    </dependencies>
    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build>
</project>

2.编写配置类

package com.mfc.droolstest.config;
import org.kie.api.KieBase;import org.kie.api.KieServices;import org.kie.api.builder.*;import org.kie.api.runtime.KieContainer;import org.kie.api.runtime.KieSession;import org.kie.internal.io.ResourceFactory;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;
@Configurationpublic class DroolsConfig {
    private static final String RULES_PATH = "rules/";
    @Bean    public KieFileSystem kieFileSystem() throws IOException {        KieFileSystem kieFileSystem = getKieServices().newKieFileSystem();        for (Resource file : getRuleFiles()) {            kieFileSystem.write(ResourceFactory.newClassPathResource(RULES_PATH + file.getFilename(), "UTF-8"));        }        return kieFileSystem;    }
    private Resource[] getRuleFiles() throws IOException {
        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();        final Resource[] resources = resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "**/*.*");        return resources;
    }
    @Bean    public KieContainer kieContainer() throws IOException {
        final KieRepository kieRepository = getKieServices().getRepository();        kieRepository.addKieModule(new KieModule() {            public ReleaseId getReleaseId() {                return kieRepository.getDefaultReleaseId();            }        });
        KieBuilder kieBuilder = getKieServices().newKieBuilder(kieFileSystem());        kieBuilder.buildAll();        return getKieServices().newKieContainer(kieRepository.getDefaultReleaseId());
    }
    private KieServices getKieServices() {        return KieServices.Factory.get();    }
    @Bean    public KieBase kieBase() throws IOException {        return kieContainer().getKieBase();    }
    @Bean    public KieSession kieSession() throws IOException {        return kieContainer().newKieSession();    }}

3.新建实体

package com.mfc.droolstest.domain;
import lombok.Data;
@Datapublic class Member {    private String name;    private int sex;    private String drlType;}

4.resources目录新建rules目录

图片

5.编写规则文件

package rules
import com.mfc.droolstest.domain.Memberdialect  "java"
rule "man"    when        $p : Member(sex == 1 && drlType == "member")    then        System.out.println($p.getName() + "性别男");end

6.单元测试(只要正常输出,表示整合是Ok的,接下来就可以任意应用了)

package com.mfc.droolstest;
import com.mfc.droolstest.domain.Member;import org.junit.runner.RunWith;import org.junit.Test;import org.kie.api.runtime.KieSession;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)@SpringBootTest(classes = DroolsTestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)public class DroolsTestApplicationTests {
    @Autowired    private KieSession session;
    @Test    public void member() {
        Member people = new Member();        people.setName("MFC");        people.setSex(1);        people.setDrlType("member");        //插入        session.insert(people);        //执行规则        session.fireAllRules();    }

}

7.输出结果

MFC性别男
深入浅出 Drools 规则引擎 规则引擎是一种软件系统组件,设计目的是将业务决策逻辑从应用程序的主流程中解耦出来,使得业务规则可以独立于应用程序代码进行管理和变更。这种机制极大地提高了业务灵活性和可维护性,尤其是在那些业务规则频繁变动或者十分复杂的环境中。本文将介绍 Drools 的基本概念和简单引用,让你能快速上手使用 Drools 规则引擎。 阅读详情

相关推荐

开源规则引擎Drools、URule简介

最近要开始做一个风控项目,大概看了下有很多指标,于是决定调研一下开源业务规则引擎。首先我们要明白什么是规则引擎。规则引擎是一种嵌套在应用程序中的组件,实现将业务规则从应用程序代码中分离出来。规则引擎使用特定的语法编写业务规则。引入规则引擎后端带来的好处:(1)实现业务逻辑与业务规则的分离,实现业务规则的集中管理。(2)可以动态修改业务规则,从而快速响应需求变更。(3)使业务分析人员可以参与编辑、维...

天天臭乐呵 3万+

巨详细的规则引擎 Drools——小白也可食用

巨详细的规则引擎 Drools——小白也可食用

小李的便利店 2万+

AI for Everything:轻量模型+规则引擎的落地方法论

AI应用的本质不是追求大模型的智能高度,而是解决真实业务中‘经验型、模糊型、非标型’任务的可用性问题。其核心原理在于分层解耦:轻量模型(如TinyBERT)负责感知与要素抽取,可配置规则引擎(如Drools)承载业务逻辑与决策闭环,人机协同机制保障责任可追溯与风险可控。这种架构显著降低部署成本、提升响应实时性、增强业务方自主迭代能力,特别适用于政务、制造、教育、基层医疗等边缘算力受限、需求多变、强合规要求的场景。本文聚焦‘AI最小可行单元(AI-MVU)’设计,融合模型微调、规则热更新、小样本标注等实操要点

weixin_30410119的博客 561

Drools规则引擎三分钟快速入门

如果你正在为如何让你的应用程序更智能地做出业务决策而烦恼,那么你已经找到了解决方案——Drools规则引擎。在这篇通俗易懂的入门博客中,我们将一步步引导你走进Drools的世界,一个能够让业务逻辑变得更简单、更灵活、并且易于管理的世界。 我们将从Drools是什么讲起,为什么要使用它,以及它的核心组件是什么。更棒的是,我们还会通过一个实际的例子——如何为不同等级的客户自动化地应用不同的折扣,来展示如何编写你的第一个Drools规则。

qq_41266196的博客 594

CatPaw:美团实战级AI编程助手,领域知识图谱驱动的IDE增强

IDE(集成开发环境)是软件工程师的核心工作台,而现代AI编程工具正从通用代码补全向垂直领域深度协同演进。其技术原理已超越传统大模型微调,转向RAG检索增强生成与业务规则引擎融合的混合架构,核心价值在于将模糊需求精准映射为符合企业规范、可直连监控与配置中心的生产级代码。典型应用场景包括高并发预约系统中的Bloom Filter参数优化、外卖订单状态机自动编码、小程序对接联盟接口的安全URL生成等——这些任务高度依赖内部RPC框架、地理围栏逻辑和状态流转规则。CatPaw正是这一范式的代表,它不替代开发者,而

cuanwei9356的博客 766

大语言模型拟人幻觉:统计涌现与工程边界解析

大语言模型(LLM)的‘拟人化’表现,本质是海量文本统计规律在长上下文、多目标对齐与提示工程协同作用下的涌现现象,而非意识或理解的产物。其技术原理根植于Transformer架构的条件概率建模能力,通过超长上下文窗口维持对话连贯性,借助安全护栏与事实对齐机制保障输出分寸感,并依赖元指令与角色扮演实现语法层面的‘主体性’表达。这种‘统计涌现的拟人幻觉’虽不具备感受质(qualia),却已在教育启发、医疗共情、企业服务等场景中展现出显著的工程价值——它不替代人类判断,而是增强人类交互的深度与温度。理解这一边界,

weixin_33795743的博客 463

用快马AI三分钟搭建智能规则引擎:告别硬编码的业务逻辑时代

—原本要配半天Nginx和Docker,现在点个按钮就能生成线上可访问的链接。我们运营同事已经玩嗨了,自己配置的“周末特惠规则”当天就上了线。如果你也在被频繁变动的业务逻辑折磨,真的可以试试这种AI+规则引擎的黄金组合。最近在做一个电商促销系统,需要频繁调整满减、折扣这些业务规则。每次改规则都要重新写代码、发布版本,不仅效率低还容易出错。能完美解决这个问题——把业务规则从代码中抽离出来,让运营人员自己配置规则。表单数据通过API传给后端,自动转换成Drools的DRL规则文件。

SapphireOwl29的博客 808

AI项目成败关键:用户采用率五层模型与七步落地法

AI系统落地难,核心不在算法精度,而在真实业务场景中的用户采用率。从技术视角看,采用率本质是功能可用性、流程嵌入性、认知可解释性、责任归属明确性与价值可感知性五大维度的协同结果;其技术价值在于将黑盒模型转化为可信、可控、可嵌入、可度量的业务能力;典型应用场景覆盖金融风控、医疗辅助诊断、供应链预测、政务审批及零售运营等高敏感、强流程依赖领域;而提升采用率的关键路径,正在于以‘最小可行采用单元’(MVU)为起点,结合影子模式灰度发布、零学习成本交互设计与业务语言指标看板等工程实践,真正实现AI在毛细血管级业务流

weixin_30919571的博客 330

java 程序架构知识

流程类Activity 的介绍和使用(一)https://blog.youkuaiyun.com/litengit/article/details/51065442三分钟明白 Activity工作流 -- java运用https://blog.youkuaiyun.com/jiangyu1013/article/details/73250902整工作流JBPM项目实战全过程教程2---项目详细讲解http://zpche...

weixin_33795806的博客 106

逆向实战:拼多多anti-content加密参数的全链路解析与动态对抗策略

本文深入解析了拼多多anti-content加密参数的全链路生成逻辑与动态对抗策略。通过逆向工程实战,详细拆解了包含设备指纹、用户行为采集和动态密钥生成在内的12个关键环节,并提供了可持续对抗的精准模拟方案和自动化更新机制,帮助开发者有效应对拼多多的反爬体系。

weixin_30687051的博客 160

CLCD土地覆盖数据在ArcGIS中的实战应用:从导入到空间分析的完整指南

本文详细介绍了CLCD土地覆盖数据在ArcGIS中的实战应用,从数据导入到空间分析的完整流程。涵盖坐标系转换、数据质量检查、土地利用变化检测等核心技术,并分享城市扩张模拟和跨数据集融合等高级应用技巧,帮助研究者高效利用这一权威数据集进行环境监测和城市规划。

weixin_29292535的博客 594

司法数据增强:可解释AI在检察审前分流中的落地实践

司法数据增强是指在刑事司法场景中,以法律要件为锚点、以可解释性为前提,将数据科学能力嵌入办案流程的技术范式。其核心原理在于规避黑箱预测风险,通过规则引擎保障法律适用刚性,结合轻量模型处理裁量模糊地带,实现归因清晰、依据可溯、操作可控的技术价值。该模式已广泛应用于检察官审前分流决策支持、基层警情响应效能评估、社区矫正动态风险建模等关键环节,尤其在证据链完整性评分、法律要件-数据字段映射、SHAP值驱动的特征审查等实践中形成可复用方法论。本文聚焦检察官审前分流这一典型场景,详解如何让数据能力真正服务于‘证据确实

ajwqb06628的专栏 381

Unity面试题总结

Unity面试题

sinat_34014668的博客 1万+

构建可落地的AI会话应用:状态管理、意图路由与工具编排实战

AI会话应用已超越简单的大模型调用,演变为融合状态管理、业务规则与系统集成的轻量级智能服务中枢。其核心原理在于通过确定性逻辑实现意图识别与动作路由,依托分层存储保障会话状态一致性,并借助上下文感知的工具调用机制打通内部系统。技术价值体现在可控性、可审计性与合规性——支持日志留存、敏感信息脱敏、权限熔断等企业级要求。典型应用场景包括智能客服、工单协同、报销查询等需多轮交互与系统联动的业务闭环。本文聚焦真实项目中的SQLite状态管理、规则引擎路由及安全工具编排实践,直击‘能跑’到‘稳扛5000并发’的关键路径

weixin_34174105的博客 417

如何在离线的电脑上部署一个本地Deepseek(使用ollama)

例如,如果您的显卡显存为 16GB,官方推荐使用 32b 大小的 DeepSeek 模型。请根据您的硬件配置选择适合的模型版本,以获得最佳性能。首先我们需要将ollama和chatbox的安装包,Deepseek模型文件通过U盘或者光盘的形式导入到这台不能联网的电脑上。按照时间排序,找到最大的那个文件,就是gguf格式的模型,复制出来,改名为qwen2.5-coder0.5b.gguf。:基于开源模型(如 QWEN 和 LLAMA)微调,参数量从 1.5B 到 70B 不等,适合本地硬件部署。

qq_41854911的博客 1万+

程序化广告行业(23/89):深度剖析广告效果评估指标

大家好,我一直希望能和大家一起在技术领域不断探索、共同进步。在之前的文章中,我们了解了程序化广告中腾讯的业务布局和广告效果评估的基础概念,今天让我们进一步深入剖析广告效果评估的各项指标,这对理解程序化广告的运作机制至关重要

yyy173611的博客 4864

零代码免部署平台原理与实战:面向业务人员的自动化生产力工具

零代码开发和免部署是当前企业数字化转型中的两大核心诉求,其本质是将复杂技术封装为可被非技术人员理解与操作的业务语义。从技术原理看,它依赖Serverless架构实现计算、存储与网络的三层隔离,通过事件驱动模型和可视化数据映射降低使用门槛;在技术价值上,显著缩短流程上线周期、消除环境配置与运维负担;典型应用场景覆盖门店运营、行政协同、教育管理及基层治理等高频轻量业务。腾讯推出的零代码免部署平台正是这一范式的工程化落地,以5000积分体系推动成本透明化,并深度集成企业微信等办公生态,让Excel用户也能构建审批

ithome 324

YOLOv11全方位改进指南:卷积层、轻量化、注意力、损失函数等创新优化一览

YOLOv11通过八大核心模块的创新设计,在保持YOLO系列实时性的同时显著提升检测精度。本文提出的可变形卷积DCNv4多模态注意力动态解耦头等创新方案,已在工业质检、自动驾驶、无人机巡检等领域成功应用。完整项目地址预训练模型:包含从nano到x六个规格在线演示创新声明首次在YOLO系列集成DCNv4,小目标检测AP提升8.2%提出多模态混合注意力(MMAttention),兼顾通道与空间关系动态标签分配策略使训练效率提升40%

QQ_778132974的博客 1019

AI落地七条硬核事实:中小场景、非互联网行业的可验证效益

人工智能不是抽象技术概念,而是可测量、可归因、可嵌入业务流的工程实践。其核心原理在于将算法能力转化为一线人员的一个具体动作、一个明确时间、一个物理对象;技术价值体现在绕过GPU依赖、适配老旧硬件、兼容现有KPI与流程;典型应用场景覆盖制造业预测性维护、医疗影像辅助判读、政务系统无感认证等非互联网行业真实现场。尤其在数据基础薄弱、IT资源受限的中小场景中,轻量模型、规则引擎与‘小切口’设计反而带来更高生存率与投资回报。本文聚焦人工智能力如何穿透理论精度迷雾,落地为可验证指标驱动的实际效益。

Faith, Simpleness, Transparency, Innovation 383

基于Simulink的PID控制器自动驾驶仿真建模示例

本文通过Simulink仿真平台,详细讲解了基于PID控制器的自动驾驶路径跟踪实现方法。主要内容包括:1)建立自行车运动学模型作为被控对象;2)定义参考路径与横向误差计算方法;3)设计PD控制器并调试参数;4)在Simulink中搭建完整仿真模型;5)分析30km/h车速下的双移线跟踪性能。文章强调PID控制作为自动驾驶入门基础的重要性,并指出其在中低速场景下的适用性,同时给出了工程实践中的优化建议(如前视距离、抗积分饱和等)和扩展方向(如Stanley控制器)。通过完整案例,帮助读者掌握车辆运动学建模和P

xiaoheshang_123的博客 65

时序预测 | MATLAB实现NGM(1,1)多变量灰色时间序列预测

时序预测 | MATLAB实现NGM(1,1)多变量灰色时间序列预测

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 1514

认知自动化实战指南:从RPA瓶颈到自主决策闭环

认知自动化是面向真实业务场景的智能决策增强范式,它突破传统RPA在非结构化数据处理、模糊语义理解与端到端闭环执行上的局限。其核心在于融合计算机视觉(CV)、自然语言处理(NLP)与轻量级机器学习(ML),构建‘感知-理解-决策-执行’的可解释回路,并通过规则引擎强约束大模型输出,确保专业场景下的可靠性与可追溯性。技术价值体现在对扫描件识别、手写批注解析、跨系统数据不一致等高频顽疾的工程化解决,广泛应用于财务审单、合同审查、供应链异常响应与客服投诉归类等关键业务环节。本文聚焦落地本质——以业务痛点为起点,用最

congxian2511的博客 349

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

从Notebook到生产环境的机器学习落地七步法

机器学习模型在Jupyter中验证通过,仅意味着具备可运行性(Runnable),而真实业务场景要求的是可运维性(Operable)——即在高并发、数据漂移、服务故障等复杂条件下持续稳定输出。其核心原理在于打破‘模型即黑盒API’的思维定式,构建数据层、特征层与模型层协同演进的分层架构,并将监控、灰度、回滚等工程能力前置嵌入研发流程。技术价值体现在降低交付风险、提升迭代速度、保障业务连续性;典型应用场景覆盖金融风控、工业质检、电商推荐等强实时、高可靠需求领域。本文聚焦Notebook到Production的

weixin_34175509的博客 365

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

GLM-5.1深度解析:国产大模型工程化落地的关键跃迁

大语言模型(LLM)作为AI基础设施的核心组件,其实际落地效能不仅取决于通用基准分数,更依赖于长文本理解、垂直领域术语准确率、推理效率与可控生成能力等工程化指标。随着国产基座模型从‘能用’迈向‘敢用’,架构级重构、业务反哺的数据飞轮、指令感知推理引擎等关键技术路径正成为性能代际差的决定性因素。尤其在政务、金融、医疗等强合规场景中,段落级语义一致性约束、三层动态数据过滤、混合精度数字保真等设计,显著提升了合同条款抽取、政策解读、临床指南问答等任务的F1值与人工复核替代率。本文聚焦GLM-5.1所体现的国产大模

aqc802886的博客 506

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

MuleSoft与大语言模型的企业级AI编排实践

AI编排(AI Orchestration)是将大语言模型深度融入企业现有IT治理框架的技术范式,其核心在于突破提示词工程局限,实现LLM能力的可审计、可治理、可降级。它依托企业服务总线(ESB)与API管理平台,解决安全合规、系统治理与业务韧性三大刚性约束:通过内网数据脱敏与密钥托管保障GDPR/等合规要求;借助统一API目录、全链路追踪与SLA监控纳入数字资产管理体系;利用重试、熔断与规则兜底构建生产级容错能力。典型应用场景包括客服意图识别、跨系统故障自愈与个性化内容生成——其中MuleSoft作为中央

xjwolaile的博客 378
上一篇: VirtualBox中Ubuntu硬盘扩容
下一篇: (一)hadoop搭建之环境准备1
调试大师
博客等级 码龄3年 2340粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

调试大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值