首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

规则引擎Drools贷后催收业务应用

本篇文章主要介绍了规则引擎概念以及Kie和Drools关系,重点讲解了Drools规则文件编写以及匹配算法Rete原理。文章最后为大家展示了规则引擎催收系统如何使用,主要解决问题等。...Drools 引擎工作内存搜索与 DRL 文件规则相关事实。...编译算法描述了如何处理生产内存规则以生成有效决策网络。非技术术语,决策网络用于在数据通过网络传播时对其进行过滤。...创建KieSession会话链接创建AgendaFilter来制定执行某一个或某一些规则调用insert方法将事实对象fact插入工作内存调用fireAllRules方法执行规则最后调用dispose关闭连接四...最后结合催收系统给大家讲解了Drools催收系统如何使用。通过规则引擎引入让开发人员不再需要参与到规则开发与维护来,极大节约了开发成本。

1.3K20

drools规则动态化实践

四、 drools动态化实践 以上简单demo我们可以看出,规则依赖drl文件存在。而业务实际使用,需要动态对规则进行修改,无法直接使用drl文件。...示例如下: 上图中每个方块为一个缓冲池,每条连线为一条A缓冲池流向B缓冲池规则。实际场景缓冲池有数百个,绝大多数都有自己规则,这些规则构成一张复杂网络。...我们创建缓冲池页面中加入了流向规则创建环节。每个缓冲池维护自己流向规则,即为自己一根连线。...kieSession.insert(clueModel); kieSession.fireAllRules(); kieSession.dispose(); 执行规则过程可以加入各种监听器对过程各种变化进行监听...五、 总结 从上边流程我们体验了动态规则创建以及使用。动态规则满足了我们规则动态变化,规则统一管理诉求。 我也总结了在这种使用方式下drools几个优缺点。

14710
您找到你想要的搜索结果了吗?
是的
没有找到

Spring Boot + 规则引擎Drools,强!

引入依赖 我们创建一个spring boot应用程序,pom添加drools相关依赖,如下: org.drools <artifactId...创建KieFileSystem实例并配置规则引擎并从应用程序资源目录加载规则 DRL 文件。 使用KieBuilder实例来构建 drools 模块。...添加业务Model 创建一个订单对象OrderRequest,这个类字段后续回作为输入信息发送给定义drools规则,用来计算给定客户订单折扣金额。...定义drools 规则 前面的DroolsConfig类中指定drools规则目录,现在我们/src/main/resources/rules目录下添加customer-discount.drl文件...这个drl文件虽然不是java文件,但还是很容易看懂。 我们使用了一个名为orderDiscount 全局参数,可以多个规则之间共享。

1.6K20

《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载

《Drools7.0.0.Final规则引擎教程》之Springboot集成中介绍了怎样将Drools与Springboot进行集成,本篇博客介绍一下集成之后,如何实现从数据库读取规则并重新加载规则简单...,其中需要注意是对KieContainer和KieSession初始化之后都将其设置到KieUtils类。...KieUtils KieUtils类存储了对应静态方法和静态属性,供其他使用地方获取和更新。...= kieSession; } } ReloadDroolsRules 提供了reload规则方法,也是本篇博客重点之一,其中数据库读取规则代码直接用字符串代替,读者可自行进行替换为数据库操作...操作步骤如下:启动项目访问http://localhost:8080/test/address 会首先触发默认加载address.drl规则。

2.6K70

【猫头虎科技角】深入Drools:规则引擎艺术与实践

【猫头虎科技角】深入Drools:规则引擎艺术与实践 摘要 今天高速发展软件行业,Drools作为一个高效、灵活业务规则管理系统(BRMS),提供了一个桥梁,将复杂业务逻辑与应用程序代码分离...如何使用Drools? 安装和配置 首先,确保你开发环境安装了Java JDK。然后,你可以通过Maven或Gradle来添加Drools依赖到你项目中。...Drools 集成Drools通常涉及到创建一个KieSession,它是一个可以向其中插入事实(Fact)和触发规则执行会话。...A:是的,Drools支持在运行时更新规则,这为业务规则动态调整提供了可能。 Q:Drools性能方面如何?...参考资料 官方Drools文档 Java规则引擎开发实战 表格总结 核心知识点 说明 Drools基本概念 一种基于Java业务规则管理系统 规则定义 使用DRL语言进行规则定义 应用程序集成 通过KieSession

41410

【Drools二】打工人学习Drools基础语法

