首页 > 范文大全 > 正文

应用规则引擎与Web服务分离业务规则

开篇:润墨网以专业的文秘视角,为您筛选了一篇应用规则引擎与Web服务分离业务规则范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:介绍了业务规则以及规则引擎的相关概念与原理,研究了应用规则引擎web服务分离和部署业务规则,给出了规则引擎应用结构和基于Web服务的系统分层结构,并讨论了基于Web服务的开发方法。

关键词:业务规则;规则引擎;Web服务

中图分类号:TP393文献标识码:A 文章编号:1009-3044(2011)29-7108-02

Separating Business Rules Using Rules Engine and Web Services

ZHANG Wei

(Zhengzhou Institute of Aeronautical Industry Management, Zhengzhou 450046, China)

Abstract: In this paper, the business rules, the concepts and principles of the rule engine are introduced,the separation and disposition of business rules useing rules engine and Web services are researched, the rules engine application architecture and the Web services-based system hierarchy are offered, and the Web services-based development methods are discussed.

Key words: business rules; rules engine, Web services

在传统的软件开法方法中,业务规则逻辑完全由程序代码来实现,业务规则的复杂和易变性增加了系统开发的难度,一旦业务规则发生变化,需由开发人员重新编写代码。因此,将业务规则从业务逻辑中分离出来,形成独立的运行模块,是改善软件系统结构,增强系统适用性和灵活性的有效方法。

1 业务规则简介

业务规则(Business Rules),简称BR,业务规则专家组(BRG)从不同角度给出了业务规则的两个定义:从业务的角度来看,业务规则是包含于特定活动或范围内关于指导、操作、实践或过程的行为规范,是一种原则;从信息系统的角度来看,业务规则用于断言业务结构、控制或者影响业务行为,是一个定义或限制业务某些方面的声明。

第一个定表明规则引擎的实质是实现一个组织的目标时所应用到的操作、定义和约束,这些规则的作用是帮助组织去更好地达成目标。第二个定义说明一个业务规则包含一组条件和在此条件下执行的操作,业务规则是应用程序的一段业务逻辑,这种逻辑的实现可以通过使用业务规则引擎等专门工具进行简化。

2 基于规则引擎的系统应用模型

规则引擎是一种嵌入在应用程序中的组件,由基于规则专家系统中的推理引擎发展而来,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策,接受数据输入,解释业务规则,并根据规则做出业务决策。

规则引擎需要通过程序接口的方式来进行控制和使用,规则引擎的程序接口至少包含以下几种API:加载和卸载规则集的API,数据操作的API,引擎执行的API。规则引擎的使用需要以下几个步骤:创建规则引擎对象;向引擎中加载规则集或更换规则集;向引擎提交需要被规则集处理的数据对象集合;命令引擎执行;导出引擎执行结果,从引擎中撤出处理过的数据。规则引擎的核心组件包括规则管理器、推理引擎、议程、工作内存以及规则库。

规则引擎的工作过程是:① 将初始事实数据(Fact)输入至工作内存(Fact Base);② 使用规则匹配器(Pattern Matcher)将规则库(Rules Repository)中的规则(Rule)和数据(Fact)进行匹配;③ 如果执行规则存在冲突(Conflict),即同时激活了多个规则,将冲突的规则放入冲突集合;④ 解决冲突,将激活的规则按顺序放入议程(Agenda);⑤ 执行议程中的规则,重复步骤②至⑤,直到执行完毕议程中的所有规则。

当引擎执行时,会根据规则执行队列中的优先顺序逐条执行规则执行实例,由于规则的执行部分可能会改变工作区中的数据对象,从而会使队列中的某些规则执行实例因为条件改变而失效,必须从队列中撤销,也可能会激活原来不满足条件的规则,生成新的规则执行实例进入队列。于是就产生了一种动态的规则执行链,形成规则的推理机制。

从以上对规则引擎的工作机制的分析得出,通过应用规则引擎,可以将软件系统中易变的业务规则从业务逻辑中分离出来,形成独立的业务规则逻辑模块。由于业务规则可以由业务管理人员通过规则管理器来进行管理、维护和更新,所以可以满足业务规则灵活多变的需求,大大降低软件系统的维护费用、延长系统生命周期。基于规则引擎的系统应用模型如图1所示。

在该系统模型中,规则引擎通过专门的接口程序与传统的应用组件实现数据通信,业务分析与管理人员可以通过规则编辑管理模块来进行业务规则的编辑与管理,建立好的规则存储于规则库中,推理引擎负责相应规则的计算,并将计算结果返回。

3 应用Web服务部署业务规则

3.1 基于Web服务的业务逻辑分层

软件系统主要经历了单机架构、基于C/S(Client/Server)模式的多层架构以及基于B/S(Borwser/Server)模式的多层架构等几个发展阶段。基于B/S的多层体系架构,中间的应用层是系统的核心组成部分,业务逻辑处理和运算都在这部分完成,业务逻辑被设计成功能相对独立的组件,各组件间通过接口程序相互通信。应用层接收来自浏览器终端的请求信息,经过相应的功能组件运算处理后再将结果返回给浏览器并显示给客户。目前的软件系统大多采用B/S模式,其结构如图2所示。

基于B/S架构客户终端中的应用逻辑独立出来的好处是:一、客户端使用通用的Web浏览器,当服务器端应用程序改变时无需更改客户端程序,而且对用户的操作技术要求较低;二、应用逻辑在应用层以可重用组件的形式存在,当业务逻辑发生变化时,只需修改相应的应用层组件即可。然而,虽然将业务逻辑封装在组件中,但大量的业务规则仍被固化在组件程序的代码中,当业务规则变化时,需要重写代码、编译、等一系列步骤。这无疑加大了系统维护、扩展的难度。

