使用WebSphere Service Registry and Repository 作為DB2 pureXML模式的主登錄檔

CloudSpace發表於2008-07-21

通過本文學習如何把 IBM® WebSphere® Service Registry and Repository (WSRR) 和 IBM DB2® pureXML™ 整合在一起。WSRR 產品幫助您治理對 XML 模式的應用,而 DB2 pureXML XML schema Repository 能夠確保 XML 資料的完整性。模式能夠自動地從 WSRR 插入到模式庫。

簡介

DB2 9 pureXML 特性使公司能夠在一個資料庫裡有效地管理關係資料和 XML 資料。使用 SQL/XML 或 XQuery XML 可以自然地儲存和查詢 XML 資料。應用程式可以避免大量的 XML 解析,並且資料庫對 XML 的解析都在插入時執行。XML 模式能夠儲存在 pureXML 的 XML Schema Repository (XSR) 中。可以針對儲存在 XSR 中的 XML 模式有選擇地驗證 DB2 pureXML 資料,確儲存儲的資料符合所需的模式。

WebSphere Service Registry and Repository (Service Registry) 是儲存、管理和治理服務工件的完整環境。它根據已定義的治理模型支援 XML 模式定義的儲存和檢索。作為模型的一部分,您可以定義對特定工件的訪問權、根據分類法(如行業標準分類)對它們進行分類,並定義每個工件將經歷的具有指定狀態的生命週期。

本文描述瞭如何使用 Service Registry 產品治理儲存在 DB2 pureXML XSR 中的 XML 模式,從而驗證行業標準資料或任何 XML 資料。通過恰當的治理,可以有效防止大量生成 XML 模式並實現一致的使用,同時增強整個企業的互操作性。本文展示了模式如何能夠在兩個環境間進行自動同步。

DB2 和 Service Registry 之間還存在其他潛在的關係。例如,可以使用 Data Studio 建立 Data Web Services 來訪問 DB2 資料。通過安裝在 Data Studio 中的 Service Registry Eclipse 外掛,可以把使用 Data Web Service 工具生成的 Web Services Description Language (WSDL) 文件上傳到 Service Registry 庫。但是本文不會介紹這一場景。

標準行業模式:金融產品標記語言(Financial Products Markup Language,FpML)

目前存在許多旨在改善企業間資訊交換的標準。在許多情況下,這些標準是為某一特定行業而制定的,並且以 XML 模式的形式表達相關資料的結構。例如,Financial products Markup Language,即 FpML(更多資訊請參見 參考資料)。它描述了一組針對複雜金融產品資訊交換的標準 XML 模式。

本文使用 FpML 4.3 模式來展示如何結合使用 Service Registry 和 DB2 pureXML。注意,本文沒有詳細討論這一標準在各種金融服務場景是如何使用的;僅僅介紹瞭如何以整合的方式在這兩種產品中利用標準模式。因此,本文也適用於其他標準模式。

為何要治理 XML 模式?

如何知道在生產中使用了哪種 XML 模式?如何確保整個企業都一致地使用 XML 模式?企業中哪些人員在使用 XML 模式?開發者可以輕鬆查詢 XML 模式以便重用嗎?XML 模式的依賴關係是什麼?如果更改了 XML 模式,哪些人會受到影響以及如何通知他們?誰有權利更改 XML 模式?如何控制 XML 模式的版本?XML 模式治理能夠幫您解決許多問題,上面提到的只是其中的一些。

通過恰當地治理 XML 模式,開發者不僅能夠輕鬆地找到完整的 XML 模式,還能輕鬆地查詢各種型別,因而有利於實現重用。通過治理 XML 模式,您可以在整個生命週期(從開始到退役)內高效地管理 XML 模式的更改。只要 XML 模式發生了更改,將立即通知 XML 模式的使用者,從而減少意外中斷。通過治理 XML 模式,您可以定義 XML 模式必需遵循的訪問權、版本化策略和標準。實施這些治理能夠提高 IT 組織的效率。