后面将规则文件放入该文件夹。 1. 规则文件 1.1 构成 使用Drools时非常重要一个工作就是编写规则文件,通常规则文件后缀为.drl。...drl是Drools Rule Language缩写。规则文件编写具体规则内容。...更新数据时需要注意防止发生死循环。后面会讲到如何避免死循环即设置no-loop true 3.2 insert方法 insert方法作用是向工作内存插入数据,并让相关规则重新匹配。...(); kieSession.dispose(); 通过控制台输出可以发现,只有第一个规则触发了,因为第一个规则中将工作内存数据删除了导致第二个规则并没有匹配成功。...注意:上面的代码需要设置日期格式,否则我们规则文件日期格式和默认日期格式不匹配程序会报错。

1.9K20

规则引擎之drools入门

resources 目录下创建文件 helloworld.drl 文件,内容如下: package helloworld; rule "HelloWorld" when eval...规则名是规则唯一标识,所以规则编写过程需要保证它是不重复。规则条件(LHS)是按照 DRL 语言编写,条件eval(true)表示永远为真,即该条规则总会获得执行。.../index.html#d0e4235 Drools 原理 DRL 解释执行流程 Drools 规则是 Java 应用程序上运行,其要执行步骤顺序由代码确定。...如上图所示,每个规则条件分为小块,树结构连接和重用。每次将数据添加到规则引擎时,它将在与此类似的树中进行求值,并到达一个动作节点,该节点处,它们将被标记为准备执行特定规则数据。...当我们到达一个事实(Fact)与规则相匹配节点时,规则评估会将规则操作与触发数据添加到一个叫作议程(Agenda)组件,如果同一个事实(Fact)与多个规则相匹配,就认为这些规则是冲突,议程(Agenda

3.6K30

小明历险记:规则引擎Drools教程一

规则引擎由推理引擎发展而来,是一种嵌入应用程序组件,实现了将业务决策应用程序代码中分离出来,并使用预定义语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。...Drools帮助下,您应用程序变得非常可扩展。如果频繁更改请求,可以添加新规则,而无需修改现有规则。 知识集中化 通过使用规则,您创建一个可执行知识库。这是商业政策一个真理点。...Drools通过事实、规则和模式相互组合来完成工作,Drools开源规则引擎中使用率最广,但是国内企业使用偏少,保险、支付行业使用稍多。...解决小明烦恼 Drools有专门规则语法drl,就是专门描述活动规则是如何执行,按照小明需求规则如下: Point-rules.drl 文件内容 package rules import com.neo.drools.entity.Order...这里需要有一个配置文件告诉代码规则文件drl在哪里,Drools这个文件就是kmodule.xml,放置到resources/META-INF目录下。 kmodule.xml内容如下: <?

1K30

这种场景你还写ifelse你跟孩子坐一桌去吧

只有合理评估、铺垫、架设,才会不断满足业务需求、产品形态变化。否则往后路越来越难! 二、场景 对于上面所提到这种场景,我们实际开发是经常会遇到。...userParenting,英文逗号隔开是and条件,相当你且。当不完全是,因为在后续处理,逗号处理逻辑drools是有优化。...KieServices获取KieContainer,用于给定KieModule所有kiebase容器。 设置FACT对象,其实就是你决策对象一些条件值。...索引方法 索引方法是指对 Rete 网络节点建立当前节点对后继 索引,事实断言时可以通过索引快速找到对应后继节 点而无需逐个查找。 2....带时间信息事件处理 Rete 通过事实来表达当前状态,但是很多应用包括一些事件流时间,事件并行执行起到关键作用。所以需要 Rete 算法对这些信息进行处理。 3.

71710

这种场景你还写ifelse你跟孩子坐一桌去吧

初始化方法,构建```KieServices.Factory.get();```,这个过程是比较耗费资源,实际业务使用也不会频繁构建。 2....```KieServices```获取```KieContainer```,用于给定KieModule所有kiebase容器。 3. 设置FACT对象,其实就是你决策对象一些条件值。...获取kmodule.xml配置名称为all-rulessession,默认为有状态。 2. 设置决策对象```kieSession.insert(policy);``` 3....索引方法 索引方法是指对 Rete 网络节点建立当前节点对后继 索引,事实断言时可以通过索引快速找到对应后继节 点而无需逐个查找。 2....带时间信息事件处理 Rete 通过事实来表达当前状态,但是很多应用包括一些事件流时间,事件并行执行起到关键作用。所以需要 Rete 算法对这些信息进行处理。 3.

89850

规则引擎入门到实践

专家系统与规则引擎 近来,低代码平台概念被炒得火热,事实上这并不是一个新生概念,早在上世纪 60 年代,就已经诞生了通过编写简单伪代码、表达式实现复杂逻辑推理程序,这就是“专家系统”。...设计理念上来看,专家系统与如今低代码系统初衷是一致,那就是用程序加上学习成本很低逻辑代码实现对专家替代。...通过将决策逻辑编写为更接近现实语言规则,存储在数据库或程序内存,需要执行时取出规则并解析,从而实现小明让产品编写决策逻辑,动态修改诉求。...Rete 算法最初是由卡内基梅隆大学 Charles L.Forgy 博士 1974 年发表论文中所阐述,他核心并不复杂。...你可以仔细思考一下,无论是多么复杂推理逻辑,都可以用不同图将推理过程绘制出来,只是分支多少可能有所区别,事实上,这就是所谓“决策网络”。

