Chinaunix首页 | 论坛 | 博客
  • 博客访问: 248147
  • 博文数量: 58
  • 博客积分: 2017
  • 博客等级: 大尉
  • 技术积分: 680
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-07 00:15
文章分类

全部博文(58)

文章存档

2011年(1)

2010年(7)

2009年(32)

2008年(18)

我的朋友

分类:

2008-12-22 16:15:04

2006 年 1 月 27 日

Business Rules组件是WPS中的重要服务组件。通过在业务流程中分离业务规则的定义、灵活的实现规则逻辑,并基于Web的规则管理工具支持动态规则改变,Business Rules组件体现了IBM随需应变解决方案的思路。从这里,读者可以了解到Business Rules组件的概念、基本工作原理以及具体应用。文章将结合具体的例子,帮助读者深入了解Business Rules服务组件。

业务规则对于业务过程管理有重要意义,近年来对于业务规则的研究一直在进行中。

  • JSR 94 Java Rule Engine一直在定义规则引擎提供商需要的API。但是JSR有一些主要的缺点,并且在规则标准化方面的贡献比较少。规则语言首先需要被定义来使得规则引擎能够理解规则的描述。JSR 94中定义的调用规则引擎的API很有限,并且需要用户去理解规则定义语言本身和规则引擎。此外JSR 94是基于J2SE的API,和J2EE环境的集成不好。
  • OMG组织在2003年末2004年初的时候提出定义业务规则语意(Business rule semantics)以及"Rule XML"的提议。"Rule XML"是在业务规则标准化过程中迈出的最为重要的一步。OMG的标准化工作让人们看到了描述业务规则的更为轻便、快捷、有效的标准化方式。这些工作仍在进行中。

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组件;
  • 接口定义方法determine,其输入(input1)输出(output1)为String类型;
  • 使用当前时间作为参数方法,业务规则组件根据当前时间选择规则逻辑;
    • 当时间日期在1/1/05到6/24/05之间的时候,选择If/Then规则集RuleSet1;
    • 当时间日期在6/24/05到1/1/06之间的时候,选择决策表DecisionTable1;
  • If/Then规则集RuleSet1的定义是:
    • 如果输入input1的String是"red",那么赋返回值output1为"red output"
  • 决策表DecisionTable1定义为:
    • 当input1.compareTo("red") > 0,并且input1.length() > 4,Output1="s1"
    • 当input1.compareTo("red") > 0,并且input1.length() <= 4,Output1="s2"
    • 当input1.compareTo("red") <= 0,并且input1.length() > 4,Output1="s3"
    • 当input1.compareTo("red") <= 0,并且input1.length() <= 4,Output1="s4"


图 1

接口是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。

  • 当前时间,是指以当前日期时间作为选择参数的值。
  • Java代码,是指可以通过Java代码设定选择参数的值。因为在规则组中使用的是基于时间日期的选择器,Java的返回值需要是时间日期类型的。
  • XPath,这种方法是对于输入进行解析的方法。特别的,当输入是一个业务对象(Business Object),通过XPath可以指定业务对象(Business Object)中的某一个属性作为规则组的参数。

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工具上不能对规则进行更新操作。模板允许应用程序定制业务规则的动态性:

  • 控制业务规则中能够被Web用户修改的部分(条件/活动);
  • 定义约束条件(比如,限制某一个参数的修改范围等);
  • 定义规则逻辑的结构
  • 定义string类型的自然语言,显示在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。



图 2

业务规则组(Business Rule Group)位于业务规则组件最外层,其中指定。在业务集成模块中新建一个规则组,为规则组指定前面定义的接口BRPORT.wsdl。在WID的业务集成(Business Integration)视图下,设定规则组的可用目标规则逻辑;参数选择标准;缺省目标规则逻辑;增加基于日期范围的规则逻辑选择等。当规则组要引用一个规则逻辑前,要确定规则逻辑是存在的。如果不存在,应首先创建规则逻辑。



图 3

If/Then规则集是Business Rule组件中的一种规则逻辑。对应于本应用实例,规则集RuleSet1的定义如图:



图 4

决策表实现了多维条件的规则设定,本应用中的决策表DecisionTable1定义如图:



图 5

WID中的装配编辑器,提供了对WPS中的服务组件的装配集成。Business Rules组件可以在这里进行装配,生成可以部署并运行在WPS上的应用程序。将业务规则组件用鼠标拖到装配编辑器中,如图所示:



图 6

在WID的装配编辑器中,鼠标右键点中业务规则组件,选择Test Component,启动集成测试客户端(Integration Test client)。



图 7

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

  • WPS产品网站:

  • WID产品网站:


罗玲,IBM中国软件开发中心软件工程师,主要从事WPS中的Business State Machine组件、Business Rules组件和Selector组件的功能测试。邮箱:

阅读(999) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~