使用 WebSphere Message Broker 的 WebSphere Transformation Extender 外掛

CloudSpace發表於2010-08-30
Jervis Lee, 軟體工程師, IBM
Elisa CY Su, 高階軟體工程師, IBM

簡介: 本文通過示例向您展示如何設計一個 WebSphere Transformation Extender 轉換對映,並將其整合到 WebSphere Message Broker 訊息流中。

簡介

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 輸出資料樣例
				


John Smith
222-2222
25 park st. Heaven City Univor State 222

1. 通過匯入函式為輸出資料格式建立一個 XML 型別樹

  1. 開啟 Message Broker 工具箱,然後選擇一個新目錄作為您的工作空間。工具箱開啟之後,從右上角切換至 Transformation Extender Development 透檢視:

    圖 1. Transformation Extender Development 透檢視
    Transformation Extender Development 透檢視

  2. 建立一個 WebSphere TX 專案:
    1. 從選單欄選擇 File => New => Project
    2. 選擇 Transformation Extender => Extender Project => Next
    3. 在專案名稱中輸入 dwSample,然後單擊 Finish
  3. 通過匯入 XSD 建立輸出 XML 型別樹:
    1. 在 Extender Navigator 中右鍵單擊 Type Trees,然後選擇 Import => XML Schema
    2. 在彈出視窗中瀏覽並選擇提供的 xsd 檔案 AB.xsd,然後單擊 Next
    3. 保留所有的預設設定(western / Xerces / None),然後單擊 Next

      圖 2. XML Schema Importer 對話方塊
      XML Schema Importer 對話方塊

    4. 選擇 dwSample 作為父資料夾,輸入資料夾名 “AddressBook.mtt”,然後單擊 Next
    5. Importer 開始驗證架構,應該會顯示零個警告或錯誤,並顯示訊息 “Type tree created successfully”。單擊 Finish 完成 XML 架構匯入。
    6. 在彈出的資訊提示中,選擇 Yes 開啟型別樹。
    7. 在選單欄中,選擇 Tree => Analyze => Structure and logic 來分析型別樹。您將在 Analyze Results 檢視中看到零個警告和錯誤,如果看到警告,忽略它們。

      圖 3. AddressBook 型別樹分析結果
      AddressBook 型別樹分析結果

    8. 儲存型別樹。

2. 為 CSV 輸入格式建立另一個型別樹

  1. 在 Extender Navigator 檢視中右鍵單擊 Type trees 並選擇 New => Type tree。然後選擇 dwSample 作為父資料夾,輸入檔名 addressCSV,然後單擊 Finish

    圖 4. 從 Extender Navigator 檢視中選擇型別樹
    從 Extender Navigator 檢視中選擇型別樹

  2. 向型別樹新增條目:
    1. 在最新建立的 addressCSV 型別樹上,右鍵單擊 Root 並選擇 Add => Yes
    2. 在 Extender 屬性皮膚中,在 Name 欄位輸入 “name”,在 Class 欄位選擇 Item,在 Item subclass 欄位選擇 Text,如下所示:

      圖 5. 姓名項屬性配置
      姓名項屬性配置

    3. 重複以上步驟,增加其餘五個條目,電話、街道、城市、國家和郵政編碼。所有這些屬於 Item 類和 Text Item 子類。您的型別樹看起來應該是這樣的:

      圖 6. addressCSV 型別樹
      addressCSV 型別樹

  3. 向型別樹新增組:在型別樹編輯皮膚上,右鍵單擊 Root 並選擇 Add => Yes。在 Extender 屬性皮膚中,輸入以下所示屬性:
    • Name 欄位輸入 rec,在 Class 欄位中選擇 group
    • Group subclass 欄位之下的 Format 欄位中選擇 Explicit
    • Component Syntax 欄位中選擇 Delimited
    • Group subclass => Format => Component syntax 之下的 Value 欄位中輸入 “,”(逗號)。


    圖 7. rec 組屬性配置
    rec 組屬性配置

  4. 在 Type 樹編輯皮膚中雙擊 rec,調出一個空的元件皮膚:

    圖 8. rec 組的空元件皮膚
    空元件皮膚

  5. 將其餘條目按下列順序從型別樹拖放到元件皮膚:姓名、電話、街道、城市、國家、郵政編碼:

    圖 9. 將條目拖放到 rec 組的元件皮膚
    將條目拖放到 rec 組的元件皮膚

  6. 儲存元件皮膚。
  7. 在選單欄,選擇 Tree => Analyze => Structure and logic 來分析型別樹,您在 Analyze 結果檢視中應該看到零個警告和錯誤:

    圖 10. addressCSV 型別樹分析結果
    addressCSV 型別樹分析結果

  8. 儲存型別樹。

