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

developerWorks 中国  >  WebSphere  >

将 WebSphere Business Events V6.2 与 WebSphere ESB 及 WebSphere Process Server 集成

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

样例代码

英文原文

英文原文


级别: 中级

Doina Klinger, 顾问软件工程师, IBM

2009 年 10 月 28 日

在此前的一篇 developerWorks 文章 中,我向您展示了 WebSphere Business Events V 6.1 如何与 WebSphere Process Server 和 WebSphere Enterprise Server Bus V6.1 进行相互操作。在本文中,您将了解这种互操作性在 V6.2 中是如何改进的。

简介

WebSphere Business Events (Business Events)、WebSphere Process Server (Process Server) 和 WebSphere Enterprise Server Bus (ESB) 之间的互操作性在 V6.2 中进行了改进。部分变化如下:

  • 事件和动作拥有特定的(而不是一般的)模式,这使得映射更轻松。
  • 一个新的事件发送器原语 Business Event Emitter 封装了集成的 ESB-to-Business Events 部分。
  • 提供了新的样例脚本,以展示如何在消息传送级别在产品之间建立通信。
  • 对 ESB 中的 Business Events 动作处理流程添加了对特定模式的支持,这种模式为每种类型的动作定义特定处理流程。
  • 以两个新原语的形式添加了格式化结果事件以发送到 Business Events 的支持。当一个动作的处理流程成功或失败时,这两个原语(Business Events Send Success 和 Business Events Send Failure)可以用于中介流中以表示 Business Events。注意,这是一个新主题,没有在 V6.1 文章 中介绍过。

与 V6.1 一样,ESB 是 Business Events 和 Process Server 之间的集成的关键部分。通过使用 ESB 将事件数据转换为特定于应用程序的数据,在 Business Events 中识别的动作可以对运行在 Process Server 上的应用程序实现任意程度的处理。

本文的其余部分介绍 Business Events 和 ESB 之间的集成。您可以使用相同的步骤集成 Business Events 和 Process Server,使用这里介绍的中介模块作为关键集成组件。这个中介模块可以根据需要与其他 Process Server 工件联合使用,但集成通过使用中介模块实现。

本文主要关注 V6.2 ESB-to-Business Events 集成。我们将定义一个(非常简单的)样例 Business Events 项目。只有事件和动作的定义才对集成真正重要。真实的 Business Events 应用程序可能使用各种过滤器来确定模式,但这不会改变集成解决方案的形状。

通常,现有 ESB 集成解决方案包含事件处理流程。为简便起见,本文省略了解决方案的这个部分,包括典型的中介功能,如服务调用、消息变换和过滤等。本文只展示特定于 Business Events 的事件处理流程。

在本文中,您将了解:

  1. 如何创建连通性而不必运行 Business Events 连接器,使 ESB 有效地充当一个 Business Events 连接器。
  2. 如何对 ESB 流配置事件发送器原语并添加特定于 V6.2 的映射。
  3. 如何使用 “每个动作一种方法” 的模式在流中添加 Business Events 动作的处理。
  4. 如何将特定于 ESB 的信息添加到结果事件并将结果事件从 ESB 流发送到 Business Events。




回页首


场景概述

图 1 展示了本文将构建的集成解决方案。该场景使用 Integration Developer V6.2 IFix 和 Business Events V6.2 Fixpack 1 构建。


图 1. 场景
大图

对于 Business Events,我们将使用一个非常简单的项目,其中 MyEvent 总是触发 MyAction。该动作有个关联结果事件 ResultEventForMyAction,它触发一个新动作 ActionForResultEvent。

在 ESB 中,我们将拥有两种类型的流:一种将事件发送到 Business Events,另一种处理动作并将结果事件发送到 Business Events 中。

在执行流中:

  • 一条消息来自外部源并触发 ESB 流中的处理流程。作为流的一部分,该消息通过原语进行变换并被发送到 Business Events 中。(1)
  • Business Events 接收事件,事件触发处理流程。在本例中,处理流程总是生成一个动作。(2)
  • ESB 处理上述动作。作为动作流的一部分,一个结果事件被发送到 Business Events。结果事件在 Business Events 中生成新动作。(3)
  • ESB 流接收并处理这个新动作。

注意: 事件生成、动作处理和结果事件生成之前的动作处理是 ESB-to-Business Events 集成的 3 个独立方面。本文中的示例将展示这 3 个方面,但一个特定的集成解决方案可能只包含其中一个方面。





