在WMB中整合 WTE 轉換行業標準訊息
尹 瑞 (yinrui@cn.ibm.com), IBM SOA design Center,高階軟體工程師, IBM
平 原 (pingyuan@cn.ibm.com), 架構師, IBM
閆 哲 (yanzhe@cn.ibm.com), 高階軟體工程師, IBM
景知識
IBM WebSphere Message Broker( 以下簡稱 WMB) 作為高階企業服務匯流排的實現平臺,在 IBM SOA 架構應用中扮演著非常重要的角色。在企業應用整合中,WMB 支援不同的資料格式之間的轉化和處理,並可以將訊息根據業務邏輯路由到不同的目標應用系統中,為基於標準和非標準的應用程式及服務提供了連通性和通用的資料轉換能力。最新的 WMB 提供了廣泛的整合選項和功能,例如內建檔案處理、SOAP 處理、安全管理器等,極大地滿足客戶的需求併為企業帶來顯著的好處。
WebSphere Transformation Extender 介紹
IBM WebSphere Transformation Extender( 以下簡稱 WTX) 提供了通用的資料轉換和驗證的引擎,它可以將源系統的資料以實時或者批處理的方式轉換、路由到目標系統。它支援多種資料格式的定義、驗證和轉換,特別是對於複雜的資料型別提供了強大的支援。WTX 的 Design Studio 是基於 Eclipse 的開發工具,它提供了非常直觀的圖形化介面使得開發人員非常容易地定義資料型別、設計和測試轉換規則。它的主要功能包括:
- 資料的定義:WTX 支援的資料型別包括 COBOL copybook, database schema, Java, plain text, WSDL, XML DTD, XML schema 等,在 WTX 中,統一表示成型別樹 (Type Tree)。WTX 提供了匯入器 (Type Tree importers) 來匯入後設資料型別如 XML Schema 以生成型別樹,開發人員也可以使用型別編輯器 (Type Designer) 自己建立型別樹。
- 設計轉換規則:WTX 的轉換規則是以對映的形式定義的。在 WTX Design Studio 中,定義好源型別樹和目標型別樹之後,就可以使用對映設計器設計源資料格式到目標資料格式的對映了。每一個對映都有一個或者多個輸入卡 (Input Card) 和輸出卡 (Output Card),分別表示輸入的資料來源和輸出的資料來源。選定輸入卡和輸出卡之後,使用拖拽的方式定義欄位之間的對映規則,如果規則較複雜,WTX 提供了內建的函式進行選擇。設計完對映之後,可以不用部署,直接在 Design Studio 測試對映是否正確。
- 轉換引擎:轉換規則定義完之後,就可以將規則部署到執行時環境了。執行時環境有兩種:Command Server 和 Launcher,其中 Command Server 支援命令驅動和指令碼呼叫,而 Launcher 提供了實時的事件驅動的執行環境。同時,WTX 引擎也支援和多個 IBM 產品進行無縫的整合,例如 WebSphere DataPower, WebSphere Process Sever 和 WebSphere Message Broker,在這些產品的執行時環境中可以很容易地執行 WTX 對映。
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 新增加一種訊息域 (Message Domain): WTX 型別樹。WMB 的訊息流可以將輸入的訊息轉換為 WTX 型別樹,並允許在訊息流中使用 WTX 型別樹的方式操縱訊息,例如在 ESQL 中使用型別樹的語法處理訊息內容。
- Map Plugin 節點:WMB 新增加了一個處理節點 WTX Map 來整合 WTX 轉換引擎。在訊息流的開發中,將 WTX Map 節點拖入編輯器並進行引數設定,指定要呼叫的 WTX 對映規則、輸入卡、輸出卡等。執行時,當訊息流執行到 WTX Map 節點時候,會將輸入訊息作為輸入卡的輸入去呼叫轉換引擎以執行對映規則,執行完之後,將輸出卡的輸出作為節點的輸出傳給下一個 WMB 節點繼續處理。
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 THE LINE^^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 v6.103 或更高版本
- WebSphere Transformation Extender Design Studio v8.203 或更高版本
- WebSphere Transformation Extender Pack for HL7 v4.3 或更高版本
- WebSphere Transformation Extender for Integration Servers v8.203 或更高版本
首先安裝 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 的節點了。
|
開發過程簡要如下
- 首先定義 ADT A04 的 XML Schema 檔案 RegisterPatient.xsd,可以使用 XML Spy 工具簡化定義過程。
- 在 WTX Design Studio 中匯入 HL7 V2.3 的型別樹和 ADT A04 的 XML Schema。
- 在 WTX Design Studio 中定義兩種型別的對映規則並測試。
- 對映測試無誤後,在 WMB 上開發訊息流,使用 WTX Map 節點整合開發好的對映檔案。
- 最後,將訊息流部署測試。
下面是具體的開發和配置過程。
- 在 Design studio 中新建一個 Extender 專案 HL7WTXSample
- 使用 XMLSpy 工具定義 ADT A04 的 XML Schema 檔案 RegisterPatient.xsd。
- 在 HL7WTXSample 專案中匯入已經定義好的 XML Schema 檔案 RegisterPatient.xsd 以生成相應的型別樹,如圖 1 所示。當然程式人員也可以不採用匯入 Schema 的方式而直接在 Design Studio 中建立相應的型別樹。為了簡單我們採用匯入 Schema 的方式生成型別樹。
圖 1. RegisterPatient 型別樹
- 安裝了 HL7 Pack 之後,在 WTX 安裝目錄下面的 packs\healthcare_v4.3\hl7\trees 資料夾中可以找到 HLV2.3 的型別樹檔案 hl7_v2_3.mtt,並將其拷貝到 HL7WTXSample 專案下。
- 新建對映源 HL7V2Map 以及對映 RegisterPatient,在該對映增加一個輸入卡,卡名是 RegisterPatientInput,型別是 HL7 V2 中的 ADT A04 訊息,具體引數如圖 2 所示。
圖 2. RegisterPatient 輸入卡
- 與步驟 4 類似,在對映 RegisterPatient 下新建一個輸出卡,卡名是 RegisterPatientOutput,型別樹為步驟 2 中的 RegisterPatient.mtt,型別為 RegisterPatient 元素。
- 在對映設計器中,將輸入卡做為源輸入,輸出卡做為目標輸出,使用拖拽的方式建立欄位之間的對映關係。如圖 3 所示:
圖 3. 編輯對映關係
- 在輸入卡和輸出卡中設定輸入檔案和輸出檔案的位置,在輸入檔案中輸入 HLV2 的 A04 測試訊息,編譯對映並執行對映,然後檢視輸出檔案的內容。如果不能正確地得到結果,檢視跟蹤日誌可以看到詳細的執行紀錄,找到錯誤原因,改正後繼續執行直至無誤。
在 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 佇列。
圖 6. 使用 RFHUtil 讀入 HL7 V2 輸入訊息
訊息流執行完成後,會將轉換好的 XML 訊息放入到 OUT 佇列,使用 RFHUtil 將該訊息讀出,如圖 7 所示。
圖 7. 轉換後的 RegisterPatient XML 訊息
對比轉換後的 XML 格式訊息和轉換前的 HL7 V2 格式訊息,確認轉換無誤。
|
本文介紹了 WMB 和 WTX 以及它們的整合方式,使用 WTX Pack 來轉換工業標準訊息提供一種整合企業現有應用的解決方案,並以具體例項詳細介紹了開發過程。本文僅僅介紹了將工業標準訊息轉換為 XML 訊息的過程,有興趣讀者可以試一下將標準的 XML 訊息轉換為工業標準訊息並增加其他更復雜的邏輯。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-610870/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 訊息中介軟體與JMS標準
- 用於日期轉換的訊息轉換器
- RocketMQ 訊息整合:多型別業務訊息-普通訊息MQ多型型別
- RocketMQ 訊息整合:多型別業務訊息——定時訊息MQ多型型別
- (原創) odoo17中在訊息主題(mail.thread)中傳送訊息時,是否通知訊息作者進行控制OdooAIthread
- 互動視訊制定行業標準:它和視訊遊戲能“各自精彩”嗎?行業遊戲
- 深度解析VC中的訊息(中) (轉)
- utc時間轉換成標準時間
- ActiveMQ 中的訊息遊標(Message cursors)MQ
- VCL中訊息處理初探 (轉)
- springmvc 自定義訊息轉換器完整例子SpringMVC
- 介面設計的行業標準總結-GUI設計的相關行業標準(上)薦行業GUI
- 介面設計的行業標準總結-GUI設計的相關行業標準(下)薦行業GUI
- CUJ:標準庫:標準庫中的搜尋演算法 (轉)演算法
- 貫標大會低調結束 ERP行業標準遭質疑(轉)行業
- 自定義訊息獲取訊息(轉)
- 用程式碼理解 ObjC 中的傳送訊息和訊息轉發OBJ
- 用程式碼理解ObjC中的傳送訊息和訊息轉發OBJ
- Objective-C中的訊息轉發Object
- 深度解析VC中的訊息(上) (轉)
- mfc中的訊息的應用 (轉)
- motorola手機中在主類中響應其它類中的按鈕訊息 (轉)
- RabbitMQ 入門(三)SpringAMQP訊息轉換器MQSpringGAM
- ERP行業標準啟用 資訊化監理國標年內出臺(轉)行業
- RocketMQ與MYSQL事務訊息整合MQMySql
- 行業標準正式凍結,車聯網行業爆點可期行業
- 在DELPHI中圖片轉換
- OC訊息機制,訊息轉發機制
- 在Linux命令列中進行大小寫字元轉換Linux命令列字元
- 在JavaScript中也玩變數型別強行轉換JavaScript變數型別
- iOS 訊息轉發iOS
- 轉---十條標準評估創業專案創業
- UNIX作業系統的版本與標準(轉)作業系統
- Laravel5.6 整合 RabbitMQ 訊息佇列LaravelMQ佇列
- 模組轉測標準
- SpringMVC原始碼剖析(五)-訊息轉換器HttpMessageConverterSpringMVC原始碼HTTP
- 信產部:WCDMA和CDMA2000成我國通訊行業標準行業
- 直播原始碼網站,訊息圖示在收到訊息時展示訊息條數原始碼網站