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

developerWorks 中国  >  WebSphere  >

在 WebSphere Business Integration Message Broker 中部署一个复杂流

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

样例代码


级别: 初级

Hamzeh Zawawy (hzawawy@ca.ibm.com), IBM Software Group, Canada
Ross McKegney (mckegne@ca.ibm.com), IBM Software Group, Canada
Alek Seelemann (seeleman@ca.ibm.com), IBM Software Group, Canada
Andrew Lau (akmlau@ca.ibm.com), IBM Software Group, Canada

2004 年 6 月 01 日

本文描述了一个运用 WebSphere Business Integration Message Broker 来自动创建可配置的代理档案(BAR)文件的案例研究。它首先介绍一组航班订票系统的预定义消息流。

引言

本文描述了一个运用 IBM® WebSphere® Business Integration Message Broker V5 (以后简称为 WebSphere Message Broker)来自动创建可配置的代理档案文件的案例研究。 它首先给出一组航班订票系统的预定义消息流,然后描述如何运用升级和可配置性来使得这些流更具可重用性、如何使用脚本来将这些流添加到代理档案文件中、如何将它们部署在一组执行组中。整篇文章也推荐您进行最佳实践并为您提供了可重用脚本。





回页首


案例研究:航班订票系统

下面列出了采用 WebSphere Message Broker 来开发消息流应用程序的过程:

  1. 创建系统的概念模型。
  2. 在 WebSphere Message Broker 工具中将这一模型实例化为一组包含节点和消息的流。
  3. 创建一个可部署的代理档案(BAR)文件。
  4. 配置该 BAR 文件,并将其部署到一个测试环境中。
  5. 配置可部署构件,并将其部署到一个生产系统中。

这一案例研究的是一个航班订票系统。假定上面所列出的开发过程的前四个步骤已经完成,接下来我们重点介绍 BAR 文件的配置和部署。

该航班订票样本是基于一个航班订票系统(如旅行代理处所使用的航班订票系统)的场景而设计的。它阐述了如何使用 WebSphere Message Broker for Multi-platforms V5.0 所提供的一些特征。您可以运行该航班订票样本来模拟以下的任务:

  • 预订一架班机的座位。
  • 请求一个旅客的信息。
  • 请求特定一架班机及其旅客名单的信息。
  • 取消预订。

流的设计是为了实现航班订票系统的特征,其中选择了具有适合的功能的一些节点。每个流都包含至少一个输入节点,它的特征已做了定义。而选择其他节点(例如 Compute)是为了根据消息的内容确定消息的流经路径、提供对消息的检验或检查,或者更新及查询数据库。输出节点也能够用于将某些消息引导到不同的节点和队列中。

航班订票样本中的流

本文使用 XML 形式的航班订票样本,它包括 7 个独立的消息流和 6 个自定义的 XML 输入消息。这些资源都为您 提供下载以方便您对这些消息流做测试。这些流所处理的功能包括预订座位、更新订票数据库,以及请求关于订票、航班和旅客的消息。在这些流上运行的消息其性质是普通的自定义 XML。需要用到的队列和数据库是通过 WebSphere Message Broker 在线帮助所提供的脚本创建的。为了了解关于流和消息的更多信息,请参阅 WebSphere Message Broker 在线帮助。





回页首


配置和升级流

可配置特性提供了一种机制,在这种机制下,不用重新编译流应用程序即可配置系统对象名称(例如,数据库连接或 MQSeries 队列的名称)。这一可配置特征是由另一个特征——特性升级——赋予的。特性升级是流程序设计的一个固有特征,它独立于可配置特征而存在。升级特征可以让流开发人员指定由一个升级特性来设置几个特性。这种方式对指定为可配置的特性做了升级,从而使它能与其他的属性在一起设置。升级过的可配置特性的值只可在升级过的实例中设置。这是因为流设计人员是使用升级来控制分级结构中的特性值的设置。设置可配置特性的最初定义的值并传递特性升级模式意味着可配置性会破坏流开发人员的意图。一个可配置特性在升级的时候,可配置性并不会因为升级而丢失,升级后的特性同样还是可配置的。

如果初始定义指定它们为可配置的,那么升级特性仍是可配置的。这意味着一个可配置特性升级后依然是可配置的。为了做到这一点,一个升级特性的可配置状态被确定为升级为升级特性的所有属性的可配置状态的 inclusive OR。如果一个可配置的特性和一个不可配置的特性升级为同样的升级特性,那么两个值都为可配置的。图 1 为一个特性的升级示例。


