|
用 BPM、业务规则和商业智能创建智能的、灵活的解决方案(5)本文关键字 转贴文档 广告 用 BPM、业务规则和商业智能创建智能的、灵活的解决方案(5) John Medicke ,IBM On Demand Solution Center,
IBM Research Triangle Park Margie Mago ,IBM On Demand Solution Center,
IBM Research Triangle Park Feng-wei Chen ,IBM On Demand Solution Center,
IBM Research Triangle Park 2003
年 12 月 连接到业务流程 Christina 和 Greg 很快就被说服为 BPM 使用 WICS,因为使用 WICS 把外部应用程序和数据源连接到业务逻辑做起来比较容易。WebSphere Business Integrator Adapter 技术使得连接外部源(external source)成为可能。通常将 WICS 描述为一种
“hub-and-spoke(中心辐射型)”
架构,以 WebSphere InterChange Server 作为中心(hub),以连接外部应用程序和数据源的适配器作为辐条(spoke)。 很多遗留应用程序(例如 SAP)和数据源(例如文本文件、XML 和 JDBC)都可以使用 WBI Adapters。对于其他应用程序和数据源,可以编写定制的适配器。所有适配器都提供相同的基本功能:它们在 WICS 中业务流程所期望的格式与外部应用程序和数据源所要求的格式之间转换数据。
如上图所示,WICS 业务流程逻辑操作业务对象(Business Objects),而适配器这个组件则负责在业务对象与特定应用程序所支持的任何格式之间转换数据。Greg 很快就认识到可以使用一个定制的适配器来连接规则引擎和 WICS 业务流程。他注意到,对于所有适配器,面向 WICS 的接口基本上是一样的,但是每个适配器在其面向应用程序的接口方面却有所不同。对于规则引擎,面向应用程序的接口可以编写成它所暴露的任何 API。 WBI 提供了一个 Web 服务适配器,这种适配器可以把 WICS 业务流程连接到 Web 服务。在编写了必要的 Web 服务接口之后,可以非常容易地结合带有 Web 服务支持的规则引擎(例如 ILOG JRules)以及其他规则引擎来使用这种适配器。 了解规则 本系列的前一篇文章介绍了各种不同的规则引擎。其中提到的规则处理器类型包括简单型(simple)、数据中心型(data-centric)和面向事务型(transaction-oriented)。规则有很多种。在感知并响应(sense-and-respond )规则引擎(Tivoli TEC)中,规则被指定作为对事件的响应。说明性(declarative)规则指定有何事发生,这与程序性(procedural)规则不同,后者指定“事情是如何发生的”。说明性规则表现了判定逻辑(decision-logic)规则引擎(Blaze、JRules 和 BRBeans)的特点。约束和关系规则在以数据为中心的事务性规则引擎(Versata)中占主导地位。解决方案空间(solution-space)约束规则在那些基于约束标准(JRules)从备选方案中计算出“最适合”结果的引擎中得以使用。Greg 只关注三种规则引擎:Versata、BRBeans 和 ILOG JRules。 Versata Logic Server 是 Versata 公司的产品。这里考虑的其他规则引擎都是“判定逻辑”规则引擎。与此相反,Versata 支持事务逻辑,并且是面向数据操作的。Versata 有一个功能完备的开发环境,但是没有基于 Web 的工具来修改规则。Versata 经常在由基于事务的和基于流程的规则逻辑组成的数据为中心的 Java 应用程序以及 Web 或应用程序 GUI 表示层中被用作生成器(generator)。 BRBeans 是 WebSphere Application Server Enterprise 的一个功能。BRBeans 运行时环境是以驻留在 WAS 中的一些 EJB 实现的,与这些 EJB 一起的还有一个用于调用规则的应用程序框架(framework)。BRBeans 是一种“判定逻辑”规则引擎。然而,它并不支持规则集(共享一个公共执行上下文的一组规则)。BRBeans 设计点(design point)将规则(应用程序用到的引用)与规则实现(一个 Java 类)区分开来。BRBeans 提供了一个规则管理应用程序(和 API),这种应用程序可以动态地将规则与特定的规则实现相关联,并且允许轻松地更新与规则相关的参数。 JRules 是一种“判定逻辑”推理规则引擎。它采用一种占资源很少的运行时环境,这种运行时环境可以与应用程序一起部署,它为可动态更新的规则提供储存库,应用程序可以使用 JRules API 从这个储存库中提出并触发规则。JRules 提供了一个功能完备的开发环境,该环境支持规则单元测试和基于规则的应用程序的代码生成。JRules 还为生成易于使用的、基于 Web 的用于修改规则的接口提供了工具。JRules 代码生成选项包括 J2EE(Web Service 和 EJB)和简单的 J2SE。 回忆前一篇文章,Christina 需要将 IFM 的遗留定价应用程序替换为一个新的、灵活的定价模型,后者考虑了很多参数;而商业人士也希望能够根据市场行情更改定价模型。Greg 认识到,当出现对定价过程的新需求时,他们可以使用 WBI 流程设计工具快速地更改流程流(process flow)。应用不同定价方程式的需求可以通过开发一个集成到定价业务流程中的业务规则引擎(Business Rules Engine)来满足。Greg 从建立简单的定价和提价(markup)模型开始。他的定价模型是一个动态定价算法,在这个算法中,只要利润率不变或增长,就采用相同的定价动作(提价或降价) markupi+1 =
markupi + delta*sign{profiti - profiti-1}*sign{markupi -
markupti-1} 下一节将展示如何分别在 Greg 考虑的三种规则引擎(Versata、BRBeans 和 JRules)中创建动态定价规则。 使用 Versata 创建业务规则 下面 Versata Logic Studio IDE 的屏幕快照展示了在定价场景中用到的 Versata 业务对象。注意,Versata 业务对象在接口中看上像是数据库表,而规则看上去像是数据库 SQL。 图 1: 用于定价(提价)场景的 Versata 业务对象 下面的屏幕快照展示了在 Versata Logic Studio 的 Versata Rule Builder 功能中用于计算提价增量(markup delta)值的新值的算法。 图 2: Versata Rule Builder 中用于计算提价“增量(delta)”的 Versata 提价规则 Versata
支持业务对象之间的父/子关系,它具有从子对象属性到父对象属性的累积(rollup)功能(求和、计数,等等)和从父对象属性到子对象属性的复制(replication)功能。Versata 创建“备份”其业务对象的数据库表并生成实现由规则组成的数据操作的 Java 代码。Versata Logic Studio 支持使用 Versata Logic Server Rule Builder GUI 将定制的 Java 方法添加到它的生成的类中,但是大部分规则可以在不编写任何代码的情况下定义。 使用 BRBeans 创建业务规则 BRBeans
将 BRBeans 规则,即“在 BRBeans 框架中实现的业务规则”,与 BRBeans 规则“实现者(implementor)”,即实现业务规则的 Java 类区分开来。换句话说,BRBeans 规则定义或向 BRBeans 框架描述一条业务规则,而 BRBeans 规则实现者是在代码中实现这条规则。BRBeans 规则管理 GUI 允许定义 BRBeans 规则。BRBeans 并不直接支持规则实现者的开发,但是它的确可以定义实现类,所有实现者都可以在某个 BRBeans Java 包中继承这个实现类。BRBeans 还提供了一组大约 20 个预定义 BRBeans 规则实现者。预定义规则实现者往往局限于一定的范围。例如,这些实现者不支持像
“if (price * quantity * profit_percent > X) then
do-something”
这样的简单规则。下图在 BRBeans 规则管理 GUI 的下拉框中显示了这些内建的规则实现者的一部分。 图 3: 显示某些内建规则实现者的 BRBeans GUI BRBeans
将规则定义分成四种类型:简单规则(simple rule)、分类器规则(classifier rule)、分类规则(classified rule)和情景规则(situational rule)。简单规则可以返回任何 Java 对象。分类器规则返回一个 Java String,该字符串的值指定一个类别(例如
“GOLD”、“SILVER”
或
“BRONZE”)。分类规则除了自己的名字之外,还有一个类别(classification),例如 GOLD、SILVER 或 BRONZE。同一组的分类规则都有相同的名字,但是每条规则各有不同的类别值。例如,您可以有一条 DISCOUNT 规则,它的类别为“SILVER”,这条规则返回一个 Java Long 型常量值 20,另一条 DISCOUNT 规则的类别为“SILVER”,返回常量值 10,还有一条 DISCOUNT 规则类别为“BRONZE”
,它返回一个常量值 5。分类规则永远不会从一个应用程序中直接触发。情景规则结合了一条分类器规则与一条分类规则。接着上面的例子,DISCOUNT 情景规则的分类器部分计算出一个类别,比如说“GOLD”,这将导致 BRBeans 框架调用类别为“GOLD”的分类规则,最终产生由该情景规则返回的一个 Java Long 值 20。 下面的规则管理 GUI 屏幕快照展示了定价规则的信息:实现该规则的 Java 类的类名,初始化参数(markup 和 delta 的初始值),以及
“firing”参数的来源,当触发器方法被调用(引起规则被触发)时,要将这些“firing”参数传递给规则。一旦规则被触发,firing 参数就通过一个 Java Object 数组传递给该规则。 图 4: BRBeans Rule Management GUI 中定价(提价)规则的定义 BRBeans 框架直接支持规则调用其他的规则。在 BRBeans 术语学中,被其他规则调用的规则称为从属规则(dependent rule)。BRBeans 框架在一条“父”规则的初始化方法中将所有从属规则的名字传递给该父规则,之后父规则在需要的时候调用从属规则。不过,用于计算提价(markup)的规则比较简单,因此不需要使用从属规则。 如果您希望与本文章的作者或其所在机构,进一步交流,请联系:畅享网 姜小姐 jill.jiang@amt.com.cn | 021-51096826-112 | 在线联系 |
TTNN-BI观点十月刊——湖光山色2007,国际权威重新定义了BI。从当前实践看来,这种定义符合实际,毕竟BI要落地,要能给企业带来真正的收益。当然,如何落地,自然必须有技术的支撑和管理策略及相…… 专业博客 |
|
|