规则引擎是面向技术人员的工具。目前技术人员为什么会选择规则引擎来使用,主要是基于如下情形来考虑:
1、业务逻辑从程序代码中脱离出来。通过配置来实现业务规则。
2、业务规则的变更,可以直接由用户通过web界面来修改和变更。
针对这一类需求情况,其实我们有一般由以下的几种可选方案:
1、选择规则引擎来实现。
现有的规则引擎产品一般都能满足以上这两种要求。可以不用代码,比如Java来实现业务逻辑,而采用规则语言通过规则配置器来完成。用户需要变更时,一般都会提供C/S或者B/S版本的规则配置器来实现。
2、采用动态语言:
直接采用JS或者其他的动态语言BeanShell等,也可以实现不通过Java代码来实现业务逻辑。通过也可以提供一个编辑界面,让用户来进行修改。
3、表格配置或者自定义公式
通过定义一个表格或者加上一定的自定义公式语法来实现具体的逻辑。
以上几种方案,在不同的项目中,都有各自的优缺点:
1、采用规则引擎实现,使得业务规则的配置更加标准化、专业化。同时一般的规则引擎都会对修改的记录进行版本控制,以便于跟踪、测试、恢复等操作。规则配置器一般提供的界面,更加人性化,用户使用上更加便捷。缺点是会使得整个系统的架构变得庞大,需要有人专门负责研究规则引擎,以及相关的配置和管理工具。
2、采用动态语言的实现,对于开发上会更加简单。动态语言一般纯粹处理逻辑,因此接口设计上会更加容易。同时使用动态语言时,一般很少会去考虑继承关系、相互调用等问题。缺点是可支持的逻辑相对扁平化,也相对简单。同时动态语言需要有个学习过程。
3、通过表格配置以及自定义公式,是一般项目中最常用的。通过一个配置表来实现对应管理、逻辑流转。这种方式对于用户来说最友好,用户操作上更加方便,问题也最少。缺点是不够灵活,开发工作量大。
以上这些考虑,都只是从一个技术角度出发,如何将一个技术编码工作,因为需求的不断变化,而更换一种实现方式。使得不会因为需求变化,而造成对代码的改动。因为代码改动会带来一系列的问题,变更流程、测试、部署等等。
但是我们既然已经将和业务相关的业务逻辑,从程序中脱离出来,就不能仅仅停留在开发实现阶段。而应该将其纳入到客户的管理系统中。成为用户系统管理的一部分。比如我们至少应该考虑,用户可以查阅有多少业务规则,是可以由用户配置,哪些人对哪些业务规则有查看、创建、修改、删除权限,谁在何时进行了修改,谁负责的测试,测试结果如何,什么时候应用了新的修改之后的业务规则等等。
在这种情况下,我们不能仅从规则引擎工具的角度来考虑这个实现问题,而应该从规则库管理角度来考虑问题。
因此,不管我们是采用规则引擎还是动态语言,来实现业务逻辑供用户自己维护修改。就应该加强更多的用户维护方面的管理功能,使得这个工作更加标准化、规范化。
实现一个业务规则库,需要考虑以下方面的问题:
1、用户权限管理。采用现有的应用系统的权限系统,增加相应的针对规则的权限设置。
2、规则权限设置时,需要考虑查看、创建、修改、删除、测试、审核、发布、执行等权限。
3、规则分类的考虑。考虑多种方式来进行分组,用户角色权限按照规则组进行分配。
4、规则版本控制:可以设置规则的版本号,可以设置规则组的标签,以便测试发布是区分。
5、规则的单独测试:对于规则的测试,可以设置批量测试用例,可以在线执行测试。
当然,如果应用系统是集群的,还需要考虑集群方面的问题。因此规则的执行中,最好是无状态的。
在将业务规则从程序中脱离出来进行管理,是解决用户需求变更的有效手段,同时我们应该需要用规则库管理的思想来更近一步,达到规范、标准、统一。
相关推荐
“ Gopher掌握规则” Grule导入“ github.com/hyperjumptech/grule-rule-engine” Go的规则引擎是Golang编程语言的规则引擎库。 受著名的JBOSS Drools的启发,完成了“ Gopher掌握规则”,Grule导入了“ github....
Visual Rules是一款由旗正信息公司自主研发的规则引擎产品,拥有完全独立的知识产权,专为中国市场打造。该产品旨在帮助企业高效管理业务规则,实现业务规则的快速更新和优化,同时提供卓越的性能和稳定性。 一、...
在构建一个基于Python的分布式爬虫来打造搜索引擎的过程中,我们需要涉及多个关键知识点。这个压缩包“基于Python分布式爬虫打造搜索引擎源码.zip”可能包含了实现这样一个系统的全部代码,包括项目结构、爬虫模块、...
而本项目“Node.js-基于Typescript Koa2打造的web开发工程模板”则是在Node.js的基础上,利用TypeScript和Koa2框架,构建了一个高效、稳定且易于维护的Web应用开发模板。 TypeScript是JavaScript的一个超集,它引入...
以上就是基于Python的分布式爬虫和搜索引擎构建的一些核心知识点。通过学习和实践这些内容,你可以掌握从数据抓取到数据处理再到构建自定义搜索引擎的全套流程。在实际应用中,还需要根据具体需求进行调整和优化,...
给力引擎1.76梦幻大极品商业端所基于的1.76版本,是传奇系列游戏中的一个经典版本,它以稳定性和平衡性著称,并深受老玩家的青睐。而“梦幻大极品”的加入,则为这个经典版本带来了更为丰富的游戏内容。除了可能加入...
总之,“基于Sphinx+MySql+Python的站内搜索引擎的设计与实现”项目涵盖了搜索引擎的核心技术,从数据存储到索引构建,再到搜索查询和结果展示,全方位展示了如何利用这些技术打造一个高效的站内搜索平台。...
《基于Android手机平台的游戏引擎设计与分析》 随着科技的发展,移动设备的普及,Android操作系统以其开源性、兼容性和灵活性,成为了众多开发者和企业的首选平台。尤其是在游戏领域,Android游戏的开发需求日益...
Visual C++作为一款强大的编程环境,常常被用于游戏的底层系统构建,而HGE(Happy Game Engine)则是一款基于C++的开源游戏开发框架,它提供了丰富的功能,简化了游戏开发流程。同时,Lua以其轻量级、易学易用的特性...
《俄罗斯方块物理版》是一款基于Box2D引擎和OpenGL渲染技术实现的创新性游戏,由C++编程语言精心打造。这款项目展示了如何将经典的电子游戏与物理学相结合,为玩家带来更为真实的游戏体验。下面我们将深入探讨这个...
通过规则引擎,批核系统可以根据预设条件自动决定流程走向,减轻了人工干预的压力。 7. **事件驱动与工作流服务** WF还支持事件驱动编程,可以与其他系统(如消息队列、WCF服务)集成,响应外部事件,触发工作流的...
《水果捕捞:LibGDX引擎打造的2D互动安卓游戏》 在移动游戏开发领域,LibGDX是一个广泛使用的开源框架,它为开发者提供了一种便捷的方式,以Java语言创建跨平台的游戏应用。本项目名为"fruitcatch",是一款基于...
3. 快速开发:丰富的内置函数库和助手方法,减少重复代码编写。 4. 错误和日志处理:完善的异常处理机制,方便调试和问题定位。 二、AceAdmin模板介绍 AceAdmin是一款流行的后台管理界面模板,以其专业、美观、...
工作流引擎可以根据预定义的规则和条件,动态地控制流程的执行,减少了人工干预,提高了工作效率。 在ASP.NET框架下,可以集成Windows Workflow Foundation (WF)或使用第三方工作流引擎,如NServiceBus、Activiti等...
同时,Flask还支持多种扩展,如SQLAlchemy用于数据库操作,Jinja2作为模板引擎,使得视图渲染更为便捷。 Python是整个项目的核心编程语言,它提供了丰富的库支持,如NumPy和Pandas用于数据预处理和分析,Scikit-...
在Python中,我们还需要编写棋规规则库,处理合法棋步的检查、将军、将死等特殊情况。这部分可以采用面向对象编程,为每种棋子创建类,并定义其移动规则。同时,为了提高性能,可考虑使用NumPy等科学计算库,优化...
这涉及到工作流引擎的使用,以及业务规则管理,确保流程的自动化和标准化。此外,还可能涉及临床决策支持系统(CDSS),为医生提供基于患者数据的诊疗建议。 第七章:安全保障体系 医院信息平台中的数据安全是首要...
管理系统系列--基于vue-admin-template开发的后台权限管理系统是现代Web应用程序开发中常见的一种架构模式,它结合了前端的Vue.js框架和...开发者可以根据实际需求对模板进行调整,打造出满足特定业务场景的管理系统。
《构建基于Lucene、Servlet与Java EE的SearchEngineServer》 在现代互联网环境中,搜索引擎扮演着至关重要的角色,它...通过深入了解和实践,我们可以打造出一个强大且高效的搜索引擎系统,满足用户的各种搜索需求。