图 1. 将数据源特性升级为高级流
将数据源特性升级为高级流

可配置特性的功能十分强大,因为它允许在最后关头对系统对象做修改。这意味着您只需打包一次 BAR 文件,在开发机器中使用一组参数值来对它做测试,然后将它部署到使用另一组参数值的生产环境中,而不必重新编译。如果您想要将同样的 BAR 文件重新部署到多个生产环境中,只需要将可配置参数改为所需要的值,而不必再回到开发环境中。

利用可配置性和升级

在航班订票系统中,可配置的特性为 Compute 节点的 dataSource 特性和 MQOutput 节点的 queueManagerName 特性。dataSource 特性是一个数据库连接的系统名称。在 Microsoft® Windows® 中,它是一个 ODBC 连接的名称。queueManagerName 代表与代理相关联的 MQSeries 队列管理器的名称,以及有关的队列。因为这一特性是一个系统对象的名称,所以在发布操作时,开发团队和管理员就可在部署描述符中指定这些特性的值。另外,每个开发人员都可配置他们自己的工作区,以便提供自己的重载,而这些重载在他们自己的开发工具中是正确的。

升级属性

在 XML_BuildReplyMessage 消息流中,“Build Single Message” 的 dataSource 特性、“Propagate Multiple Messages” Compute 节点,以及 “Multiple Or Single Message?” Filter 节点都被升级为同样的 BuildReplyMessage_dataSource 节点。在 XML_Reservation 消息流中,同样的 dataSource 特性,以及“Update Passenger table”Compute 节点和 “Update Flight Table” Database 节点的 dataSource 特性都被再次升级。图 2 显示了使用 WebSphere Message Broker 消息流编辑器的 XML_Reservation 流。


图 2. XML_Reservation 流
XML_Reservation 流




回页首


部署流应用程序

在 XML_Reservation 流这一级中,dataSource 属性被设置为 RESERVDB,即已经建立的 ODBC 连接的名称。同样,“XML_RESERVATION_OUT” 和 “XML_RESERVATION_FAIL” MQOutput 节点的 queueManagerName 特性也在 XML_Reservation 流中升级为同样的 queueManagerName 属性,并设置为 QM_myMachineName。升级过程是使用图 3 所示的特性升级对话框来完成的。


图 3. 特性升级对话框
Property promotion dialog




回页首


部署

您使用嵌套流、特性升级和可配置特性来开发流应用程序。流应用程序是由一个团队开发的,他们使用可配置特性来为他们的开发工具自定义应用程序。一旦流应用程序完全开发出来,它就可以重新部署;第一次是部署到测试系统中,然后再部署到生产环境中。

运用脚本部署

您可以使用命令行工具 mqsibar 来构建 BAR 文件。可以使用脚本来创建这个 BAR 文件。您可以使用所提供的 样本脚本来创建和部署一个 BAR 文件。第一个样本脚本称为 setProperties.bat ,它设置了称为 createBar.bat 的第二个样本脚本所要使用的环境变量。而最后一个样本, deployBar.bat ,则将该 BAR 文件部署到期望的代理中。

在清单 1 中, setProperties.bat 文件建立了 createBar.bat 脚本所需要的环境变量。在本示例中,您设置的是 WebSphere Message Broker 工具的主目录、安装目录、所创建的 BAR 文件的名称以及添加到该 BAR 文件的流。


清单 1. setProperties.bat 脚本文件
rem Properties for Command Line WBIMB execution
set WBIMB_HOME=C:\Progra~1\IBM\WebSph~1
set WORKSPACE=%WBIMB_HOME%\eclipse\workspace
set BARNAME=C:\temp\deployable.bar
set BARFILES=airlin~1\XML_BuildReplyMessage.msgflow airlin~1\XML_CancelReservation.msgflow 
airlin~1\XML_FlightQueryIn.msgflow airlin~1\XML_FlightQueryOut.msgflow 
airlin~1\XML_FlightQueryReply.msgflow 
airlin~1\XML_PassengerQuery.msgflow airlin~1\XML_Reservation.msgflow

在清单 2 中,批处理文件调用 setProperties.bat 文件来建立所需要的环境变量,然后调用 mqsicreatebar 可执行文件来创建 BAR 文件。