采用将业务规则部署为Web服务,应用规则引擎将业务规则与业务逻辑相分离,实现从业务流程中剥离易变的规则,在业务流程到达决策点时调用这些服务,通过规则引擎的计算来实现规则逻辑。应用这种灵活的方法,可以通过图形方式操作规则,邂免了在编程语言中或在流程内部对规则进行编码。业务管理人员可以使用工具编写与管理规则,由于大多数更新和功能增强是由用户来实现的,因此可以显著减少软件系统的维护成本。基于Web服务的业务逻辑分层如图3所示。

在基于Web服务的业务逻辑分层中,传统的业务逻辑层被分布到三个不同的层中:业务流程层、Web服务层和业务规则层。各层功能和特点如下:

1) 业务流程层。业务流程层负责管理业务流程的总体执行。这些业务流程可以是长期运行的业务流程、事务业务流程以及持久业务流程。流程逻辑支持分布到如Web服务或是EJB调用中的高级事务以及嵌套的子流程事务。因此业务流程层适用于将不易变化的工作流程与易变的业务规则分开;实现行业流程;支持流程的大型实例化;设计需要审计的流程等。

2) Web服务层。Web服务层将现有的应用程序层功能公开为服务。这样,多个业务流程便可以重用这些服务,从而实现面向服务的体系结构。Web服务实现功能逻辑和域逻辑,功能方法通常是无状态和中等粒度的,例如Web服务可能包含系统数据的实用程序方法、实体操作和查询方法。可以使用多种技术实现Web服务并隐藏实现平台之间的差别。因此,该层比较适用于:集成原有的代码或是第三方工具;封装应用程序层中的逻辑、自定义代码和实现。

3) 业务规则层。规则引擎是解决复杂业务逻辑问题的有效方案之一,从业务流程中以单独实体的形式提取业务规则可更好地对系统进行分离,从而提高系统可维护性。规则引擎可以对规则集进行并行和按顺序评估,规则能够对输入数据和中间数据的值进行评估并确定是否应该引发规则。与传统的Java过程代码相比,该模块设计提供了一个更简单、可维护性更高的解决方案。

此外,规则具备声明特性,并使业务分析员能够进行高级GUI(Graphical User Interface)编辑。现代规则引擎的执行速度非常快,并提供了内置的审计记录。规则层的典型特性包括:包含耦合和复杂的逻辑;支持使用并行执行进行高效的业务逻辑评估;允许将域逻辑转换为简单规则;实现高度易变的业务策略。由于规则在Web服务层中公开为服务,因此可以提高软件的重用性,从而简化了新的应用程序和集成的开发过程。

通过以上基于Web服务技术对传统业务逻辑的分层,从而将业务规则逻辑独立出来,并通过将业务规则部署为Web服务,实现了规则引擎与传统应用的集成。

3.2 基于Web服务的开发模式

WSDL文档是Web服务的开发关键,WSDL文档定义了相应Web服务实现的接口与绑定、Web服务请求程序和提供程序间的契约,以及两者的实现细节,甚至实现平台可以各不相同,当其中的一方发生改变时而不会影响另一方。WSDL文档创建后,就可以使用Web服务开发工具生成必要的部署时组件和运行时组件。以WSDL为核心,可分为自底向上、 自顶向下和往返三种开发模式。

在这三种开发模式中,自底向上模式适用于将现有功能公开为Web服务,往返模式一般作为辅助的开发方法,而自顶向下模式则提供了极大的灵活性和可重用性,可以快速实现新的Web服务的开发。因此,自顶向下模式更适于新的业务规则的部署,它可以保证开发出基于最佳标准且可扩展的接口;通过更改WSDL本身,最佳地管理服务的递增更改,而不影响与现有请求程序或提供程序的互操作性;客户端和服务器端程序可以并行独立地开发。当然,在开发过程中可以根据实际情况结合使用其它方法,以加快开发速度。自顶向下的开发模式如图4所示。

在自顶向下的开发过程中,客户端和服务器端的开发人员使用WSDL为各自的环境生成必要的组件。自顶向下的开发模式包括以下开发步骤。

1) 标识或创建一个与问题域相关的XML模式。这些数据类型应该定义在一个或多个模式文件中。可以使用标准的模式开发工具来创建或修改必要的模式。

2) 创建一个新的WSDL文件,许多企业级的应用程序开发工具集成有WSDL编辑器,这些编辑器为用户创建WSDL文档提供了很大的帮助。如在MyEclipse工作平台中就集成了WSDL编辑环境,可以根据用户需要自动生成相应的WSDL文档。

3) 生成服务端和客户端程序组件。可以使用Web服务工具生成服务端和客户端程序组件。如Apache的开源项目Axis2,提供了基于Eclipse的代码生成器。

4 小结

通过应用规则引擎和Web服务,将复杂易变的业务规则从业务逻辑中分离出来,业务规则的变更不影响软件系统本身,实现了将业务规则的开发与维护从系统开发人员转移到业务分析师或业务管理人员,改善了系统结构,增加了系统的灵活性和适应性,降低了系统的维护成本。当然,建立高效易用的系统还需要不断的深入研究和实践。

参考文献:

[1] Giarratano J C,Riley G D.专家系统原理与编程[M].印鉴,陈忆群,刘星成,译.北京:机械工业出版社,2006.

[2] Java规则引擎工作原理及其应用.[EB/OL].(2007-10-13)..cn/2007/1013/550919.shtml.

[3] 蔡自兴,徐光v.人工智能及其应用[M].北京:清华大学出版社,2004.

[4] Gaur H,Zirn M.BPEL Cookbook[M].Birmingham:Packt Publishing,2006.

[5] Haefel R M.J2EE Web Services高级编程[M].北京:清华大学出版社,2005.