Drools 7.67.0 + DMN 1.2 + SpringBoot3 构建规则引擎

发布时间 2023-08-10 23:19:10作者: Brian_Huang

背景:基于项目工作的需要,要建立一个规则引擎的应用集中式的管理业务中的规则流程等,所以先探索一个MVP

1.什么是规则引擎, 同类竟品?

规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模板编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。需要注意的的规则引擎并不是一个具体的技术框架,而是指的一类系统,即业务规则管理系统。规则引擎实现了将业务决策从应用程序代码中分离出来,接收数据输入,解释业务规则,并根据业务规则做出业务决策。规则引擎其实就是一个输入输出平台。

规则引擎 描述 是否开源
Drools Drools 是用 Java 语言编写的开放源码规则引擎,使用 Rete 算法对所编写的规则求值。Drools 允许使用声明方式表达业务逻辑。可以使用非 XML 的本地语言编写规则,从而便于学习和理解。并且,还可以将 Java 代码直接嵌入到规则文件中,这令 Drools 的学习更加吸引人 开源软件
Jess  Jess 是完全由 Java 语言编写的规则引擎和脚本环境,由加利福尼亚州利弗莫尔市Sandia国家实验室的 Ernest Friedman-Hill 编写。使用 Jess,您可以使用声明式规则形式提供的知识来构建具有 “推理” 能力的 Java 软件。Jess 体积小,重量轻,并且是最快的规则引擎之一。它强大的脚本语言使您可以访问所有 Java API。AI领域
开源软件
Visual Rules Visual Rules又称旗正商业规则定制平台,是一个基于规则引擎实现的可视化定制业务逻辑的商业规则管理系统,同时又具有快速开发java软件项目的功能 商业软件
ILog JRules ILOG JRules 本身是一个灵活的 BRMS (Business Rule Management System),涵盖了业务规则的整个生命周期。ILOG JRules 内的规则引擎是 J2EE 应用程序,可以部署到任何 J2EE 项目。另外,ILOG (已被 IBM 收购)能轻松集成到 IDE 环境中,可以利用 Java 控件调用规则引擎 开源软件
LiteFlow liteFlow 是一个轻量,快速的组件式流程引擎框架 / 规则引擎,组件编排,组件复用,帮助解耦业务代码,让每一个业务片段都是一个优雅的组件,并支持热加载规则配置,实现即时修改
开源软件

2.Drools规则引擎

2.1 规则引擎构成

Drools规则引擎由以下三部分构成

1.Working Memory(工作内存)
2.Rule Base(规则库)
3.Inference Engine(推理引擎)

其中Inference Engine(推理引擎)又包括

1.Pattern Matcher(匹配器)
2.Agenda(议程)
3.Execution Engine(执行引擎) 

 2.2 基于上图的各组件的说明

1.Working Memory:工作内存,Drools规则引擎会从Working Memory中获取数据并和规则文件中定义的规则进行模式匹配,
所以我们开发的应用程序只需要将我们的数据插入到Working Memory中即可。
2.Fact:事实,是指在Drools规则应用当中,将一个普通的javaBean插入到Working Memory后的对象就是Fact对象。
Fact对象是我们的应用和规则引擎进行交互的桥梁或通道。
3.Rule Base:规则库,我们在规则文件中定义的规则都会被加载到规则库中。 4.Pattern Matcher:匹配器,将Rule Base中的所有规则与Working Memory中的Fact对象进行模式匹配,匹配成功则被激活并放入Agenda中。 5.Agenda:议程,用于存放通过匹配器进行模式匹配后被激活的规则。 6.Execution Engine:执行引擎,执行Agenda中被激活的规则。

2.3 KIE介绍

在操作Drools时经常使用的API以及他们之间的关系如下图

 

通过上面的API可以发现,大部分类都是以Kie开头。Kie全称为Knowledge is Everything,即“只是就是一切”的缩写,是Jboss一系列项目的总称。如下图所示,Kie的主要模块有OptaPlanner、Drools、UberFire、jBPM。可以看到,Drools是整个KIE项目中的一个组件,Drools中还包括一个Drools-WB的模块,他是一个可视化的规则编辑器。

3.什么是DMN?

DMN全称Decision Model and Notation(决策模型和符号、决策模型和表示法),是一种用于表示业务决策和规则的规范,旨在帮助参与决策的人都能简单快速理解决策过程。DMN是由OMG(Object Management Group,对象管理组织)管理的一种规范,该组织下比较知名的还有UML等。

 

3.1 DMN的关键组件和DMN的规则表达式FEEL

可参红帽毛官方的指导文档

https://access.redhat.com/documentation/zh-cn/red_hat_process_automation_manager/7.9/html/developing_decision_services_in_red_hat_process_automation_manager/dmn-con_dmn-models

DMN编辑插件

https://docs.jboss.org/kogito/release/latest/html_single/#proc-kogito-standalone-editors_kogito-creating-running

4.SpringBoot3集成Drools

项目地址:https://github.com/showkawa/springb/tree/main/src/main/java/com/kawa/springb

5.DMN在AI领域的可发挥的作用?

在AI领域,DMN可以和机器学习、专家系统等技术结合使用。例如,一个复杂的AI系统可能会使用机器学习模型来处理大量的输入数据,并生成一些初步的结果。然后,
这些结果可以被输入到一个DMN决策模型中,以便应用更高级别的业务规则和逻辑。此外,DMN也可以用于解释AI决策。由于DMN模型可以被人类理解,因此它们可以用来解释
AI系统是如何根据输入数据做出决策的。这对于提高AI系统的透明度和可信度非常重要。然而,虽然DMN在某些情况下可以和AI技术结合使用,但它并不是AI技术本身。
DMN是一种决策建模工具,而AI是一种用于处理和理解数据的技术。 DMN(Decision Model and Notation)在AI领域的应用还可以包括以下几个方面:
1. 自动化决策制定:AI系统经常需要做出复杂的决策。通过使用DMN,我们可以创建详细、精确且可执行的业务规则模型来指导这些决策过程。这种方式不仅提高了效率,
也使得结果更加可预测和一致。
3. 解释性AI (Explainable AI): DMN 可以作为一个工具帮助人们理解和信任 AI 决策过程。例如,在金融服务中,如果一个贷款申请被拒绝, 使用 DMN
的逻辑模型能够清晰地展示哪条规则或条件导致了该结果, 这样就增强了系统对用户而言的透明度.
2. 集成与协同工作: 在许多情景下, 机器学习算法生成预测值是第一步, 然后再结合业务规则进行最后决定输出(如风险评估、审批流程等). 这时候就需要把ML和
Rule Engine 结合起来共同工作.
3. 优化决策过程:在某些情况下,AI系统可能需要处理大量的决策变量和约束条件。DMN可以帮助建立一个清晰的决策模型,使得优化算法能够更有效地找到最优解。 4. 模拟和预测:DMN模型可以用于模拟不同的决策路径和结果,从而帮助预测未来的业务情况。这对于战略规划和风险管理非常有用。

Drools DMN15分钟简易教学:https://learn-dmn-in-15-minutes.com

Drools DMN教学:https://www.drools.org/learn/dmn.html