部署到WebSphere Message Broker執行組的WebSphere Transformation Extender映射的運行時選擇
WebSphere Transformation Extender 是一個通用的數據轉換和驗證引擎,可以幫助您使用 一個無代碼和圖形的開發模型來集成企業系統和信息。WebSphere Message Broker 的 WebSphere Transformation Extender 用處理節點以及一個包含 Transformation Extender 引 擎的附加節點來擴展 Message Broker 傳輸消息的功能。本文向您介紹如何從一個消息中動態 地選擇部署在 Message Broker 執行組中的 Transformation Extender 映射,以及在不使用任 何其他系統組件的情況下如何管理一個映射中的更改。
簡介
IBM® WebSphere® Transformation Extender(以下稱為 Transformation Extender)是一個數 據轉換和驗證引擎,使您可以使用 Transformation Extender 映射以及 IBM Websphere Message Broker(以下稱為 Message Broker)消息流 ,這有幾種方法可以從 Message Broker 調用 Transformation Extender 映射:
Transformation Extender 節點您可以直接將 這個節點添加到消息流,這使得您可以在編譯時或運行時配置將要被調用的映射。 JavaTransformation Extender 映射可以使用 Java API 從 Java Compute 節點調用。
本文向您展示如何配置 Transformation Extender 節點來動態地選擇一個部署在執行組上 的映射。
先決條件
為了使用 Message Broker 的 Transformation Extender 特 性,您需要安裝以下軟件:
WebSphere Message Broker V6.1.0.2 或更高版本
WebSphere Transformation Extender Design Studio V8.2.0.3 或更高版本
WebSphere Transformation Extender for Integration Servers V8.2.0.3 或更高版本
場景
消息流必須選擇 Transformation Extender 映射來進行基於接收消息特定字段的轉換。當 映射數量很少時,您可以在消息流中使用路由或過濾器,但是隨著消息流所用映射數量的增加 ,使用這個方法的難度也在增加。此外,對單個映射的任何改變都要部署到整個解決方案中。
Message Broker 中的 Transformation Extender 節點根據某個條件借助 ESQL 或 Java 來 在 LocalEnvironment 樹中指定映射名,使您可以選擇運行時映射。需求是部署在執行組上而 不是文集系統上,因為在文件系統上部署映射會引起版本控制問題。本文將向您顯示如何同時 利用這兩種方法的優勢 —— 在執行組上部署映射,但在運行時仍然從消息流動態地引用它們 。
樣例消息流
假設您有一個帶有 Transformation Extender 節點的消息流,消息流必須根據消息內容調 用不同的 Transformation Extender 映射。假設消息流被 “框架消息流” 調用,那麼您需要 在消息中選擇一個基於國家代碼的映射:
圖 1. 示例框架流
以下是項目結構:
圖 2. 示例項目結構
如圖 2 所示,在 3 個不同的 Transformation Extender 項目中 3 個國家有 3 個 Transformation Extender 映射。當為該消息流構建 BAR 文件時,所有映射都包含在消息流中 ,因此,任何一個映射中的任何改變都需重新部署所有代碼。
非正式(undocumented)系統變量
您可以使用 LocalEnvironment.Transformation Extender.MapServerLocation 來在運行時 指定正確的映射。訣竅就是使用相對路徑而不用絕對映射路徑。可為代理運行時設置一個非正 式環境變量 —— 指定如下相對路徑名的根路徑:DTX_MQSI_EXEGRP_xxx_HOME,在這裡 xxx 是 執行組的名稱。設置環境變量來指出每個執行組的 config\MAR\ 目錄,開發人員不需要弄清楚 這些文件存儲在什麼地方,因為在代理運行時機器上它是一次性設置。例如,您可以進行如下 設置:
DTX_MQSI_EXEGRP_default_HOME=C:\Documents and Settings\All Users\Application Data
\ibm\MQSI\components\MB_01\0f205d94-1f01-0000-0080-e36711819809\config\MAR\
開發人員只需要在 LocalEnvironment 中設置關於該位置的映射文件名。Transformation Extender 節點將相對路徑附加到環境變量中指定的路徑中來,以便於在運行時查找映射。
1. 修改框架代碼
以下是分離框架流和不同 Transformation Extender 映射的基本步驟:
修改消息流使其只有一個 Transformation Extender 節點:
圖 3. 改進的框架流
由於框架中有一個 Transformation Extender 節點,所以您必須創建一虛擬映射(不執行 任何轉化,僅有輸入卡和輸出卡),並將它同框架流聯系起來,這意味著設置該映射作為 Transformation Extender 節點的源映射。用這個新消息流創建一個 BAR 文件。BAR 構建器會 在 BAR 文件中自動包括虛擬 Transformation Extender 映射,被部署在執行組作為框架流。 該流在運行時根據收到消息中的國家代碼重寫虛擬映射。框架代碼不會因為任何特定國家映射 的改動或補充而進行改變或者重部署。
此外,Compute 節點可以使用數據庫表來確定基於國家代碼的映射名稱,這將確保框架代碼 不會因為映射的任何增添、刪除或修改而改變。
2. 部署單個映射
為了獨立部署特定國家的 Transformation Extender 映射,您需要創建一個含有一個 MQ 輸入節點和一個 Transformation Extender 節點(彼此不相連)的虛擬消息流(或為項目), 如下所示:
圖 4. 虛擬消息流
Transformation Extender 映射 location 屬性將指向特定國家映射,這使得 Message Broker 將自動激發文件系統中執行組運行時文件夾之下的 MAR 文件,該 MAR 文件是在構建過 程中創建的。然後,這些激發的映射可以通過框架代碼訪問來在運行時獲取正確映射,這些流 將隨 Transformation Extender 映射一起被部署到執行組中。這些流沒有任何功能 —— 只是 使用 Message Broker 特性自動激發文件系統中的 MAR 文件。識別消息流作為主要可部署流需 要 MQInput 節點。這是新的項目結構:
圖 5. 新項目結構
用這些構件為 Message Flow 創建另一個 BAR 文件,其中包括相應的 Transformation Extender 映射,現在可以被部署到同一個執行組作為 Framework 流。用這種方法,特定國家 映射的任何改變都僅僅被部署在指定的 Message Flow 項目中。
3. 設置系統變量
系統變量 DTX_MQSI_EXEGRP_xxxx_HOME 被設置指向 <Message Broker Work Path>/components/<Broker Name>/<EGUUID>/config/MAR/ 目錄。框架流從每 個國家映射路徑相應的目錄獲取映射。
結束語
本文向您介紹了幾種從 Message Broker 流調用 Transformation Extender 的方法,描述 了如何從一個消息中自動選擇部署在 Message Broker 執行組中的 Transformation Extender 映射,也向您展示了在不使用任何其他系統組件的情況下如何管理一個映射中的更改。