规则引擎--visualrules 商业规则定制平台的适用范围

VisualRules的提出是为了解决目前软件项目因为客户需求的不断变动,造成项目延期或者维护成本居高不下等问题。VisualRules的使用可以有效的减少软件设计和开发的工作量,使得软件项目所需要人手大大降低,有效的减少了项目沟通的问题以及项目管理的难度。同时VisualRules使得极少的维护人员就可以担当起几个项目的维护,部分维护工作可以直接由客户担当,有效的控制了维护成本。因此VisualRules最适应于那些需求容易发生变化或者需求最初分析不清的软件项目。

        就技术层面而言,需求的变化涉及到三个层面的变化:业务逻辑层,这是业务需求最容易变化的部分,用户可能会要求定期就发生变化;数据库层,这一层的变化最小,因为业务数据结构一般都不会轻易发生变化,但是如果某些数据库对象参与了业务逻辑的计算过程,必须用于配置一些参数,那么这些数据结构也容易发生变动;界面层,界面层在前期项目开发阶段变化大,后期维护阶段变化相对较少,一般涉及是数据筛选和校验逻辑的变化。

        VisualRules的目标就是使软件项目可以随着用户需求的变化而变化,因此VisualRules分别从以上三个层面让软件项目支持需求的变化。下面分别描述以上三个层面,原先通用的做法以及基于规则平台的解决方法。

        对于业务逻辑层,原先通用的做法是采用Struts的form等来定义数据接口,采用Action类来操作业务逻辑。或者是采用Bean来定义数据接口,采用Spring来定义接口,然后用实现类来定义具体的处理逻辑。这种做法使得业务逻辑发生变化时,需要去对应的修改实现类中的代码,然后调试、测试、打包、发布。采用这种方式有几个弊端:1、变动必须修改代码,因此比如高级程序员才敢改,而且改了发布必须重启服务。2、业务逻辑绑定了框架,如果框架(如Struts、Spring)遭淘汰,那么原先项目代码将很难重用。这些都使得业务逻辑的修改变得复杂。

        VisualRules提供了规则配置器,可以来设置业务逻辑层所需要的定义的数据处理逻辑以及数据库操作逻辑。VisualRules将这些配置的逻辑可以直接翻译成java代码并自动编译。同时提供规则引擎来动态的调用对应的业务逻辑规则包。基于VisualRules,数据接口不再需要用Form或者Bean类来定义,而是通过一个动态的Map来和规则包进行交互,业务逻辑不再写在代码中,而且存储在规则库中,调用时会自动编译生成对应的java代码。这样业务逻辑的实现脱离了框架,使得业务逻辑在将来技术的升级时,可以最大限度的得到复用。同时也方便了业务逻辑的维护和修改,发布时也不用再重启服务。

        对于数据库层,原先通用的做法是采用Hibernate或者IBatis等实现数据库对象的接口。这样一般都需要维护一个数据对象的XML描述,以及自动生成的一些java代码。Hibernate的采用简化了数据库层的操作,使得用户只需维护XML中的一些结构信息,就可以直接操作表。但是Hibernate等技术也带来了一些问题,比如性能问题,依赖问题、数据库特性问题等。最显而易见的,当数据结构变动时,需修改或生成对应的XML,然后发布也需要重启服务。VisualRules自动从数据库读取字段信息,并且采用List来存储,因此可以使用公共的接口类实现数据库对象的实现。采用VisualRules的数据库接口,可以实现数据库的变化发布后无需重启服务器。并且可以直接调用数据库表、视图和存储过程,也可以自定义SQL语句,使用数据库的一些特性语法。

        对于页面层,现在页面处理基本有两种处理方式,一种是传统的页面跳转方式,这种方式一般用Struts等来控制跳转,在每个跳转的页面中定义页面展现逻辑;还有一种是基于AJAX提交的方式,这种方式可以采用DWR等直接调用后台的逻辑代码,然后返回数据,数据解析以及展现逻辑完全有一个页面控制。我们不推荐采用第一种方式来处理页面层,因为修改Struts相关代码必须重启服务,不能实现页面层的动态修改。我们推荐页面逻辑完全在页面层中控制,然后通过Ajax直接访问服务器中的规则包,然后将结果返回到页面。VisualRules处理提供Ajax调用规则包的程序框架之外,还采用更加简便的方式来实现页面层。VisualRules通过页面配置器,直接配置不同的页面所需要设定的参数,然后根据页面模板来生成对应的页面。因此VisualRules可以为传统掉转方式,生成对应的jsp,也可以根据Ajax提交的特性,生成ext等页面,或者根据其他的框架来生成对应的页面代码。VisualRules生成的页面代码上传到服务器之后,就可以直接应用,而无需重启服务

        因此基于VisualRules进行开发,将每一层最核心的设置单独提出来配置,简化了每一层的开发。同时也使得维护和测试阶段,修改无需重启服务。使得业务需求发生变化时,真正实现了软件的随需而变。VisualRules使得数据库层变得动态,增强了业务逻辑配置的功能,简化了页面层的开发。以下分不同行业来说明在哪些项目中,可以充分利用VisualRules的这些功能:
金融行业
        VisualRules可以用于银行系统用户资格审核、风险分析等项目中,可以用保险项目的核保、险种分析等项目中。
流通行业
        VisualRules可以用于商业销售环节的定价策略的分析,返点政策的配置,销售预测,人事奖励机制的设置等。
制造行业
        生产排程算法的设定。
电信行业
         套餐配置的算法、积分系统等。
        在以上这些项目的使用中,充分利用本产品对业务规则的配置功能,实现了这些逻辑的随时可变。当然在一般的ERP或者企业管理系统中,充分利用本产品对页面层和数据库层的简化功能,实现这类项目的快速开发。


你可能感兴趣的:(数据结构,Ajax,Hibernate,struts,项目管理)