程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 使用 WebSphere Service Registry and Repository 作為 DB2 pureXML

使用 WebSphere Service Registry and Repository 作為 DB2 pureXML

編輯:DB2教程

級別: 中級

Laura Olson ([email protected]), 獲得認證的 IT 咨詢專家, IBM Japan
Andre Tost ([email protected]), 高級技術人員, IBM 

2008 年 7 月 09 日

通過本文學習如何把 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 命令完成這個過程。

 

本文對 Service Registry 和 pureXML 的功能的描述並不完整。它們只是用來幫助介紹本文的主題,並伴隨一個具體的示例。要了解詳細信息,請參考在線產品文檔和本文後面的 參考資料

對於 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 模式的更改。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved