使用 WebSphere Service Registry and Repository 作为 DB2 pure

来源:岁月联盟 编辑:zhuzhu 时间:2008-10-21

级别: 中级

Laura Olson (menkell@us.ibm.com), 获得认证的 IT 咨询专家, IBM Japan
Andre Tost (atost@us.ibm.com), 高级技术人员, 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 模式的更改。