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

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

技术组成:Drools是一个业务规则管理系统,具有基于前向链和后向链推理的规则引擎,允许快速可靠地评估业务规则和复杂的事件处理。...UberFire是一个基于 Eclipse 的富客户端平台web框架。2.1.2 Drools介绍Drools 的基本功能是将传入的数据或事实与规则的条件进行匹配,并确定是否以及如何执行规则。...当用户在 Drools 中添加或更新规则相关信息时,该信息会以一个或多个事实的形式插入 Drools 引擎的工作内存中。Drools 引擎将这些事实与存储在生产内存中的规则条件进行模式匹配。...存在问题:存在状态重复保存的问题,匹配过多个模式的事实要同时保存在这些模式的节点缓存中,将占用较多空间并影响匹配效率。...在Drools早期版本中使用的匹配算法是Rete,从6.x开始引入了phreak算法来解决Rete带来的问题。

1.5K21

【Drools】值得打工人学习的规则引擎Drools<一>

Drools介绍 drools是一款由JBoss组织提供的基于Java语言开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存放在文件或特定的存储介质中(例如存放在数据库中...规则引擎由以下三部分构成: Working Memory:工作内存,drools规则引擎会从Working Memory中获取数据并和规则文件中定义的规则进行模式匹配,所以我们开发的应用程序只需要将我们的数据插入到...)又包括: Pattern Matcher(匹配器): 具体匹配哪一个规则,由这个完成,将Rule Base中的所有规则与Working Memory中的Fact对象进行模式匹配,匹配成功的规则将被激活并放入...-- 可以存在多个标签; name属性值可以随意设置; packages:对应*.drl文件的resources路径 ksession...标签必须设置;一个或者多个标签,name属性值唯一 --> <ksession

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

    《Drools 7 规则引擎教程》番外篇-规则条件匹配机制

    问题场景 QQ技术群(593177274)中有同学遇到这一个问题场景:在多条规则(比如3条)的when中使用了一个相同的静态方法,并在静态方法中打印相关的日志信息。...同时,使用了AgendaFilter对规则进行了过滤。也就是说只包含部分规则(比如匹配一条规则的名字)的使用。...从整体上来说节省了时间,但是对于只使用单个规则的session来说可能会有一定的性能瓶颈。...这个问题在drools5.x版本中是恶汉模式,急切的创建匹配,在drools6.x版本中已经改成懒汉模式,只有在你尝试去匹配规则时才会做约束条件的判断匹配工作。...那么,使用agenda-group或其他group或enabled属性控制,是否能达到分组的效果。然而,答案是否定的。这些属性的生效时机依旧在约束条件判断之后。

    1.2K80

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

    规则引擎 相关介绍 规则引擎起源于基于规则的专家系统,而基于规则的专家系统又是专家系统的其中一个分支。...规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。...当Rete算法进行事实的断言时,包含三个阶段:匹配、选择和执行,称做 match-select-act cycle。...注意区分drl文件中的package与此处的package不一定相同,多个包用逗号分隔。默认情况下会扫描 resources目录下所有(包含子目录)规则文件。...kbase 下面可以有一个或多个 ksession,ksession 的 name 属性必须设置,且必须唯一。

    1.1K30

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

    2.2 Pattern模式匹配 Drools中的匹配器可以将Rule Base中的所有规则与Working Memory中的Fact对象进行模式匹配,那么我们就需要在规则体的LHS部分定义规则并进行模式匹配...对象的某个属性是否在一个或多个集合中 not memberOf 判断一个Fact对象的某个属性是否不在一个或多个集合中 matches 判断一个Fact对象的属性是否与提供的标准的Java正则表达式进行匹配...Drools提供了一些方法可以用来操作工作内存中的数据,**操作完成后规则引擎会重新进行相关规则的匹配,**原来没有匹配成功的规则在我们修改数据完成后有可能就会匹配成功了。...同一个分组中的多个规则如果都能够匹配成功,具体哪一个最终能够被触发可以通过salience属性确定。...与activation-group不同的是,activation-group定义的分组中只能够有一个规则可以被触发,而agenda-group分组中的多个规则都可以被触发。

    2.1K20

    调研技术组件模板V1 —— 以 Drools 为例

    Drools相关概念 事实(Fact):对象之间及对象属性之间的关系 规则(rule):是由条件和结论构成的推理语句,一般表示为if…Then。一个规则的if部分称为LHS,then部分称为RHS。...规则引擎会基于数据对这些规则进行计算,找出匹配的规则。这样,当规则需要修改时,无需进行代码级的修改,只需要修改对应的规则,可以有效减少代码的开发量和维护量。 这个组件对比竞品有什么优势和劣势?...Drools规则引擎的结构示意图: 在 Drools 中,规则被存 放在 Production Memory(规则库)中,推理机要匹配的 facts(事实)被存在 Working Memory(工作内存...当Rete算法进行事实的断言时,包含三个阶段:匹配、选择和执行,称做 match-select-act cycle。...从Drools规则引擎的使用模版来看,输入、输出和判断三个中,判断是变化的,而输入和输出是基本固定的,所以适用的场合可以分为下面几种: 输入和输出的参数不变,即:规则文件接收固定的参数,产生固定的输出。

    80610

    规则引擎-BRMS在企业开发中的应用

    业务规则的理论基础是:设置一个或多个条件,当满足这些条件时会触发一个或多个操作。 企业为适应市场的多变性,它的业务逻辑也必然是多变的。理想情况下,业务逻辑的改变应该能够实时的反映在企业信息系统中。...”的概念 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。...,使复杂的业务规则实现变得的简单 基于DROOLS打造自有BRMS解决方案 我在我自己公司采用的是JBOSS Drools来实现的大规模生产环境下的业务规则的应用场景的。...打造全方位的面向SOA2.0解决方案 因此基于上述需求,我在我们公司内部(夸客金融)对于DROOLS进行了二次封装与开发,打造出了一个可用于在生产环境大规模开发和布署的“业务规则引擎”。 ?...规则引擎在反欺诈场景中的应用 ? ? 黑规则:甄别嫌疑订单 白规则:订单解除嫌疑 商家管理处罚系统,对违规商家处罚处理。 搜索排名,降低违规商家搜索排名权重。

    5.5K81

    Google Aviator——轻量级 Java 表达式引擎实战

    表达式引擎技术及比较Drools 简介Drools(JBoss Rules )是一个开源业务规则引擎,符合业内标准,速度快、效率高。...目前,Drools提供了三种语义模块Python模块Java模块Groovy模块Drools的规则是写在drl文件中。...IKExpression 简介IK Expression 是一个开源的、可扩展的, 基于java 语言开发的一个超轻量级的公式化语言解析执行工具包。...是一个高性能的规则引擎,但是设计的使用场景和在本次测试中的场景并不太一样,Drools的目标是一个复杂对象比如有上百上千的属性,怎么快速匹配规则,而不是简单对象重复匹配规则,因此在这次测试中结果垫底。...对应于eSOC这样需要反复执行的表达式,Groovy是一种非常好的选择。

    5.1K30

    规则引擎之drools入门

    when 满足什么样的条件 then 最终结果 业务规则都是基于这种声明式的编程范例,而条件只是作为过滤器,只要数据被引入到符合条件的规则引擎,就可以确定需要执行的规则或规则组。...为了实现这一点,Drools 规则引擎将业务规则转换成执行树,如下图所示: ? 如上图所示,每个规则条件分为小块,在树结构中连接和重用。...规则引擎工作方式 Drools 规则引擎基于 ReteOO 算法(对面向对象系统的Rete算法进行了增强和优化的实现),它将事实(Fact)与规则进行匹配,以推断相应的规则结果,这个过程称之为模式匹配...当我们到达一个事实(Fact)与规则相匹配的节点时,规则评估会将规则操作与触发数据添加到一个叫作议程(Agenda)的组件中,如果同一个事实(Fact)与多个规则相匹配,就认为这些规则是冲突的,议程(Agenda...一般来说,规则引擎适用的项目都具有以下一个或多个特征: 存在一个非常复杂的场景,即使对于商业专家也难以完全定义 没有已知或定义明确的算法解决方案 有不稳定需求,需要经常更新 需要快速做出决策,通常是基于部分数据量

    4.8K40

    《Drools6.4 中文文档》第1章1.3(完)

    另一种选择是使用JBoss IDE,所有需要的插件已经预先打包,也可以选择其他的工具来分离规则。你可以选择安装规则从JBoss IDE附带的“包”。...如果你想创建一个新的运行时,它基于包含在插件自身中的最新Drools项目JAR包,你也可以轻易的做到。...可以在任何时候打开项目属性(右击项目选择Properties)修改Drools项目的运行时配置,选择Drools分类,如下图。...1.3.2 从源码构建 1.3.2.1 获得源码 每个Maven artifact的源码都可以通过Jboss Maven资源库中的源码jar包获得。同样的jar包也可以从下载的zip文件中获得。...但是,如果你希望从源码进行构建,强烈建议从我们的源码管理中获得源码。 Drools和jBPM使用Git来版本管理。

    1.5K40

    drools规则动态化实践

    复杂规则,需要动态生成规则,easycode目前还不支持。drools从流行度及活跃度考虑,都比easy-rule强,所以选择drools。...四、 drools动态化实践 从以上简单demo中我们可以看出,规则依赖drl文件存在。而业务实际使用中,需要动态对规则进行修改,无法直接使用drl文件。...api方式,drools的api方式复杂,使用需要对drl文件有足够的了解。 最后介绍以下drools在项目中的实际使用方式 4.1 配置规则 我们的业务场景可以理解为多个缓冲池构成的一个网状结构。...示例如下: 上图中每个方块为一个缓冲池,每条连线为一条从A缓冲池流向B缓冲池的规则。实际场景中缓冲池有数百个,绝大多数都有自己的规则,这些规则构成一张复杂的网络。...基于业务诉求,缓冲池的流向规则需要经常变动,我们需要在业务中能动态改变这些连线的条件,或者改变连线。

    54210

    规则引擎深度对比,LiteFlow vs Drools!

    (其中Drools基于7.6.0版本,LiteFlow基于2.9.0版本) 虽然题主就是开源项目LiteFlow的作者,但是我这几天也深入了解了下Drools,尽量从很客观的角度尝试去分析。...规则引擎通常是嵌入在应用程序组件中的,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。...Drools的规则表达式为Java量身定制的基于Charles Forgy的RETE算法的规则引擎的实现。...在触发规则时候,会自动判断该去执行哪一段rule,如果满足多个条件,是可以触发多个规则的then的。 LiteFlow编排表达式简单易懂,底层用EL表达式语言包装而成。...侵入性耦合比较 Drools需要在java代码里需要用到规则的地方用KSession对象去匹配规则进行调用。规则和java是分离的。在调用层面耦合了KSession调用对象。

    7.4K42

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

    这还算少的! ## 四、规则引擎Drools 关于规则引擎简单说呢就是,将你业务逻辑中那些行为规则流程变化的部分,分离出来。交给单独的规则引擎进行处理。...名称需要保证唯一 - kbase下面可以有一个或多个ksession,ksession的name属性必须设置,且必须唯一 - kbase的default属性,表示当前KieBase是不是默认的,如果是默认的则不用名称就可以查找到该...**test_drools() 执行规则** 1. 获取kmodule.xml中配置中名称为all-rules的session,默认为有状态的。 2....Rete 算法的初衷是:利用规则之间各个域的公用部分减少规则存储,同时保存匹配过程的临时结果以加快匹配速度。...规则前件的重排序 规则前件顺序是指规则体哦啊见中的各个约束的排列顺序,它决定了条件链接操作的执行顺序,影响中间结果的大小,是决定规则匹配效率的关键因素。

    94350

    规则引擎drools的rete算法实现原理和事实匹配过程

    Drools是一款基于Java的开源规则引擎,实现了将业务决策从应用程序中分离出来。...匹配过程: (1)、匹配过程中事实在网络节点中的流转顺序为A-->B-->C-->D-->E-->F-->G-->H-->I--->规则匹配通过 (2)、从working-Memory中拿出一个待匹配的...4、drools源码,一个事实匹配规则过程的原理介绍 一个Fact通过Session添加到规则网络中,如何进行规则匹配的大致过程如下: (1)、通过根结点对象从EntryPointNode的Map集合中找到相应的...; (3)、OjectTypeNode对象的sink属性引用着这个fact事实的规则网络; (4)、从sink属性中的链表中拿出一个alphaNode进行匹配,递归遍历所有alphaNode的子节点(sink...==>(向右(nextRightTupleSinkNode属性)开始试图匹配另一条规则)。

    9.8K31

    以直播平台监控用户弹幕为例详解 Flink CEP

    Flink CEP Flink CEP 是什么 Flink CEP是一个基于Flink的复杂事件处理库,可以从多个数据流中发现复杂事件,识别有意义的事件(例如机会或者威胁),并尽快的做出响应,而不是需要等待几天或则几个月相当长的时间...单个模式 一个模式既可以是单例的,也可以是循环的。单例模式接受单个事件,循环模式可以接受多个事件。 3. 模式示例: 有如下模式:a b+ c?...每个模式可以带有一个或多个条件,这些条件是基于事件接收进行定义的。或者说,每个模式通过一个或多个条件来匹配和接收事件。...NFA的特点:在NFA中,给定当前状态,可能有多个下一个状态。可以随机选择下一个状态,也可以并行(同时)选择下一个状态。输入符号可以为空。...Drools Drools 是一款使用 Java 编写的开源规则引擎,通常用来解决业务代码与业务规则的分离,它内置的 Drools Fusion 模块也提供 CEP 的功能。

    1.6K10

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

    因为项目是基于SpringCloud的架构,所以此次学习使用了SpringBoot2.0版本结合Drools7.14.0.Final版本。...1.创建规则文件 Drools的规则文件是以*.drl结尾的文件,我们来看一个最简单的规则文件中都是包含什么。...rule,可以理解为给这个规则起的一个名字,一个规则文件中可以包含多个rule。 when,when下面可以放置一些条件判断的表达式以及定义一些变量什么的。...所以说如果我们希望可以一次批量匹配多个规则的话可以通过继承AgendaFilter重写accept方法哦 2. 常用运算符 1....连接符 Drools中存在的三种连接符,上方的代码中我们已经使用过一个了,那就$u:User(name==“张三”,age==18)中的逗号,这里的逗号其实就是and的意思。

    1.6K00

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

    这还算少的! 四、规则引擎Drools 关于规则引擎简单说呢就是,将你业务逻辑中那些行为规则流程变化的部分,分离出来。交给单独的规则引擎进行处理。...kbase下面可以有一个或多个ksession,ksession的name属性必须设置,且必须唯一 kbase的default属性,表示当前KieBase是不是默认的,如果是默认的则不用名称就可以查找到该...test_drools() 执行规则 获取kmodule.xml中配置中名称为all-rules的session,默认为有状态的。...Rete 算法的初衷是:利用规则之间各个域的公用部分减少规则存储,同时保存匹配过程的临时结果以加快匹配速度。...规则前件的重排序 规则前件顺序是指规则体哦啊见中的各个约束的排列顺序,它决定了条件链接操作的执行顺序,影响中间结果的大小,是决定规则匹配效率的关键因素。

    75110

    从零搭建精准运营系统

    Sink的作用是从kafka读数据写到目标系统,这里自己研发一套组件,根据配置的规则将数据格式化再同步到ES。...规则引擎 在设计规则引擎前,我们对业界已有的规则引擎,主要包括Esper, Drools, Flink CEP,进行了初步调研。...Drools Fusion Drools开始于规则引擎,后引入Drools Fusion模块提供CEP的功能。 优势: 功能较为完善,具有如系统监控、操作平台等功能。...(n天甚至n个月,比如放款一个月后如果没产生还款事件就要发消息) 动态更新规则,而且要可视化(无论用哪个规则引擎都需要包装,需要考虑二次开发成本) 除了匹配事件,还需要匹配用户状态 最终我们选择自己根据业务需要...redis的延迟队列实现 用户筛选处理器:将筛选规则翻译为ES查询语句到ES查询用户数据,可以是批量的和单个用户的 幂等处理器:对数据做幂等处理,防止重复消费 变量渲染处理器:对推送内容做处理 推送适配器

    1.8K31

    Drools规则引擎-如果Fact对象参数为null如何处理

    从两个维度来讲: 减少耦合 如果想真正的减少耦合,那么可将三个维度的进行拆分,不放在一个fact对象中传入,而是三个规则,每个规则都计算对应的值,最终将结果逐个相加。...比如在when中我们只获取类型为企业的fact对象,而不具体限定条件。这样只要是企业对象进入,都会被规则匹配,而具体的分值计算放在then部分进行处理。...其他方法 那么,针对那位同学的问题,他想通过在插入fact对象之前进行校验排查,这其实是一种选择,选择默认属性为null的值的得分为0。...针对他的这项疑惑,本人在交流群中给出的解答为: 不传这个值或忽略这个值,其实就是对这个值的一种处理。同样的,在规则中也可以这样处理,而且更灵活的处理。...相关技术视频 CSDN学院:《Drools7规则引擎进阶教程》 CSDN学院:《Drools7规则引擎入门教程》 CSDN学院:《Drools7系列优惠套餐》 原文链接:http://www.choupangxia.com

    77610
    领券