本文共 6192 字,大约阅读时间需要 20 分钟。
(), IBM SOA design Center,高级软件工程师, IBM
(), 架构师, IBM (), 高级软件工程师, IBM景知识
IBM WebSphere Message Broker( 以下简称 WMB) 作为高级企业服务总线的实现平台,在 IBM SOA 架构应用中扮演着非常重要的角色。在企业应用整合中,WMB 支持不同的数据格式之间的转化和处理,并可以将消息根据业务逻辑路由到不同的目标应用系统中,为基于标准和非标准的应用程序及服务提供了连通性和通用的数据转换能力。最新的 WMB 提供了广泛的集成选项和功能,例如内置文件处理、SOAP 处理、安全管理器等,极大地满足客户的需求并为企业带来显著的好处。
IBM WebSphere Transformation Extender( 以下简称 WTX) 提供了通用的数据转换和验证的引擎,它可以将源系统的数据以实时或者批处理的方式转换、路由到目标系统。它支持多种数据格式的定义、验证和转换,特别是对于复杂的数据类型提供了强大的支持。WTX 的 Design Studio 是基于 Eclipse 的开发工具,它提供了非常直观的图形化界面使得开发人员非常容易地定义数据类型、设计和测试转换规则。它的主要功能包括:
WTX 除了具有通用的数据格式的转换的能力外,一个比较重要的特性就是 WTX 还提供了很多加速包 (Accelerator Packs),这些包含了与工业标准或者业界常用应用系统相关的元数据定义、数据验证、用法、转换规则等。
工业标准 Packs 包括与企业应用集成相关标准的支持,如 EDIFACT、X12、EANCOM 、ODETTE、TRADACOMS 等;医疗卫生行业标准的支持,例如 HIPAA、HL7、NCPDP 等,与金融行业相关标准的支持,例如 SEPA、SWIFT、ACORD、NACHA 等。
应用 Packs 包括了对业界广泛使用的应用数据的交互支持。例如 SAP X1, SAP R/3, Siebel, PeopleSoft 等。
充分利用 WTX Packs,可以大大降低与现有应用系统的集成难度,增强可扩展能力。
|
WMB 中的消息流可以从 input 节点中接收消息,经过一系列的处理将结果放入 output 节点,WMB 内置了很多处理节点,例如消息的构造、验证、转换、路由等,对消息的处理能力非常全面。但在处理数据转换方面,与 WMB 相比,WTX 更具有优势,因为它是专门的数据转换处理引擎,同时提供了强大的开发工具,特别是对于复杂数据类型的处理、大容量或者批处理消息的处理、自定义数据类型的处理等更具有优势。目前 WTX 支持对 WMB 的集成,从而可以结合两者的优点,使用 WTX 处理数据转换,使用 WMB 处理消息连通和路由能力,在某些应用场合下面能够提供更大的价值。
在安装完 WebSphere Transformation Extender for Integration Servers 产品之后,WMB 对于集成 WTX 提供了两方面的支持:
WMB 非常适用于异构系统的集成,目前很多企业的系统使用了工业标准,例如 EDI, HIPAA, HL7, SWIFT,在 WMB 中对集成这些消息格式处理比较困难,而通过使用 WTX 工业标准 Pack 可以很容易地处理这些工业标准消息,将其转换为标准的 XML 或者其他格式消息;反之,也可以将 XML 或者其他格式消息转换为工业标准消息。
|
在医疗卫生行业内,HL7 卫生信息交换标准 (Health Level 7) 是标准化的医疗领域不同应用之间进行电子传输的协议。它允许各个医疗机构在异构系统之间,进行数据的交互。HL7 在世界范围内得到了广泛的应用和支持,很多医院的 IT 系统都是基于 HL7 消息进行交互的。目前最新版本是 V3,在 V3 中使用 XML Schema 定义了消息格式,对消息的创建、解析和转换并不是很复杂,但以前的 V2.x 版本推出较早并已经得到了广泛应用,很多医院现有的 IT 系统是基于 V2.x 消息格式的。这些消息格式由于不是基于 XML 标准的,和现有的基于标准协议例如 XML,Web Service 等实现的 IT 系统集成比较困难。
在 HL7 V2.x 中,对病人实行管理 (Admit, Discharge & Transfer) 的 A04 消息定义了病人住院注册的消息格式,一个完整的消息包括多个消息段,例如消息头 (MSH),事件类型 (EVN),病人标志 (PID),病人参观 (PV1) 等,消息段之间使用换行符分开。下面是 HL7 V2.3 消息的一个示例:
MSH|^~\&|STAR|A|CAI|A|200611220045||ADT^A04|49343973|P|2.3|49343973||AL||||EN^^^^^EVN|A04|200611220045||||PID|123|33333333|100001^^^&1.3.6.1.4.1.21367.2005.3.7&ISO|100001^BBBBBBBB|DUCK^RANDI^J^|MOUSE|19840101|F||1|END OF THELINE^^UNION^MO^63084^^C^MO071|MO071||(111)222-3333|ENGLISH^E^|S|CTH^^|3333333333^^^A|444-55-6666|PV1||E||||||||||||||||||||||||||||||||||||||||||||||||ACC||| |
在上面消息中,各消息段以回车符隔开。第一行“MSH”表示消息头,“|”指定该消息中数据字段之间的分隔符,“^~\&”指定字段内的 4 种编码符号,“^”即元素间分隔符。接下来以“|”隔开的字段依次表示发送端应用(“STAR”)、发送端设备(“A”)、接收端应用(“CAI”)、接收端设备(“A”)、消息时间(“200611220045”)、消息类型(“ADT^A04”)等。而在该消息类型中,“ADT”表示消息 ID,“A04”表示事件类型。后面的消息段不再具体介绍,具体可参考 HL7 V2 的消息定义。
该消息可读性不好,处理起来也不太容易,一种解决方法是将基于 HL7 V2.x 的消息转换为 XML 消息然后再做进一步的处理,其中消息的转换是使用 WTX 进行处理的,而消息的接收、路由以及其他处理是在 WMB 中进行处理的。在后面的章节中将会详细介绍所用到的软件以及具体的开发步骤。
|
完成该示例场景所需要的软件以及版本如下所示:
首先安装 WebSphere Message Broker 包括 runtime 和 toolkit;再安装 WebSphere Transformation Extender Design Studio 做为映射开发工具;然后,安装 WTX Pack for HL7 以支持 HL7 消息;最后安装 WTX for Integration Servers 以将 WTX 开发和运行环境集成到 WMB 中。安装完成后,打开 WMB toolkit 在消息流编辑器的选项板上就可以看到 WTX Map 的节点了。
|
开发过程简要如下
下面是具体的开发和配置过程。
在 WTX 的映射开发完毕后,在 WMB 中建立消息流项目 MBWTXFlowSample,并新建一个消息流,如图 4。
MQInput 中从队列 IN 中读取 HLV2 的消息,WTX Map 将消息转换为 XML 消息并放入队列 OUT,如果出错则将消息放入 FAIL 队列。
消息流的设计非常简单,打开 WTX Map 节点的属性页,设置映射如图 5 所示,在这里我们选择使用项目中的映射。并指定映射文件 HLV2Map.mms。在输入 Tab 页中,设置要连接的卡号是 1,因为只有一个输入卡,运行时候会根据输入卡号调用映射规则。
开发完毕后,将开发好的消息流打成 BAR 包,打包时,WMB 自动会将 WTX 的映射文件打成 MAR 包作为 BAR 包的一部分,最后将 BAR 包部署到 WMB 执行组中。
使用 RFHUtil 工具,从文件中读入 HL7 V2 RegisterPatient 的消息,如图 6 所示,然后将消息放入到 IN 队列。
消息流执行完成后,会将转换好的 XML 消息放入到 OUT 队列,使用 RFHUtil 将该消息读出,如图 7 所示。
对比转换后的 XML 格式消息和转换前的 HL7 V2 格式消息,确认转换无误。
|
本文介绍了 WMB 和 WTX 以及它们的集成方式,使用 WTX Pack 来转换工业标准消息提供一种集成企业现有应用的解决方案,并以具体实例详细介绍了开发过程。本文仅仅介绍了将工业标准消息转换为 XML 消息的过程,有兴趣读者可以试一下将标准的 XML 消息转换为工业标准消息并增加其他更复杂的逻辑。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14789789/viewspace-610870/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14789789/viewspace-610870/