回页首


下载项目

开始之前,您需要 下载这个 Business Events 项目。这个非常简单的项目定义了一个事件、一个动作、一个结果事件和该结果事件生成的动作。使用了两个简单的规则,没有使用过滤器,如图 2 所示。


图 2. 交互集
交互集

使用 WebSphere Business Events 进行业务事件处理,第 4 部分:将 Business Events 与 WebSphere Enterprise Service Bus 及 WebSphere Process Server 集成 非常详细地介绍了如何创建事件、动作、中介对象和映射。本文将不再重复介绍这些内容。

按照 Business Events Information Center 中的 Moving assets into production 介绍的方法将项目文件加载到 Business Events Design Data 工具中,然后打开资源库并将所有内容添加到资源库。





回页首


启用连通性

在 Business Events V6.2 中,您可以在 JMS 级别在 ESB 和 Business Events 之间建立连通性。有多种方法可以实现这一点,Business Events V6.2 提供一些样例脚本来支持创建这种连通性。这些脚本定义 ESB 中的 Service Component Architecture (SCA) 应用程序总线和 Business Events 总线之间的互联总线(interbus)链接。另外,ESB 脚本定义 JMS 资源,这些资源使与 Business Events 相关的工件能够以开箱即用的方式运行。

在 JMS 级别实现连通性可以不必运行 Message Queue 连接器(如 V6.1 集成文章 所述),从而极大地提高性能。

您可以运行 Business Events V6.2 自带的脚本来创建并修改必要的总线和 JMS 资源,这个过程无需任何用户参与。这种方法是开发和测试场景以及小型部署的推荐方法。样例脚本位于 <WBE>\integration\WESB\features\runtime\samples。脚本本身和注释提供了运行脚本的详尽注释和帮助。

这些脚本需要的参数有机器名、服务器名、节点名、单元名以及 SIB 端口号。因此,建议您在运行脚本前收集这些值。

  1. 启动服务器并在管理控制台中检查以下值,然后按以下方式填充它们:

    机器 服务器 节点 单元 端口
    ESBPUTNAserver1PUTNANode01 PUTNANode01Cell7276
    Business EventsCOZIAserverCOZIANode01 7276


  2. 在 WESB\bin 中,wsadmin 命令的一般语法是:
     wsadmin.bat -lang jython -f /path/to/configure_WESB_SIB_JMS_messaging.py 
     scope local_host_name local_SIB_messaging_port local_server_name remote_ 
     host_name remote_SIB_messaging_port remote_node_name remote_server_name 
    

    假定该脚本已经在本地复制,使用这些值按如下方法运行脚本:

     wsadmin.bat -lang jython -f  configure_WESB_SIB_JMS_messaging.py 
     server PUTNA 7276 server1 COZIA 7276  COZIANode01 server1 
    

    该脚本创建了一个外部总线链接,包含 ESB 的 SCA 应用程序总线。

  3. 在 WBE\WAS\bin 中,wsadmin 命令的一般语法是:
     wsadmin.bat -lang jython -f configure_WBE_SIB_JMS_messaging.py 
     local_host_name  local_SIB_messaging_port local_server_name 
     remote_host_name remote_SIB_messaging_port remote_cell_name 
     remote_node_name remote_server_name 
    

    假定该脚本已经在本地复制,使用这些值按如下方法运行脚本:

     wsadmin.bat -lang jython -f configure_WBE_SIB_JMS_messaging.py 
     PUTNA 7276 server1 COZIA 7276 COZIANode01Cell COZIANode01 server1 
    

    该脚本创建了一个外部总线链接,带有 Business Events 总线,它还创建了 JMS 资源(主题连接工厂、主题和激活规范),这些资源支持 ESB 工件以开箱即用方式运行。





回页首


构建集成解决方案

如前所述,本文主要关注 ESB 和 Business Events 的集成。本文包含最终解决方案的 项目交换文件,可以将其导入 WebSphere Integration Developer (Integration Developer)。或者,您也可以跟随下面的指导从头开始构建项目。

这些指导假定您已启动 Integration Developer 并创建了一个新的中介模块 WESBtoWBEIntegration62。

我们将向您展示如何将事件发送到 Business Events,如何处理动作,以及如何添加结果事件。

