websphere
WebSphere Transformation Extender版本8.3和WebSphere Enterprise Service Bus版本7提供了IBM WebSphere Enterprise Service Bus上的IBM WebSphere Transformation Extender原语。此集成为用户提供了数据转换和业务连接之间的更好解决方案。 在本文中,我们将继续使用在本系列的第1部分中创建的转换映射,并演示如何将其与WebSphere Enterprise Service Bus流集成。
您将通过与SOA企业服务总线解决方案集成以快速可靠地创建具有复杂数据转换的业务流,来了解WebSphere Transformation Extender的功能。
先决条件
要遵循本文中的示例,您将需要:
- WebSphere Transformation Extender Design Studio版本8.3或更高版本
- 用于Integration Server版本8.3或更高版本的WebSphere Transformation Extender
- WebSphere MQ版本7.0.1或更高版本
- WebSphere Enterprise Service Bus版本7或更高版本
- WebSphere Integration Designer版本7或更高版本
- DB2版本8或更高版本
情境
该场景描述了一个业务流程,该业务流程由具有客户ID的外部请求触发,然后根据ID从数据库中获取客户数据,将其转换为XML,然后将其放入消息队列中以进行进一步的操作。 我们将创建一个新的WebSphere Transformation Extender映射,该映射使用第1部分中的映射来进行数据库数据检索和数据转换。 然后,该映射将集成到WebSphere Enterprise Service Bus中介流中,并连接到WebSphere MQ队列。 下图演示了该流程。
图1.业务流程概述
准备环境
准备消息队列
在IBM WebSphere MQ中创建一个名为QM_WESB的队列管理器。 您可以使用MQ Explorer或crtmqm
命令。 但是请记住,用户必须在mqm
组中。
在QM_WESB下定义两个本地队列,分别称为WTX_RECEIVE_0(输入队列)和WTX_SEND_0(输出队列)。
准备WebSphere Transformation Extender项目
如果完成了第1部分中的所有步骤来创建DB2XML映射(包括高级映射部分),那么您可以继续使用现有的工作空间。 您可能想要关闭WebSphere Transformation Extender Design Studio,并使用相同的工作空间打开WebSphere Integration Designer(在我们的测试案例中,该工作空间在c:\ temp \ mywtx \ workspace中)。 然后,您可以从“ 修改数据库查询文件”部分开始。
或者,您可以从第1部分下载WTX_XML_Example.zip文件,并将其解压缩到C:\ temp \ mywtx以准备数据库环境。 接下来,下载项目交换文件mywtx_pi.zip(请参阅下载 ),并按照以下步骤将其导入WebSphere Integration Designer:
- 从Windows 开始->程序-> IBM DB2打开DB2命令窗口。
- 在“ DB2命令窗口”中,切换到c:\ temp \ mywtx目录。
- 使用
db2 create db testdb
命令创建一个名为TESTDB的数据库。等待一会儿,您应该看到数据库创建成功。
- 导入
create table
,并使用db2 -tvf db_creation.sql
SQL命令插入数据。确保所有SQL命令均已成功执行。
您现在应该具有三个表:CUSTOMER,ADDRESS和PHONE。 您可以通过从每个表中进行选择来验证是否正确插入了数据。 如果在客户表中插入了四个记录,在地址表中插入了六个记录,在电话表中插入了八个记录,则数据库环境已准备就绪。
导入项目
- 打开WebSphere Integration Designer,在“工作区启动器”弹出窗口中,为工作区键入
c:\temp\mywtx\workspace
workspace。 - 选择文件->导入 。 在Import对话框中,选择Other->“ Project Interchange” ,然后单击next, 如图2所示。
图2.导入Project Interchange包
- 选择mywtx_pi.zip ,保留“项目位置根目录”字段的缺省位置,单击DB2XML包 ,然后单击完成 。 DB2XML项目将被导入Integration Designer。
修改数据库查询文件
我们需要通过在每个表的前面添加模式名称来修改db2.mdq中存储SQL语句。 默认情况下,架构名称是创建表的用户名称。 因此,当创建表的用户想要访问表时,该用户可以忽略SQL语句中的架构名称。 这就是我们在本系列的第1部分中使用它的方式。
但是,当WebSphere Transformation Extender映射在WebSphere Entreprise Service Bus环境下运行时,用户将与执行WebSphere Transformation Extender命令服务器的用户不同,因此我们需要通过将模式名称指定为来修改SQL语句。识别表。
修改SQL语句:
- 在Integration Designer中继续,在Windows- > Open Perspective-> Other-> Transformation Extender Development下,从文件菜单打开WebSphere Transformation Extender透视图。 在左侧的Extender Navigator视图上的DB2XML项目->数据库文件目录下,右键单击db2.mdq并选择Open With- > Text Editor 。
- 搜索以下行,这是我们在第1部分中编写SQL查询。
<SQLStmt>SELECT * FROM CUSTOMER</SQLStmt> <SQLStmt>SELECT * FROM CUSTOMER WHERE ID='#CID#'</SQLStmt> <SQLStmt>SELECT TYPE, NUMBER FROM PHONE WHERE CID ='#CID#'</SQLStmt> <SQLStmt>SELECT TYPE, STREET, CITY, COUNTRY FROM ADDRESS WHERE CID ='#CID#'</SQLStmt>
- 在表名前面添加模式名。 架构名称将是您用于创建表的用户名。 在我们的示例中,架构名称为“ ROOT”。 修改后的查询如下所示:
<SQLStmt>SELECT * FROM ROOT.CUSTOMER</SQLStmt> <SQLStmt>SELECT * FROM ROOT.CUSTOMER WHERE ID='#CID#'</SQLStmt> <SQLStmt>SELECT TYPE, NUMBER FROM ROOT.PHONE WHERE CID ='#CID#'</SQLStmt> <SQLStmt>SELECT TYPE, STREET, CITY, COUNTRY FROM ROOT.ADDRESS WHERE CID = '#CID#'</SQLStmt>
- 保存并关闭文本编辑器。
- 返回到左侧的Extender Navigator视图,在DB2XML项目->映射文件目录下,打开DB2XMLMap.mms 。 在左侧底部的Outline视图中,右键单击DB2XML映射,然后选择Build来构建映射。 构建地图后,您应该不会看到任何错误。
- 遵循第1部分中的“运行WebSphere Transformation Extender映射”部分下的步骤,以验证DB2XML映射配置。 步骤和输出应完全相同。
配置WebSphere Transformation Extender映射
首先,我们需要制作一个WebSphere Transformation Extender映射,该映射可以从文件输入卡中获取客户ID,并为文件输出卡生成XML。 我们决定将文件用作输入和输出源,因为它将更易于验证地图。 稍后将WebSphere Transformation Extender集成到WebSphere Enterprise Service Bus中介流中时,WebSphere MQ将覆盖地图的输入和输出卡。
- 在打开DB2XMLMap.mms的Integration Designer中继续。 在大纲视图中,右键单击DB2XMLMap-> New , 如图3所示。 在弹出窗口中,输入ID2XML作为新地图名称。
图3.配置一个新的可执行文件映射
- 在Outline视图上的ID2XML映射下,右键单击Input Cards- > New 。 为输入卡输入以下信息:
CardName => IdIn TypeTree => OutputString.mtt Type => Output Root Source: => File FilPath => in.txt
如图4所示。 将其余字段保留为默认信息。图4.为ID2XML映射配置的输入卡
- 右键单击输出卡,然后选择新建 。 输入输出卡的以下信息:
CardName: XmlOut TypeTree: OutputString.mtt Type: Output Root Source: File FilePath: customer.txt
将默认值保留在其他字段中, 如图5所示。 请注意,我们不将customer.xsd用作TypeTree,而是将简单字符串类型用于输出。 您将了解下一步的原因图5.为ID2XML映射配置的输出卡
- 创建输入和输出卡后,您可以在右侧的“地图”视图中看到这些卡。 单击输出卡,然后在XmlOut项目中输入以下信息:
图6说明了如何。=RUN("DB2XML.mmc", "-ID1 '-VAR CID="+IdIn+"' -ID2 ' -VAR CID="+IdIn+"' -ID3 '-VAR CID="+IdIn+"' -OE1")
图6. ID2XML映射中的映射
该规则调用RUN函数来运行我们在第一篇文章中构建的DB2XML映射,并将输入卡中的“ IdIn”设置为参数CID。 ECHO选项“ -OE1”会将由DB2XML映射生成的输出内容作为文本传递回ID2XML映射输出卡中的XmlOut字段。 这就是为什么我们在步骤16中指定一个简单字符串作为输出类型的原因。
- 返回到Outline视图,右键单击ID2MXL映射并选择Map Setting , 如图7所示。
图7.配置地图设置
- 在地图设置中,将MapAudit和MapTrace设置为OFF(可以根据需要将其打开以进行故障排除),然后将WorkSpace设置为Memory(以提高性能), 如图8所示。
图8. WebSphere Transformation Externder映射设置
- 保存地图。
- 右键单击ID2XML,然后选择“ 构建”以构建地图。 构建地图后,您应该不会看到任何错误。
- 在文件菜单中,选择文件->新建->其他 。 在“新建”向导中,选择“常规”文件夹下的“ 无标题文本文件 ”,然后单击“ 完成” 。 在文本内容中输入“ 000001”,然后将文件另存为“ in.txt”。
- 右键单击ID2XML,然后选择“运行”以运行地图。 您应该看到Command Server窗口,显示“映射成功完成”, 如图9所示。
图9.图9.成功运行地图
- 您应该能够从Extender Navigator视图的DB2XML-> Misc文件夹下找到输出文件customer.txt。 如果不是,请尝试刷新它。 如果您已经成功创建了WebSphere Transformation Extender映射,那么customer.txt的内容将如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <customer userid="000001"> <first_name>Bob</first_name> <middle_name>JK</middle_name> <last_name>Smith</last_name> <id>AAAAAAAAAA</id> <gender>M</gender> <birthdate>1977-01-01</birthdate> <occupation>Engineer</occupation> <phone_number type="office">111-1111</phone_number> <phone_number type="mobile">0911-123456</phone_number> <address type="home"> <street>1 Park Street</street> <city>New York</city> <country>U.S.</country> </address> <address type="office"> <street>1 Lakewood Street</street> <city>New York</city> <country>U.S.</country> </address> </customer>
配置WebSphere Enterprise Service Bus中介流
现在,我们已经完成了WebSphere Transformation Extender映射,让我们将其集成到WebSphere Enterprise Service Bus中介流中。
创建新的调解流程
- 继续在Integration Designer中,通过File-> New-> Others-> Mediation Module创建一个新的中介模块 。 输入MyWTXFlow作为模块名称。 选择WebSphere ESB Server v7.5作为目标运行时环境,然后单击Finish , 如图10所示 。
图10.创建一个新的中介模块
生成预定义的数据类型
- 通过创建中介模块,您现在可以从业务集成的角度进行工作。 在左侧的“业务集成”视图中,双击“ 依赖关系”以打开“依赖关系编辑器”。 (如果您没有在左侧看到Dependencies项目,请右键单击MyWTXFlow并刷新它。)在MyWTXFlow Dependencies编辑器中,展开Predefined Resources部分,从列表中选择Native Body DataHandler项目的Native Body模式,然后保存。
图11.选择预定义资源
- 保存Dependencies Editor之后,在Business Integration视图中将生成几种数据类型,请参见图12 。
图12.预定义的数据类型
创建界面
- 从File-> New-> Interface创建一个简单的界面。 您可以将“文件夹”字段保留为空,然后输入
OneWayBlob
作为接口名称。 点击完成 。 - 在OneWayBlob界面编辑器上,单击“ 添加单向”操作图标以添加单向操作, 如图13所示。
图13.配置界面
- 输入
doMQ
作为操作名称。 保留input1作为默认输入名称,但选择TextBody作为输入类型, 如图14所示 。图14.在界面中添加一个操作
- 保存并关闭界面编辑器。
配置中介流
- 接下来,我们需要创建WebSphere MQ入站节点。 在左侧的“业务集成”视图中,双击“ 装配图”以打开“装配图编辑器”。 在Assembly Diagram编辑器的左面板上,选择Inbound Exports类别下的MQ节点 (请参见图15 )。
图15.从面板中选择MQ Inbound节点
将节点图标拖放到右侧的画布上。 将MQ节点拖放到画布上时,将弹出“新建MQ导出服务”创建向导,以指导您完成配置。 选择OneWayBlob作为界面(请参见图16 ),然后单击Next 。图16.选择OneWayBlob界面
- 根据您的MQ配置输入MQ输入队列详细信息。 在这个例子中,输入
QM_WESB
如队列管理器,WTX_RECEIVE_0
作为接收队列,然后选择结合作为传输。 参见图17 。图17.配置MQ导出绑定
- 对于图17所示的“功能选择器”,单击“ 选择”按钮以调出另一个向导, 如图18所示。 在“使用列表中的现有功能选择器”类别下选择一个操作功能选择器。 单击完成以完成向导。
图18.功能选择器配置。
然后在“创建新的MQ导出服务”向导上单击“ 完成 ”以完成“ MQ Export”节点的配置。 在画布中将节点重命名为MQIn
。
创建MQ出站导入
- 继续在Assembly Diagram Editor的左侧Palette上,选择Outbound Imports类别下的MQ节点, 如图19所示。 将图标拖放到节点上的右侧画布上。
图19.从面板中选择MQ出站节点
将MQ节点拖放到画布上时,将弹出“新建MQ导入服务”创建向导,以帮助您完成配置。 选择OneWayBlob作为界面,然后单击Next 。 - 接下来,根据您的MQ配置输入MQ输出队列详细信息。 在这个例子中,输入
QM_WESB
如队列管理器,WTX_SEND_0
作为接收队列,和选择结合作为传输,如图图20 。 然后单击完成以完成MQ导入节点配置。 在画布中将节点重命名为MQOut
。图20.配置MQ导入绑定
连线节点
- 在画布上,连接MQIn,MyMQFlow和MQOut节点之间的链接。 参见图21 。
图21.节点之间的连接
- 接下来生成中介流的实现。 右键单击画布上的MyWTXFlow节点,然后选择Generate Implementation , 如图22所示。
图22.选择Generate Implementation
- 在“生成实现”向导上,保留“ MyWTXFlow”文件夹的默认选择,然后单击“ 确定”以生成实现。
- 这将带您到中介流编辑器。 单击doMQ并选择Operation Map , 如图23所示。
图23.中介流编辑器
- 在“选择参考操作”向导中,保留默认选择, 如图24所示,单击“ 确定”完成选择。
图24.选择引用操作
您应该看到在请求中介流编辑器中创建了请求流, 如图25所示。图25.请求流
- 删除“输入”和“标注”节点之间的连接。 从左侧的面板中,将WTX节点拖放到画布上,该画布现在标识为WTX1。 参见图26 。
图26.添加WTX节点
- 右键单击WTX1节点,然后选择Add Output Terminal , 如图27所示。
图27.添加输出端子
- 在“创建终端”弹出窗口中,保留默认值,然后单击“ 确定” 。
- 将OneWayBlob连接到WTX1节点,并将WTX1节点连接到OneWayBlobPartner。 请注意,将WTX1节点连接到OneWayBlobPartner时,需要选择从outputCard1端子进行连接, 如图28中红色突出显示。
图28.在Request流中连接节点
- 在“属性”选项卡下,单击WTX节点图标,选择“ 详细信息”以配置WTX Map Source。 选择使用项目中的地图 。 在地图来源字段中,单击浏览以选择适当的地图。 参见图29 。
图29. WTX Map属性配置
在弹出对话框中,选择DB2XMLMap下的ID2XML map,然后单击OK 。 - 单击“ 地图源”选项卡旁边的“ 地图卡”选项卡,单击“输入卡”列表旁边的“ 添加”以添加输入卡。 在弹出对话框中,输入
1
作为输入卡号,然后单击编辑 ,选择输入数据路径 。 在“选择数据路径”对话框上,选择数据类型-> ServiceMessageObject-> body:doMQRequestMsg-> doMQ-> input1:TextBody-> value:String , 如图30所示。 单击确定以完成配置。图30.选择InputCard的数据路径
- 按照相同的步骤添加输出卡。 输入
1
作为输出卡号,为“输出数据路径”字段选择数据类型-> ServiceMessageObject-> body:doMQRequestMsg-> doMQ-> input1:TextBody-> value:String 。 单击确定以完成配置。 您应该看到已添加了输入和输出卡配置, 如图31所示。图31.映射卡配置
- 保存流。
生成耳朵文件以进行部署
- 现在,您可以生成用于部署的ear文件。 在Project Navigation视图上,右键单击MyMQFlow并选择Export , 如图32所示。
图32.导出以进行部署
- 在Export向导上,选择Java™EE类别下的EAR文件 ,然后单击Next ,如图33所示。
图33.选择EAR文件
- 接下来,提供要导出耳文件的位置。 在此示例中,我们将在C:\ temp下生成ear文件。 选择WebSphere ESB Server v7.5作为目标运行时, 如图34所示 。 然后单击完成以生成用于部署的ear文件。
图34. EAR导出配置
部署方式
现在,我们将简要向您展示如何将Ear文件部署到WebSphere Enterprise Service Bus服务器上。 我们将假定它与Integration Designer处于同一台机器上,以便按照前面的步骤中所述对DB2表和WebSphere MQ队列管理器进行正确配置。 确保DB2和QM_WESB队列管理器都已启动。
此外,我们假设您知道如何在WebSphere ESB服务器上创建新的概要文件,或者您可以使用任何现有概要文件。 您可以通过概要文件管理工具(如果系统是32位)或manageprofiles.bat命令(对于32位和64位系统)在WebSphere ESB服务器上创建一个名为Test01的新概要文件。 我们提供了用作示例的命令。 切记在下面的示例命令中替换正确的数据库用户ID和密码。 在WebSphere ESB信息中心中找到更多详细信息。
"C:\Program Files\IBM\WebSphere\AppServer\bin\manageprofiles.bat" -create -templatePath
"C:\Program Files\IBM\WebSphere\AppServer\profileTemplates\default.esbserver"
-profileName TEST01 -dbType DB2_UNIVERSAL -dbUserId DB_USER_ID -dbPassword DB_PASSWORD
如果您已经在该WebSphere ESB服务器上创建了至少一个概要文件,并且想要创建一个新的新概要文件进行测试,则可以将上面的命令与一个附加参数dbDelayConfig true
以避免出现“ dbType:CWMCF0021E:数据库” CMNDB已经存在。” 错误。
- 从Windows 开始->程序-> IBM WebSphere->企业服务总线->概要文件-> TEST01->启动服务器,启动服务器TEST01 。
- 输入TEST01的管理控制台,Windows 开始->程序-> IBM WebSphere->企业服务总线->配置文件-> TEST01->管理控制台 。 在左侧,单击应用程序->应用程序类型-> WebSphere企业应用程序 。 在右窗格中,单击安装在顶部安装EAR文件。 按照向导选择我们刚刚导出的c:\ temp下的MyWTXFlowApp.ear文件。 在第一部分中将所有内容保留为默认值。 在第二部分中,请记住选择MyWTXFlowWeb 。 在最后一部分中,将所有内容保留为默认值,然后单击“ 完成”以完成耳式安装。 如果安装成功,请单击“ 保存” 。 您应该能够在企业应用程序列表上看到MyWTXFlowApp应用程序。 部署完成。 从列表中单击MyWTXFlowApp ,然后单击开始 。 启动过程成功后,您将在应用程序旁边看到绿色箭头, 如图35所示。
注意:如果遇到问题并且无法启动应用程序服务器,则可以从{ WTX_Installed_Dir } \ profiles \ TEST01 \ logs \ server1目录下的SystemOut.log和SystemErr.log检查日志。
图35.成功部署了MyWTXFlowApp的耳朵
验证
现在,让我们从MQ Explorer发出测试消息,以验证流程是否已正确启动。
- 启动MQ资源管理器。 通过QM_WESB->队列打开队列列表。 右键单击WTX_RECEIVE_0 ,然后从列表中选择“ 放置测试消息…”项。
- 在“放置消息”弹出对话框中,在“消息数据”字段中输入
000001
,然后单击“ 放置消息”以放置该消息, 如图36所示。 关闭对话框。图36.放入测试消息
- 如果流程成功,那么您应该能够从MQ Explorer中看到WTX_SEND_0队列的“当前队列深度”变为1。
- 通过右键单击WTX_SEND_0队列并选择“ 浏览消息…”项,验证输出消息的内容。 在“消息浏览器”弹出窗口中,双击列表中的唯一一条消息。 您应该能够从Message properties弹出窗口中获取消息内容, 如图37所示。 您可以从数据->消息数据字段中复制内容,然后粘贴到文本编辑器中。
图37.查看消息内容
- 验证消息内容与“ 配置WebSphere Transformation Extender映射”部分下的步骤24中列出的customer.txt完全相同。 现在,您应该学习有关如何通过与IBM SOA业务流程集成来增强WebSphere Transformation Extender转换功能的知识。
翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/ind-wsesb-wste-part2/index.html
websphere