IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere  >

通过 IBM WebSphere Business Integration Adapters 集成技术和业务解决方案

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Ganapathi Adimurthy (ganamurt@us.ibm.com), 软件工程师, IBM

2004 年 4 月 01 日

本文通过在 WebSphere MQ Message Broker 环境中展示 WebSphere Business Integration Adapter for Lotus Domino 的集成功能来说明 WBI Adapters 对于技术界和商业界的作用。

引言


应用程序集成已经成为一种关键的电子商务技术,它能够提供集成的客户解决方案,这种顾客解决方案的出现是由于需要在多个顾客应用程序之间共享应用程序数据。IBMWebSphere Business Integration Adapters(WebSphere BI Adapters)能够使应用程序具有连接性,并且能够在完全不同的数据存储和应用程序之间实现数据共享。应用程序之间的数据流动可以采用集成代理的方式--如IBM WebSphere InterChange Server(InterChange Server)、IBM WebSphere MQ Message Broker 和 WebSphere Application Server(Application Server)--来实现。数据交换通常是双向和元数据驱动的,封装在称为业务对象(BO's)的业务实体中。WebSphere BI Adapters通过集成代理的事件管理机制来支持企业电子商务应用程序中的业务事务。在本文中,我们将会看到 WebSphere BI Adapter for Lotus Domino在 WebSphere Message Broker 环境中的集成能力。

WebSphere业务集成


随着对基于 Web和独立的集成解决方案的要求的提高,需要跨多个应用程序的顾客面临着以下的挑战:

  • 建立跨各种平台的应用程序连接性
  • 在共享的应用程序之间保持数据的完整性和一致性
  • 确保数据操作是安全的

WebSphere Business Integration(WebSphere BI)解决方案体系结构通过集成组件(比如WebSphere BI Adapters、BI 工具、消息代理以及 Eclipse技术支持的集成开发和测试环境)来提供针对这些挑战的应用程序和技术解决方案。本文描述了在JavaTM 程序设计环境中开发的 WebSphere BI Adapters。集成开发和测试环境提供单一的框架来开发和部署独立配置的 WebSphere BI Adapters,或者将 WebSphere BI Adapters作为应用服务器环境中基于 Web 的适配器来开发和部署。BI工具(比如适配器开发工具箱)使得开发和维护 WebSphere BI Adapter 组件变得容易。

WebSphere BI Adapters 工具箱包括以下的组件:

  • 适配器配置器(Adapter configurator)-- 使您能够创建自定义的适配器配置文件
  • 业务对象设计器(Business object designer)-- 生成业务对象定义
  • 日志查看器(Log viewer)-- 使您能够可视化运行时适配器日志文件
  • 可视化测试连接器(适配器)-- 简化了端到端的集成解决方案的测试

在应用程序集成场景中,诸如 IBM WebSphere MQ这样的消息传递工具方便了适配器和消息代理之间的通信。

通过使用适配器进行集成


这一部分概述了 BO和集成代理,并介绍了一个描述适配器功能的集成场景。

业务对象

特定于应用程序的业务对象(Application Specific Business Objects,ASBO)是与特定的应用程序相对应的数据结构,这些数据结构携带关于应用程序事件的数据或用于多个应用程序之间的数据交换的协作请求。ASBO定义是由一组属性以及与属性相关联的约束所组成的。在 ASBO中定义了诸如缺省值、键和非键属性、大小和数据类型之类的信息。根据 ASBO 定义,适配器在运行时创建了 ASBO的实例来保存应用程序数据、关于数据的信息以及要对数据执行的操作。ASBO可以根据其结构分成两类:

  • 平面业务对象(Flat Business Objects)-- BO 最简单的情况。它表示单个应用程序实体,比如应用程序中的应用程序表。
  • 分层次的业务对象(Hierarchical Business Objects)--表示多个应用程序实体,比如父-子关系。

ASBO 常常是通过对应用程序做某些假定而设计的。您可以根据要集成的应用程序的业务流程为应用程序设计多个 ASBO,推荐您使用通用的元数据驱动的 ASBO 来处理 ASBO。图 1 所示的是一个分层次的 DominoDocument 业务对象的一部分,这个业务对象包含了类型 DominoItem BO 的 Items属性和基数 N。也就是说,一个 DominoDocument BO 包含许多的 DominoItem BO's。DominoDocument BO 的 Items属性包含了类型 DominoItemValue BO 的子属性 Values和基数 N 。换句话说,一个 DominoItem BO 包含许多的 DominoItemValue BO。ASBO 定义是通过适配器开发工具箱里的 BO 设计工具来创建的。


图 1. DominoDocument 业务对象
图 1. DominoDocument 业务对象

集成代理

集成代理形成了 WebSphere BI 策略的一个关键组件。集成代理响应集成组件为获得关于应用程序事件和数据的信息而提出的请求。在 WebSphere BI 适配器配置中,可以使用 WebSphere MQ Message Brokers 来定义 WebSphere MQ 环境中的流程流。图 2 显示了用于适配器-代理通信的 WebSphere MQ 队列定义。如果代理类型是 WebSphere MQ Message Broker,那么事件交付的传输机制就是 Java Messaging Service(JMS)。


图 2. 用于适配器-代理通信的 WebSphere MQ 队列定义
图 2. 用于适配器-代理通信的 WebSphere MQ 队列定义

图 3 显示了一个标准的适配器配置,其中, DeliveryTransport适配器配置特性被定义为 JMS。如果您将用于适配器的 DeliveryTransport 机制配置为 JMS,那么您就应该将附加的 JMS 特性 jms.MessageBrokerName=jms.FactoryClassName定义为用于 JMS 传输。用作发布器的适配器创建包含应用程序事件信息的消息,并将它们作为 ASBO 发送到 WebSphere MQ Message Broker 所定义的消息流中。适配器、业务处理对象或两者都能够订阅发布到 WebSphere MQ Message Broker 的应用程序事件消息。当 WebShere MQ Message Broker 接收到一个与订阅请求相匹配的发布时,它就会将消息发送给订户,这样就方便了多个应用程序之间的数据交换。


图 3. 标准适配器的配置特性
图 3. 标准适配器的配置特性

集成场景

图4显示了一个使用 WebSphere BI Adapters 的集成场景,其中,一个客户端从多个应用程序中请求应用程序数据( 1)。双向适配器通过应用程序数据存储 A 和 B 中进行数据交换。适配器的双向数据交换包括从应用程序数据存储中检索数据并且提供返回到应用程序的服务调用请求处理。一个服务器请求处理的例子是,将请求发送到适配器以对应用程序表执行数据库更新。


图 4. 使用 WebSphere BI Adapters 的 BI 场景
图 4. 使用 WebSphere BI Adapters 的 BI 场景
  • 事件通知(Event Notification)--一种事件通知机制,使适配器能够监控应用程序实体的变化,并将变化报告给集成代理。
  • 服务调用请求(Service Call Request)--一种服务调用请求机制,允许修改应用程序数据以响应相关的应用程序中的事件

图 4 中的适配器检索所需的应用程序数据,并创建表示这些检索数据的 BO,然后通过 WebSphere BI Adapters API( 34)将 BO 传递给集成代理。集成代理分析传入的 BO,并检验传递过来的 BO 中是否存在订阅。在这个场景中,BO 被发送到一个提供 Web 服务给 Web 客户端( 2)的适配器。Web 服务可以是一个程序,它用于从外部应用程序数据存储中收集数据,并将该数据传送给服务器程序,服务器程序创建基于 HTML 的 Web 页面,这些 Web 页面都是 Web 客户端可以访问的。集成代理常常使用包含业务逻辑的对象来处理适配器所提供的信息。处理实体(比如协作)将特定的业务逻辑应用到所关心的 BO 上,并响应客户的请求。

适配器的组件根据集成代理的类型作出改变。对于 WebSphere Interchange Server Broker,适配器是由控制器组件、对象发现代理以及适配器代理所组成的。对于 WebSphere MQ Message Broker,适配器是由适配器代理和适配器框架组成的。适配器是基于单个应用程序的需求设计和实现的,不必考虑其他与之交互的组件。适配器的这种特定于应用程序的组件称为 适配器代理(adapter agent)。这种适配器代理组件包含有通过元对象(meta-objects)实现的特定于应用程序的代码,这就保证了对应用程序进行任何改变都不需要对适配器代理的源代码作相应的改变。适配器代理也可能包括应用程序级的 API。本文中的术语 连接器(connector)适配器(adapter)指的是适配器的特定于应用程序组件,也是指执行应用事件探测和服务调用请求处理功能的适配器代理。

事件通知

必须将所关心的应用程序中发生的事件通知适配器,以便在共享同一实体的应用程序之间维持数据的一致性。例如,在一个应用程序中更新了顾客的配送地址,这必须在共享同一地址的实体的其他应用程序中得到反映。WebSphere BI Adapters 通过事件探测和排序功能保证了多个应用程序之间数据的一致性。应用程序事件一般存储在一个事件表中,这个表包含着与应用程序中发生的事件的顺序有关的信息而不是与事件有关的数据。

图 5 举例说明了适配器和应用程序事件表之间的交互。适配器探测事件表以便得到事件记录,从相应的数据源中检索相关的事件数据,然后创建 ASBO 并把它发送到集成代理上。已经处理过的或处理失败的事件以适当的标志存档,以便适配器对它们进行再处理、忽略它们,或采取其他的操作,比如,根据适配器的配置将致命的错误记录在适配器的日志文件中。图中显示了一个档案文件表,它存储处理过的事件,还有一个事件阶段表,它存储需要再处理的事件。适配器通过使用适配器框架 API 来实现处理事件通知和事件探测的应用逻辑。请参见图 6b,图中说明了适配器将事件通知发送到集成代理的过程。


图 5. 在事件探测过程中适配器和应用程序事件表之间的交互
图 5. 在事件探测过程中适配器和应用程序事件表之间的交互

服务调用请求处理

当业务协作发送一个请求到适配器以便在应用程序中执行数据操作时,它就把协作的请求传送到适配器,同时把特定于应用程序的元数据信息封装在 ASBO 中。适配器分析 ASBO 来得到诸如操作类型之类的信息,也就是 ASBO 的 Verb属性。然后它使用元对象属性值和特定于应用程序的 API 来执行相关的 Verb 处理方法。完成服务调用请求处理的逻辑是通过使用适配器框架 API 来实现的。图 6a 显示了为通过集成代理请求服务调用而进行的适配器-代理的通信。图 6b 显示了协作业务逻辑的样本流程流图。图 6b 中的处理流程定义了一个操作( 3),紧随其后的是一个决策节点,该节点分析协作操作的结果,并将成功或处理失败的信息返回到集成代理。


图 6a. 适配器-代理交互
图 6a. 适配器-代理交互

图 6b. 样本协作流程流
图 6b. 样本协作流程流




回页首


WebSphereBI Adapter for Lotus Domino


WebSphere BI Adapter for Lotus Domino  是一个应用程序适配器,它监控发生在 Lotus Domino Server 中的事件。这些事件出现在服务器的 Lotus Domino 文档对象中,可以利用事件监听组件对它们进行监控,并将它们存储到 Lotus Domino 事件表中。WebSphere BI Adapter for Lotus Domino 在事件表数据库中探测事件,并将包含有 Lotus Domino 应用程序事件信息的消息发送到 WebSphere MQ Message Broker。

与 Lotus Domino 事件有关的适配器可以同 WebSphere MQ Message Broker 一起注册, 以便进行消息传递。WebSphere BIAdapter for Lotus Domino 可以用于集成企业顾客应用程序,目的是在 Lotus Domino 服务器中交流 Lotus Domino 文档的创建和修改信息。这样的一个例子是,给顾客发送一封自动 Lotus Notes 电子邮件通知来响应顾客配送地址的改变。这封由标题、正文和签名组成的电子邮件是作为 Lotus Domino 文档存储在 Lotus Domino 服务器上。WebSphere BI Adapter for Lotus Domino 创建一个 ASBO 来表示事件的细节,并且把它发送给集成代理来触发电子邮件通知。

下面的几部分将描述用于事件探测的 Lotus Domino 事件表和 WebSphere BI Adapter for Lotus Domino 的实现细节,为此,我们将列出代码片断并且简要介绍适配器的初始化、终止和事件探询功能。

Lotus Domino事件表


Lotus Domino 的事件监听器组件监听特定的 Lotus Domino 数据库里的 Lotus Domino 事件,并用关于事件的信息来填充事件表。事件监听器组件是一个 Domino Extension Manager 可执行库,它使用 Lotus C API for Domino 来读取用户配置并为目标应用程序事件通知提供回调功能。事件表的配置视图提供配置信息(其中包括数据库路径和所支持的事件类型,比如,文档创建、更新或删除)给监控特定 Lotus Domino 数据库事件的事件监听器。

事件表档案文件视图(图 7a)包含关于已经处理的事件的信息。事件表档案文件视图除了 Status字段只显示具有 SUBSCRIBED、UNSUBSCRIBED、ERROR_PROCESSING_EVENT、ERROR_POSTING_EVENT 和 ERROR_OBJECT_NOT_FOUND 这些事件状态的事件以外,和事件表事件视图有着一样的属性。


图 7a. 事件表、事件档案文件视图
图 7a. 事件表、事件档案文件视图

Lotus Domino 事件存储在事件表事件视图(图 7b)中。事件表事件视图包含以下信息:

  • NoteID-- 特定数据库中的特别标识的标识符
  • Database Name-- 文档所在的数据库的名称
  • Description-- 事件描述符
  • Time-- 记录事件的日期和时间
  • Event Type-- Update 或 Delete 的事件类型
  • Status-- READY_FOR_POLL 或 IN_PROGRESS 的事件状态


图 7b. 事件表、事件视图
图 7b. 事件表、事件视图





回页首


初始化


在初始化过程中,WebSphere BI Adapter for Lotus Domino 从适配器配置文件中读取并验证适配器的配置特性,包括标准的适配器配置特性(请参见图 3)和特定于适配器的配置特性,如图 8 所示。特定于适配器的配置特性可以让您在不改变适配器代码的情况下改变适配器在运行时所用的属性的值。例如,如果由 WebSphere BI Adapter for Lotus Domino 进行事件监控的 Lotus Domino 服务器的名称的值需要改变,就可以使用适配器配置工具来改变特定于适配器的配置特性 DominoServerName ,而不必更改适配器代码。
图 8. 特定于适配器的配置特性
图 8. 特定于适配器的配置特性

适配器代理使用在特定于适配器的配置特性中定义的信息来建立与 Lotus Domino 服务器的连接。清单 1 展示了代理初始化的实现细节的示例。

清单 1 执行以下的任务:

  • 调用超类的 init 方法。
  • 将 DominoConnectorAgent 的实例分配给 theAgent 静态类成员。
  • 实例化 config、ConnectorConfiguration 对象。
  • 调用 config.getAllConfiguration()来获得所有适配器配置特性。
  • 调用 config.validateConfig() 来验证适配器配置特性。
  • 如果适配器配置验证成功,则设置运行时框架本地适配器配置特性,实例化dSession 对象,并调用 DominoSession 类的 getSession()方法来连接 Domino 应用程序,否则返回CWConnectorConstant.FAIL。
清单 1. 代理的初始化方法的样本实现

public int init() {  
 super.init();     
 Begin adapter trace;
 initialization code = SUCCEED;   
 create object to hold adapter configuration properties;
 get all adapter configuration properties;
 if(configuration retrieved) {   
  try {
   validate adapter configuration properties;
   initialize object to request application connection;
   request application connection;    
   trace connection; 
  } catch (Exception Ex) {
      log exception; 
    }
 }     
  End adapter trace;   
  
                

图 9 显示了适配器的初始化状态。适配器消息“Application state is connected”和“Connector Agent state is active”表示适配器已经成功初始化。


图 9. WebSphere BI Adapter for Lotus Domino 的初始化
图 9. WebSphere BI Adapter for Lotus Domino 的初始化





回页首


终止


当适配器终止时,WebSphere BI Adapter for Lotus Domino 清除现有的有效 Domino 会话和缓存的 Domino 对象,并中断与 Lotus Domino 服务器的连接。清单 2 展示了代理终止的实现细节的示例。 清单 2. 代理的终止方法的样本实现
public int terminate() {    
 Begin adapter trace;
 termination code = SUCCEED;
 try {   
  if ((adapter instance is valid) and (domino session is valid))  
   cleanup domino session and cached objects;      
 } catch (Exception Ex) {
    log exception;          
               
                

图 10 显示了适配器终止的状态。适配器消息“Application state is disconnected”和“Terminated App Connector”表示适配器已经成功终止。


图 10. 的终止WebSphere BI Adapter for Lotus Domino 的终止
图 10. 的终止WebSphere BI Adapter for Lotus Domino 的终止




回页首


日志记录和跟踪


WebSphere BI Adapter API 提供了适配器日志记录和跟踪类及方法来监控适配器代理的行为。图 11 显示了 WebSphere BI Adapter for Lotus Domino 的日志记录和跟踪的配置。消息可以传送到适配器的启动控制台,也可写入文件,或者两者都执行。对错误(致命的和非致命的)、警告和报告性消息加以记录,而在跟踪配置中对适配器的数据和控制流消息进行跟踪。适配器使用一种特定格式的消息文件来生成消息,这种格式包含错误代码和它们的描述符。例如,用于日志记录的 WebSphere BI Adapter API 方法,logMsg(),将消息文本字符串或使用消息文件中提供的消息所生成的字符串作为输入。来自应用程序的错误消息、适配器启动和关闭消息、需要重新启动适配器的消息以及需要引起管理员注意的消息通常都写入适配器的日志文件中。适配器代码所执行的程序语句、适配器运行时所启动的线程的状态、检索和处理适配器配置特性的细节、运行时 BO 实例化和 BO 内容、事件探测和请求处理细节常常在适配器跟踪中进行跟踪,这取决于所执行的跟踪的级别。


图 11. WebSphere BI Adapter for Lotus Domino 的日志记录和跟踪
图 11. WebSphere BI Adapter for Lotus Domino 的日志记录和跟踪





回页首


事件通知


图 12 显示了从事件表中探测事件的适配器(图 7b)的探测状态。您可以沿着代理的 pollForEvents() 链接来查看代理的事件探测功能的实现细节。

pollForEvents() 实现:

  • 通过调用使用 dSession 对象的 validateSession 方法来检验是否存在有效的DominoSession。
  • 从 config 对象中检索适配器配置特性 eventDBName 和pollQuantity。
  • 连接到事件表数据库中,并使用 etEventViewName信息的值来获得事件表事件视图(图 4b)。
  • 从事件视图中检索事件文档,直到 pollQuantity指定的最大限度为止。
  • 如果没有检索到事件文档,就返回 CWConnectorConstant.FAIL;否则对检索到的每个事件文档执行以下操作:
    • 使用 Domino 文档属性关键信息以及 getStringValFromDoc 或getDTValFromDoc方法来获取事件文档属性的值。如果有错误,则更新事件状态并返回CWConnectorConstant.FAIL。
    • 在事件文档检索过程中如果没有出现什么问题,则建立一个到Domino 文档数据库的连接,并检索发生的事件所在的Domino文档。如果有错误,则更新事件状态并在本地对失败做标记,以便下一个事件记录进行处理。
    • 在检索触发事件的 Domino文档的过程中如果没有出现问题,则为所检索的文档创建一个新的ASBO,实例化 Document2BO 以便将该文档转换为 ASBO,并将这一ASBO 传递给 WMQMB。
    • 根据事件传递所返回的代码,更新事件表中的事件状态(图7b)或者将该事件存档(图 7b),或者两者都执行。


图 12. Event polling state of WebSphere BI Adapter for Lotus Domino 的事件探测状态
图 12. Event polling state of WebSphere BI Adapter for Lotus Domino 的事件探测状态





回页首


结束语


WebSphere BI Adapters 能够给完全不同的数据存储和应用程序提高连接性,并且帮助在应用程序中保持档案文件的完整性和一致性。本文通过演示应用程序适配器 WebSphere BI Adapter for Lotus Domino 的集成能力说明了 WebSphere BI Adapters 对于技术界和商业界的作用。

参考资料



关于作者

作者的照片

Ganapathi 是一名软件工程师,工作在佛罗里达州的伯克莱屯市。他在 IBM 的 Application and Integration Middleware(AIM)部门从事用于多应用程序的业务流程集成的 WebSphere Business Integration Adapters 的设计和开发工作。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?







回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款