旗正商业规则引擎和开源及其它规则引擎测试对比

规则引擎在基础软件,或者在很多系统中已经不是稀奇的玩意,最近这几年,国内不断兴起很多的规则引擎,至于什么是规则引擎,在这篇文章中,就不做介绍了,我想能看以下内容的,多少对规则引擎也都有所了解了。

国内在2003年的时候,出了第一款商业规则引擎—旗正商业规则引擎(VisualRules),为什么这么说呢,因为再此之前,国内所用的规则引擎,都是国外产品,或者开源产品,纯自主研发旗正是第一款,直至目前为止,纯自主研发的规则引擎少之又少。那么旗正商业规则引擎到底怎样?今天,给大家介绍一下,顺便,我们拿出和DROOLS和其它几款规则引擎跑出的数据来一起看看。

我们通过实际测试操作,让旗正规则引擎(VisualRules)和其它几款主流规则引擎进行性能分析对比,并展示处理速度,内存占用,正确率等各项指标,分别来观察规则引擎的综合性能。

一、本地化

1.中文化需求

VisualRules相关的各个软件以及相关的培训和帮助材料等,以全部中文化的方式进行描述,在各个词汇以及功能的设计上,都是从中文的特点来出发进行设计的。

这一点在规则引擎的核心功能(业务语言描述业务逻辑)上体现的特别明显,VisualRules采用全中文化的语言来描述业务逻辑。不像JRules等采用纯英文(TRL是纯英文、培训和教程为全英文)、BRL(一般是英文,通过处理可以是翻译后的中文)等方式来描述业务逻辑,在表述上总会有一些牵强。

2.对使用者的要求

由于VisualRules从中文出发来设计和实现,并且从一开始就考虑了业务人员使用的要求,因此学习曲线非常低,对使用者的要求低。在业务规则的查阅以及修改方面,普通的有大专以上水准的人就可以快速的学会使用。在业务对象的设置以及业务规则的建立方面,学过计算机高级语言的人都可以快速学习掌握。这在用户培训上占用很大的优势,大大的节约了培训的成本。

而JRules等产品,一般除了要求用户有较高的英文水平之外,还需要学习其专业的规则语言,需要经过一个比较长时间的培训才能掌握。

二、安全性

1.政治风险

旗正公司是完全的国内企业,而且得到了国际科技部和财政部的创新基金支持,不存在政治风险。而国际公司会受到外国政府的关于高新技术出口政策的限制,会有一定程度上的政治风险。

2.泄密风险

业务规则管理系统不像数据库,是一个完全独立成熟的产品,可以不涉及业务。业务规则管理系统的行业型特色非常强,总是需要针对行业的特点做一些完善和优化。特别在实现一些特殊需求或者涉及到性能优化等问题时,肯定需要规则引擎厂家的支持。由于国家税务是涉及国家安全的东西,因此如果采用国际产品,泄密的可能性会增加。

3.源代码

考虑到国税系统的安全性考虑,旗正公司可以根据国税部门的需要开放与业务规则运行相关的源代码,以保证国税系统可以安全放心地用规则引擎来执行各业务规则和政策。

而国际产品一般不会提供规则引擎的源代码,这样由于国税部门的特殊性,使用后可能会存在一定的风险。

三、性能测试对比

场景说明:准备10万条基础数据,生成中间数据300万条,执行20条规则,写入数据库20万条,通过不同的几款主流规则引擎对比,可以看出旗正规则引擎的优势。

1.规则执行速度

VisualRules从一开始就关注性能的问题,目前已经将规则的执行,从解析执行发展到编译后执行,这样的执行速度在所有的规则引擎的实现中是最快的。JRules等产品,虽然目前也做了此方面的优化,但是只是做到了部分编译后执行,因此在速度方面并不具有优势。

2.内存占用

为了能让性能发挥更好,我们在软件开发之初就制定了高标准要求,经过多年的不断研发和改善,旗正规则引擎在内存使用上成功超越了其它主流产品,这也是保证了我们产品拥有更好的稳定性。

3.CPU使用率

4.数据处理正确率

四、服务和支持

由于旗正公司是完全的国内企业,在服务以及技术支持上会更加的便利。

1.二次开发,业务系统集成性