1.3K10

【Drools三】打工人学习Drools高级语法

,它可以让应用程序对象规则文件能够被访问。...语法结构为:global 对象类型 对象名称 使用global定义全局变量时有两点需要注意: 1、如果对象类型为包装类型时,一个规则改变了global值,那么只针对当前规则有效,对其他规则...(); kieSession.dispose(); 3.function函数 function关键字用于规则文件定义函数,就相当于java类方法一样。...可以规则体调用定义函数。使用函数好处是可以将业务逻辑集中放置一个地方,根据需要可以对函数进行修改。...("小明"); kieSession.insert(student); kieSession.fireAllRules(); kieSession.dispose(); 4.LHS加强 前面我们已经知道了规则体

2.4K10

利用规则引擎搭建任务编排引擎

引言 上一篇文章,我们介绍了规则引擎基本算法与使用: 规则引擎入门到实践 我们看到,规则引擎基础算法 Rete 算法其实是基于有向无环图一种算法。...事实上,实际工作生活,并不是只有我们逻辑推理是由有向无环图构成,复杂任务编排执行也可以被改造为有向无环图形式。 2....但这个例子仍然是非常基础实际场景,你可能还是会遇到以下这些问题: 4.1 任务重做 实际场景,任务某个节点需要重做是经常让人很头疼一件事,因为对于线上场景,任务经常是可重入,否则重复回调等常见情况就会造成你任务出现问题...4.2 性能 性能上来说,规则文件解析与实例化是非常耗时,因此,提前 build,例如在项目启动时就完成所有规则实例化,然后将 kieSession 放在内存,这样实际执行过程,性能会有明显提升...4.3 并发执行 显然,生产环境要比上述 demo 更加复杂,最基本一点,线上环境,各个任务不会都在同一台机器上执行,同时,接收到异步回调节点也会分布不同服务器上,虽然通过流程编排,解决了业务代码竞争条件

2K10

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

一、Drools引擎简介 1、基础简介 Drools是一个基于java规则引擎,开源,可以将复杂多变规则从硬编码解放出来,以规则脚本形式存放在文件,使得规则变更不需要修正代码重启机器就可以立即在线上环境生效...具有易于访问企业策略、易于调整以及易于管理特点,作为开源业务规则引擎,符合业内标准,速度快、效率高。...2、规则语法 (1)、演示drl文件格式 package droolRule ; import org.slf4j.Logger import org.slf4j.LoggerFactory ; dialect...、xml文件,也可以Java代码块硬编码; · package 规则文件,package是必须定义,必须放在规则文件第一行; · import 规则文件使用到外部变量,可以是一个类,也可以是类访问静态方法...) ; kieSession.fireAllRules() ; } } 这样,完整案例就结束了。

1.1K20

Drools规则引擎入门指南(二)

本篇博客主要讲解Drools常用属性以及函数 属性 首先我们resources\rules文件夹下创建一个Property.drl,还有一个DroolsApplicationPropertyTests...1. salience优先级 salience 属性值默认为0,它值越大执行优先级就越高,看如下代码执行时候就会先执行salience2 rule "salience2...testEnabled() { kieSession.fireAllRules(new RuleNameEndsWithAgendaFilter("enabled")); } 函数...接着我们resources\rules文件夹下创建一个Function.drl,还有一个DroolsApplicationFunctionTests Drools中常用函数分别为insert、update...test1规则没有判断条件,所以直接被执行,执行过程它生成了一个对象插入到工作内存,此对象规则又恰好与test2规则匹配,所以紧接着test2执行,test2执行时更新了user对象,更新后对象又匹配了

85600

《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法

insert(newSomething()):创建一个新对象放置到working memory。...insertLogical(newSomething()):功能类似于insert,但当创建对象不再被引用时,将会被销毁。 delete(handle):working memory删除对象。...其实这些宏函数是KnowledgeHelper接口中方法对应快捷操作,通过它们可以规则文件访问Working Memory数据。...insert函数 insert作用与Java 类当中调用KieSessioninsert方法效果一样,都是将Fact对象插入到当前Working Memory当中,基本用法格式如下: insert...查看KnowledgeHelper接口中update方法可以发现,update函数有多种参数组合使用方法。实际使用更多会传入FACT对象来进行更新操作。

1.3K80
领券