本文將介紹 Service Registry,這種工具可以幫助您實現和加強對 XML 模式文件的治理。

Service Registry 的 XML 模式管理和治理功能

上文介紹了恰當治理 XML 模式如何為企業帶來益處。然而,成功的治理需要使用工具來支援和實施。Service Registry 正是這樣一種工具。 Service Registry 是一個獨立的元件,具有登錄檔(registry)和儲存庫功能,這些功能使它能夠成為所有 SOA 工件的權威的治理中心。它儲存和管理 SOA 工件,如 WSDL、XSD、WS-Policy 和二進位制文件。因此,您可以檢視和管理某個工件在整個 SOA 中是如何利用的。Service Registry 處理的內容包括:在引入新版本時對工件實施的版本化、工件的安全和訪問策略、對工件的生命週期轉換實施策略、更改工件時發出的通知,以及構造工件時使用的分類法等。

本小節只著重闡述了 Service Registry 功能的一小部分。本文討論了 XML 模式的功能,但重要的是要注意這些功能適用於所有 SOA 工件(更多關於 Service Registry 的詳細資訊,請參見本文 參考資料 部分)。

模式的可見性

Service Registry 通過提高 XML 模式文件的可見性及文件內部的邏輯部分來實現管理。在載入文件之後,Service Registry 把 XML 模式文件解析為各個邏輯部分:複雜型別、簡單型別、元素和屬性。然後可以用額外的後設資料(如屬性和分類)對文件和邏輯部分進行註釋。這樣,不僅可以在 Service Registry 中搜尋特定的文件,還可以搜尋特定的邏輯部分,而不需要知道該邏輯部分屬於哪個文件。


圖 1. Service Registry 的複雜型別的檢視
Service Registry 的複雜型別的檢視

模式的分類

Service Registry 對其分類體系使用了 Web Ontology Language (OWL)(更多資訊請參見 參考資料)。通過利用 OWL 分類,它能夠提供額外的詞彙表和正式的語義來描述 XML 模型資源。這又使得人員或機器能夠更加輕鬆地管理、搜尋和解釋這些資源。

例如,對於本文介紹的場景,可以對將要釋出到 pureXML XSR 的 XML 模式文件進行分類。然後可以使用這一分類自動釋出被相應識別出來的模式。此外,還可以在 Service Registry 的分層搜尋中使用這一分類,從而快速查詢將要或已經發布到 XSR 的 XML 模式。

圖 2 展示了一個使用 Service Registry UI 進行搜尋的示例:


圖 2. 對分類為 pureXML 的 XML 模式文件進行分層搜尋
對分類為 pureXML 的 XML 模式文件進行分層搜尋

模式影響分析

Service Registry 提供圖形化的影響分析,使您充分了解當給定的 XML 模式發生改變時會影響哪些人或內容。您能夠指定執行影響分析的依賴關係選項。例如,可以選擇只顯示依賴於該模式的工件或該模式所依賴的工件。此外,還可以指定依賴深度。您可以將影響分析限制為預構建關係或自定義關係,也可以選擇以圖形或文字的形式檢視影響分析的結果。

圖 3 的示例展示了 XML 模式文件 fpml-cd-4-3.xsd(FpML 標準模式集的一部分)的圖形化影響分析。這個影響分析在檢視的頂部顯示了 fpml-cd-4-3.xsd 的所有邏輯部分和依賴於 fpml-cd-4-3.xsd 的工件,在檢視的底端顯示了該模式依賴於哪些工件。注意,導航皮膚右邊的 Viewing Window 可以幫助您導航和重新定點陣圖形化檢視。


圖 3. 影響分析示例
影響分析示例

模式治理生命週期