由于业务规则管理系统不同于数据库等产品,业务规则管理系统肯定会根据具体业务规则的特点,在管理上会有所不同。因此管理系统会需要和业务系统结合,以满足业务系统的需要。

旗正公司可以派核心的开发人员和业务系统的开发人员一起制作和完善特定行业的规则管理系统。并且将规则管理系统和业务系统更好的集成。

2.服务价格,维护升级

由于旗正公司为完全的国内公司,在服务价格上会明显的低于国际公司。而且在后期维护升级上,也会优先考虑国税部门的需求。

而国际产品可能会优先考虑自己国家的要求,并不会像旗正公司一样重视国税部门的需求。

五、易用性

VisualRules从产品最初设计开始,就非常关注如何使用户使用简便,减少用户的工作量。

在用户的操作界面上,VisualRules对不同的操作员针对性的提供一些特定的功能。比如为开发人员提供了生成开发人员所熟悉的java语言,让开发人员可以用自己熟悉的语言更加深入的理解业务逻辑;为业务人员和管理人员提供了业务语言和流程图,可以用业务人员自己的语言来理解业务逻辑。另外VisualRules还提供了规则树的功能,就是可以以树状的形式定义了相关规则的相互关系,包括公共条件关系、循环关系、先后关系等。让用户在编辑规则阶段,就清晰的指导了规则执行的流向。

VisualRules针对国内项目基本都是基于数据库系统的特点,集成了数据库层,并且实现了数据库层的随时变更。还增加了大量的向导功能,以帮助用户可以非常方便的在规则中操作数据库。另外又可以让用户可以直接在编辑界面执行规则,这些规则执行的数据可以是测试数据。同时又提供了数据查阅的功能,可以直接在编辑界面就可以看到原始数据和规则执行后的结果数据。这些功能都使得用户可以非常方便的定制规则。

VisualRules针对规则变化时,可能导致规则包接口的变化。将接口采用map方式来存储,这样就使得所有规则包的接口都可以随时修改。同时结合了代码生成技术,可以为技术人员生成其他相关的程序代码,包括jsp代码、以及其他的java类代码。这样可以让技术人员仅仅通过配置页面,就可以生成一个完成的调用规则的应用。

VisualRules针对不同的用户,提供了不同的版本,下面讲述具体版本中VisualRules有具有的优点。针对技术人员,VisualRules提供了规则编辑器开发人员版,开发版有如下优点:

1.单个文件集中管理规则包相关的所有规则和业务对象

开发人员可以在同一个规则包中,处理和此规则服务相关的所有参数、数据来源、技术和业务词汇、业务规则。

而JRules等产品,却需要在不同的地方定义XOM、BOM、RULESET、RULE等,你很难在一个统一的地方全面的把握住该规则服务所需要的所有的业务规则和业务对象。集中统一的管理,可以极大地为用户提供便利,减少开发工作。

2.面向规则包的版本控制

同时集中统一的管理也为规则包的整体版本控制提供了可能。很多实际业务要求,同一规则服务,会在不同的时间段或者不同的条件下,会调用不同的版本(也就是具体其中某几个规则会有所不同),而这几个版本可能是同时都要有效的。因此需要针对规则包进行统一的版本控制。

而目前像JRules等产品,只能提供规则级别的版本控制,不能做到整个规则包级别的版本控制。

3.规则分值、循环类规则

在实际的业务规则实践中,总是会出现某些规则是只有满足某个公共条件才触发的,也会出现某些规则是在某个循环中的。VisualRules可以在规则集中设置公共条件或者是循环条件,以满足规则集下面的所有规则必须满足公共条件才能执行,或者是循环执行的。

而像JRules等产品的规则集,不能设置工作条件和循环条件,因此JRules不能对规则的执行进行有效的分支控制。很多时候其需要通过为每个规则设置大量的条件或者通过临时变量等变通的方式来解决,这样的解决方式非常牵强,就不能体现业务语言表述业务逻辑的特点了。

4.编辑阶段的java代码对照生成