发送事件到 Business Events

Business Events V6.2 对每个不同项目公开一个特定事件和动作模式。要下载并导出 V6.2 样例项目和模式,执行以下操作:

  1. 首先下载 Article62Test.xml
  2. 在 Design Data 中,打开 Article62Test.xml 项目。
  3. 右键单击 MyEvent,然后选择 Event Properties
  4. Event 选项卡上,单击 Export examples and schemas 并选择 WBE packet schema => v6.2 Format,然后单击 Save,如图 3 所示。确保保存 6.2 版本。

    图 3. 导出模式
    导出模式

创建接口和业务对象

按照以下步骤将接口和业务对象导入您的应用程序:

  1. 在 Business Integration 导航器中右键单击 WESBtoWBEIntegration2 项目。
  2. 选择 File => Import => General => File System
  3. 指定已存储的 EventMyEvent.xsd 的地址并勾选对应的复选框。
  4. 单击 Finish

注意: 或者,您也可以在 Business Explorer 视图中将 xsd 文件从您的文件系统拖放到 WESBtoWBEIntegration62 项目中。

现在一个新的接口创建在您的应用程序中。该接口称为连接器,但您还要检查名称空间。

当您研究这个接口的结构时,您也许会发现切换到 Tables 视图(见图 4)查看 Event Object 中的字段很有用。


图 4. Tables 视图
Tables 视图