SOA 工件遵循不同的生命週期。例如,服務的生命週期不同於 XML 模式的生命週期。Service Registry 提供可自定義的實施狀態機的治理生命週期。這意味著您可以根據個人需求定義 SOA 工件的生命週期。服務、介面、策略和契約的生命週期可以立即使用並且可以修改。Service Registry 提供允許編寫自定義驗證和通知程式碼的驗證和通知介面。因此,當工件變為可治理、從治理中刪除工件或工件轉換到生命週期的新狀態時,這個程式碼可以通過驗證通知 外掛呼叫。驗證外掛在操作(例如轉換)真正發生之前呼叫。如果工件不能滿足驗證外掛指定的所有需求,操作就不會發生,並且會返回一個錯誤。

另一方面,通知外掛在操作發生之後才呼叫。可自定義的治理生命週期以及驗證和通知介面提供了強大的功能,確保治理策略在工件生命週期的每一個階段都得到執行(因此確保在發生更改時通知對應的人員),並幫助實現治理過程的自動化。

讓我們審視一個關於如何通過標準行業模式 FpML 利用 XML 模式生命週期的示例。當新版本的 FpML 釋出時,把它投入生產之前需要考慮一些事情。例如,也許要擴充套件 FpML 模式以使它更適合特定的業務。在轉移到生產之前必須確保這些擴充套件應用到了最新版本的 FpML。正在著手於新的 FpML 專案或更新現有 FpML 的開發人員需要了解 FpML 版本處於生命週期的哪個階段,從而根據專案的時間線選擇適當的版本。應用和實施 XML 模式生命週期能夠確保 FpML 版本的所有考慮事項都得到解決。它使開發人員能夠選擇適當的模式版本,並就狀態轉換通知給相關人員。

下面是 XML 模式的治理生命週期狀態機示例。狀態機包含以下幾個狀態:

  • 指定(Specify) - 新版本的 FpML 被載入到 Service Registry。當滿足所有相應的許可和策略以開始測試新模式集時,模式工件可以轉換到測試狀態。
  • 測試(Test) - 當模式工件轉換到這一狀態時,將呼叫自定義開發的通知外掛並把該模式釋出到 pureXML XSR 的測試例項。當測試結束並且再次滿足所有許可和策略時,FpML 將轉換到釋出狀態。
  • 釋出(Publish) - FpML 模式轉換到這一狀態之後,還會呼叫另一個自定義開發的通知外掛並且把該模式釋出到 pureXML XSR 生產例項。
  • 退役(Retire) - 當 FpML 模式轉換到這一狀態時,將會呼叫通知外掛並將從所有 pureXML XSR 例項中刪除模式。

圖 4 以 UML 狀態機圖形的形式展示了該示例生命週期的狀態和轉換:


圖 4. 示例 XML 模式生命週期
示例 XML 模式生命週期

整合 Service Registry 和 DB2 pureXML XSR

如上所述,Service Registry 處理與 SOA 相關的工件的儲存和治理的所有方面。Service Registry 引入了工件的新版本,根據通用分類法構造工件並且可以正確地分析一個工件發生改變時對另一個工件產生的影響。

同時,DB2 pureXML 產品可以儲存(當然也包括檢索)實際的執行時資料。XML 資料可以直接處理而不需要先轉換到關係表。此外,XSR 可以實現資料與適當的 XML 模式在結構上保持一致。

本小節展示瞭如何在 Service Registry 中治理 XML 模式,然後將它與 DB2 pureXML XSR 同步以便執行時使用。圖 5 概括地展示了 Service Registry 和 pureXML 如何根據不同的目的處理 FpML 模式:


圖 5. XML 模式在 Service Registry 和 DB2 pureXML XSR 之間同步
XML 模式在 Service Registry 和 DB2 pureXML XSR 之間同步

如上文所述,Service Registry 專門處理治理的所有方面。現有模式的任何改變都得到管理並且在部署到生產執行時系統之前必須得到適當的許可。部署到執行時環境通過自動呼叫 DB2 pureXML 指令碼(該指令碼把適當的模式工件載入到資料庫)來實現。它們將在那裡與由業務應用程式儲存和檢索的 XML 文件關聯起來。

詳細內容 — 通知程式(notifier)、指令碼和其他有用功能