由于技术人员使用规则编辑器,其更多的关注实际业务逻辑对应的技术映射是否正确,因此技术人员更加关注业务逻辑对应生成的java程序代码,而技术人员如果已经有java语言的基础的话,那么查看生成的java代码会比看中文化业务逻辑更加直观和便于理解。其原因也显而易见,因为中文描述的业务逻辑,同样一句话可能在不同的环境下,是不同的技术实现。因此如果要关注具体的实现细节,则需要查看实际的代码。VisualRules可以自动实时的生成对应的java代码,这会在测试以及查错方面给予很大的帮助。

而JRules等产品,只能看到TRL语言,这就要求技术人员重新学习一种新的语言,也不好理解。

5.规则包整体测试

VisualRules可以在编辑环境下,直接对规则包进行整体测试。测试时只需输入所需的参数的值,就可以查看到输出结果,以及可以看到整个规则执行路径以及对应的数据变化情况。这样就可以非常方便的对规则包进行测试检查,或者对下面的某个规则或者规则集单独进行检查。

而JRules等产品必须要在eclipse等开发工具下,单独编写相应的java程序来驱动规则包的执行以及进行调试测试,这使得测试等工作变得非常困难(比当初采用编码方式实现业务逻辑进行调试一样困难)。

6.规则集、规则的单元测试

VisualRules可以在编辑环境下,对规则集、规则、决策表等进行单元测试。这样就使分块查错变得非常容易。

而JRules等产品根本不支持单元测试等操作,除非另外增加一个只包含需要测试的规则的规则包来进行测试,这样就变得非常困难。

7.规则执行轨迹跟踪

当规则包被调用时,有时候用户需要知道这次调用到底激活了那些规则,他们的先后执行顺序,以及调用此规则时,对业务对象的修改情况(进规则之前,业务对象什么状态,经过规则执行之后,业务对象变成了什么状态)。VisualRules可以将所有当次运行的这些规则执行轨迹记录下来,供用户进行查阅,或者存储在数据库中,供以后查阅。这在用户进行规则的查错时非常有用,可以马上定位到底是运行到那个规则时,发生了错误。

而JRules等没有提供这方面的功能。他只能通过调试来实现。

8.规则异常处理

VisualRules可以针对规则定义多种异常处理方式,通过设置规则属性就可以。这样就可以在规则内部处理异常情况。

而JRules等只能在规则包级别进行异常的处理情况。

9.动态的规则包调用接口

VisualRules支持外部调用直接以数值、字符串、类对象等多种方式将参数传入到规则包中,这样就使得接口的参数动态化。特别是当采用规则服务方式时,如果变动接口,不用去修改原先调用它的各个程序。

而JRules等必须要以类属性的方式来传递参数,这样就使得参数的传递不能动态化,规则服务接口不能方便的发生变化。

10.动态or映射

VisualRules从一开始就充分考虑基于数据库的项目的特点,大量的规则判断依据(比如参数以及原始数据、或者结果数据)都需要来源于数据库,因此VisualRules在业务规则处理的业务对象中,无缝集成了数据库层的操作。让规则操作数据库中的数据就像处理一个普通的业务对象一样方便,并且让数据库对象也像规则一样,可以随时改变。

而JRules等产品,却通过类对象来访问数据库,这样就不能使得数据库对象不能轻易进行变动,也使得操作和访问数据库变得非常困难。

11.基于JSP的业务系统操作界面自动生成

VisualRules可以在规则编辑界面配置生成调用此规则包的JSP页面,这样就可以轻松的完成操作界面的生成工作。这有点类似工作流中的表单设计器。只不过工作流中的表单设计器,相对参数比较固定,格式也统一。而VisualRules的页面配置器,却可以根据模板设计的不同,而生成针对不同项目特点的页面。JSP页面的生成使得测试规则变得更加容易,甚至可以用此功能轻松的开发完成一个完整的基于数据库的管理系统。

而JRules等工具却并不提供这类功能。

VisualRules专门针对业务人员提供了 规则配置器编辑人员版,编辑版具有如下特点:

12.带有用户身份认证的完整的规则编辑功能

编辑版由业务人员进行使用,必须经过用户名和密码的身份认证。这种身份认证可以和业务系统结合。并且通过规则的权限分配,用户只能查看和修改自己具有权限的规则。这就保证了规则修改的安全性。

