drools指北——初识

329 阅读3分钟

drools指北——规则使用

Drools是什么

1 定义

Drols是一个基于Charles Forgy's的Rete算法的,易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。

业务分析师或审核人员可以利用它轻松查看业务规则,检验已编码的规则是否执行了所需的业务规则。

2 核心组成部分

image.png

2.1 Rule Engine 规则引擎

规则引擎是基于AI的推理引擎,承载核心计算逻辑,是Drools的大脑。

规则引擎使用模式匹配的方式进行计算,这种模式匹配是基于 Rete 算法的,并且效率非常高。

规则引擎将传入的数据或事实对象(Fact)与编写好的业务规则进行比较,从而得到匹配规则的结果。

2.2 Rules 规则

Drools中所有业务逻辑的表现形式为规则,规则是声明式的、并且具备一定的可读性,规则通常存储在规则库中。

业务规则以“if-then”结构为框架,当具备了if的条件,则执行then的脚本。

编写规则的语法如下:

when

    conditions

then

    actions

2.3 Fact 事实对象

事实对象是规则引擎接收的数据,基于事实对象执行模式匹配。

我们可以将事实存储在工作内存中,可以通过在规则引擎中执行规则来添加、修改和删除事实。

2.4 Production Memory 生产内存

生产内存用于存储业务规则,在执行规则进行计算时(会话期间),生产内存不会受到干扰。

在会话期间,无法在生产内存中添加或删除任何规则。

会话结束后,生产内存中允许添加或删除规则。

2.5 Working Memory 工作内存

工作内存用于存储事实对象,工作内存中允许添加、修改和删除事实。

所有规则的计算,正是伴随着对事实对象的查询和变更。

2.6 Agenda 议程

议程记录所有规则的优先级顺序,确保规则引擎以正确的顺序执行业务规则。

议程有一套对于规则的冲突解决策略。

3 执行过程

image.png

举个实际案例:

我们有一些订单完成之后的促销活动,比如每消费一元赠送客户一个积分, 这个促销活动就可以被编写为规则,存储在Drools的生产内存中。当一笔订单产生时,就会作为事实对象被传入Drools工作内存中,并且开启一次会话,规则引擎通过加载生产内存中的规则(原理上是执行了Rete算法)匹配到了符合WHEN条件的规则,并按照议程指定的优先级,执行被命中的规则THEN的部分。

4 核心优势

image.png

  • 业务规则与代码解耦,减少了硬编码,增加了业务弹性。
  • 提供领域语言(自然语言),更利于业务对齐。
  • 提高了复杂逻辑的可维护性。
  • 具有良好的可扩展性,可以在不停止服务的状态下发布、修改规则。

5 适用场景

  • 风控系统 —— 风险贷款评估
  • 反欺诈系统 —— 征信验证
  • 财务决策系统 —— 财务计算
  • 促销平台系统 —— 满减、打折、加价购