前面已經提到當特定工件從某個狀態轉換到另一個狀態時,Service Registry 如何提供可呼叫的通知外掛。發生該過程時所執行的實際邏輯使用所謂的治理通知程式(governance notifier)定義。建立、刪除、更改工件或工件在生命週期內轉換到新的狀態時將執行通知程式。

治理通知程式是實現 com.ibm.serviceregistry.governance.ServiceRegistryGovernanceNotifier 介面的自定義編碼類。它包含有建立、刪除、更新和轉換方法,可以實現這些方法以包含所有相應的邏輯。可以建立一個以上的治理通知程式類。實際執行哪一個治理通知程式由通知外掛的屬性檔案配置。

讓我們將它應用到前面介紹的 FpML 模式的生命週期示例。假定所有可以在 Service Registry 中作為一個集合來治理的 FpML 模式從 “測試” 狀態轉換到 “釋出” 狀態。在通知外掛的屬性檔案中進行配置,從而呼叫特定的治理通知程式類。該類實現了一種稱為轉換(transition)的方法,這個方法可以訪問每個轉換到新狀態的工件的內容。現在它將提取這些內容併傳送到 pureXML XSR。

通過呼叫一組儲存過程把模式載入到 pureXML XSR。這些儲存過程能夠輕易地從指令碼中呼叫,因此可以按照預先確定的時間自動執行。要安裝以前從來沒有安裝過的模式,需要執行以下幾個步驟:

  1. 使用 REGISTER XMLSCHEMA 命令註冊主 XML 模式。
  2. 使用 ADD XMLSCHEMA DOCUMENT 命令有選擇地新增額外的與主模式相關的 XML 模式文件。
  3. 通過呼叫 COMPLETE XMLSCHEMA 命令完成這個過程。

對於 XSR 中已有的模式和已經改變的模式,pureXML 提供了一個 UPDATE XMLSCHEMA 命令。只有以下情況才能使用該命令:模式的改變是向後相容的;已更新模式被自動應用到所有儲存在資料庫的 XML 文件。要把模式從一個版本演變到另一個版本時,要慎重考慮是否在 XSR 中將新版本的模式儲存為已更新模式,或者是否將它儲存為全新的文件。

版本淺談

版本號的應用存在各種不同的詳細級別。可以對服務進行整體的版本設定,包括相關的所有工件;也可以在開發單個檔案(如 XML 模式)時設定它們的版本,並在一個原始碼管理系統中籤入和簽出。最後,行業標準(如用於本文場景中的 FpML 標準)也擁有版本。

本文沒有詳細描述設定服務版本的方法,而是假定我們所用的行業標準很少發生變化,因此其版本也不會頻繁變化。從這方面看,行業標準的生命週期要比服務組合中其他工件的生命週期短。

本文已經介紹了 UPDATE XMLSCHEMA 命令,它可以在 XSR 裡儲存已更新的模式版本(和向後相容的模式版本)。現在假定 FpML 標準的每一個新版本都不是向後相容的。這意味著儲存在 DB2 pureXML 中的現有 XML 文件與任何較新版本的 FpML 模式都不相容。因此,不能使用 UPDATE XMLDOCUMENT 命令,而需要使用 REGISTER XMLSCHEMA

執行示例: Service Registry、DB2 pureXML 和 FpML 4.3

本小節描述如何在自己的計算機上執行簡單的示例場景。假定您已經安裝了 Service Registry 例項和 DB2 9.5。注意,可以免費下載 DB2 9.5 Express-C 的副本(參見 參考資料)。

將 pureXML 配置檔案載入到 Service Registry

Service Registry 附帶了一個預設的配置檔案,可以根據業務需求進行修改和擴充套件。在本文中,我們擴充套件了預設配置檔案,使它包括一個 XML 模式的治理生命週期、一個將模式分類為 pureXML 的本體(ontology)和一個將模式自動釋出到 pureXML XSR 的自定義通知外掛(更多關於 Service Registry 配置檔案、生命週期和通知功能的詳細資訊,請參閱本文 參考資料 小節)。