而像JRules等工具并不能为业务人员直接提供一个完整的具有严格的身份认证的规则编辑器。其只能通过其自身的规则管理系统来进行操作。这就使得技术人员和业务人员的操作界面等不一致,增加了沟通的难度。

13.支持业务人员直接测试规则包和规则

对于规则包的整体测试,或者对于规则、规则集的单元测试,也在编辑版中提供。这样就使得业务人员直接可以在修改规则的过程中测试规则设定的正确性。

而JRules等产品需要通过调试等手段来检验规则的正确,这样就只能由技术人员才能测试规则以及验证其正确性。

14.编辑阶段可查看来源数据

编辑版不能对对象库中的数据库层进行操作,也就是说不能直接操作数据库。但是可以提供功能供用户直接查看来源数据,这样业务人员在编辑规则时,如果需要查询数据,就不需要通过报表系统去查询,直接在编辑界面就可以查看对应的数据库中的来源数据,这样可以大大减轻开发的工作。

而JRules等产品,并不提供这类功能。

15.支持多种样式的决策表

VisualRules针对国内决策表的特殊情况,设计了多种决策表,包括表格类决策表、多维决策表、关联决策表。当然也可以根据业务系统的实际需要进行扩展。这些不同类型的决策表,使得业务人员可以更加简单方便的表述业务逻辑。

而JRules只提供了一种决策表的实现,而且这种决策表在描述国内的业务需求时,并不能很好的进行描述。

16.支持规则包的流程图显示

VisualRules可以在编辑阶段直接生成一个包含了全部业务逻辑以及流向的流程图,这个流程图可以导出成html,发送给相关的人员查阅或者审批。这使得业务人员可以在一副图中,看到所有相关的信息,非常符合中国人的思路,易于国人理解。在具体的流程显示时,还可以将只有技术人员才关心的一些规则隐藏起来,让流程图只显示和业务相关的逻辑。

而JRules只能提供局部流向图,并不能将具体的规格内容包含在其中,也不能在一副图中描述整个流向图。

17.支持用户修改轨迹记录

VisualRules在规则编辑阶段,在修改用户的信息记录在被修改的规则文件中。这样就可以跟踪到某个规则,在什么时候被谁进行了修改。

而JRules等产品,却并没有对编辑用户的信息进行记录。

总的来说,VisualRules针对国内用户的特点以及基于数据库项目的特点,增加了很多易用性方面的功能。这些功能大大的简化了用户的工作,真正的将业务规则的编写可以由业务人员来设定和审阅。另外VisualRules可以针对国税系统的情况,完善国税系统所需要的各项功能,以求最大限度地满足国税系统的需要。

时间: 2024-10-14 12:46:01

旗正商业规则引擎和开源及其它规则引擎测试对比的相关文章

旗正规则引擎规则编辑

看到有人问,旗正规则引擎定位就是规则逻辑实现简易,业务员也可以执行,可是试用的时候,突然发现还是有些凌乱,规则编辑感觉还是有点繁琐啊.那我说,方法还是没对路,接下来,我来给献上宝典. 规则包开发 通过"开始-->程序-->旗正商业规则定制平台->规则配置器"启动规则配置器.启动后, 关闭欢迎首页, 进入到缺省的开发工作空间. 通过规则配置器的测试步骤包括创建工程.创建规则包.定义对象库.定义规则.发布规则包.测试规则包.创建web页面.web方式测试规则包 以下分别讲

新手使用旗正规则引擎

新手使用旗正规则引擎 1   注意事项 要注意服务是否启动,其中服务包括规则引擎的服务和数据库(安装规则引擎时会自动安装mySql)服务,这两个服务会在安装规则引擎时自动启动,其中还有一个比较容易遗忘的服务Apache Tomcat rules,如果没有启动该服务,显示页面信息将是无法链接到你请求的页面. 数据上有四种数据,分别为传入数据.临时数据.外调数据.常量数据.根据这些名字能很好的找到你要定义的变量放在哪个位置.要注意你定义的变量不要放错了位置. 对象库下hr下面的表,看这些表的编辑窗体

开源三维地球GIS引擎Cesium常用功能的开发

