簡介
Integration Server 的 IBM® WebSphere® Transformation Extender(以下稱為 WebSphere TX)通過在處理節點中嵌入 WebSphere TX 引擎擴展了 WebSphere Message Broker(以下稱為 Message Broker)的轉換消息能力。您可以使用 Message Broker Toolkit 中的 WebSphere TX 插件節點,輕松配置一個調用 WebSphere TX 映射的消息流來執行復雜的數據轉換和驗證任務,這樣您就得到了一個數據轉換和業務連通性的集成解決方案。以下是 WebSphere Message Broker 的 WebSphere Transformation Extender 插件的幾點優勢:
WebSphere TX 引擎向更廣泛的消息格式和協議提供功能強大的轉換和驗證功能。
讓您在廣泛的行業標准(包括金融服務、醫療保健、保險、EDI 等等)中利用 WebSphere TX Industry Pack 提供的預定義數據格式。
給 Message Broker 用戶一個用戶友好的、無需編碼的 WebSphere TX Type Designer 和 Map Designer 接口,使其可以較為容易地配置和可視化復雜數據類型和映射。
將格式轉換復雜性與業務流邏輯分開,從而增強開發團隊工作效率。讓熟悉業務邏輯的成員可以將注意力集中在設計 Message Broker 消息流上,而數據格式專家可將注意力集中在 WebSphere TX 節點的格式映射上。
先決條件
要使用本文中的樣例,您需要將以下產品安裝在您的 Windows 機器上:
WebSphere MQ V7.0.1 或更高版本。
WebSphere Message Broker V7.0 或更高版本。
WebSphere Message Broker Toolkit V7.0 或更高版本。
WebSphere Transformation Extender Design Studio V8.3 或更高版本。
WebSphere Transformation Extender for Integration Servers V8.3 或更高版本。
創建一個 WebSphere TX 映射
本節將向您展示如何創建 WebSphere TX 類型樹和映射,使 WebSphere TX Design Studio 可以將 CSV 輸入數據轉換成 XML 輸出數據:
清單 1. CSV 輸入數據樣例
John Smith,222-2222,25 park st.,Heaven City,Univor State,222
清單 2. XML 輸出數據樣例
<?XML version="1.0"?>
<addressBook>
<name>John Smith</name>
<phone>222-2222</phone>
<address>
<street>25 park st.</street>
<city>Heaven City</city>
<state>Univor State</state>
<zip>222</zip>
</address>
</addressBook>
1. 通過導入函數為輸出數據格式創建一個 XML 類型樹
打開 Message Broker 工具箱,然後選擇一個新目錄作為您的工作空間。工具箱打開之後,從右上角切換至 Transformation Extender Development 透視圖:
圖 1. Transformation Extender Development 透視圖
創建一個 WebSphere TX 項目:
從菜單欄選擇 File => New => Project。
選擇 Transformation Extender => Extender Project => Next。
在項目名稱中輸入 dwSample,然後單擊 Finish。
通過導入 XSD 創建輸出 XML 類型樹:
在 Extender Navigator 中右鍵單擊 Type Trees,然後選擇 Import => XML Schema。
在彈出窗口中浏覽並選擇提供的 xsd 文件 AB.xsd,然後單擊 Next。
保留所有的默認設置(western / Xerces / None),然後單擊 Next。
圖 2. XML Schema Importer 對話框
選擇 dwSample 作為父文件夾,輸入文件夾名 “AddressBook.mtt”,然後單擊 Next。
Importer 開始驗證架構,應該會顯示零個警告或錯誤,並顯示消息 “Type tree created successfully”。單擊 Finish 完成 XML 架構導入。
在彈出的信息提示中,選擇 Yes 打開類型樹。
在菜單欄中,選擇 Tree => Analyze => Structure and logic 來分析類型樹。您將在 Analyze Results 視圖中看到零個警告和錯誤,如果看到警告,忽略它們。
圖 3. AddressBook 類型樹分析結果
保存類型樹。
2. 為 CSV 輸入格式創建另一個類型樹
在 Extender Navigator 視圖中右鍵單擊 Type trees 並選擇 New => Type tree。然後選擇 dwSample 作為父文件夾,輸入文件名 addressCSV,然後單擊 Finish:
圖 4. 從 Extender Navigator 視圖中選擇類型樹
向類型樹添加條目:
在最新創建的 addressCSV 類型樹上,右鍵單擊 Root 並選擇 Add => Yes。
在 Extender 屬性面板中,在 Name 字段輸入 “name”,在 Class 字段選擇 Item,在 Item subclass 字段選擇 Text,如下所示:
圖 5. 姓名項屬性配置
重復以上步驟,增加其余五個條目,電話、街道、城市、國家和郵政編碼。所有這些屬於 Item 類和 Text Item 子類。您的類型樹看起來應該是這樣的:
圖 6. addressCSV 類型樹
向類型樹添加組:在類型樹編輯面板上,右鍵單擊 Root 並選擇 Add => Yes。在 Extender 屬性面板中,輸入以下所示屬性:
在 Name 字段輸入 rec,在 Class 字段中選擇 group。
在 Group subclass 字段之下的 Format 字段中選擇 Explicit。
在 Component Syntax 字段中選擇 Delimited。
在 Group subclass => Format => Component syntax 之下的 Value 字段中輸入 “,”(逗號)。
圖 7. rec 組屬性配置
在 Type 樹編輯面板中雙擊 rec,調出一個空的組件面板:
圖 8. rec 組的空組件面板
將其余條目按下列順序從類型樹拖放到組件面板:姓名、電話、街道、城市、國家、郵政編碼:
圖 9. 將條目拖放到 rec 組的組件面板
保存組件面板。
在菜單欄,選擇 Tree => Analyze => Structure and logic 來分析類型樹,您在 Analyze 結果視圖中應該看到零個警告和錯誤:
圖 10. addressCSV 類型樹分析結果
保存類型樹。
3. 在輸入類型樹和輸出類型樹之間創建一個映射
在 Extender 導航器中右鍵單擊 Map files 並選擇 New => Map source。在彈出對話框中選擇 dwSample 作為父文件夾,輸入 addressMap 作為 File name,然後單擊 Finish。
在 Outline 面板中右鍵單擊 addressMap,然後在 Map 名稱字段選擇 New、input csv2XML 並單擊 OK:
圖 11. 創建一個新映射
右鍵單擊 Input cards 並選擇 New。在 New 輸入卡對話框中,輸入如下所示屬性並單擊 OK:
在 CardName 字段輸入 “csv”。
在 TypeTree 字段選擇 addressCSV.mtt。
在 Type 字段選擇 rec。
在 FilePath 字段輸入 “input.csv”。
圖 12. Input Card 配置
右鍵單擊 Output cards 並選擇 New。在 New 輸出卡對話框,輸入如下所示屬性並單擊 OK:
在 CardName 字段輸入 XML。
在 TypeTree 字段選擇 AddressBook.mtt。
在 Type 字段選擇 Doc。
在 FilePath 字段輸入 output.XML.
圖 13. Output Card 配置
在 Map Editing 面板上,執行以下操作:
將名稱、電話、街道、城市、國家和郵政編碼字段從輸入卡拖放到輸出卡相應的字段。
在輸出卡上選擇 version 字段,輸入 ="1.0",然後按下 Enter (您必須按住 Enter 直止生效)。
在 encoding 字段和 standalone 字段輸入 =NONE(全部大寫)。
現在,您的映射看起來像這樣:
圖 14. 映射規則配置
保存映射。
在菜單欄選擇 Map => Build 來建立映射。
直接將提供的文件 input.csv 放在項目工作空間下面。
在菜單欄選擇 Map => Run 來運行映射。您可以看到成功完成映射的對話框:
圖 15. 成功完成映射
驗證 XML 輸出結果:在菜單欄選擇 Map => VIEw run results。在彈出窗口中,查看 #1 XML:
圖 16. 查看 XML 輸出結果
文件內容應同上述清單 2 中的 XML 內容一樣。
用 WebSphere TX 插件節點創建一個 Message Broker 流
既然您已經創建了 WebSphere TX 類型樹和映射,接下來就要在 Message Broker 消息流中配置和執行 WebSphere TX 映射。您將配置一個流,從 MQ 輸入隊列中取出 CSV 格式消息,用 WebSphere TX 映射來將消息流轉換為 XML,然後放在 MQ 輸出隊列中。
表格 1. MQ 和 Broker 配置概述
MQ 配置 Queue Manager MYMQ Input Queue Q.IN Output Queue Q.OUT Broker 配置 Broker Name MYBROKER1. 創建代理和輸入/輸出 MQ 隊列
本節將向您展示如何使用命令創建 MQ 元素和代理。您也可以使用 Broker VIEw Toolkit 創建代理。
打開 Windows Services 對話框:選擇 Start => Run 並輸入 services.msc。確保 IBM MQSerIEs 服務如開始所示。
圖 17. 啟動 IBM MQSerIEs 服務
打開 Message Broker 命令控制台:選擇 Start => All Programs => WebSphere Message Broker V7。執行以下命令創建一個名為 MYBROKER 的代理。該命令也創建名一個為 MYQM 的隊列管理器。執行命令之前確保用戶名隸屬於 msm 和 mqbrkrs。
清單3. 創建一個代理和相應的隊列管理器的命令樣例
mqsicreatebroker MYBROKER -i <username> -a <passWord> -q MYQM
mqsistart MYBROKER
在同一個 Message Broker 命令控制台,在 MYQM 隊列管理器中使用以下命令創建命名為 Q.IN 和 Q.OUT 的非永久性輸入和輸出隊列。
清單4. 創建 MQ 輸入和輸出隊列的命令樣例
runmqsc MYQM
def ql(Q.IN) MAXDEPTH(10000) DEFPSIST(NO)
def ql(Q.OUT) MAXDEPTH(10000) DEFPSIST(NO)
end
圖 18. 創建 MQ 隊列命令
2. 使用 Message Broker Toolkit 創建一個消息流
您需要創建一個使用 WebSphere TX 映射 csv2XML 的 Message Broker 消息流:
打開 Message Broker V7 Toolkit 並使用與創建 WebSphere TX 映射相同的工作空間。工具箱打開後,從右上端切換到 Broker Application Development 透視圖,如前面 圖 1 所示。
在菜單欄選擇 File => New => Project,然後選擇 Message Broker => Message flow project => Next。輸入項目名稱 dwFlow 並單擊 Finish。
右鍵單擊 dwFlow 項目並選擇 New => Message Flow,輸入消息流名稱 my_wtx_flow 並單擊 Finish。
在 my_wtx_flow 消息流編輯器畫布中,從 WebSphere MQ 類別下的選項板中拖放一個 MQInput 節點。在 Basic 選項卡之下的 Node 屬性部分輸入 Q.IN 作為 Queue 名,並使其余字段保留默認設置。
從 WebSphere TX 類別之下的選項板拖放一個 WebSphere TX Map 節點到畫布,並編輯 Node 屬性,如下所示:
在 Basic 選項卡中選擇 Use map from project 並單擊 Browse 來選擇 addressMap.mms之下的 csv2XML compiled map。在 Basic 選項卡中,您有兩個選擇來引用 WebSphere TX 映射。其中一個是 Use map from project,它引用一個已經包含在現有工作空間中的 WebSphere TX 已編譯的映射。另一個是 Use external map,它通過使用 Map server location 字段指定的絕對路徑引用 WebSphere TX 已編譯的映射。在本例中選擇 Use map from project 。
圖19. WebSphere TX 插件節點基本配置
查看原圖(大圖)
如果您有不止一個輸入卡,您可以在 Card number to wire 字段中指定想從 MQ 隊列上獲取消息的卡片數量。然而在本例中,您只有一個輸入卡和一個輸出卡,因次您可以讓選項卡中的其余部分保留默認設置。
將 MQOutput 節點從 WebSphere MQ 類別下的選項板拖放到畫布。在 Basic 選項卡之下的 Node 屬性中,輸入 Queue manager name 屬性 MYQM ,輸入 Queue name 屬性 Q.OUT。在高級選項卡中,將 Message 內容從 Pass all 改變為 Default,將輸出消息的消息頭 PUTTIME 設置為消息發出時間。
圖 20. MQOutput 節點高級配置
從選項板選擇 connection 元素來連接三個節點。單擊 MQInput node => Out,然後單擊 WebSphere TX Map node 來在 MQInput 節點和 WebSphere TXMap 節點之間建立一個連接。然後選擇 WebSphere TX Map => out1 並單擊 MQOutput node 來在 WebSphere TXMap 節點和 MQOutput 節點之間建立第二個連接,一旦工作流部署到代理,MQInput 節點中的消息將被傳遞給 WebSphere TX Map 節點,ebSphere TX Map 節點的輸出將輸入 MQOutput 節點。
圖21. Message Broker 流畫布
保存流:按下 Ctrl + S。
構建用於部署到代理的 BAR 文件:
在左邊的資源樹中右鍵單擊 dwFlow 項目並選擇 New => Message Broker Archive,在 Name 字段輸入 mybar。
在 Prepare 選項卡上,選擇 my_wtx_flow.msgflow 並在底部單擊 Build broker archive 來構建存檔文件。您將在彈出對話框中看到操作成功完成。
圖 22. 建立代理存檔
查看原圖(大圖)
在 Manage 選型卡上,單擊位於第一列的 my_wtx_flow.cmf。您可以修改 Additional instances 字段來管理由流創建的線程的數量。默認情況下,代理啟動一個線程來處理每個流,但是如果您在 Additional instances 中輸入的不是零,代理將啟動超過一個線程來處理每個流,這在多核環境中可能會提高性能。
圖 23. 代理存檔配置
保存代理存檔文件:按下 Ctrl + S。
3. 部署 BAR 文件到代理並啟動消息流
在現有的 Message Broker V7 Toolkit 中,從 File 菜單選擇 Window => Show vIEw => Brokers。
在 Brokers 視圖中,您能看見 MYBROKER,這是您在第一步中創建並附加到代理節點的:
圖 24. 代理視圖
右鍵單擊 MYBROKER 並選擇 New Execution Group。在彈出對話框中輸入新的執行組名 EG1。單擊 OK 之後,可能需要一段時間才能在 MYBROKER 下創建 EG1。
部署 BAR 文件:將 mybar.bar 拖放到 EG1:
圖25. 部署 BAR 文件
my_wtx_flow 應該被部署在 MYBROKER 上運行。您能看到一個帶有綠色向上箭頭的流,這意味著該流是向上的且正在運行:
圖 26. my_wtx_flow 成功啟動
4. 驗證流得到正確部署且正在運行
打開 MQ Explorer,展開 Queue managers 文件夾並選擇 MYQM => Queues。
屬於 MYQM 的所有隊列都顯示在右邊面板中。右鍵單擊 Q.IN 並選擇 Put Test Message:
圖27. 從 MQ Explorer 發出測試消息
清單 5. 消息內容樣例
John Smith,222-2222,25 park st.,Heaven City,Univor State,222
圖28. 輸入測試消息內容
當流啟動時,我們剛剛放進輸入隊列的消息由流來處理,轉換成 XML,並放入到輸出隊列 Q.OUT。您可以在 MQ Explorer中查看:在右上角單擊 Refresh,您將看到 Q.OUT 的當前隊列深度變為 1,這意味著這個隊列中只有一條消息:
圖29. 從 MQ Explorer 驗證輸出消息
您可以驗證消息內容:右鍵單擊 Q.OUT 並選擇 Browse messages。您應該能從 Message data 字段看到 XML 格式的消息內容。忽略 XML 內容中的方形符號 —— 它們代表換行符。
圖30. 從 Message Browser 驗證輸出消息內容
查看原圖(大圖)
如果您看見如上所示的 XML 消息數據,意味著工作流已被部署且正在成功運行。
本文示例源代碼或素材下載