要載入和啟用 pureXML Service Registry 配置檔案,在 Service Registry Console 中完成以下任務(http://yourhost/ServiceRegistry):

  1. 從透檢視下拉選單選擇 Configuration,切換到配置透檢視,並單擊 Go
  2. 展開 Manage Configuration Profiles
  3. 單擊 Configuration Profiles 連結。
  4. 單擊 Load Configuration Profile
  5. 選擇 Browse,然後瀏覽到 c:\pureXMLArticle\PUREXML_PROFILE.zip。
  6. 在 “Provide the Profile configuration item name” 欄位輸入 PUREXML
  7. 單擊 OK
  8. 選擇 PUREXML 配置檔案,並且單擊 Make Active

圖 6. 活動的 pureXML 配置檔案
活動的 pureXML 配置檔案

把 FpML 模式載入到 Service Registry

要把 FpML 模式載入到 Service Registry,必須從本文的 下載 小節檢索 FpML.zip,然後在 Service Registry Console 中執行下列任務:

  1. 從透檢視下拉選單選擇 Administrator 並單擊 GO
  2. 在 “Load Documents” 部分,選擇 Local file system,並瀏覽到 FpML.zip 的位置。
  3. 從文件型別下拉選單選擇 ZIP/JAR file
  4. 在 “Version” 欄位輸入 4.3
  5. 輸入一個描述(可選)。可以將名稱空間欄位留空,因為名稱空間屬性將根據已載入模式的名稱空間自動填充。
  6. 單擊 OK

圖 7. 將 FpML 模式批量載入到 Service Registry
將 FpML 模式批量載入到 Service Registry

Service Registry 自動檢測文件依賴關係,然後幫助解析這些依賴關係。檢視依賴文件是否已經存在於 Service Registry 中。如果存在,可以選擇讓 Service Registry 在文件之間自動建立一個關係,也可以選擇載入新版本的依賴文件。


圖 8. 解析文件的依賴關係
解析文件的依賴關係

將這些模式儲存為一個組。這樣就可以像前面提到的那樣把它們當作一個集合來治理。

  1. 單擊 Save as Group
  2. 在 “Name” 欄位中輸入 FpML43
  3. 單擊 Finish

圖 9. 將 FpML 模式文件儲存為一個組
將 FpML 模式文件儲存為一個組

載入模式文件之後,可以通過從左側導航選擇 Service Documents -> XSD Documents 以圖形的形式導航模式文件的依賴關係,並單擊 graph 圖示。參見圖 10 和圖 11:


圖 10. 從 XSD 文件檢視單擊 Graph 圖示導航依賴關係
從 XSD 文件檢視單擊 Graph 圖示導航依賴關係

圖 11. 圖形化導航只顯示從 fpml-cd-4-3.xsd 文件開始的外部關係
圖形化導航只顯示從 fpml-cd-4-3.xsd 文件開始的外部關係

自動將模式從 Service Registry 釋出到 DB2 XSR

本節將把在前面小節匯入的模式組置於治理之下,並將治理狀態轉換到已釋出,並且將驗證是否成功地把模式釋出到 pureXML XSR。當轉換到已釋出 狀態時,通知事件將呼叫自定義通知外掛,該外掛已經作為 pureXML Service Registry 配置檔案的一部分進行了建立和配置。通知外掛將把模式匯出到一個目錄並執行一個指令碼,該指令碼將把匯出的模式釋出到 XSR。圖 12 展示了通知屬性中 PureXMLNotifier 的配置:


圖 12. PureXMLNotifier 的通知屬性配置
PureXMLNotifier 的通知屬性配置

在本文的下載資料中可以找到 com.ibm.wsrr.purexml.PureXMLNotifier 類的原始碼(參見 下載)。如前所述,通知程式從登錄檔中提取適當的內容,然後使用 DB2 命令把模式載入到 XSR。

治理模式組

要治理模式組,從 Service Registry Console 中執行下列任務:

  1. 展開 Service Documents 並選擇 Document Groups
  2. 選擇 FpML43

這將把您帶到 FpML43 文件組的詳細資訊頁面。在該頁面,可以檢視和新增屬性、分類、與登錄檔其他工件的關係以及額外的文件組成員。單擊 Document Group Members 連結就可以看到在前面小節匯入的模式文件。

  1. 單擊 Governance 選項卡。
  2. 從 “Initial state transactions” 下拉選單中選擇 InitiateXMLSchemaLifeCycle。已經在本文的模式治理生命週期小節定義了生命週期。生命週期狀態機請參見 圖 4
  3. 單擊 Govern。圖 13 展示了已治理的 FpML43 文件組,它正處於 指定 狀態:

圖 13. 處於治理之下的 FpML43 文件組
處於治理之下的 FpML43 文件組

將模式組的生命週期狀態轉換到已釋出狀態

FpML43 文件組的當前狀態是指定狀態。要轉換到已釋出狀態必須先轉換到測試狀態。當轉換到測試狀態時,將呼叫通知外掛並且把模式釋出到測試 pureXML XSR 例項。這在模式治理生命週期小節已經闡述。考慮到本文的簡潔性,我們沒有將通知外掛配置為在轉換到測試狀態時進行呼叫。

轉換到已釋出狀態:

  1. 選擇 ApprovedForTest 並單擊 Transition。這將把您帶入到測試狀態。
  2. 選擇 Publish 並單擊 Transition

成功轉換到已釋出狀態後將呼叫通知外掛。這一通知將把模式釋出到 pureXML 的 XSR。圖 14 展示了成功轉換到已釋出狀態。在下一小節,將檢驗模式是否實際釋出到 XSR。


圖 14. 已釋出狀態下的 FpML43 文件組
已釋出狀態下的 FpML43 文件組

檢驗模式是否釋出到 pureXML 的 XSR

帶有自定義編碼的通知程式類的自定義通知外掛首先將模式匯出到 c:\pureXMLArticle\publish 目錄,然後執行 bat 檔案 C:\PureXMLArticle\articlescripts\start,該檔案把模式釋出到 XSR。

可以使用 DB2 Control Center 檢驗模式是否成功釋出。在執行完模式的最終狀態轉換後,如前所述,會看到一個名為 “FPML43” 的新資料庫。注意,如果在 Control Center 展開該資料庫,將會看到一個名為 “XML Schema Repository (XSR)” 的條目。單擊該條目就可以檢視 XSR 裡的新條目,如下面的圖 15 所示:


圖 15. 儲存在 pureXML XSR 裡的 FpML 模式
儲存在 pureXML XSR 裡的 FpML 模式

可以選擇單個模式並通過 Open 選項檢視它。如圖 16 所示:


圖 16. DB2 XML 文件檢視器
DB2 XML 文件檢視器

現在可以將 XML 文件載入到遵循匯入模式的資料庫,並充分利用 pureXML 提供的功能。

結束語

本文展示瞭如何利用 WebSphere Service Registry 和 Repository 儲存、管理和治理標準行業 XML 模式。同時也描述瞭如何實現這些模式與 DB2 pureXML 中的 XML schema Repository (XSR) 的自動同步。在 DB2 pureXML 中,模式用於資料驗證以及儲存和檢索與標準相容的 XML 資料有關的其他功能。作為示例,可以在金融服務行業利用 FpML 行業模式。

這個場景展示瞭如何把 Service Registry 用作完整的面向服務架構的主登錄檔和儲存庫,如何把 DB2 pureXML 用作處理(XML)資料的實現平臺。將 Service Registry 和 DB2 pureXML 相結合,可以阻止 XML 模式不斷增長,實現一致的使用,並提高整個企業的互操作性。您不僅能夠輕易找到完整的 XML 模式,還能夠找到這些模式的型別,從而有利於實現重用。此外,您還可以在整個生命週期(從開始到退役)內高效地管理 XML 模式的更改。

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

相關文章