级别: 初级 娄丽军, 软件部售前工程师, IBM公司
2003 年 10 月 01 日 Websphere Business Integration Adapters(简称WBIA)是IBM Websphere Business Integration产品家族中的重要一员,正是通过这些丰富多样、功能完善、简便易用的适配器使得IBM的业务整合解决方案具有强大的连接性。
Websphere Business Integration Adapters(简称WBIA)是IBM Websphere Business Integration产品家族中的重要一员,正是通过这些丰富多样、功能完善、简便易用的适配器使得IBM的业务整合解决方案具有强大的连接性。
在技术术语中,Adapter, Connector都代表适配器,连接器,在本文中为了统一起见,我们将其称为适配器。
在IBM业务整合解决方案产品包中,拥有两个业务整合代理服务器,即WebSphere MQ Integrator(简称WMQI)和WebSphere Interchange Server(简称ICS),WBIA对这两个应用整合集线器(Integration Hub)代理都提供支持,作为它们与外围应用连接的桥梁。
本文将着重介绍这些适配器如何在WMQI中使用,并通过一个使用WBIA JDBC适配器和WMQI实现两数据库同步的例子,来说明WBI适配器 在以WMQI为应用整合平台时的使用和配置方法。
1 WBIA技术提要
1.1适配器(Connector)
当WBIA以WMQI为应用整合中心时,适配器通过MQ的消息队列与WMQI通讯,它们将从队列中读取数据将数据放入队列,并且使用MQRFH2来标示消息的格式等信息。WMQI提供对消息的运算处理、格式转换和智能路由服务,并通过WBIA与集线器外围的各种应用系统交互和连接。
适配器由两部分组成:
与应用相关的部件(Application Specific Component):直接与用户某种具体的应用系统交互,负责提取和更新应用系统中的数据。对于源端系统而言,它需要通过事件发现机制(event notification mechanism)来捕获源应用系统中的数据;对于目标系统而言,它需要接收来自应用整合集线器的数据处理请求,对目标应用系统中的进行相应的数据操作。
适配器框架(Connector Framework):实现适配器代理(Connector Agent)和适配器控制器(Connector Controller)之间的通讯,所有类型的适配器拥有共同的适配器框架。适配器框架提供的服务主要有:
一方面,从适配器控制器接收Business Object(数据对象,简称BO)或将数据对象发送给适配器控制器;另一方面,负责适配器控制器和适配器代理之间关于适配器代理启动信息和管理信息的交互。采用统一的适配器框架的好处在于:当开发某个适配器的时候,开发人员不必考虑以与MQ系统连接的方式以及配置信息的获得方式,而只需要将精力集中在如何与应用系统交互上。
1.2数据对象(Business Objects)
数据对象中包含了特定于应用程序的信息(Application Specific Information), 通过它来指示适配器如何将数据对象中的数据转化为应用程序数据。为了使数据对象能够被WMQI的MRM格式定制工具和解析器所识别,我们需要将数据对象以XML Schema来定义,然后输入到WMQI的Message Repository Manager(简称MRM)中。
1.3工具集(Tools)
WBIA提供的丰富的工具,帮助对适配器和数据对象的开发,其中包括:
Business Object Designer, Connector Configurator, Object Discovery Agent(简称ODA), Log Viewer等。我们将在下面的步骤中了解和使用这些工具。
其中利用Business Object Designer,可以帮助我们:
利用图形界面来创建数据对象; 利用ODA工具来自动创建数据对象; 保存数据对象的定义,尤其是可以将其定义以XML Schema标准来描述。
利用Connector Configurator,可以帮助我们:
配置适配器的属性,例如:适配器要查询的队列名称,查询的时间间隔,日志设置等;设置适配器的属性可以支持的数据对象的名称等。
其它工具还有,自动发现和识别数据对象的工具ODA。
1.4资源仓储库(Repository)
我们知道,对ICS而言,它使用数据库作为其资源仓储库, 它几乎所有信息都存放在资源仓储库中,在适配器代理启动时通过适配器代理与适配器控制器的通讯,从服务器上的资源仓储库中将这些信息(包括数据对象的定义和适配器的属性)下载到本地。而在适配器代理本地存放的仅仅是一个与适配器代理启动信息有关的控制文件,如日志跟踪的级别等。
与此不同的是,当WMQI作为应用整合集线器时,没有一个等同于适配器控制器的组件,因此,适配器代理无法从适配器控制器上获取所需要的信息,它只能从本地获取信息。为了使用的简单易用性,WBIA不采用使用数据库作为资源仓储库,而是采用配置文件的方式。在配置文件中,包含了WBIA各个部件的配置信息,其中包括适配器的定义,数据对象的定义等。该配置文件以cfg为后缀,在适配器运行时使用,从中适配器可以得到关于自身的配置信息,如:与具体应用打交道的用户名和口令,使用的各个队列的名称,支持的数据对象,以及关于数据对象的Schema文件的位置(那里要有所支持的数据对象的XML Schema定义文件)等。
1.5数据传输(Data Transport)
WBIA使用MQ进行适配器代理和WMQI 应用整合集线器之间的数据对象传输,它利用MQ的队列来存储这些数据对象。一方面,适配器代理创建数据对象,将其封装在MQ的消息体中,利用MQ的API将消息发往WMQI代理(Broker);另一方面,WMQI代理(Broker)将消息放入特定的消息队列,然后由适配器代理从队列中读取发送消息。
2 应用举例
这里,我们的源端是一个DB2数据库系统,用户的数据库名为CWSource, 数据库表名为Customer,目的端也一个DB2数据库系统,用户的数据库名为CWTarget, 数据库表名为Customer2,当Customer有业务数据增加时,我们将通过WBIA的JDBC Connetor将数据发往我们的应用整合中心WMQI,由它将数据格式调整后,通知目的系统,通过目的端的JDBC Connetor来对Customer2进行同步更新。
3 产品安装
产品安装步骤如下:
1) 安装WebSphere MQV5.2.1
2) 安装WebSphere MQ Integrator Broker (WMQIB) V2.1, 安装WMQIB的补丁3,注意,WMQIB只有安装补丁2以上才能支持WBIA的使用
3) 安装WBIA Framework
4) 安装WBI Adapters,选择要使用的Adapters,如:JDBC, Email等;及其工具,如:Object Discovery Agent(ODA)等。
注意:安装时,选择WebSphere MQ Integrator作为其进行应用整合的代理。
在此,我们选择D:\WebSphereAdapters作为我们的安装目录。
在此,我们可以看到WBIA包含的主要的适配器种类,选择其中的需要的适配器,本例中要求至少选择JDBC适配器。此外,一定要选择"WebSphere Business Adapter Framework"的Runtime Components 和Tools选项。
设置WMQI的消息代理的名称,在此我们创建的代理名称为:MQSI_BROKER。
5) 安装VisiBroker object request broker,注意VisiBroker仅为开发Business Object时使用(而ORB实现了ODA和BO Designer之间的通讯)。
6) 安装Java 运行环境,WBIA的运行环境需要JRE。
4 环境准备
4.1 创建WMQI工作环境
创建WMQI的消息仓储库管理器(Message Repository Manager,简称MRM)、配置管理器(Configuration Manager)数据库和消息代理(Broker)数据库,其中,MRM数据库用来存储关于消息格式的定义;配置管理器数据库用来存储消息流,Message Execution Group(消息执行组)等配置信息;消息代理数据库用来存储运行时信息,如数据字典,消息流的部署信息等。
我们对以上三个WMQI Database 的配置如下:
消息代理数据库: MQSIBKDB
MRM 数据库: MQSIMRDB
配置管理器数据库:MQSICMDB
在数据库DB2中建立这三个数据库。
除了数据库之外,我们建立的WMQI 消息代理的名称为: WMQI_BROKER,它所依赖的队列管理器的名称为:ARGO。关于WMQI的初始化安装配置步骤,例如:如何建立消息代理,如何建立配置管理器等,在此,我们就不赘述了。
4.2建立源及目的数据库和表
我们这里给出的是如何利用JDBC 适配器实现两个数据库之间的同步,因此,首先,我们需要建立相应的源和目的数据库和表。
4.2.1 建立源数据库和表
(1). 创建数据库CWSOURCE
进入 db2 命令窗口:
运行以下命令:
db2 create db CWSOURCE
(2). 建表
进入 db2 命令窗口:
运行以下命令:
db2 connect to CWSOURCE user db2admin using db2admin
A) 创建JDBC 适配器的事件表(Event table):
db2 CREATE TABLE xworlds_events
(event_id DECIMAL(20) PRIMARY KEY not null GENERATED ALWAYS AS IDENTITY
(START WITH 0, INCREMENT BY 1, CACHE 20),
connector_id DECIMAL(20),
object_key int NOT NULL,
object_name VARCHAR(40) NOT NULL,
object_verb VARCHAR(40) NOT NULL,
event_priority DECIMAL(5) NOT NULL,
event_time DATE with DEFAULT CURRENT DATE,
event_status DECIMAL(5) NOT NULL,
event_comment VARCHAR(100))
|
B) 创建JDBC Connector的归档表(Archive table):
db2 CREATE TABLE xworlds_archive_events (event_id INTEGER not null,
connector_id INTEGER,
object_key int NOT NULL,
object_name VARCHAR(40) NOT NULL,
object_verb VARCHAR(40) NOT NULL,
event_priority INTEGER NOT NULL,
event_time TIMESTAMP with Default CURRENT TIMESTAMP,
archive_time TIMESTAMP with Default CURRENT TIMESTAMP, event_status INTEGER NOT NULL,
event_comment VARCHAR(100), PRIMARY KEY( event_id ))
|
C) 创建用户表Customer
db2 CREATE TABLE Customer (cust_id int not null, cust_fname varchar(10) not null, cust_lname char(10) with default null, cust_email varchar(20) with default null,
PRIMARY KEY( cust_id ))
|
D) 为用户表Customer触发器:
CREATE TRIGGER customer_trig AFTER INSERT ON customer REFERENCING
NEW AS NEWCUS FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC INSERT INTO xworlds_events(connector_id,object_key,object_name,object_verb,
event_priority,event_status) VALUES (1, NEWCUS.cust_id, 'Customer','Create',1,0);
END
|
E) 向数据库表中插入若干测试数据:
db2 Insert into CUSTOMER values (100000,'Tim','Zhang','tim@cn.ibm.com')
db2 Insert into CUSTOMER values (100001,'Grace','Wang','grace@sina.com')
db2 commit
|
4.2.2 建立目的数据库和表
(1). 创建数据库CWTARGET
进入 db2 命令窗口:
运行以下命令:
db2 create db CWTARGET
(2).创建用户表Customer2
进入 db2 命令窗口:
运行以下命令:
db2 connect to CWTARGET user db2admin using db2admin
db2 CREATE TABLE Customer2
(cust_id int not null, cust_fname varchar(10) not null,
cust_lname char(10),cust_email varchar(30), PRIMARY KEY( cust_id ))
|
注意:由于该数据库是目的端数据库,因此,它只需要来自WMQI的数据对象的请求进行处理,而不需要处理事件发现机制,因此,我们不需要为其建立事件表(Event table)和归档表(Archive table)。
5 创建数据对象(Business Object)
在本例中,我们要创建相应的数据对象,其中源适配器要处理的数据对象为Customer,我们将使用WBIA提供的数据对象定义工具BO Designer来创建它;目的适配器要处理的数据对象为Customer2,我们将使用WBIA提供的另一个功能强大、简便易行的工具ODA来创建它。
5.1为源适配器创建数据对象
A) 创建Customer BO:
启动Business Object Designer: Start->Programs->WebSphere Business Integration Adapters->Tool->Business Object Designer, 创建一个新的数据对象,数据对象的有关设置如下:
数据对象的名称: Customer;
Application Specific Information: TN=Customer;SCN=(TN代表数据库名称)
为Customer BO增加字段:
| Name | Type | key | Foreign | Reqd | Card | Max Len | Default | App Spec Info | | Cus_id | Integer | 1 | 0 | 1 | | | 10000 | CN=cust_id | | Cus_fname | String | 0 | 0 | 1 | | 10 | Tim | CN=cus_fname | | Cus_lname | String | 0 | 0 | 1 | | 10 | Wang | CN=cus_lname | | Cus_email | String | 0 | 0 | 0 | | 20 | tim@cn.ibm.com | CN=cus_email |
如图所示:
B) 保存数据对象的定义
在将数据对象定义保存到文件中时,我们可以看到,我们可以将其保存为不同的文件,其中包括:CrossWorlds(*.in),XML Schema Definition(*.xsd)等。
习惯上,在ICS中,对象的定义通常输入/输出到以in和out为后缀的文本文件中保存,而当创建的数据对象要为WMQI所用时,我们要将其以XML Schema Definition的方式保存。
注意:这里需要强调指出的是,为了能够BO Designer中定义的数据对象与WMQI能够识别的格式之间的相互转换,我们用XML Schema定义来架起两者的桥梁,我们用XML Schema来定义数据对象的格式,在BO Designer中我们将数据对象定义输出为xsd文件,然后,我们将利用WMQI的输入工具将其定义输入到WMQI的MRM中。XML Schema文件中也包含了数据对象的描述信息(metadata)。
在此,我们将Customer BO的定义保存到Customer.xsd文件中。
5.2为目的应用创建数据对象
这里,我们使用DB2 JDBC ODA自动创建Customer2 BO,以帮助大家熟悉ODA这个工具的使用,除了用于数据库的JDBC ODA之外,WBIA还为用户提供了其它的ODA工具,如:SAP ODA(用于直接从SAP系统中提取数据对象的定义),Siebel和I2 ODA(分别用于从Siebel和I2系统中提取数据对象的定义)等,使用ODA直接生成数据对象,可以节省我们非常多的工作量,缩短开发周期,这是WBIA以及IBM Business Integration解决方案的重要优势之一。
1) 为DB2 JDBC Object Discovery Agent创建快捷方式:
拷贝并复制C:\Documents and Settings\All Users\Start Menu\Programs\WebSphere Business Integration Adapters\Adapters\Object Discovery Agent下的JDBC Object Discovery Agent的快捷方式,命名为:DB2 JDBC Object Discovery Agent,对其进行编辑:
在set JCLASSES=% JCLASSES%;%AGENT%;%GRIVERPATH% 后增加;%DB2TEMPDIR%\java\db2java.zip
2) 命名ODA,将set AGENTNAME=JDBCODA修改为:set AGENTNAME=JDBCODA_ DB2
3) 启动ODA,Start->Programs->WebSphere Business Integration Adatpers->Adapters->Object Discovery Agent->DB2 JDBC Object Discovery Agent
4) 启动BO Designer, Start->Programs->WebSphere Business Integration Adatpers->Tools->Business Object Designer
选择菜单File->New Using ODA,首先利用ODA为我们查找Agents,选择JDBCODA_DB2:
对其进行命名,并按照下图设定其相关参数
接下来,在给出的数据表中选择表Customer2,
在Verb设置中,去掉RetrieveByContent选项,在Add Stored Procedure设置中,将其置为No。
选择Open the new Bos in separate windows,这时Customer2 BO的定义会自动出现在BO Designer中。
同理,将数据对象的定义保存到Customer2.xsd文件中。
5.3将数据对象定义的Schema输入到WMQI中
5.3.1 关于WMQI XML Schema Importer工具的说明
熟悉IBM MQ家族产品的用户,一定对IBM提供的与MQ家族产品相关的产品支持软件包(Support Pac)工具不会陌生。如果登陆MQ家族产品的网站http://www.ibm.com/software/mqseries/txppacs,大家就能够获得与之相关的信息,并且可以免费下载其中感兴趣的内容,这是一个非常有用的工具。在这些支持软件包中,你可以得到有关产品配置方法的信息,有关产品系统管理的信息,有关产品性能测试结果的信息,有关产品规划时的一些建议和方法论,有关产品使用中的一些使用工具等。
这里,我们介绍一个用于WMQI的Suppot Pac: IO01- WebSphere MQ Integrator XML Schema Importer。大家知道,WMQI本身支持使用DTD来描述消息格式,支持DTD的输入和输出。与此类似,IO01可以将符合W3C标准的XML Schema作为消息格式描述输入到WMQI的MRM中,它能够在MRM中产生对应的消息集(Message Set)定义,从而利用MRM 解析器(Parser)来解析符合XML Schema的消息,并且在消息流(Message Flow)中被处理。
IO01主要包含了以下文件:
MqsiImpXMLSchema.exe: importer的可执行程序。
IO01.pdf: 对该工具的详细说明,包括安装和使用说明等。
Samples:样例消息格式。
5.3.2 将数据对象 Schema的定义输入到WMQI的MRM数据库中
A) 关于xsd, {BusObj}Params.txt文件
在了解了输入工具MqsiImpXMLSchema的使用之后,我们利用它将以上保存的Customer和Customer2两个数据对象的xsd定义文件输入到WMQI中。
在3.1和3.2中,我们使用BO Designer创建完数据对象之后,在对其保存时,我们选择了"Generate files for deployment of the exported files(s) to WMQI"的选项,如图所示:
这样数据对象将会在生成其schema file的同时,为我们生成一个名为{BusObj}Params.txt的文本文件,便于Importer使用。
例如:CustomerParams.txt的内容如下:
[HEADER]
MessageSet=CustomerRootElement=Customer
SchemaLoc="http://www.ibm.com/websphere/crossworlds/2002/BOSchema/Customer Customer.xsd"
MRM_DB=MQSIMRDB
DB_User=db2admin
DB_PW=db2admin
xsiPrefix=xsi
FilePath=
DefNameSpace=
NoNameSpaceLoc=
XMLTabName=CwXML
ReportOnly=N
Verbose=N
Trace=N
DateStringOnly=N
InclTimeFrac=N
ShowSchema=N
[FILELIST]
Customer.xsd
[NAMESPACEPREFIX]
http://www.ibm.com/websphere/crossworlds/2002/BOSchema/Customer Customer
|
注意:我们需要手工编辑CustomerParams.txt文件,作如下修改:
MessageSet=Customer 设置MessageSet的名称为Customer
MRM_DB=MQSIMRDB 设置MRM Repository数据库的名称
DB_User=db2admin 设置存取MRM 数据库的用户名
DB_PW=db2admin 设置存取MRM 数据库的口令
B) 使用Importer输入Customer.xsd schema的定义到MRM中。
这时,Customer BO 的定义将会输入到MRM数据库中,同时Importer将会为其自动产生一个唯一的标识符,如图所示,为Customer生成的标识符为:
这里,Customer的Message Set Identifier为:DSL4GQK07G001。
注意,在WMQI中,每个消息集(Message Set)都会有一个唯一的13个字符的标识符,它是某个在MRM中用户自定义的消息格式的重要标识,一定要保证WBIA 适配器处理的数据对象的标识与WMQI中的一致。
C) 在后面创建完适配器之后,我们将在适配器配置中,增加对Customer BO的定义:
启动Connector Configurator,在适配器属性对话框的"Supported Business Objects" Tab中,增加Customer BO,设置其Message Set ID为Importer为我们产生的标识符的值。
D) 同理,将Customer2的定义输入到WMQI中。
6 创建并配置DB2 JDBCSource 和JDBCTarget适配器。
WBIA为我们提供了JDBC 适配器,其代码和启动脚本等位于WBIA安装目录下的connectors目录下,此为D:\WebSphereAdapters\connectors,为了利用它为模板生成并配置其它的JDBC Adapter(包括DB2, Oracle等),我们按照常规做法,保留其原始设置,而是根据需要对其进行拷贝,在新文件夹的基础上进行修改和配置。
A) 生成JDBCSource Connetor文件夹
拷贝并复制D:\WebSphereAdapters\connectors\JDBC文件夹,命名为JDBCSource。
将JDBCSource目录下的CWJDBC.jar和start_JDBC.bat分别改名为CWJDBCSource.jar start_JDBC.bat 和start_JDBCSource.bat。
编辑start_JDBCSource.bat文件:
设置正确的JDBC驱动路径:
SET JDBCDRIVERPATH=c:\program\SQLLIB\java\db2java.zip
设置正确的DB2 jdbc的路径
Set db2jdbc=C:\program\SQLLIB\bin;
在java执行命令中,添加DB2 jdbc路径:
"%CROSSWORLDS%\bin\java" -mx128m -Djava.ext.dirs=%MQ_MA88%
-Djava.library.path="%CROSSWORLDS%"\bin;%CONNDIR%;%MQ_MA88%;%db2jdbc%
-Dorg.omg.CORBA.ORBClass=%ORBCLASSPATH% -Dorg.omg.CORBA.ORBSingletonClass=%ORBCLASSPATH%
-Djava.ext.dirs=%MQ_MA88% -Djava.library.path="%CROSSWORLDS%"\bin;%CONNDIR%;%MQ_MA88%;%db2jdbc%
-Duser.home="%CROSSWORLDS%" -cp %JCLASSES%;%CONNDIR%\CW%CONNAME%.jar; AppEndWrapper -l%CONNPACKAGENAME%
-n%CONNAME%Connector -s%SERVER% %3 %4 %5
|
B) 为JDBCSource Connector创建消息文件:
拷贝并复制D:\WebSphereAdapters\connectors\messages文件夹中的JDBCConnector.txt文件,命名为JDBCSourceConnector.txt。
C) 为JDBCSource Connector创建快捷方式:
拷贝并复制C:\Documents and Settings\All Users\Start Menu\Programs\WebSphere Business Integration Adapters\Adapters\Connectors的JDBC Connector的快捷方式,命名为:JDBCSource Connector,修改其属性为:D:\WebSphereAdapters\connectors\JDBCSource\start_JDBCSource.bat JDBCSource MQSI_BROKER
D) 配置JDBCSource Connector。启动WBIA提供的适配器配置工具Connector Configurator(Start->Programs->WebSphere Business Integration Adapters->Tools->Connector Configurator)。
这里,我们给出其配置如下:
标准属性(Standard Properties)配置如下
与应用相关的属性(Application Config Properties)配置如下:
保存配置到文件D:\WebSphereAdapters\connectors\JDBCSource\JDBCSourceConnector.cfg中。
修改配置文件,设置与MQ相关的属性如下:
[MESSAGING]
HOST_NAME={your hostname}
CLIENT_CHANNEL=CHANNEL1
PORT=1414
MESSAGING_TYPE=MQSERIES
|
E) 指定JDBCSource Connector使用此配置文件启动
修改JDBCSource Connector的快捷方式如下:
D:\WebSphereAdapters\connectors\JDBCSource\start_JDBCSource.bat JDBCSource MQSI_BROKER -cD:\WebSphereAdapters\connectors\JDBCSource\JDBCSourceConnector.cfg
F) 为JDBCSource Connector创建对应的队列和通道等对象:
编辑MQ对象定义脚本文件:objects.tst
DEFINE QLOCAL('JDBCSOURCE.ADMININQ') REPLACE
DEFINE QLOCAL('JDBCSOURCE.FAULTQ') REPLACE
DEFINE QLOCAL('ADMINOUTQ') REPLACE
DEFINE QLOCAL('MQSIAIQ') REPLACE
DEFINE QLOCAL('JDBCSOURCEAIQ') REPLACE
DEFINE QLOCAL('JDBCTARGET.ADMININQ') REPLACE
DEFINE QLOCAL('JDBCTARGET.FAULTQ') REPLACE
DEFINE QLOCAL('JDBCTARGETAIQ') REPLACE
DEFINE CHANNEL(CHANNEL1) CHLTYPE(SVRCONN) TRPTYPE(TCP)
|
使用命令runmqsc ARGO <objects.tst运行该脚本生成对象。
G) 同理,配置JDBCTarget Connector。
7 配置WMQI
A) 配置WMQI,启动控制中心(Control Center)
在配置管理器连接(Configuration Manager Connection)设置中,指定主机名,队列管理器名称和其侦听端口。
B) 将Customer, Customer2两个消息格式定义增加到工作台。
C) 创建消息流(Message Flow)。
其中,计算节点(Compute Node)"MapCustoCUST2"SQL语句如下:
DECLARE I INTEGER;
SET I = 1;
WHILE I %lt; CARDINALITY(InputRoot.*[]) DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I=I+1;
END WHILE;
SET OutputRoot.Properties.MessageSet = 'DSL4GQK07I001';
SET OutputRoot.Properties.MessageType = 'CUSTOMER2';
-- Enter SQL below this line. SQL above this line might be regenerated,
causing any modifications to be lost.
--
SET OutputRoot.Properties.MessageFormat = 'CwXML';
SET OutputRoot.MRM.version = InputBody.version;
SET OutputRoot.MRM.delta = InputBody.delta;
SET OutputRoot.MRM.verb = InputBody.verb;
SET OutputRoot.MRM.xmlns_xsi = 'http://www.w3.org/2001/XMLSchema-instance';
SET OutputRoot.MRM.xmlns_CUSTOMER2 = 'http://www.ibm.com/websphere/crossworlds/2002/BOSchema/CUSTOMER2';
SET OutputRoot.MRM.xmlns_bx = 'http://www.ibm.com/websphere/crossworlds/2002/BOSchema';
SET OutputRoot.MRM.CUST_ID = InputBody.cust_id;
SET OutputRoot.MRM.CUST_FNAME = InputBody.cust_fname;
SET OutputRoot.MRM.CUST_LNAME = InputBody.cust_lname;
SET OutputRoot.MRM.CUST_EMAIL = InputBody.cust_email;
SET OutputRoot.MRM.ObjectEventId = InputBody.ObjectEventId;
-- for base CUSTOMER2
|
D) 将消息集(Message Set)和消息流(Message Flow)加入到消息代理(Broker)中。
在WMQI 控制中心的指派(Assignments)栏中,检出消息代理:MQSI_BROKER, 检出消息执行组(Message Execution Group):default。
将Customer和Customer2两个消息集指派到消息代理中,将消息流SimpleCustomerConversion指派到消息执行组(Message Execution Group)中。
E) 保存所有的配置,向消息代理部署所有的配置和指派信息:文件->部署->完全指派配置。
8 验证
A) 向源数据库CWSource的用户表Customer中,插入一条纪录,检查事件表(Event table)中,有纪录产生。
B) 启动JDBCSource 适配器
JDBCSource 适配器将发现该事件,并利用其数据对象定义中特定于应用程序的信息(Application Specific Info),来创建Customer BO,并将其发送到指定的MQ队列MQSIAIQ中。
C) 检查WMQI,发现进入MQSIAIQ中的消息被MessageFlow处理,在经过Customer到Customer2的转换之后,将Customer2放入其输出队列JDBCTARGETAIQ中。
D) 启动JDBCTarget 适配器
JDBCTarget 适配器监测JDBCTARGETAIQ队列中的数据对象处理请求,解析其数据对象的名称为Customer2,动词(Verb)为Create,根据数据对象定义中的特定于应用程序的信息(Application Specific Info)将数据插入目的数据库CWTARGET中的用户表Customer2中。
至此,用WBIA JDBC 适配器 for WMQI成功地实现了两个数据库表之间数据的同步。
附录
文件清单:
| 文件名 | 描述 | JDBCSourceConnector.cfg
JDBCTargetConnector.cfg
| JDBCSourceConnector和JDBCTargetConnector的配置文件 | Start_JDBCSource.bat
Start_JDBCTarget.bat
| JDBCSourceConnector和JDBCTargetConnector的启动脚本文件 | Customer.xsd
Customer2.xsd
| Customer和Customer2的XML schema created | CustomerParams.txt
Customer2Params.txt
| 用于Importer的信息文件 | db2source.txt
db2target.txt
| 用于生成有关源/目的数据表和触发器的脚本参考 |
关于作者  | |  | 娄丽军,
IBM公司 软件部售前工程师,
1998年加入IBM公司软件部,四年来一直从事IBM通讯及业务整合中间件(WebSphere Business Integration家族)产品的技术支持工作,是软件部从事该领域技术支持时间最长的工程师之一,拥有WebSphere Business Integration相关的产品经验,这些产品包括WebSphere MQ家族的所有产品:MQSeries, MQ Integrator, MQ Workflow以及CrossWorlds等,并具有很多大型项目的支持经验,曾参与国家税务总局,人民银行清算系统、华夏银行电子联行系统、中国联通计费系统、海关与国家税务总局互连系统,以及公安部、铁道部、中信实业银行、电信等重要客户的有关项目的技术支持。 |
对本文的评价
|