首页 > 其他分享 >Drools 7.67.0 + DMN 1.2 + SpringBoot3 构建规则引擎

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

时间:2023-08-10 23:23:15浏览次数:105  
标签:Drools 1.2 AI 决策 DMN 引擎 规则

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

   

标签:Drools,1.2,AI,决策,DMN,引擎,规则
From: https://www.cnblogs.com/hlkawa/p/17618164.html

相关文章

  • K8S 1.27.1版本初始化配置文件时报your configuration file uses an old API spec: "k
    现象:yourconfigurationfileusesanoldAPIspec:"kubeadm.k8s.io/v1beta2".Pleaseusekubeadmv1.22insteadandrun'kubeadmconfigmigrate--old-configold.yaml--new-confignew.yaml',whichwillwritethenew,similarspecusingan......
  • 最完美WIN11_Pro_22H2.22631.2129软件选装纯净版VIP51.3
    【系统简介】=============================================================1.本次更新母盘来自UUP_WIN11_Pro_22H2.22631.2129。进一步精简优化调整。2.只为呈现最好的作品,手工精简优化部分较多。3.OS版本号为22631.2129。个别要求高的就下MSDN吧,里面啥功能都有。4.集成《DrvCeo......
  • Apache Superset 1.2.0教程 (三)—— 图表功能详解
    通过之前章节的学习,我们已经成功地安装了superset,并且连接mysql数据库,可视化了王者英雄的数据。使用的是最简单Table类型的图表,但是superset还支持非常多的图表类型。本文我们将对各种图表类型进行逐一的演示,文章较长,建议收藏后阅读。图表分类Superset提供了大量的图表来帮助我们进......
  • Blazor前后端框架Known-V1.2.10
    V1.2.10Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行。Gitee:https://gitee.com/known/KnownGithub:https://github.com/known/Known概述基于C#和Blazor实现的快速开发框架,前后端分离,开箱即用。跨平台,单页应用,混合桌面应用,Web和桌面......
  • fastjson 1.2.80 漏洞浅析及利用payload
    0x01说明在fastjson的1.2.80版本中可以通过将依赖加入到java.lang.Exception期望类的子类中,绕过checkAuto。0x02简析{"@type":"java.lang.Exception","@type":"org.codehaus.groovy.control.CompilationFailedException","unit":{......
  • nginx1.20-tomcat9-redisson集群,好像不怎么完善
    配置信息在同一台服务器上使用nginx做反向代理与两个tomcat组成简易tomcat集群使用nginx端口80tomcat1端口21005,21080,21009tomcat2端口22005,22080,22009配置过程1.先下载apache-tomcat-9.0.78,解压到两个目录,分别为tomcat1和tomcat2根据上方配置信息分别对两个目录中的......
  • day11 11.2 JNI案例
    【一】创建项目【1】新建utils.c在cpp文件夹下新建utils.c的源文件,后缀名是c,因为怎么用c写(.cpp是c++,不要用这个)【2】新建java类新建一个java类,类中写函数packagecom.dream.demo11;publicclassUtils{//定义一个方法,实现C中的某个方法相对应publi......
  • KubeSphere 3.4.0 发布:支持 K8s v1.26
    2023年07月26日,KubeSphere开源社区激动地向大家宣布,KubeSphere3.4.0正式发布!让我们先简单回顾下之前三个大版本的主要变化:KubeSphere3.1.0新增了“边缘计算”、“计量计费”等功能,将Kubernetes从云端扩展至边缘;KubeSphere3.2.0新增了对“GPU资源调度管理”......
  • ubuntu16.04编译安装nginx1.24.0
    环境:DistributorID: UbuntuDescription: Ubuntu16.04.7LTSRelease: 16.04Codename: xenial 安装包:pcre-8.45.tar.gznginx-1.24.0.tar.gz开始安装:安装pcretar-xzvfpcre-8.45.tar.gzcdpcre-8.45./configure--prefix=/usr/local/pcremake&&makeinstall......
  • 不忘初心 Windows11 22H2 22621.2070 x64 无更新 精简 游戏 2023.07.31 集成最新版任
    注意此版不能更新补丁,而且非纯净版,此版为游戏版,为游戏稳定而生也可以用于办公,保留Hyper和linux,体积和稳定性介于可更新版和无更新版之间,集成任务栏透明软件,独家4K全新高清壁纸,增加右键一些功能,以及离线集成了运行库,绝对给你带来不一样的视觉体验,不一样的美!为了保证稳定初心的系统......