3. 在輸入型別樹和輸出型別樹之間建立一個對映

  1. 在 Extender 導航器中右鍵單擊 Map files 並選擇 New => Map source。在彈出對話方塊中選擇 dwSample 作為父資料夾,輸入 addressMap 作為 File name,然後單擊 Finish
  2. 在 Outline 皮膚中右鍵單擊 addressMap,然後在 Map 名稱欄位選擇 New、input csv2xml 並單擊 OK

    圖 11. 建立一個新對映
    建立一個新對映

  3. 右鍵單擊 Input cards 並選擇 New。在 New 輸入卡對話方塊中,輸入如下所示屬性並單擊 OK
    1. CardName 欄位輸入 “csv”。
    2. TypeTree 欄位選擇 addressCSV.mtt
    3. Type 欄位選擇 rec
    4. FilePath 欄位輸入 “input.csv”。


    圖 12. Input Card 配置
    Input Card 配置

  4. 右鍵單擊 Output cards 並選擇 New。在 New 輸出卡對話方塊,輸入如下所示屬性並單擊 OK
    1. CardName 欄位輸入 xml。
    2. TypeTree 欄位選擇 AddressBook.mtt
    3. Type 欄位選擇 Doc
    4. FilePath 欄位輸入 output.xml.


    圖 13. Output Card 配置
    Output Card 配置

  5. 在 Map Editing 皮膚上,執行以下操作:
    1. 將名稱、電話、街道、城市、國家和郵政編碼欄位從輸入卡拖放到輸出卡相應的欄位。
    2. 在輸出卡上選擇 version 欄位,輸入 ="1.0",然後按下 Enter (您必須按住 Enter 直止生效)。
    3. encoding 欄位和 standalone 欄位輸入 =NONE(全部大寫)。
    現在,您的對映看起來像這樣:

    圖 14. 對映規則配置
    對映規則配置

  6. 儲存對映。
  7. 在選單欄選擇 Map => Build 來建立對映。
  8. 直接將提供的檔案 input.csv 放在專案工作空間下面。
  9. 在選單欄選擇 Map => Run 來執行對映。您可以看到成功完成對映的對話方塊:

    圖 15. 成功完成對映
    成功完成對映

  10. 驗證 XML 輸出結果:在選單欄選擇 Map => View run results。在彈出視窗中,檢視 #1 XML

    圖 16. 檢視 XML 輸出結果
    檢視 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 MYBROKER

1. 建立代理和輸入/輸出 MQ 佇列

本節將向您展示如何使用命令建立 MQ 元素和代理。您也可以使用 Broker View Toolkit 建立代理。

  1. 開啟 Windows Services 對話方塊:選擇 Start => Run 並輸入 services.msc。確保 IBM MQSeries 服務如開始所示。

    圖 17. 啟動 IBM MQSeries 服務
    啟動 IBM MQSeries 服務

  2. 開啟 Message Broker 命令控制檯:選擇 Start => All Programs => WebSphere Message Broker V7。執行以下命令建立一個名為 MYBROKER 的代理。該命令也建立名一個為 MYQM 的佇列管理器。執行命令之前確保使用者名稱隸屬於 msm 和 mqbrkrs。

    清單3. 建立一個代理和相應的佇列管理器的命令樣例
    						
    mqsicreatebroker MYBROKER -i  -a  -q MYQM
    mqsistart MYBROKER
    	

  3. 在同一個 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 佇列命令
    建立 MQ 佇列命令

2. 使用 Message Broker Toolkit 建立一個訊息流