您只需要创建一个表示输入消息的业务对象。按照以下步骤创建这个业务对象:

  1. 要创建一个新的业务对象,从 Business Integration 导航器选择 WESBtoWBEIntegration2 项目。
  2. 选择 File => New => Business Object,在 Name 字段中指定 InputObject 并单击 Finish
  3. 单击 添加元素图标 图标,添加一个元素并保存。
  4. 添加以下字段:

    名称 类型
    field1String
    field2String
    field3Int
    field4Boolean


  5. 您需要为应用程序建模一个接口,以便可以接收来自客户机的请求。按照以下步骤创建一个 entryPoint 接口:
    1. 从 Business Integration 导航器选择 WESBtoWBEIntegration2 项目。
    2. 选择 File => New => Interface,将 Name 字段指定为 entryPoint,单击 Finish
    3. 单击 Add one way operation 图标 ,将输入的 Typestring 更改为 InputObject,单击 Save
  6. 使用一个参数 Connector(名称空间 {http://wbe.ibm.com/6.2/Event/MyEvent})创建第二个接口 toWBEMyEvent。这个接口用作一个目标接口,以便 XSLT 中介原语将输入消息转换为 Business Events 事件。

您的应用程序现在应该拥有以下接口:

接口名称 类型 操作名称 参数
entryPointOne-way<any>InputObject
toWBEMyEventOne-way<any>Connector {http://wbe.ibm.com/6.2/Event/MyEvent}

定义组装图表

现在您需要在组装图表中定义组件之间的高级交互:

  1. 在 Business Integration 导航器中的 WESBtoWBEIntegration62 项目中双击 Assembly Diagram 打开组装图表。一个中介模块已经创建,但它不包含任何接口或引用。我们将稍后纠正这个问题。
  2. entryPoint 接口拖放到组装图表上,在弹出窗口中选择 Export with Web Service Binding
  3. 在传输弹出窗口中,选择 soap/http。交易客户机将使用这个导出访问交易系统。
  4. 创建从 entryPointExport1WESBtoWBEIntegration2 的连接。

现在组装图表应该如图 5 所示。


图 5. 组装图表
组装图表

定义中介模块

在这个小节中,我们将创建中介流,以将入站业务对象转换为 MyEvent 的 Business Events 事件格式。

  1. 选择操作 entryPoint
  2. 首先为这个操作定义请求流。当客户机将一个请求发送到服务时,这个方法将被调用,然后将调用中介流。这个外部服务没有在这个示例中表示,因为这是一个典型的 WESB 功能:客户机通过一个中介模块调用一个服务。这里只展示集成。添加以下原语:
    • XSL 转换原语,将其重命名为 FormatMyEvent。只有连接完成之后,我们才能完成这个样式表的配置。
    • Business Events Event Emitter:这是新的 V6.2 原语,它使 ESB 和 Business Events 之间的集成更简单。这个原语的配置将在下面介绍。
  3. 现在这些原语已添加到画布上,下面需要实现以下连接:

    终端名 目标 终端名
    Input NodeOutFormatMyEventIn
    FormatMyEventOut WBEEventEmitter1In


    您的中介流看起来应该如图 6 所示。



    图 6. 事件中介流
    事件中介流

  4. 定义了流的连接后,下面配置 XSLT 原语。

    清单 1 和 2 显示入站 XML 和预期的出站 XML,这展示了映射关系。



    清单 1. 入站 XML
    						 
     <input1> 
          <field1>field1</field1> 
          <field2>field2</field2> 
          <field3>true</field3> 
          <field4>0</field4> 
     </input1> 
    



    清单 2. 出站 XML
    						 
     <out2:connector name="TouchPoint" version="6.2"> 
    	 <out2:connector-bundle name="MyEvent" type="Event"> 
    		 <out2:EventObj1> 
    			 <out2:String1>field1</out2:String1> 
    			 <out2:String2>field2</out2:String2> 
    		 </out2:EventObj1> 
            	 <out2:EventObj2> 
              		 <out2:Int>0</out2:Int> 
              		 <out2:Bool>true</out2:Bool> 
            	 </out2:EventObj2> 
    	 </out2:connector-bundle> 
     </out2:connector> 
    

    正如 V6.1 文章 所述,出站 XML 可以分为两个部分:标准模板值,它们在提交的事件类型(在下面用蓝色突出显示)方面保持一致;字段元素,它们通过入站消息填充。

    常量值的设置方法与 V6.1 文章介绍的方法相同。指定以下值:



    属性 固定值
    Connector.NameTouchPoint
    Connector.Version6.2
    ConnectorBundle.NameMyEvent
    ConnectorBundle.TypeEvent


  5. 转换过程的第二个阶段是将相关信息从源复制到值对的目标映射。借助新的特定于事件的模式,这个映射更加容易。输入字段的值只是简单地复制到对应的事件字段中。

    映射以下值:



    Field1 /body/operation1/connector/connector-bundle/EventObj1[1]/String1/value
    Field2 /body/operation1/connector/connector-bundle/EventObj1[1]/String2/value
    Field3 /body/operation1/connector/connector-bundle/EventObj2[1]/Bool/value
    Field4 /body/operation1/connector/connector-bundle/EventObj2[1]/Int/value


    图 7 显示完成的转换。



    图 7. 到事件的完全转换
    到事件的完全转换

  6. 下面,我们将配置 Business Events Event Emitter,确保转换结果将被发送到 Business Events 进行处理。对于 Root 属性,单击 Browse,导航到消息树,选择 /body/operation1/connector。接受其他属性(包括 JMS 相关属性)的默认值。如果脚本已经使用过,默认值就是正确的;中介原语将以开箱即用方式运行。流末尾的自定义原语只是输出一条调试消息。
  7. 现在可以通过将这个中介项目添加到 ESB 服务器来部署该项目,具体步骤参见 Integration Developer Information Center 中的 Deploying modules to the test environment 部分。

在 ESB 流中处理 Business Events 动作

下面介绍如何在 ESB 流中处理 Business Events 动作。具体步骤类似于处理事件的步骤:在 Design Data 中定义动作,导出它们的模式并将其导入 Integration Developer,然后生成几个接口以将新生成的业务对象接收为参数。

我们将定义一个 JMS 导出来表示 Business Events,并使用一个为每种动作类型都提供了一种方法的接口。这并不是使 ESB 解决方案接收动作的惟一设计方法,但本文将使用这种方法。

设置动作的版本兼容性

Business Events V6.2 对每个不同的项目公开一个特定的动作模式。您需要在 Design Data 中选择每个动作并确保连接器版本兼容性被设置为 6.2。为此,执行以下步骤:

  1. 在 Business Events Design Data 中,右键单击 My Action 并选择 Action Properties
  2. 在 Properties 对话框中,单击 Actions 选项卡并执行以下操作:
    • Connector Version Compatibility 选择 6.2
    • 单击 Export examples and schemas 并选择 WBE Packet Schema,然后单击 OK,如图 8 所示。


    图 8. 为动作导出 V6.2 模式
    图 8. 为动作导出 V6.2 模式

  3. 对 ActionForResultEvent 重复这个操作。

创建接口和业务对象

这个小节介绍如何创建接口和业务对象。

要创建业务对象,在 Integration Developer 中导入两个模式,操作方法和 创建业务对象和接口 部分介绍的方法相同。您的应用程序将创建两个业务对象,它们都被称为 Connector(如图 9 所示),但它们拥有不同的名称空间。在处理这些业务对象时,确保选择正确的名称空间。


图 9. 数据对象
数据对象

下面,我们将为表示 Business Events 的导出创建一个新接口。我们将使用 Business Events Information Center 中的 Processing actions in WebSphere Process Server and WebSphere ESB 部分介绍的方法,为每个动作创建一个操作,其中每个动作都作为参数。

我们将使用 V6.2 Business Events Action Selector。ESB 在收到一条消息时执行这个选择器,该选择器确定从接口调用哪个操作来处理消息。如果接收到的消息是 Business Events 生成的动作,则选择器返回该动作的名称。这样,当 Business Events 生成一个动作时,与该动作同名的操作将被调用。

我们将创建以下接口:

接口名称 类型 操作名称 参数
fromWBEOne-wayMyActionConnector {http://wbe.ibm.com/6.2/Action/MyAction}
One-wayActionForResultEventConnector {http://wbe.ibm.com/6.2/Action/ActionForResultEvent}

定义组装图表

现在,我们将为 WESB_WBE_Integration62 更新组装图表。为此,执行以下步骤:

  1. fromWBE 接口拖放到组装图表上。
  2. 在弹出菜单中,选择 Export with no Binding。这个导出用于从 Business Events 接收动作以便处理。
  3. 右键单击新创建的导出并选择 Generate Binding => Messaging Binding => JMS Binding
  4. 在 Configure JMS Export Service 对话框(见图 10)中,指定以下值:
    • JMS messaging domain: Publish-Subscribe
    • JNDI name for activation specification: jca/wbe_actions
    • JNDI name for receive destination: jms/actionTopic
    • Default data format: UTF8XMLDataHandler
    • Function selector: WBE Action Selector 注意:您需要使用 Business Events V6.2 Fixpack 1,以便能够从可用函数选择器中选择 WBE Action Selector。


    图 10. 创建 JMS 绑定
    创建 JMS 绑定

  5. fromWBE 连接到 WESBtoWBEIntegration2

    这个组装图表看起来应该如图 11 所示。



    图 11. 完成的组装图表
    完成的组装图表

  6. 右键单击中介组件并选择 Synchronize Interfaces and References => To implementation
  7. 要定义中介模块,选择 MyAction。在真实的应用程序中,我们将对这个流添加动作处理流程。在本例中,我们有一个自定义中介,它将其接收到的对象输出到控制台。
  8. ActionForResultEvent 操作添加一个类似的自定义原语,如图 12 所示。

    图 12. 处理动作的样例流
    处理动作的样例流

  9. 将更新后的中介应用程序部署到运行时并使用 Web Services Explorer 调用 entryPoint 接口。在 ESB 的 system.out.log 中,您应该能够看到一个 MyAction 条目,该条目如下所示:
     [10/02/09 16:56:08:703 GMT] 0000005d SystemOut     O 
     WESB_WBE_Integration62 : MyAction : fromWBE -> ProcessAction 
     [10/02/09 16:56:08:906 GMT] 0000005d SystemOut     O 
     <?xml version="1.0" encoding="UTF-8"?> 
     <p:ServiceMessageObject xsi:type="p:ServiceMessageObject"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:ac="http://wbe.ibm.com/6.2/Action/MyAction" 
     xmlns:wbe="wsdl.http://WESB_WBE_Integration62/fromWBE" 
     xmlns:wbe_1="http://WESB_WBE_Integration62/fromWBE" 
     xmlns:p="http://www.ibm.com/websphere/sibx/smo/v6.0.1"> 
     ..... 
      <body xsi:type="wbe:MyActionRequestMsg"> 
        <wbe_1:MyAction> 
          <ac:connector name="WBE" version="6.2"> 
            <ac:connector-bundle 
    		 id="97A7B5DC9BD09BD011DDEECAA334FFB8"
    		 name="MyAction" type="Action" 
    		 workflow="FACE"> 
              <ac:ActionObj1/> 
              <ac:ActionObj2/> 
            </ac:connector-bundle> 
            <ac:system>L3AAM4F</ac:system> 
            <ac:timestamp>2009-02-10T16:56:08.218Z</ac:timestamp> 
            <ac:loginfo>This is an event from IBM WebSphere 
    		 Business Events</ac:loginfo> 
          </ac:connector> 
        </wbe_1:MyAction> 
      </body> 
     </p:ServiceMessageObject> 
               

这证明来自 Web Services Explorer 的请求已经被转换为一个事件。这个事件被 Business Events 接收,Business Events 生成 MyAction,然后 MyAction 被 ESB 流的处理动作接收。

在下一小节中,我们将把结果事件添加到动作的处理流程中。

将结果事件添加到处理动作的中介流中

首先,我们看看结果事件是什么,它们在什么时候有用以及如何在 Design Data 中定义它们。然后,我们查看处理动作流的 ESB 流如何将结果事件发送到 Business Events 中。

没有这个功能,ESB 将不能成为一个真正的 Business Events 连接器,基于结果事件的 Business Events 的交互集将不能作为 ESB 流程动作触发。

什么是结果事件?

结果事件是通过一个技术连接器从一个接触点返回的一组对象,而这是发送到那个接触点的一个动作的结果。结果事件反过来生成一个或多个动作。

换句话说,连接器能够向 Business Events 表明,动作的处理过程是否成功。要使 ESB 成为一个完整的 Business Events 连接器,它需要能够发送结果事件。这些结果事件有助于进一步形成 Business Events 能够识别的模式。

V6.1 文章 中没有介绍结果事件。

创建结果事件

现在让我们创建一个结果事件,操作方法和 附带项目 中的方法一样。

  1. 在 Design Data 中,右键单击 MyAction 并选择 Insert Event => Result of This Action,如图 13 所示。

    图 13. 插入一个事件
    插入一个事件

  2. 接受默认值(以便为每个动作对象创建一个事件对象),然后单击 OK。这生成一个与动作同名的结果事件:MyAction。Design Data 将这个结果事件显示为 MyAction => MyAction。为避免混淆,将该事件重命名为 ResultEventForMyAction。
  3. 通过从 Event Object 选择 Insert => Event Object => Template 添加一个新的事件对象。
  4. 选择 Connection => _Wesb_Result,如图 14 所示。这添加一个带有特定于 ESB 的信息的事件对象。

    图 14. 插入事件对象
    插入事件对象

    结果事件定义后,可以像其他事件一样在 Business Events 中使用。可以定义由于它的到达而触发的到中间对象的映射和交互集。

  5. 导出结果事件模式并将其导入 Integration Developer。另一个名为 Connector 的业务对象也被创建,这次它的名称空间是 {http://wbe.ibm.com/6.2/Action/ResultEventForMyAction}。

创建一个新接口

结果事件原语格式化结果事件。通过将该结果事件连接到一个表示 Business Events 的 JMS 导入实现实际的发送。在本小节中,我们将创建一个关联到这个导入的新接口。

接口 toWBEResultEvents 拥有一个单向方法,该方法带有单个参数,参数类型为 connector,名称空间为 http://wbe.ibm.com/6.2/Event/ResultEventForMyAction

创建一个名为 toWBEResultEvents 的新接口,该接口拥有一个单向方法,该方法带有单个参数,参数类型为 connector,名称空间为 http://wbe.ibm.com/6.2/Event/ResultEventForMyAction

下表显示我们在前面各小节中为这个 ESB 项目创建的所有接口的完整列表,这些接口的所有操作都是单向的。

接口名称 方法名称 参数类型
entryPointoperation1InputObject
toWBEMyEventoperation1Connector {http://wbe.ibm.com/6.2/Event/MyEvent}
fromWBEMyActionConnector {http://wbe.ibm.com/6.2/Action/MyAction}
ActionForResultEventConnector {http://wbe.ibm.com/6.2/Action/ActionForResultEvent}
toWBEResultEventsoperation1Connector (namespace http://wbe.ibm.com/6.2/Event/ResultEventForMyAction

更新组装图表

对组装图表进行以下修改:

  1. toWBEResultEvents 接口拖放到组装图表上。
  2. 在弹出菜单中选择 Import with no Binding。这个导入用于将结果事件提交到 Business Events 以便处理。
  3. 要定义这个导入的绑定,右键单击导入,然后选择 Generate Binding => Messaging Binding => JMS Binding
  4. 在 Configure JMS Export Service 对话框中,指定以下信息:
    • JMS messaging domain: Publish-Subscribe
    • Connection Factory: Jms/WbeTopicConnectionFactory
    • Destination: jms/eventTopic
    • Default data format:单击 Select。在 Data Transformation Configuration 向导中,选择 XML 并单击 Next,如图 15 所示。


    图 15. 选择数据格式转换
    选择数据格式转换

  5. 在 Data transformation properties 页面,在 Document root name 中输入 connector,在 Document root namespace 中输入 http://wbe.ibm.com/6.2/Event/ResultEventForMyAction,如图 16 所示。

    图 16. 指定数据转换属性
    指定数据转换属性

  6. 单击 Next,然后单击 Finish
  7. 绑定生成后,选择这个导入并在 Properties 视图中将默认消息类型从 Byte 更改为 Text(如图 17 所示),然后保存更改。

    图 17. 更改默认消息类型
    更改默认消息类型

  8. 在组装图表中,连接中介组件和 JMS 导入。最终图表应该如图 18 所示。

    图 18. 完成的组装图表
    完成的组装图表

  9. 下面,您需要添加原语以将结果事件格式化到中介流。为此,右键单击中介组件并选择 Synchronize interfaces and references to implementation
  10. 在中介流编辑器的 Operation connection 部分,连接 MyAction 操作和 operation1,如图 19 所示。

    图 19. 处理 MyAction 的中介流
    处理 MyAction 的中介流

  11. 在本例中,自定义中介 ProcessAction 只是输出它的内容。我们将把它连接到 Business Events Send Success 原语。这将向 Business Events 表明,处理流程已经成功执行。
  12. Business Events Send Success 原语只有一个属性,用于描述传入的动作在消息树中的位置。如果 ProcessAction 原语要修改消息,传入的动作首先必须存储在临时上下文中,然后,临时上下文将作为 WBESendSuccess 原语上的属性指定。由于 ProcessAction 不修改该消息,将 WBE 原语的 Root 属性指定为 body\MyAction\connector,然后保存项目。
  13. 按照 Integration Developer Information Center 中的 Deploying modules to the test environment 部分介绍的方法安装应用程序。
  14. 使用 Web Services Explorer 调用 entryPoint 接口。
  15. 在 ESB 的 System.out 中,应该能够看到两个从 Business Events 发来的动作,表明 ESB 和 Business Events 之间通信正常。

ESB System.out 文件现在也包含第二个动作(为简便起见省略了消息头部),如下所示:

 [29/01/09 17:46:43:156 GMT] 0000017a SystemOut     O 
 WESB_WBE_Integration62 : ActionForResultEvent : 
	 fromWBE -> LogActionForResultEvent 
 [29/01/09 17:46:43:156 GMT] 0000017a SystemOut     O 
 <?xml version="1.0" encoding="UTF-8"?> 
 <p:ServiceMessageObject xsi:type="p:ServiceMessageObject" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:event="http://wbe.ibm.com/6.2/Action/ActionForResultEvent" 
 xmlns:wbe="wsdl.http://WESB_WBE_Integration62/fromWBE" 
 xmlns:wbe_1="http://WESB_WBE_Integration62/fromWBE" 
 xmlns:p="http://www.ibm.com/websphere/sibx/smo/v6.0.1"> 
  <context/> 
  <headers> 
  </headers> 
  <body xsi:type="wbe:ActionForResultEventRequestMsg"> 
    <wbe_1:ActionForResultEvent> 
      <event:connector name="WBE" version="6.2"> 
        <event:connector-bundle 
	  id="549CCA3DC380EE2C11DDE216C152BE02"
	  name="ActionForResultEvent" type="Action"
	  workflow="FACE"> 
          <event:ActionObj1> 
            <event:String1 type="String">1</event:String1> 
            <event:String2 type="String">2</event:String2> 
          </event:ActionObj1> 
          <event:ActionObj2> 
            <event:Int type="Integer">4</event:Int> 
            <event:Bool type="Boolean">true</event:Bool> 
          </event:ActionObj2> 
        </event:connector-bundle> 
        <event:system>screenda-t61</event:system> 
        <event:timestamp>2009-01-29T17:46:43.015Z 
	 </event:timestamp> 
        <event:loginfo>This is an event from IBM WebSphere 
	  Business Events</event:loginfo> 
      </event:connector> 
    </wbe_1:ActionForResultEvent> 
  </body> 
 </p:ServiceMessageObject> 
           

现在,ESB 和 Business Events 之间的集成就完成了!在最后这个小节中,我们将检查与集成相关的问题和解决问题的方法。





回页首


ESB - Business Events 集成问题故障排除

这个小节介绍几个您可能遇到的问题及解决方法。

  • 连通性没有建立。

    如果使用脚本,记得在运行脚本后重新启动服务器。有两种方法可以检查是否已实现连通性:一是在 Application Server 管理控制台中确认针对 Business Events 总线和 ESB 中的 SCA.application 总线的消息传递引擎已经启动,二是检查两个服务器日志中的以下消息类型。

     [14/01/09 10:53:42:808 GMT] 00000087 SibMessage    I   [:] 
     CWSIT0032I: The inter-bus connection WbeSibLink from 
     messaging engine TISMANANode05.server1- 
     SCA.APPLICATION.TISMANANode05Cell.Bus in bus 
     SCA.APPLICATION.TISMANANode05Cell.Bus to messaging engine 
     TISMANANode01.server1-WbeBus in bus WbeBus started. 
     [14/01/09 10:55:33:747 GMT] 0000008a SibMessage    I 
     SCA.APPLICATION.TISMANANode05Cell.Bus: 
     TISMANANode05.server1- 
     SCA.APPLICATION.TISMANANode05Cell.Bus] 
     CWSIP0382I: Messaging engine 2D8A6DC035BED981 
     responded to subscription request, Publish Subscribe 
     topology now consistent. 
     [

  • 来自 ESB 的事件没有到达 Business Events。

    打开 Business Events 事件追踪功能并检查是否有事件接触 Business Events 或者是否生成动作。检查是否已经建立连通性。

  • 在使用 Business Events 动作选择器处理动作时发生绑定错误。

    检查与导出关联的接口是否拥有针对 Business Events 生成的所有动作的操作。如果某些操作缺失,则要么忽略错误(本例中可能会出现错误),要么将 JMS 选择器添加到 Application Server 管理控制台中的激活规范。

  • 一个 ClassCastException 来自原语或表示 Business Events 的导出。

    可能的原因如下:

    • 模式被导入到 Integration Developer 后,Business Events 中的事件或动作定义已经改变。模式和定义必须同步。
    • 对应的接口可能没有正确的连接器对象。检查名称空间。
  • ESB 日志显示错误消息:“Unable to find WBEEvent.mednode”

    确保 com.ibm.wbe.sibx.runtime_6.2.0.0.jar 已添加到 <WESB>\lib\ext。

  • Integration Developer 启动,但中介原语面板上没有 Business Events 类别。

    执行以下操作:

    1. 检查 Business Events 附件是否已安装。
    2. 使用 – clean 选项重新启动 Integration Developer。




回页首


结束语

在本文中,您学习了如何创建一个展示 WebSphere ESB 和 WebSphere Business Events V6.2 之间的集成点的应用程序。您还学习了如何解决与集成相关的常见问题。这些产品改进后的集成特性使 ESB 服务集成解决方案或 Process Server 业务流程管理解决方案有可能成为 Business Events 的功能,以便探测、评估和响应事件模式,从而实现业务目标。Business Events 添加了实时事件模式探测和动态流程功能,以便响应这些针对业务流程管理领域的模式。






回页首


下载

描述名字大小下载方法
样例 Business Events 项目Article62Test.xml11KBHTTP
完成的中介模块WESB_WBE_Integration62.zip29KBHTTP
关于下载方法的信息


参考资料

学习

获得产品和技术
  • 下载 IBM 产品评估版 ,并开始使用来自 DB2、Lotus、Rational、Tivoli 和 WebSphere® 的应用程序开发工具和中间件产品。


关于作者

Doina Klinger 是 IBM Hursley Software Laboratory 的一名顾问软件工程师。她是 WebSphere Business Events 的开发人员。她以前曾作为开发人员和开发负责人从事过许多 WebSphere 产品和组件方面的工作,并在最近从事 WebSphere Enterprise Service Bus 和 WebSphere Integration Developer 方面的工作。她对 Eclipse 以及消息和事件处理技术拥有浓厚的兴趣。Doina 于 2000 年加入 IBM,并从普渡大学获得了计算机科学硕士学位。




对本文的评价








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