分类:
2008-12-22 16:15:04
2006 年 1 月 27 日 Business Rules组件是WPS中的重要服务组件。通过在业务流程中分离业务规则的定义、灵活的实现规则逻辑,并基于Web的规则管理工具支持动态规则改变,Business Rules组件体现了IBM随需应变解决方案的思路。从这里,读者可以了解到Business Rules组件的概念、基本工作原理以及具体应用。文章将结合具体的例子,帮助读者深入了解Business Rules服务组件。 业务规则对于业务过程管理有重要意义,近年来对于业务规则的研究一直在进行中。
WPS中的Business Rules组件是IBM在这一领域中的积极尝试。WPS(Websphere Process Server)是IBM对业务流程整合的更为完善有效的解决方案。WPS在整体构架上,基于服务组件模型,遵循统一的编程模型、部署模型以及调用模型。同时,针对业务整合应用的特点,WPS中提供特殊的服务组件来增强业务建模和实现的能力,Business Rules组件是这些特殊的服务组件的一员。Business Rules组件定义了能够规范的描述业务规则的语言,并提供驱动引擎和开发环境支持Business Rules组件的实现和应用。Business Rules组件将业务规则从应用系统中分离出来,增加了动态的对业务规则更新处理的能力,是对业务逻辑实现的更灵活有效的描述方式和实现方式。Business Rules组件提供两种形式的业务逻辑描述,一种是If/Then规则集(If/then ruleset),另一种是决策表(Decision table)。下文会对这两种方法进行详细的描述。Business Rules是通过规则组(Rule Group)触发的。规则组(Rule Group)是组件的最外层,对外提供接口,接口中声明的操作定义了业务需求。接口中的操作基于不同的时间日期可以被多个业务规则实现。客户端的应用通过接口调用Business Rules组件,而不需要了解规则的定义和实现细节。
如图1所示,我们首先描述一个简单的Business Rules的应用。
![]() 接口是Business Rules组件的入口点。Business Rules组件的接口是WSDL格式的。接口定义的操作是业务需求的声明,业务规则集的定义是操作的具体实现。 规则组(Rule Group)是业务规则组件的最外层。在规则组(Rule Group)中指定接口,这些接口是客户端访问业务规则组件的入口点。规则组(Rule Group)指定了一系列的规则逻辑(规则集.ruleset或者决策表.dtable)。客户端访问业务规则组件的时候,根据用户输入参数以及定义的参数方法,按照在规则组表(Rule Group Table/.brgt)中定义的时间日期和规则逻辑的映射,动态的选择规则逻辑。当在规则组表中找不到相应的规则逻辑的时候,缺省的规则逻辑会被选定。如图1所示,当时间日期在1/1/05到6/24/05之间的时候,规则集RuleSet1会被选定;当时间日期在6/24/05到1/1/06之间的时候,决策表DecisionTable1会被选定。 参数方法(Parameter Method)是指定规则组(Rule Group)参数的方法。规则组中有三种参数方法:当前时间,Java代码和XPath。
Business Rules中定义了两种业务规则逻辑,If/Then规则集和决策表。If/Then规则集是一系列的被顺序执行的if-then条件/活动语句。决策表(Decision Table)是多重规则定义的扩展,是一系列支持多维条件判断的If/Then结构。 2.3.1 If/then 规则集(If/Then Ruleset) 在If/Then规则集中可以定义很多的If/Then条件/活动语句,它们会被顺序执行。规则集中的活动一般用来初始化和对参数赋值;If-Then条件句是根据参数变化来决定活动的行为。例如:上文例子中的If/Then规则集的描述是:如果输入input1的String是"red",那么赋返回值output1为"red output"。 2.3.2 决策表(Decision Table) 决策表是描述多维条件判断的If/Then结构的业务逻辑。决策表被组织成树形结构,在多个If条件在表格的交叉点定义Then活动。一个或者多个条件成立后,相应的Then活动被触发。决策表采用树状结构而不是顺序结构能够有效的处理多重规则。例如:上文例子中的决策表是: ![]()
WPS中的Business Rules组件的一个突出特点是,业务规则可以被动态的增加、修改、删除,而不影响应用程序的其他部分。 使用基于Web的业务规则编辑工具可以实现业务规则的动态修改。为了实现业务规则的动态更新,需要定义业务规则模板(Business Rule Templates)。模板提供了基于web的规则编辑机制,如果一个规则的条件或者活动没有被模板化,那么业务分析者在web工具上不能对规则进行更新操作。模板允许应用程序定制业务规则的动态性:
WID(Websphere Integrated Developer)提供了集成的开发和调试Business Rules的环境。其中的桌面规则编辑工具(Desktop Rule Author Tooling)向开发者提供了图形化的界面,有效的实现了对规则以及规则模板的创建、修改、删除。 基于Web的业务规则管理工具使得用户能够动态的更新业务规则。基于Web的业务规则管理工具是一个基于JSP/Servlet的企业应用程序,它可以处理发布在应用服务器上的业务规则。它的动态性表现在,当业务规则被改变的时候,包含业务规则的应用程序以及应用服务器不需要重新启动。
基于上文描述的例子,具体开发过程如下: 打开WID,在当前工作空间中,新建一个业务集成模块(Business Integrated Module)。Business Rules组件以及相关的接口将在业务集成模块中创建。 Business Rules组件的接口用WSDL描述,接口中的方法是业务需求的声明。对于上面业务规则应用的描述,定义接口BRPORT.wsdl。 ![]() 业务规则组(Business Rule Group)位于业务规则组件最外层,其中指定。在业务集成模块中新建一个规则组,为规则组指定前面定义的接口BRPORT.wsdl。在WID的业务集成(Business Integration)视图下,设定规则组的可用目标规则逻辑;参数选择标准;缺省目标规则逻辑;增加基于日期范围的规则逻辑选择等。当规则组要引用一个规则逻辑前,要确定规则逻辑是存在的。如果不存在,应首先创建规则逻辑。 ![]() If/Then规则集是Business Rule组件中的一种规则逻辑。对应于本应用实例,规则集RuleSet1的定义如图: ![]() 决策表实现了多维条件的规则设定,本应用中的决策表DecisionTable1定义如图: ![]() WID中的装配编辑器,提供了对WPS中的服务组件的装配集成。Business Rules组件可以在这里进行装配,生成可以部署并运行在WPS上的应用程序。将业务规则组件用鼠标拖到装配编辑器中,如图所示: ![]() 在WID的装配编辑器中,鼠标右键点中业务规则组件,选择Test Component,启动集成测试客户端(Integration Test client)。 ![]() Invoke的设置如图7,输入input1为red,根据当前时间选择的规则逻辑是决策表DecisionTable1。得到output1为"s4"。
Business Rules组件是WPS中的服务组件(SCA)。基于服务组件模型的Business Rules组件向用户提供简单一致的接口、编程模型和部署模型;针对企业应用的业务逻辑,Business Rules组件通过将规则逻辑和业务应用分离,是灵活便捷的企业业务集成的实现方式; WID中基于桌面的规则编辑工具以及所提供的装配调试环境,为组件的开发使用提供了有力支持;面向用户的基于Web的规则管理工具,为用户提供了灵活的动态更新规则逻辑的方式。WPS中的Business Rules组件是业务集成中重要的服务组件。 多媒体课堂:http://www.ibm.com/developerworks/cn/views/websphere/seminar.jsp?cv_doc_id=176779
|