您需要建立一個使用 WebSphere TX 對映 csv2xml 的 Message Broker 訊息流:

  1. 開啟 Message Broker V7 Toolkit 並使用與建立 WebSphere TX 對映相同的工作空間。工具箱開啟後,從右上端切換到 Broker Application Development 透檢視,如前面 圖 1 所示。
  2. 在選單欄選擇 File => New => Project,然後選擇 Message Broker => Message flow project => Next。輸入專案名稱 dwFlow 並單擊 Finish
  3. 右鍵單擊 dwFlow 專案並選擇 New => Message Flow,輸入訊息流名稱 my_wtx_flow 並單擊 Finish
  4. 在 my_wtx_flow 訊息流編輯器畫布中,從 WebSphere MQ 類別下的選項板中拖放一個 MQInput 節點。在 Basic 選項卡之下的 Node 屬性部分輸入 Q.IN 作為 Queue 名,並使其餘欄位保留預設設定。
  5. 從 WebSphere TX 類別之下的選項板拖放一個 WebSphere TX Map 節點到畫布,並編輯 Node 屬性,如下所示:
    1. 在 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 外掛節點基本配置
      WebSphere TX 外掛節點基本配置

    2. 如果您有不止一個輸入卡,您可以在 Card number to wire 欄位中指定想從 MQ 佇列上獲取訊息的卡片數量。然而在本例中,您只有一個輸入卡和一個輸出卡,因次您可以讓選項卡中的其餘部分保留預設設定。
  6. MQOutput 節點從 WebSphere MQ 類別下的選項板拖放到畫布。在 Basic 選項卡之下的 Node 屬性中,輸入 Queue manager name 屬性 MYQM ,輸入 Queue name 屬性 Q.OUT。在高階選項卡中,將 Message 內容從 Pass all 改變為 Default,將輸出訊息的訊息頭 PUTTIME 設定為訊息發出時間。

    圖 20. MQOutput 節點高階配置
    MQOutput 節點高階配置

  7. 從選項板選擇 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 流畫布
    Message Broker 流畫布

  8. 儲存流:按下 Ctrl + S
  9. 構建用於部署到代理的 BAR 檔案:
    1. 在左邊的資源樹中右鍵單擊 dwFlow 專案並選擇 New => Message Broker Archive,在 Name 欄位輸入 mybar。
    2. 在 Prepare 選項卡上,選擇 my_wtx_flow.msgflow 並在底部單擊 Build broker archive 來構建存檔檔案。您將在彈出對話方塊中看到操作成功完成。

      圖 22. 建立代理存檔
      建立代理存檔

    3. 在 Manage 選型卡上,單擊位於第一列的 my_wtx_flow.cmf。您可以修改 Additional instances 欄位來管理由流建立的執行緒的數量。預設情況下,代理啟動一個執行緒來處理每個流,但是如果您在 Additional instances 中輸入的不是零,代理將啟動超過一個執行緒來處理每個流,這在多核環境中可能會提高效能。

      圖 23. 代理存檔配置
      代理存檔配置

    4. 儲存代理存檔檔案:按下 Ctrl + S

3. 部署 BAR 檔案到代理並啟動訊息流

  1. 在現有的 Message Broker V7 Toolkit 中,從 File 選單選擇 Window => Show view => Brokers
  2. 在 Brokers 檢視中,您能看見 MYBROKER,這是您在第一步中建立並附加到代理節點的:

    圖 24. 代理檢視
    代理檢視

  3. 右鍵單擊 MYBROKER 並選擇 New Execution Group。在彈出對話方塊中輸入新的執行組名 EG1。單擊 OK 之後,可能需要一段時間才能在 MYBROKER 下建立 EG1。
  4. 部署 BAR 檔案:將 mybar.bar 拖放到 EG1:

    圖25. 部署 BAR 檔案
    部署 BAR 檔案

  5. my_wtx_flow 應該被部署在 MYBROKER 上執行。您能看到一個帶有綠色向上箭頭的流,這意味著該流是向上的且正在執行:

    圖 26. my_wtx_flow 成功啟動
    my_wtx_flow 成功啟動

4. 驗證流得到正確部署且正在執行

  1. 開啟 MQ Explorer,展開 Queue managers 資料夾並選擇 MYQM => Queues
  2. 屬於 MYQM 的所有佇列都顯示在右邊皮膚中。右鍵單擊 Q.IN 並選擇 Put Test Message

    圖27. 從 MQ Explorer 發出測試訊息
    從 MQ Explorer 發出測試訊息



    清單 5. 訊息內容樣例
    						
    John Smith,222-2222,25 park st.,Heaven City,Univor State,222
    	



    圖28. 輸入測試訊息內容
    輸入測試訊息內容

  3. 當流啟動時,我們剛剛放進輸入佇列的訊息由流來處理,轉換成 XML,並放入到輸出佇列 Q.OUT。您可以在 MQ Explorer中檢視:在右上角單擊 Refresh,您將看到 Q.OUT 的當前佇列深度變為 1,這意味著這個佇列中只有一條訊息:

    圖29. 從 MQ Explorer 驗證輸出訊息
    從 MQ Explorer 驗證輸出訊息

  4. 您可以驗證訊息內容:右鍵單擊 Q.OUT 並選擇 Browse messages。您應該能從 Message data 欄位看到 XML 格式的訊息內容。忽略 XML 內容中的方形符號 —— 它們代表換行符。

    圖30. 從 Message Browser 驗證輸出訊息內容
    從 Message Browser 驗證輸出訊息內容

  5. 如果您看見如上所示的 XML 訊息資料,意味著工作流已被部署且正在成功執行。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-672122/,如需轉載,請註明出處,否則將追究法律責任。

相關文章