`
NIIT_zhu
  • 浏览: 47657 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何基于规则引擎打造规则库

阅读更多

 

规则引擎是面向技术人员的工具。目前技术人员为什么会选择规则引擎来使用,主要是基于如下情形来考虑:

    1、业务逻辑从程序代码中脱离出来。通过配置来实现业务规则。

    2、业务规则的变更,可以直接由用户通过web界面来修改和变更。

    针对这一类需求情况,其实我们有一般由以下的几种可选方案:

    1、选择规则引擎来实现。

          现有的规则引擎产品一般都能满足以上这两种要求。可以不用代码,比如Java来实现业务逻辑,而采用规则语言通过规则配置器来完成。用户需要变更时,一般都会提供C/S或者B/S版本的规则配置器来实现。

    2、采用动态语言:

          直接采用JS或者其他的动态语言BeanShell等,也可以实现不通过Java代码来实现业务逻辑。通过也可以提供一个编辑界面,让用户来进行修改。

    3、表格配置或者自定义公式

           通过定义一个表格或者加上一定的自定义公式语法来实现具体的逻辑。

     以上几种方案,在不同的项目中,都有各自的优缺点:

    1、采用规则引擎实现,使得业务规则的配置更加标准化、专业化。同时一般的规则引擎都会对修改的记录进行版本控制,以便于跟踪、测试、恢复等操作。规则配置器一般提供的界面,更加人性化,用户使用上更加便捷。缺点是会使得整个系统的架构变得庞大,需要有人专门负责研究规则引擎,以及相关的配置和管理工具。

    2、采用动态语言的实现,对于开发上会更加简单。动态语言一般纯粹处理逻辑,因此接口设计上会更加容易。同时使用动态语言时,一般很少会去考虑继承关系、相互调用等问题。缺点是可支持的逻辑相对扁平化,也相对简单。同时动态语言需要有个学习过程。

    3、通过表格配置以及自定义公式,是一般项目中最常用的。通过一个配置表来实现对应管理、逻辑流转。这种方式对于用户来说最友好,用户操作上更加方便,问题也最少。缺点是不够灵活,开发工作量大。

    以上这些考虑,都只是从一个技术角度出发,如何将一个技术编码工作,因为需求的不断变化,而更换一种实现方式。使得不会因为需求变化,而造成对代码的改动。因为代码改动会带来一系列的问题,变更流程、测试、部署等等。

    但是我们既然已经将和业务相关的业务逻辑,从程序中脱离出来,就不能仅仅停留在开发实现阶段。而应该将其纳入到客户的管理系统中。成为用户系统管理的一部分。比如我们至少应该考虑,用户可以查阅有多少业务规则,是可以由用户配置,哪些人对哪些业务规则有查看、创建、修改、删除权限,谁在何时进行了修改,谁负责的测试,测试结果如何,什么时候应用了新的修改之后的业务规则等等。

    在这种情况下,我们不能仅从规则引擎工具的角度来考虑这个实现问题,而应该从规则库管理角度来考虑问题。

    因此,不管我们是采用规则引擎还是动态语言,来实现业务逻辑供用户自己维护修改。就应该加强更多的用户维护方面的管理功能,使得这个工作更加标准化、规范化。

    实现一个业务规则库,需要考虑以下方面的问题:

    1、用户权限管理。采用现有的应用系统的权限系统,增加相应的针对规则的权限设置。

    2、规则权限设置时,需要考虑查看、创建、修改、删除、测试、审核、发布、执行等权限。

    3、规则分类的考虑。考虑多种方式来进行分组,用户角色权限按照规则组进行分配。

    4、规则版本控制:可以设置规则的版本号,可以设置规则组的标签,以便测试发布是区分。

    5、规则的单独测试:对于规则的测试,可以设置批量测试用例,可以在线执行测试。

    当然,如果应用系统是集群的,还需要考虑集群方面的问题。因此规则的执行中,最好是无状态的。

    在将业务规则从程序中脱离出来进行管理,是解决用户需求变更的有效手段,同时我们应该需要用规则库管理的思想来更近一步,达到规范、标准、统一。

 

分享到:
评论

相关推荐

    Golang中的规则引擎实现-Golang开发

    “ Gopher掌握规则” Grule导入“ github.com/hyperjumptech/grule-rule-engine” Go的规则引擎是Golang编程语言的规则引擎库。 受著名的JBOSS Drools的启发,完成了“ Gopher掌握规则”,Grule导入了“ github....

    基于 Scrapy 的新闻智能分类微信小程序.zip

    是一个文本分类相关的应用,目的是打造出一个可以对新闻进行智能分类的微信小程序。技术栈:Python + Scrapy + MongoDB + scikit-learn + Flask + 微信小程序,涉及爬虫、文本分类、Web … 爬虫(Web Crawler)是一...

    JEECG快速开发平台-其他

    数据权限7、智能报表集成:简易的图像报表工具和Excel导入导出8、Web容器测试通过的有Jetty和Tomcat,Weblogic9、亮点功能:分布式部署,云平台,移动平台开发,规则引擎10、要求JDK1.6+JEECG技术点总结:技术点一:...

    asp.net知识库

    Oracle编程的编码规范及命名规则 Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的一些基础知识 在组件之间实现事务和异步提交事务(NET2.0) 其它 在.NET访问MySql数据库时的...

    低清版 大型门户网站是这样炼成的.pdf

    7.7 基于httpclient构建通用静态页面发布引擎 514 7.7.1 优秀的模拟浏览器httpclient 514 7.7.2 构建通用静态页面发布引擎 516 7.8 小结 518 第8章 通用新闻采集系统 519 8.1 新闻采集系统需求分析 519 8.2 ...

    网易游戏高性能、分布式服务器开发框架 Pomelo.zip

    目前不推荐将pomelo用于大型的MMO rpg游戏开发,尤其是3d游戏, 还是需要象bigworld这样的商用引擎来支撑。 Pomelo的理念 pomelo的第一个理念是让游戏(高实时web应用)服务器的开发变得非常简单, 而不是解决某类...

    Zoomla!CMS5.5.rar

     逐浪CMS独有六大原创技术:独有的自定义模型与节点功能功能、与华夏营销网打造从网站开发到运营推广再到策划营销一体的解决方案、独创的文名作为标题生成格式为符合百度等大型搜索引擎收录提供了友好的支持、完全...

    ThinkPHP v6.0.7

    内置了高性能的基于标签库和XML标签的编译型模板引擎RESTFul支持-通过REST控制器扩展提供了RESTFul支持,为你打造全新的URL设计和访问体验云平台支持-提供了对新浪SAE平台和百度BAE平台的强力支持,具备“横跨性”和...

    网站架构技术

    大型网站架构演化 大型网站软件系统的特点 大型网站架构演化发展历程 初始阶段 应用服务和数据服务分离 使用缓存改善网站性能 ... 规则引擎 统计模型 案例 网购秒杀系统架构 网购秒杀系统架构

    ThinkPHP 3.1.2 - PHP的开发框架MVC - 含Core,Extend,Example

    模板引擎:系统内建了一款卓越的基于XML的编译型模板引擎,支持两种类型的 模板标签,融合了Smarty和JSP标签库的思想,并内置布局模板功能和标签库扩展 支持。通过驱动还可以支持Smarty、EaseTemplate、TemplateLite...

    JBPM4工作流应用开始指南.rar

    195 第9章 jBPM4扩展研发先决条件 196 9.1 深入应用jBPM4所需要知道的 196 9.1.1 如果您的业务基于复杂的规则,在jBPM中加入Drools吧 196 9.1.2 抉择,是否使用BPEL 197 9.2 Maven仓库和Java依赖库 199 9.3 小结 200...

    JEECG快速开发平台 v4.0

    9、亮点功能:分布式部署,云平台,移动平台开发,规则引擎 10、要求JDK1.6+ JEECG技术点总结 技术点一:代码生成器SPA单页面应用快速生成,采用VUE+ElementUI打造酷炫效果 技术点二:新一代代码生成器更灵活的代码...

    SQL Server 2008商业智能完美解决方案 3/3

    管理开发生命周期,打造BI团队; 深入研究SQL Servet Analysis Services、Integration Services和 Reporting Services; 使用Business Intelligence Development Studio(BIDS); 编写对销售数据进行分级、排序和深化...

    SQL Server 2008商业智能完美解决方案 1/3

    管理开发生命周期,打造BI团队; 深入研究SQL Servet Analysis Services、Integration Services和 Reporting Services; 使用Business Intelligence Development Studio(BIDS); 编写对销售数据进行分级、排序和深化...

    SQL Server 2008商业智能完美解决方案 2/3

    管理开发生命周期,打造BI团队; 深入研究SQL Servet Analysis Services、Integration Services和 Reporting Services; 使用Business Intelligence Development Studio(BIDS); 编写对销售数据进行分级、排序和深化...

    SQL Server 2008 商业智能完美解决方案(3)

    管理开发生命周期,打造BI团队; 深入研究SQL Servet Analysis Services、Integration Services和 Reporting Services; 使用Business Intelligence Development Studio(BIDS); 编写对销售数据进行分级、排序和...

Global site tag (gtag.js) - Google Analytics