分享好友 最新动态首页 最新动态分类 切换频道
Drools开源业务规则引擎(一)- 安装与介绍(构建KieBase)
2024-12-26 20:20

Drools开源业务规则引擎(一)- 安装与介绍(构建KieB<i></i>ase)

规则引擎,是业务规则管理系统的一部分,主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模板编写业务决策(业务规则,由用户或开发者在需要时进行配置、管理。规则引擎通过业务规则管理系统(BRMS,Business Rule Management System)来实现对业务规则的集中管理和动态执行。

规则引擎的主要特点和好处

  • 灵活性和可配置性:用户通过配置而不是代码编写来定义和管理业务规则。这使得规则可以根据需求进行更加灵活的调整和修改,而无需进行软件开发和发布。
  • 可维护性和可扩展性:业务规则的管理和维护变得更加容易。通过规则引擎,用户可以独立地修改、添加或删除规则,而无需修改应用程序的源代码。这提高了维护性和扩展性,同时降低了代码维护的风险和成本。
  • 业务与技术的分离:将业务规则从应用程序中分离出来,使得业务人员可以直接参与规则的定义和管理,而不需要依赖开发团队。这种分离促进了业务和技术之间的协作和沟通,加快了业务需求的落地。
  • 决策智能化:支持规则的动态执行和智能推断。可以根据事实和规则条件进行推理并做出相应的决策,业务处理过程更加智能化和自动化,并能够根据具体场景和条件进行个性化决策。
  • 可重复使用和标准化:规则可以被重复使用,并且以标准化的方式进行管理和执行。这样,不同的应用程序和系统可以共享相同的规则库,实现了规则的标准化和统一的执行。

目前市面上具体的规则引擎产品有

  • Drools:Drools是一款开源的Java规则引擎,并且提供了强大的规则管理和执行功能。是业界广泛应用的规则引擎,具有丰富的功能和灵活的配置选项。
  • IBM Operational Decision Manager:ODM 是IBM提供的一套规则引擎和决策管理解决方案。具有强大的规则管理和执行能力,并且可以与其他IBM产品和技术进行集成。
  • PegaRULES Decision Management:Pegasystems推出的一款规则引擎产品,提供了全面的决策管理功能,包括规则的创建、维护、版本控制和执行。
  • Blaze Advisor:FICO(原Fair Isaac Corporation)推出的一款领先的规则引擎产品。具有高性能和可扩展的规则执行引擎,适用于大规模的决策管理和业务规则管理场景。
  • JBoss BRMS:红帽公司(Red Hat)提供的一套开源规则引擎和决策管理系统。基于Drools引擎,并提供了全面的规则管理和执行功能,支持多种商业规则管理需求。

1.1.依赖模块

Drools 是一款开源的业务规则管理系统和规则引擎,由Jboss(现为红帽)开发和维护。Drools完全使用Java语言开发,基于Charles Forgy的RETE算法实现规则的高效执行。它提供了强大的规则管理和执行功能,能够帮助用户更好地管理和执行业务规则。

Drools被分解为几个模块,部分在规则开发/编译过程中需要,另一部分在运行时需要。在大多数情况下,项目只需要运行时包含的所有模块或者依赖,这种方式能提供更好的灵活性。所以运行时规则引擎的jar可以压缩到极致,只需要3个jar包(几百KB)。

以下是组成JBoss Drools的重要库的描述

  • :提供一组接口和类,有助于清楚地显示什么是用户API,什么是引擎API。

  • :提供了内部接口和工厂。

  • : 核心引擎,运行时组件。包含RETE算法引擎和LEAPS前向推理算法引擎。如果你正在预编译规则(并通过Package或RuleBase对象进行部署,这是唯一的运行时依赖项。

    预编译规则(pre-compiling rules)指将规则在运行时之前进行编译的过程。通过预编译规则,可以提高规则引擎的执行效率。

  • : 包含编译器/构建器组件,以获取规则源,并构建可执行规则库。这通常是应用程序的运行时依赖项,但如果你正在预编译规则,则不必依赖。这取决于drools-core。

  • : 这符合JSR-94的实现,这本质上是drools-compiler组件上的一个层。请注意,由于JSR-94规范的性质,并非所有功能都很容易通过此接口暴露。在某些情况下,直接访问Drools API会更容易,但在某些环境中,JSR-94是强制性的。

  • : 这是决策表“编译器”组件,它使用drools-编译器组件。这支持excel和csv输入格式。

上述组件还需要相当多的其他依赖项,其中大多数用于drools-compiler、drools-jsr94或drools-decisiontables模块。

1.2.规则引擎

Drools引擎是Drools中的规则引擎。Drools引擎存储、处理和评估数据,以执行定义好的业务规则或决策模型。Drools引擎的基本功能是将传入的数据或事实与规则的条件相匹配,并确定是否以及如何执行规则。

Drools引擎使用以下基本部件运行

  • Rules:业务规则或DMN决策。所有规则都必须至少包含触发规则的条件以及规则规定的操作。(如上述案例的规则文件user.drl
  • Facts:Drools引擎中匹配规则条件的输入数据。(如上述案例中的UserIn对象
  • Production memory:Drools引擎中存储规则的位置。
  • Working memory:Drools引擎中存储事实的位置。
  • Agenda:已激活规则的注册和排序位置,为执行规则做准备。

2.1.依赖导入

 

2.2.规则的输入和输出类型

输入类型
 
输出类型
 

2.3.创建规则文件

位置

 

2.4.构建可执行规则库

 

2.5.执行结果

3.1. KieBase

Drools中的知识库,它包含了运行规则所需要的所有知识元素。知识元素包括规则(Rule)、事实(Fact)、函数(Function)、配置(KieBaseConfiguration)等。KieBase 是Drools中规则引擎的核心部分,它负责管理和执行规则。KieBase 是线程安全的,可以在多个 KieSession 中共享。

3.2. KieSession

Drools规则引擎中与应用程序交互的接口,是一个运行时的状态容器,包含了 Work Memory、Pattern Matcher , Conflict Resolver 和 Executor 等组件。它用于加载和激活规则,插入事实,并执行规则的匹配和执行过程。KieSession 可以通过 KieBase 创建,并能够进行查询和获取执行结果等操作。

3.3. KieModule

Drools规则引擎中对规则集合进行打包和部署的单位。包含了多个KieBase和KieSession的配置信息的容器,可以是一个jar文件或者一个文件夹。KieModule可以从本地或者远程的Maven仓库中加载,实现规则的动态更新和灵活部署。

3.4. KieFileSystem

Drools规则引擎中用于动态加载和管理规则资源文件的组件。一个虚拟的文件系统,用来存储规则文件和其他资源文件。它可以添加、修改和删除规则文件,并可以与KieServices和KieBuilder等组件一起使用,实现规则的灵活维护和更新。

3.5. KieContainer

管理KieModule的容器,可以从本地或者远程的Maven仓库中加载KieModule,并且可以动态地更新KieModule。

是Drools中用于配置KieBase(规则知识库)的配置类。它提供了一系列配置选项,可以对KieBase进行个性化的设置和定制。

4.1.

设置规则条件的执行顺序。

  • :规则引擎将按照规则定义的顺序依次评估规则条件。
  • :表示规则条件是并行执行的。

如果设置为YES,将仅适用于无状态会话。

4.2.

用于定义规则中对象之间的相等性比较行为。

  • :使用Java中的方法进行对象的相等性比较。
  • :使用Java中的运算符进行对象的相等性比较(内存地址)。

4.3.

事件处理模式定义了对事件流的管理和处理方式。

  • :云模式是一种高效的事件处理模式,适用于大规模事件流。在云模式下,Drools将事件发送到内存队列中,并使用多个工作线程并行地处理事件。
  • :流模式是一种实时事件处理模式,适用于连续产生事件的应用场景。在流模式下,Drools使用流式架构处理事件,可以在事件到达时立即进行处理。

4.4.

声明性议程模式。

  • :允许使用规则来控制哪些其他规则可以触发以及何时触发。这将比简单使用显著性增加更多的开销,但优点是它是声明性的,因此更具可读性和可维护性。
  • :默认情况下,此功能处于关闭状态。

4.5.

用于定义规则中约束的即时编译(Just-In-Time Compilation,JIT)阈值。

  • :禁用JIT编译,所有约束都将以解释执行方式进行。

4.6.

限制规则引擎在执行期间使用的最大线程数。

4.7.

MBeans是一种Java平台管理扩展(Java Management Extensions,JMX)的标准,用于管理和监视应用程序的状态。Drools引擎提供了对MBeans的支持,可以通过MBeans来监控和管理规则引擎的各个方面,如规则集、会话、统计信息等。

  • :启用MBeans支持。允许创建和注册与Drools引擎相关的MBeans,以便可以通过JMX接口监控和管理规则引擎。
  • :禁用MBeans支持。禁止创建和注册任何与Drools引擎相关的MBeans。

4.8.

用于启用或禁用规则评估的多线程执行。

  • :启用多线程评估。
  • :禁用多线程评估。

4.9.

用于控制会话(Session)的缓存行为。此选项仅在使用phreak规则引擎(默认)时有效。

  • :禁用会话缓存。每次创建会话都会实时从规则库构建新的会话对象。
  • :同步会话缓存。会话将被缓存并与多个线程共享同一个实例。会话的创建和使用是线程安全的。
  • :异步会话缓存。会话将被缓存并与多个线程共享同一个实例。会话的创建和使用不是线程安全的,需要开发人员自行确保线程安全。

4.10.

用于控制类加载器的缓存行为。

  • :启用类加载器缓存,此为默认选项。Drools会缓存外部父类加载器中的类解析结果,以提高编译性能。
  • :禁用类加载器缓存。

4.11.

用于设置PermGen阈值的类。

  • 在旧版本的Java中,PermGen区域有限,不会自动调整大小,如果程序动态加载大量类或反复加载类,可能会导致PermGen区域溢出。为了避免这种情况,可以使用来设置PermGen的阈值。但是自Java 8开始,PermGen被Metaspace所取代。因此,在Java 8及更高版本中,不再适用。

4.12.

用于设置复合键(Composite Key)的深度。复合键是由多个属性组成的唯一标识符。当使用复合键来定义规则或查询时,可能需要设置复合键的深度,以便在运行时正确匹配和比较复合键。

4.13.

最新文章
宁波市商务局最新发展规划,打造开放型经济新高地
宁波市商务局最新发展规划致力于打造开放型经济新高地,通过深化商贸流通领域改革,加强内外贸一体化建设,推动跨境电商等新业态发展,优化营商环境等措施,促进经济高质量发展。规划旨在提升宁波市的国际影响力和竞争力,推动形成全面开放
让ai智能写个拍摄脚本的软件:推荐列表与盘点指南
随着数字媒体时代的到来,影视创作逐渐迈向高效与智能化。人工智能()在影视制作领域的应用日益广泛其是自动生成拍摄脚本的软件,成为了多创作者的得力助手。本文将为您盘点一系列免费且好用的脚本编写工具,帮助您轻松打造具有创意的拍摄
用AI生成美女写真,轻松打造你的个性化形象!
在这个科学技术飞速发展的时代,AI生成图像的能力已经颠覆了传统的图像创作方式。家人们,有没有想过通过人工智能生成一张属于自己的逼真美女写真?不再需要专业的摄影师或复杂的后期制作,这一切都可以通过一些简单的工具轻松完成。本篇文
百度推广的几种方式
百度推广的几种方式主要包括:搜索推广、信息流推广和品牌广告推广。搜索推广通过关键词竞价和优化,使企业网站或产品信息在搜索结果中排名靠前,提高曝光率和点击率。信息流推广则是在百度平台上展示广告,根据用户行为和兴趣进行精准推送
美团外卖启动“恶意差评治理专项行动”:引入 AI 识别关键词,未来将预警风险用户
12 月 12 日消息,据美团外卖官方 12 月 10 日消息,美团外卖多部门近期联合行动,成立“恶意差评治理专项组”,从差评的识别、判责、申诉、预警等多个环节入手,搭建更透明高效的差评处理机制,帮助商家将精力更好地投入到线上经营本身,
贝加莱B&R触摸屏4PP065.0571-P74
贝加莱BR触摸屏4PP065.0571-P74,上海韦米机电设备有限公司主营供应产品,产品图片实物拍摄,原厂原装,质保一年,大量产品现货供应,价格优惠快速报价,联系人:雷青。欢迎咨询采购!贝加莱BR触摸屏物料号:4PP065.0571-P74描述:电源面板PP
草莓ios:草莓风味盛宴:探索无尽的美味与创意搭配
  草莓作为一种受欢迎的水果,其鲜艳的色彩和甜美的味道常常给人带来愉悦感。将这种元素融入到手机iOS主题中,不仅能够提升用户体验,还能让手机更加个性化。草莓iOS主题以生动活泼、清新的设计风格,深得年轻人的喜爱。  对于那些希望
全网营销新风向,SEO代理助力企业市场拓展策略揭秘
随着互联网营销的快速发展,SEO全网营销成为企业拓展市场的关键。本文揭秘全网营销新趋势,借助SEO全网营销代理,帮助企业高效提升品牌影响力,拓展更广阔的市场空间。随着互联网的飞速发展,企业对于网络营销的需求日益增长,在这个的时代
【U8680豌豆荚下载】华为U8680豌豆荚8.2.5.1免费下载
豌豆荚拥有超过 200 万个最全的安卓应用和安卓游戏免费下载资源,六年为全国 4 亿人提供全面的手机内容服务。四个的原因:1. 从全网 29 家应用商店收录了超 200 万的应用和游戏。全网最全面的应用库,随便来折腾。2. 每一个应用游戏都经过
【Y516(移动3G)WiFi万能钥匙下载】华为Y516 移动3GWiFi万能钥匙5.1.02免费下载
下载WiFi万能钥匙,认准官方正版!免费安全WiFi热点,无忧一键连接。日常任务随时做,轻松赚现金外快~【积分赚钱】完成简单日常任务,轻轻松松赚现金【安全免费】随时随地免费连接,畅享安全免费WiFi,节省流量快人一步!【权威认证】通过
相关文章
推荐文章
发表评论
0评