标题：visual rules
Visual Rules概述
什么是Viusal RulesVisual Rules又称旗正商业规则定制平台，是一个基于规则引擎实现的可视化定制业务逻辑的商业规则管理系统，同时又具有快速开发 Java软件项目的功能，是目前中国唯一的商业规则定制平台。
Visual Rules可以在程序外部对软件项目中所设计的业务逻辑进行单独管理，并且提供多种语言的API借口供外部程序调用，不限于JAVA。
Visual Rules可以集成到现有的软件项目中，将软件中经常容易发生变化的部分，独立出来由规则库进行管理，也可以用于直接开发web项目，Visual Rules可以为软件项目生成90%以上的程序代码，节约50%以上的软件开发时间以及减少80%以上的软件维护工作量。
Visual Rules是开发B/S结构软件项目的利器，特别适用于快速开发基于J2EE结构的软件项目。对于J2EE项目，一般其架构分为界面层、业务逻辑层、数据层。而Visual Rules提供了
● 数据库管理器，可以生成几乎全部的数据层代码
● 规则编辑器，可以可视化快速开发业务逻辑
● 规则引擎，可以动态加载和执行业务规则
● 页面模版编辑器及生成器，可以生成绝大部分界面层代码
● 在线的业务规则管理平台，可以直接供客户(包括非技术人员)直接修改软件项目中实现的业务逻辑
Visual Rules解决了软件开发中一直以来业务了逻辑层只能手工书写代码的问题，为业务逻辑层的实现童工了采用类自然语言(业务人员可以理解的语言)的可视化开发工具以及在线方式的业务逻辑编辑工具直接供业务人员修改相关逻辑。
背景当前社会已经开始进入信息时代，越来越多的企业和单位开始应用各种信息化系统来进行公司管理。包括财务系统、业务系统、办公自动化等等，这些信息化系统对提高企业的竞争力发挥着越来越重要的作用。
同时，当前社会也是一个惊蛰鞥日趋加剧的社会，各行各业都面临这残酷的竞争，要求企业不断地提高产品质量、服务质量并降低企业成本，从而要求企业不断地改进业务流程、改善商业模式。使得为企业服务的信息化系统也必须根据企业的变化而不断地变化以满足企业新的要求。同时，信息化系统也要求其变化能够快速、安全、稳定。
现存问题商业需求的不断变化，是目前软件行业面临的最大挑战。据统计，80%的软件项目最后都面临失败，其主要原因就是因为商业需求的变化造成软件不断地被修改，导致软件问题隐患的持续增加，最终导致失败。因此软件项目的成败关键看其能否满足客户需求的不断变化。
客户需求的变化主要表现在业务逻辑方面，目前已经普遍采用的三层架构技术就是希望解决业务逻辑不断变化的问题。三层架构技术是将软件分为界面层、业务逻辑层和数据层，将界面、逻辑、数据分离，其目的就是为了当业务逻辑变化时，只需修改业务逻辑层的代码而无需改动界面和数据层的代码。减少了因修改代码而产生的问题。
但是仅仅采用三层架构技术在解决客户需求不断变化的问题方面仍然具有很大的局限性。
首先业务逻辑层采用编码来实现，当业务逻辑变化时，需要软件工程师修改程序代码才能实现新的业务逻辑，一般需要经过需求变更、重新设计、编码、调试、测试、发布等阶段，周期往往在一周以上。这样就导致不能快速满足客户的需求，同时手工修改代码也增加了软件不稳定性方面的风险，也大大增加了软件的后期维护成本。
其次，客户需求的变化在某些情况下不仅仅表现在业务逻辑上，有可能会变化数据结构。这样势必刀子划修改数据库层甚至界面层的代码，改动可能会涉及到一些公共的程序代码。手工修改的工作量很大，而且也增加了项目失败的风险。
解决方法Visual Rules针对以上这些问题，提出了新的基于规则引擎技术以及快速开发平台的解决方案，解决了传统三层架构技术的局限。
Visual Rules采用规则引擎技术，将业务逻辑层的业务逻辑进一步分离出来，存储在XML格式保存的规则文件中，由规则引擎解析执行。同时提供一个可视化的操作界面可供客户直接修改业务逻辑，无须采用程序员编码的方式来实现。
同时，Visual Rules为基于web的开发提供了一套完整的web框架以及大量的公共控件，将界面层、业务逻辑层和数据库层彻底分离。同时其提供数据库管理器满足了数据结构的变化时，可以快速生成全部数据库层代码；提供页面模版编辑器以及页面生成器满足了数据结构变化时，可以快速生成几乎全部界面层。无须再采用手工编码的方式来满足数据结构的变化。
Visual Rules特点及价值
Visual Rules是在规则引擎基础上发展出来的一款产品，其秉承了规则引擎可以使业务逻辑的变化可以独立于程序之外的特点，同时结合国内软件项目的特点，为数据库层和界面层也提供了独立于程序之外配置的特点，因此本产品不光是一个业务规则管理系统，还是一个基于规则引擎的web快速开发平台。与国际上其他的业务规则管理系统相比，本产品具有以下特点：
顺序执行的规则引擎算法传统的业务规则管理系统，其规则引擎的算法基本上会采用reta算法，其基本原理是运行阶段判断哪些规则符合条件，然后去决定其执行轨迹，这类似于人工智能的思想，当然其最初出发点也是为了人工智能判断。由于业务系统业务逻辑的频繁变动，因此希望可以利用规则引擎来实现业务规则的配置，因此也就自然将reta算法作为业务系统中业务逻辑的执行算法。但是这两者其实是不一致的，业务系统中的逻辑一般是确定的，有着明确指定的执行先后顺序的。而reta算法是动态决定顺序的，因此在用reta算法描述业务逻辑时，往往显得非常琐碎，并且其速度也比纯粹用程序描述要慢很多。Visual Rules不再采用难以描述业务逻辑的reta算法，而采用顺序执行的算法来描述业务逻辑。这样描述业务逻辑和并平时用流程图和文本来描述业务逻辑就没有多少区别。可以最简单话的配置业务逻辑，同时其速度和手写程序的速度是一致的。Visual Rules是真正的为业务系统中业务逻辑的实现而设计的，是软件项目业务逻辑实现的最佳选择。
公共规则、循环规则、关联决策表由于规则执行算法基于顺序执行的算法，因此在描述业务逻辑上比reta算法有更多的展现形式，特别是可以通过规则集来定义多个规则的共同条件以形成执行的分支，或者用来描述循环运行的一组规则。另外在决策表的支持方面也有三种方式，二维决策表、多维决策表以及关联决策表，以更方便的形式来描述逻辑。同时规则还支持否则如果(else if)方式的条件，进一步增强了规则描述业务逻辑的能力。
动态的参数接口、数据库接口和Excel接口传统的规则引擎如JSR94描述的规则引擎调用接口采用Java类来传递值，这种方式使得接口的数据结构不能像规则一样变动。Visual Rules通过Map来传递值，因此其接口的数据结构是可变的。同时传统的规则引擎一般可以通过设置来直接调用Hibernate等外部数据库对象，这样其实就是通过类和XML来定义了数据库的调用接口，这种方式就不能使数据库对象不能像规则一样灵活变动。因此VisualRules采用List来定义数据库对象接口，这种方式使得数据库对象也是可变的。传统的规则引擎一般不能直接操作Excel数据，但是在实际的业务逻辑的应用中，部分数据并没有存储在数据库中，或者需要用Excel来展现数据。Visual Rules可以直接来操作Excel文件。
内存表格业务系统的业务逻辑实现有个特点，就是基本都是批量处理的处理，并且很多数据存储在数据库中。但是如果在实现业务逻辑时，频繁的去访问数据库，会使得整个业务逻辑的实现效率很低。因此VisualRules设计了内存表，可以将数据库中的数据先取出后放到内存表中，然后通过内存表相互之间做匹配或汇总处理。这样极大的提高了执行效率，而且也增强了业务逻辑层实现的功能。
最小化规则引擎做开发平台最关键是运行时的稳定和性能。因此VisualRules采用最小化的规则引擎，规则引擎只处理规则包的加载和调用，不处理规则语法以及规则解析工作。在开发规则时，开发平台根据规则语法将规则包静态编译成可执行的java代码，这样最大限度的保证的规则运行平台的稳定。同时将规则的开发平台和运行平台分离，使得运行平台不会随着规则语法以及功能的增强而变化。
基于模板的页面配置开发在页面表现层的实现上，当前最流行的技术就是采用Ajax来实现界面的表现。但是在表现逻辑的实现上，一般情况下，我们会基于一套框架（比如Ext、Dojo、JQuery等），然后再通过javascript来编写具体的逻辑代码。但是这些表现逻辑代码其实是非常晦涩难写的，而且也不能体现所见即所得的效果。Visual Rules将基于框架的组件配置信息单独提出来，通过图形化界面来设定所需要的参数，然后根据模板生成对应的代码。这种方式类似于代码生成器方式来生成界面层的代码，其开发工作量是最小的。
Visual Rules可以取代当前业务逻辑层和数据层所有的操作代码，准确的说，可以取代从Struts、Spring、Hibernate这些相关的代码。Ajax直接通过通用的Servlet来访问规则包。这种取代方式，极大的简化了后台代码的开发，同时也使得业务逻辑层更加快速适应业务需求的变化。规则引擎可以有效的和当前主流的Ajax框架进行交互，也可以在Jsp中，通过java代码来访问。页面层代码可以通过页面配置器来根据模板生成，也可以手工编写。
基于以上这些特点，使用Visual Rules可以为用户带来一些这些价值：软件系统随需而变软件系统最大的价值就是体现在系统运行的过程中，随着用户业务的变化，软件能够快速的加以适应，而不是成为业务发展的障碍。因此软件变更的响应时间以及影响，是衡量软件价值的关键。Visual Rules使得软件系统可以“零时间”响应用户需求的变化，真正的做到了软件系统随需而变。降低软件成本采用Visual Rules开发软件系统，可以减少项目开发所需要的人员数量，同时也减少了每个人的工作量，使得项目的周期缩短。因此visual Rules可以减少软件开发的成本和缩短软件开发的时间。同时由于Visual Rules提供了方便的配置工具，可以在软件项目后期维护阶段快速适应需求的变化，因此软件的维护阶段，当有需求变更时，不再需要安排程序员去维护。而是一般的技术支持人员甚至客户本身就可以实现变更工作。这使得安排一个技术支持人员就可以同时支持多个项目的维护工作。而不像原先那样，当维护时需要安排原先的程序员来进行对应。因此使得软件项目整个成本属于完全可控的范围以内。提高软件复用Visual Rules来实现业务逻辑时，是脱离程序语言来实现。因此其实现的业务逻辑可以供不同的语言来进行调用，也可以供不同的框架来进行调用。特别是当前基于web浏览器的富客户端技术不断发展的今天，富客户端框架很有可能会有新的框架进行取舍。因此业务逻辑脱离这些框架的实现显得尤为关键。当技术更新时，在新的技术框架的实现下，可以调用原先的业务逻辑代码，这最大限度的保证了原先软件项目的投资。