Cesium是一个非常优秀的三维地球GIS引擎(开源且免费).能够加载各种符合标准的地图图层,瓦片图.矢量图等都支持.支持3DMax等建模软件生成的obj文件,支持通用的GIS计算:支持DEM高程图.测试中的3D-Tiles分支还支持倾斜摄影生成的城市三维建筑群.国内许多三维GIS产品都基于Cesium进行封装(包括一些大厂).因为工作关系,我对Cesium的一些基本GIS功能进行了研究,特此记录下来. 如上图,这是一个给市政GIS\BIM管理平台做的原型,GIS部分使用Cesium,BIM部分

Dgame3D——开源3D网页游戏引擎

资源介绍: 创建一个主类 public class Main extends Sprite在构造函数中监听舞台的初始化if (stage) init();else addEventListener(Event.ADDED_TO_STAGE, init);在init函数中创建Context3D创建成功会有一个回调事件,在事件中创建dGame3DSystem,创建一个游戏类Game,最后再创建一个timer用于游戏类的主循环 dGame3DSystem.CreateContext3D( stage

KBEngine开源mmog服务端引擎

KBEngine是一款开源mmog服务端引擎, 使用统一协议能够轻松与前端对接,能轻松使用unity3d. ogre. cocos2d. html5等作为前端表现.一款开源的游戏服务端引擎,使用简单的约定协议就能够使客户端与服务端进行交互,使用KBEngine插件能够快速与(Unity3D, OGRE, Cocos2d, HTML5, 等等)技术结合形成一个完整的客户端. 服务端底层框架使用c++编写,游戏逻辑层使用Python(支持热更新),开发者无需重复的实现一些游戏服务端通用的底层技术,将

来自后端的突袭? --开包即食的教程带你浅尝最新开源的C# Web引擎 Blazor

来自后端的突袭? --开包即食的教程带你浅尝最新开源的C# Web引擎 Blazor 在今年年初, 恰逢新春佳节临近的时候. 微软给全球的C#开发者们, 着实的送上了一分惊喜. 微软正式开源Blazor ,将.NET带回到浏览器. 这个小惊喜, 迅速的在dotnet开发者中间传开了. 而就在昨天(2018年3月22日) Blazor发布了它的第一次Release. Blazor到底是个什么样的东西呢?我们是否真的可以携着C#语言进入前端的市场中? 不如现在就跟我一起体验dotnet blazor

IBM规则引擎(ODM)入门系列二(2):规则项目打包、发布及服务端测试

上一篇博文介绍了如何搭建安装res服务,这次一起来看看如何在Rule Designer中创建RuleApp并将其发布到Res服务上. 打开Rule Designer,查看一下我们的规则项目: 以PersonRule规则项目为例,如上图中,在“规则项目图”视图中,点击“创建RuleApp项目”: 输入项目名“PersonRuleApp”,点击下一步: 因为点击的是PersonRule规则集项目的“创建RuleApp”导航链接,所以这里选择规则集项目默认为“PersonRule”,点击完成. 此时在

C++11 图说VS2013下的引用叠加规则和模板参数类型推导规则

背景:    最近在学习C++STL,出于偶然,在C++Reference上看到了vector下的emplace_back函数,不想由此引发了一系列的“探索”,于是就有了现在这篇博文. 前言:      右值引用无疑是C++11新特性中一颗耀眼的明珠,在此基础上实现了移动语义和完美转发,三者构成了令很多C++开发者拍案叫绝的“铁三角”(当然不是所有C++开发者).而在这个“铁三角”中,有一个无法回避的关键细节,那就是引用叠加规则和模板参数类型推导规则.其实,关于这两个规则,可查到的资料不少,但都

DIOCP开源项目-DIOCP3的ECHO测试<贴图>

星期六开了测试台测试机子.星期天休息,今天早上来接两个图 开了2个客户端,一个qsl的echo client,一个是楠楠的dbiocp回调客户端.建立13240个连接 今天来后,机子很卡,后来发现是楠楠的dbiocp导致的.难怪,速率才14M /s,刚1个小时能达到 90M/S,关掉后,和qsl的客户端继续很正常. 唯一的缺陷是,Integer溢出了,导致统计数据出现了负数.qsl的客户端一样也是这个问题,实际使用倒是可以忽略. 内存占用<设定的WSARecv的内存块大小为1024>,内存占用