清单 2. createBar.bat 脚本文件
@ECHO OFF
rem Broker Archive (bar) file command line creation
SETLOCAL
rem Set the configurable properties for this creation
CALL  setProperties.bat
ECHO.
ECHO Broker Archive Command Line Creation
ECHO --------------------------------------------------
ECHO WBIMB home=%WBIMB_HOME%
ECHO.
ECHO WORKSPACE=%WORKSPACE%
ECHO BARNAME=%BARNAME%
ECHO FILES=%BARFILES%
ECHO ---------------------------------------------------
"%WBIMB_HOME%\eclipse\mqsicreatebar.exe" -data %WORKSPACE% -b %BARNAME% -o %BARFILES%
ENDLOCAL

最后您可以通过命令行部署最新创建的 BAR 文件,方法是使用 bin 目录中的安装程序提供的 mqsideploy.bat 脚本。使用 mqsideploy.bat 的样本脚本可以自动部署一组已知的 BAR 文件。这一脚本使用一个特定的执行组和配置管理器特性文件来指定要部署在哪个代理中。该脚本再次调用 setProperties.bat 来获得 BAR 文件的名称以进行部署,然后调用 mqsideploy.bat 来试图部署如清单 3 所示的 BAR 文件。


清单 3. deployBar.bat 脚本文件
@echo off
setlocal
rem Properties for Bar deployment
call  setProperties.bat
set BROKER=WBRK_BROKER
set EXECGRP=exec2
set CFGFILE=%WORKSPACE%\test\WBRK_QM.configmgr
set BACK=%cd%
echo --------------------------------------------------
echo Broker Archive Deployment
echo BROKER = %BROKER%
echo EXECUTION GROUP = %EXECGRP%
echo BAR FILE = %BARNAME%
echo CONFIG FILE = %CFGFILE%
echo CURRENT DIR = %cd%
echo --------------------------------------------------
cd %WBIMB_HOME%\bin
"mqsideploy.bat" -b %BROKER% -e %EXECGRP% -bar %BARNAME% -connection %CFGFILE%
cd %BACK%
 endlocal





回页首


定义 BAR 文件中的流的版本

将流传递给系统管理员以便在系统中部署,然后采用一种方式来定义包含在 BAR 文件中的流的版本号,甚至是 BAR 文件本身的版本号,这是非常有用的。WebSphere Message Broker 并不直接支持版本定义,因为每个开发组织都使用自己的方案,很可能由内部使用的版本控制软件确定版本号。然而,使用本文所提供的脚本,您就可以同时为流和 BAR 文件分配版本号。

推荐做法是在将流添加到 BAR 文件中时,将源控制版本号追加到流名称中。您可以使用 mqsibar 实体所提供的 -v 选项来自动完成这一过程。每次将消息流或消息组的一个新版本号添加到 BAR 文件中时,最近添加的文件的名称都会附加上 “_”(下划线)和版本号。在下一次编译该文件的更新副本并添加到代理档案文件中时,版本号就会由新的值来替代。

您可以通过将版本号追加到 BAR 文件的名称中的方式执行另一层的版本定义。使用 -b 选项(用于指定 BAR 文件名称),您可以修改目标 BAR 文件的名称,并在其上追加一个版本号。BAR 文件是基于委托流(constituent flow)的版本号唯一标识的,但这一附加层在开发和部署团队之间传递 BAR 文件时也是有用的。





回页首


结束语

使用脚本来配置和构建 BAR 文件是一种能让您轻松实现的有效方法。通过使用这些脚本,您可以高效地构建 BAR 文件,以及快速地从一种配置转移到另一种配置——需要做的只是在命令行改变一个参数。另外,您可以为这些 BAR 文件定义版本,避免历史信息的丢失。这种方法可以避免低效率的用户界面,以及不必要的信息输入。






回页首


下载

名字大小下载方法
sample_files.zip4 KBHTTP
关于下载方法的信息


参考资料



作者简介

Hamzeh Zawawy是位于加拿大安大略省的 IBM 多伦多实验室的一名软件工程师。他是 WebSphere Business Integration Message Broker 的 Broker Archive 和 RAD 组件的开发项目经理。


Ross McKegney是位于加拿大安大略省的 IBM 多伦多实验室的一名软件工程师。他是 WebSphere Commerce 的 Member Management 组件开发项目经理。


Alek Seelemann是 WebSphere Business Integration Message Broker V5 工具的技术主管。他从 1995 年起一直在加拿大安大略省的 IBM 多伦多实验室工作。


Andrew Lau是 WebSphere Business Integration Message Broker Toolkit 团队的软件开发人员。他目前正在申请加拿大亚伯达大学计算科学的理学士学位。




对本文的评价

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

建议?







回页首


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