规则引擎的应用及发展

简介:

前言

最传统的软件是揉杂在一起的,1970年代为了更好的方便开发,程序员将数据库份离出来,方便信息的存储。1980年代,应用层分离出展示层,使得产品更加优化,人性化,而1990年代后,使用规则引擎将业务规则分离单独管理,使得业务系统能够更加灵活变动,响应速度更加快速,旗正商业规则管理平台正式业务规则的管理专家

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。

应用背景

企业级管理者对企业IT系统的开发有着如下的要求:

1.为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。

2.市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新。

3.为了快速、低成本的更新,业务人员应能直接管理IT系统中的规则,不需要程序开发人员参与。

目前国外大多数企业在信息管理上已经使用到了BRMS的架构来保证公司更加迅速准确的完成任务。我们国内,大多数企业BRMS处理方面并不尽人意,多数人甚至不知道规则引擎是做什么的。规则引擎实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。使得BRMS构架更加明显,使非技术业务人员能直接参与到业务规则管理工作中,使受限于复杂多变且不断发展的业务规则的应用程序和流程实现灵活的决策自动化。

规则引擎执行原理

以旗正规则引擎(Visual Rules solution)为例规则引擎会根据规则包名称,取得对应规则包编译后的RSC文件。然后将RSC加载到内存中,生成规则包执行上下文。同时规则引擎将传递的参数传递到规则包执行上下文中,然后开始执行规则包。执行完毕后,再将规则包执行上下文中的数据,传回给调用规则包的应用程序。整个执行原理非常简单,因此最大限度的保证了规则运行平台的稳定以及最佳的性能。

数据库接口

规则包的对象库中,定义了以下一些数据库对象接口DatabaseTableSelectViewProcedure。旗正规则引擎直接用JDBC来实现这些接口,最大限度的保证了数据库对象调用的性能。当然用户可以根据自己的需要,重新来实现这些数据库接口

 Excel接口

规则包需要调用的Excel接口主要是I Excel BookI ExcelSheetI Excel Table SheetI Excel X Y Sheet。旗正规则引擎采用POI来实现Excel接口。

 内存表格接口

规则包需要调用的内存表格接口为Sheet,旗正规则引擎采用Object[][]来实现内存表格接口的实现。

Xml接口

规则包需要调用的XML接口为Node。目前旗正规则引擎采用JDOM来实现。

如何调用

规则引擎是外部Java程序调用规则包的一组Java类,其包含在engine.jar中。 外部Java程序调用规则包时只需要用到两个类。一个是 com. Flagleader .Engine .Rule Engine 。另一个是 com. Flagleader .engine .Rule Engine Factory 

Rule Engine Factory是得到规则引擎实例的工厂类。 通常代码为

Rule Engine rule Engine = Rule Engine Factory .new Instance().get Rule Engine();

得到规则引擎实例后,可以调用规则引擎中的方法,主要是putexcuteget这三个方法。 put用于传入需要传入的值,excute 用于运行指定的规则包,get用于得到传出的值。 一般的调用代码为:

Rule Engine .put(传入对象);

Rule Engine .excute("规则包调用名");

传出对象 = rule Engine .get("传出对象名");

使用规则引擎的优点

 使用规则引擎可以通过降低实现复杂业务逻辑的组件的复杂性,降低应用程序的维护和可扩展性成本,其优点如下:

1.分离商业决策者的商业决策逻辑和应用开发者的技术决策;

2.能有效的提高实现复杂逻辑代码的可维护性;

3.在开发期间或部署后修复代码缺陷;

4.应付特殊状况,即客户一开始没有提到要将业务逻辑考虑在内;

5.符合组织对敏捷或迭代开发过程的使用;

6.大多数规则引擎都支持规则的次序和规则冲突检验,支持简单脚本语言的规则实现,支持通用开发语言的嵌入开发。

规则引擎供应商

目前业内有多个规则引擎可供使用,其中包括国内和国外。

1.国外的代表是:Drools(开放源代码)和ODMIBM收购,原名ilog)

2.国内的代表是:旗正规则引擎(Visual rules solution

相关文章
|
监控 安全 JavaScript
网络安全开发架构之基于规则引擎的开发架构
规则引擎是一种软件工具或库,用于管理和执行业务规则。它提供了一种灵活且可扩展的方式来处理复杂的业务逻辑、决策制定和规则管理。规则引擎使得规则的定义、配置和执行变得更加可管理和可维护
531 0
|
Java
规则引擎选型及应用
规则引擎具体执行可以分为接受数据输入,解释业务规则,根据业务规则做出业务决策几个过程。 使用规则引擎可以把复杂、冗余的业务规则同整个支撑系统分离开,做到架构的可复用移植。
24070 0
|
消息中间件 Cloud Native 安全
消息队列和应用工具产品体系-云原生技术的未来展望
消息队列和应用工具产品体系-云原生技术的未来展望
消息队列和应用工具产品体系-云原生技术的未来展望
|
消息中间件 网络协议 算法
亿级万物互联新时代的物联网消息中间件 EMQX 调研
我们身边越来越多的硬件设备正在被嵌入芯片、注入软件,从而实现各种各样的新应用、新功能,比如智能门锁,智能音箱等,前几年炒的火热的智能家居,物联网万物互联等概念,现在正在潜移默化的影响着所有人,了解一些物联网知识对我们了解这个新时代有所帮助。
640 29
亿级万物互联新时代的物联网消息中间件 EMQX 调研
|
消息中间件 Kubernetes 网络协议
亿级万物互联新时代的物联网消息中间件EMQX调研
EMQ 创始人兼 CEO 李枫表示:「EMQX 5.0 是 MQTT 领域的一个里程碑式的成果。它不仅是全球首个单集群支持 1 亿连接的分布式 MQTT 消息服务器,也是首个将 QUIC 引入 MQTT 的开创性产品。
319 8
亿级万物互联新时代的物联网消息中间件EMQX调研
|
运维 数据建模
《全链路数据治理-智能数据建模 》——客户案例:大淘系数据模型治理最佳实践(8)
《全链路数据治理-智能数据建模 》——客户案例:大淘系数据模型治理最佳实践(8)
128 0
EMQ
|
运维 监控 数据可视化
规则引擎集成新的可观测性框架
十月,EMQX在产品质量和用户体验方面进行了进一步提升;此外,EMQX Cloud在订阅渠道、部署地区、操作体验等方面均有更新。
EMQ
239 0
规则引擎集成新的可观测性框架
|
存储 SQL 监控
规则引擎 | 学习笔记
快速学习 规则引擎
1431 0
规则引擎 | 学习笔记
EMQ
|
弹性计算 运维 Kubernetes
云原生赋能智能网联汽车消息处理基础框架构建
本文旨在深入分析云原生技术如何作用于车联网物联网基础设施构建,基于体系中最关键的车端消息采集、移动、处理和分析领域,结合 EMQ 相关数据基础设施软件,实现云原生的车联网基础设施架构。
EMQ
318 0
云原生赋能智能网联汽车消息处理基础框架构建
|
存储 大数据 关系型数据库
从阿里核心场景看实时数仓的发展趋势
随着2021年双11的完美落幕,实时数仓技术在阿里双11场景也经历了多年的实践和发展。从早期的基于不同作业的烟囱式开发,到基于领域分层建模的数仓引入,再到分析服务一体化的新型融合式一站式架构,开发效率逐步提升,数据质量更有保证,也沉淀了更多技术创新,让我们看到了一些未来数仓开发、应用的可能性和趋势。下面我们来聊聊从阿里双11看到的实时数仓发展的一些趋势。
从阿里核心场景看实时数仓的发展趋势