级别: 中级 Ronny Bartsch, 软件开发人员 Susan Malaika, 高级技术人员, IBM Christian Pichler, Data Server Solutions(带薪实习), IBM
2009 年 3 月 13 日 本文描述如何在一天内使用一种端到端的 XML 架构构建一个完整的 IBM® DB2® 应用程序,用于存储、查看和操作信息。可以向同事和客户展示这个应用程序,以获得架构、基础设施和用户界面方面的反馈。通过短期迭代开发、扩展和修改应用程序可以获得一种敏捷的应用程序开发方法。
简介
XML 是以结构化和自描述标记的方式交换数据的最佳的选择。W3C 的一套 XML 标准描述了一组规范,这组规范在商业、政府、科学以及其他行业中得到广泛应用。由于 XML 的始祖 SGML 从 20 世纪 80 年代起就开始使用,因此在处理 XML 方面有超过 20 年的经验和工具。
为了进行标准化的信息交换,不同的行业利用 XML 标准定义特定于行业的格式。而且,XML 是一种用于查看和操作数据的流行标记法,例如通过 XForms 或 Lotus Forms。XML 和混合数据库系统(例如 DB2 pureXML™)提供本地 XML 存储。后者意味着 XML 按照原样存储,而不必将 XML 的元素和属性中的信息分解到关系表中(即所谓的 “shredding”)。
如果能利用 XML 和基于 XML 的行业格式,就可以创建利用端到端 XML 架构的应用程序。端到端 XML 应用程序一个主要的优点是:可以使用相同的基于 XML 的行业格式或定制标记法存储(参见图 1 中的 “数据” 层)、交换(参见图 1 中的 “信息交换” 层)以及查看和操作(参见图 1 中的 “用户交互” 层)XML。
图 1. 端到端的 XML 架构
概述
本文的目标是阐释如何采用特定于行业的交换格式的端到端 XML 架构,快速创建一个有效的应用程序。这里用作交换基础的格式是 IRS e-File 1120 格式,这是美国财政部门为报告税收而定义的交换格式(参见 参考资料)。创建端到端 XML 应用程序所需的步骤包括:
- 创建一个能够本地存储 IRS e-File 1120 XML 文档的 DB2 pureXML 数据库
- 使用 Universal Services 公布该数据库,以便通过 Web 服务访问该数据库
- 使用 XML Forms Generator(XFG)创建一个用户界面,以便查看和操作 IRS e-File 1120 XML 文档
最后,了解如何以其他技术扩展利用端到端 XML 架构的应用程序,以完善它们的功能。在继续阅读本文之前,应确保已经安装和适当配置了先决条件中列出的软件。
先决条件
为了实践这些示例,需要正确安装下面列出的软件。
 |
注意 现在正在计划为 XML Forms Generator 开发一个更新。强烈建议您等到新年(2009)更新出来以后再试用 XML Forms Generator。
|
|
-
IBM DB2 Express-C(免费):利用 pureXML 技术本地存储 XML 数据的混合数据库系统。要了解更多信息,请参阅本文的 参考资料 小节。
-
IBM Data Studio(试用):这个开发环境提供了许多功能,例如将数据库操作公布为 Web 服务。IBM Data Studio 也是运行 XFG 所需的环境。要了解更多信息,请参阅本文的 参考资料 小节。
-
XML Forms Generator(免费):一个基于 Eclipse 的插件,通过它可以基于 XML 文档实例和 Web 服务描述语言(WSDL)文件生成 XForm。要在 IBM DB2 pureXML 中充分利用该插件的功能,必须将它安装到 IBM Data Studio 中。要了解更多信息,请参阅本文的 参考资料 小节。
创建用于存储 XML 的数据库(DB2 pureXML 行业包)
DB2 pureXML 行业包包含垂直行业 XML 文档示例、到相关 XML 模式的链接和示例代码,以帮助在垂直行业中的数据库管理员、软件开发人员和架构师学习 DB2 9.x pureXML 特性。行业包通常是为一个特定的行业而创建的,例如用于金融产品标记语言(FpML)或 IRS e-File 1120 格式的行业包。
本文使用 IRS e-File 1120 格式的行业包创建一个数据库,并以示例 XML 文档填充该数据库,以形成端到端 XML 架构的第一层(参见图 2)。
图 2. 第一层提供本地 XML 存储功能
要创建和填充 DB2 pureXML 数据库,请参阅 “通过 Data Web Services 使用面向 pureXML 的 Universal Services”(developerWorks,2008 年 5 月)” 的设置样例数据库 小节。如果需要更广泛地了解的行业包,请参阅 “Get started with Industry Formats and Services with pureXML”(alphaWorks,2006 年 10 月)。(请参阅 参考资料 小节)。
填充后的数据库将作为下一级开发的基础:通过 Web 服务公布数据库。
创建用于交互 XML 的 Web 服务(Universal Services)
Universal Services 基于 Data Web Services 机制,是一套固定的数据库操作,包括通过简单的 REST 或 SOAP 请求访问数据库的插入、更新、删除和查询操作,如图 3 所示。
可通过配置和执行一个命令行脚本来设置 Universal Services。该脚本将创建一个 Web 压缩文件(WAR),该文件可部署到应用服务器上,比如 WebSphere® Application Server 或 Apache Tomcat。
图 3. 第二层通过 Web 服务操作公布数据库
这里不再进一步阐释 Universal Services 的配置和安装,因为已在另一篇姊妹篇文章中描述。请参阅 “通过 Data Web Services 使用面向 pureXML 的 Universal Services” 的 Install the Universal Services 小节。要了解关于 Data Web Services 的更多信息,请参阅 参考资料 小节。
现在可以按照下面小节中的说明,开发一个用户界面(UI),以通过简单的 Web 服务请求访问数据库。
创建用于查看和操作 XML 的表单(XFG)
在接下来的小节中,创建用于查看和操作数据库中存储的数据的 XForm,这是第三层,即 “用户交互” 层,如图 4 所示。
图 4. 第三层用于查看和操作信息
可利用安装在 IBM Data Studio 中的 XFG 插件来创建 XForm。因此,这里对 XFG 插件作一个简单的介绍,并展示如何使用 XFG 创建 XForm。
XFG 概述
接下来的小节对 XFG 插件的功能作一个概述。如果需要获得关于 XFG 所有功能的更广泛、更详细的概述,请参阅 参考资料 小节中提供的相关系列文章 “Integration between XML Forms Generator and Data Studio”。
为了生成功能完整的 XForm,XFG 插件将生成过程建立在不同工件的基础上,这些工件是:要使用的 Web 服务的 WSDL 文件,一个示例 XML 文档,以及取决于 XML 文档的可选的 XML 模式。
图 5. XFG 插件使用的运行时工件
为了生成 XForm,XFG 插件首先分析 WSDL 文件,该文件描述通过一个特定的 Web 服务提供的所有 Web 服务操作(见图 5,序号 1)。当用户选择一个可用的操作之后,XFG 插件分析该操作的不同的输入参数,因为对于每个输入参数,需要在表单中生成一个适当的输入域。对于数据类型,例如整数或字符,要生成输入域就比较简单,但是对于 XML 类型的输入参数,就要更复杂一些。对于 XML 数据类型,不仅需要根据示例 XML 文档(见图 5,序号 2),可能还需要根据该 XML 文档背后的 XML 模式(见图 5,序号 3)来生成输入域。因此,该插件自动从数据库中检索一组示例 XML 文档实例(见图 5,序号 2)。在检索出的示例 XML 文档中,用户可以选择一个示例 XML 文档作为生成 XForm 的基础。如果 DB2 的 XML Schema Repository(XSR)中还提供了 XML 文档所引用的 XML 模式,那么用户可以选择在 XForm 生成过程中利用 XML 模式信息。
以上描述听起来似乎是一个复杂的过程,但是正如下面阐述的那样,这其实是一项简单的任务。在继续之前,请确认已经有一个包含 XFG 插件所需的所有工件的工作区。接下来的小节也描述工作区。
在 Data Studio 中创建和准备工作区
如上所述,XFG 插件生成 XForm 所需的工件之一就是描述所用的 Web 服务的 WSDL 文件。特别是,这意味着必须有一个工作区,其中包含描述 Universal Services 的 WSDL。为此,通常将 Universal Services 导入到一个新的或已有的工作区。由于 Universal Services 是预先为特定的示例数据库配置的,所以还需要对这些服务进行调整,以适合本文场景中使用的数据库。在继续阅读下面的说明之前,请注意:既可以像下面描述的那样导入并调整项目,也可以导入一个预先配置的项目,而不必作任何调整。建议采用后一种方法。
选项 1:导入原始的 Universal Services 数据开发项目
要导入并调整原始的 Universal Services 数据开发项目,可遵循 “通过 Data Web Services 使用面向 pureXML 的 Universal Services”(developerWorks,2008 年 5 月)的 Modify the Universal Services 小节中的说明。
选项 2(推荐):导入预先配置的 Universal Services 数据开发项目
为了使用预先配置的采用正确的数据库连接细节、表名和数据库模式名的数据开发项目,首先找到压缩文件 universal_services_data_studio_project_irs1120.zip,该文件在本文的 下载 小节中。要导入该压缩文件,请遵循 “通过 Data Web Services 使用面向 pureXML 的 Universal Services” 的 Import Universal Services Data Development Project 小节中的说明。注意,导入压缩文件后,不需要作进一步的调整。
使用 XFG
本节演示如何利用 XFG 生成用于 IRS e-File 1120 消息格式的 XML 表单。要生成 XForm,Data Studio 中需要有一个包含 Universal Services 数据开发项目的工作区,这个项目是在前面步骤中导入的。在 Data Studio 中,XFG 用户通过一个向导完成 XForm 的生成过程。后面将更详细地描述通过向导执行的所有步骤。
步骤 1:为了启动用于创建 XForm 的向导,在 Data Studio 的数据项目浏览器中找到描述 Universal Services 的 WSDL 文件,然后右键点击这个 WSDL 文件。这时会出现一个子菜单。在子菜单中选择 Generate XHTML/XForm,以启动向导,如图 6 所示。
图 6. 启动向导
步骤 2:如前所述,XFG 插件利用示例 XML 文档和 WSDL 文件来创建 XForm。为了从数据库中检索示例 XML 文档,XFG 插件需要用户凭证来访问数据库。因此需要提供一个有效的用户名和密码,如图 7 所示。而且,需要勾选 “Retrieve PureXML instance from Database” 选项,以触发 XFG 插件真正从数据库中检索示例 XML 文档。单击 Next 继续。
图 7. 配置数据库访问信息
步骤 3:XFG 分析完 WSDL 文件并识别了所有可用的操作后,向导允许用户选择其中一个操作。由于要使用 XForm 将新的信息插入到数据库中,因此选择名为 “insertXML()” 的操作,如图 8 所示。单击 Next 继续。
图 8. 选择 Web 服务操作
步骤 4:由于前一步骤中选择的操作包含一个 XML 类型的输入参数,向导允许您选择一个示例 XML 文档,作为创建适当的输入域和控件的基础。可通过单击 “Reference Instance” 列中的按钮检索示例 XML 文档(见图 9)。
图 9. 选择参考示例 XML 文档
这时弹出一个单独的窗口,其中显示从数据库中检索到的示例 XML 文档。这里需要选择一个示例 XML 文档(见图 10)。单击 OK 继续。
图 10. 选择参考示例 XML 文档
前一步骤中选择的示例 XML 文档现在用作生成 XForm 的输入域和控件的基础(见图 11)。单击 Next 继续。
图 11. 选择参考示例 XML 文档
步骤 5:XFG 要求提供一个适当的文件名和位置,以存储生成的 XForm。因此,可以保留默认的设置(见图 12),或者选择定制的文件名和位置。单击 Next 继续。
图 12. 为 XForm 选择一个文件名和路径
步骤 6:为了生成功能完整的 XForm,XFG 插件允许指定要使用的 Web 服务的端点。在当前场景中,指定的端点为 Universal Services 的 SOAP 端点(http://localhost:8080/UniversalServices/services/UniversalServices)。为了指定定制的端点,取消选择 Use default submit target,然后在 “Use this submit target” 输入域中输入 Universal Services 的 SOAP 端点(见图 13)。
图 13. 指定要使用的提交目标
步骤 7:XFG 插件使用的另一个工件是与 XML 文档实例相关联的 XML 模式。由于描述 XML 文档实例结构的 XML 模式让您可以定义强制性的或可选的元素和属性,因此向导允许在以下两个选项中作出选择:为所有元素和属性(包括可选的和强制性的)生成输入域,或者只为必需的元素和属性生成输入域。保留所有设置,不作任何更改,单击 Next 继续(见图 14)。
图 14. 选择要生成的元素和属性的类型
步骤 8:XFG 插件还允许存储用于作为生成 XForm 的基础的 XML 模式和示例 XML 文档。因此,为 XML 文档(见图 15)和 XML 模式(见图 16)选择一个文件名和位置。在每个步骤中,单击 Next 继续。
图 15. 为示例 XML 文档选择文件名和位置
图 16. 为 XML 模式选择文件名和位置
根据在向导的不同页面中选择的设置,最后生成了 XForm(见图 17)。
图 17. 最后生成的 XForm
运行应用程序
完成所有三个主要任务之后,就可以看看生成的 XForm 的实际效果。为了正确地呈现 XForm,需要使用 Mozilla Firefox。此外,Mozilla Firefox 还需要安装 Mozilla XForms 插件。注意,并不是所有的 Mozilla XForms 插件都与每个版本的 Mozilla Firefox 兼容。当前场景中使用的软件是 Mozilla Firefox, Version 2.0.0.18 和 Mozilla XForms plugin, Version 0.8.6ff2。这里呈现的 XForm 看上去类似于图 18 中显示的 XForm。
图 18. Mozilla Firefox 中呈现的 XForm,其中已输入数据
接下来,在可用的输入域中输入信息。注意两个输入域 “P1” 和 “P2”,它们是用于生成 XForm 的 Web 服务操作的两个输入参数。输入参数 “P1” 的数据类型是整型,另一个输入参数 “P2” 的数据类型是字符型。本场景中为演示 XForm 而为参数 “P1” 输入的数据为 “24”,为参数 “P2” 输入的文本为 “data entered through XForms”。在参数 “P1” 和 “P2” 的这两个输入域之后,还有很多根据示例 XML 文档(用于生成 XForm)的元素和属性创建的输入域。在任何输入域中都可以输入示例数据。
输入必要的数据后,向下滚动到表单的最后,找到 Submit 按钮(见图 19)。
图 19. 用于调用 XForm 的 submit 函数的 Submit 按钮
单击 Submit 调用 XForm 的提交函数,通过 Universal Services 将输入的数据插入到 DB2 pureXML 数据库中。然后将显示 Web 服务的响应消息,表明成功插入数据到数据库中(见图 20)。
图 20. 来自 Web 服务的响应
为确保新记录被插入到数据库中,Universal Services 包括了测试页面。如果要了解关于访问测试页面的更多信息,请参阅 “通过 Data Web Services 使用面向 pureXML 的 Universal Services” 的 Test the Universal Services 小节。访问 Universal Services 的 URL 通常是 http://localhost:8080/UniversalServices/wsdl。注意,主机名和端口可能因本地系统的配置而异。
在测试页面上,导航到操作 getXMLDocumentByKey,并输入新创建的记录的标识符(例如,在 XForm 输入域 “P1” 中输入数字 “24”),然后单击 Invoke 调用 Web 服务操作。
结果会显示之前输入到 XForm 中的数据,如图 21 所示。
图 21. 之前输入到 XForm 中的信息
扩展应用程序
本文已经展示了利用端到端 XML 架构创建应用程序的简易性和快捷性。然后,还可以根据反馈调整用户界面和 Universal Services。此外,还可以扩展应用程序的其他功能。
验证输入到 XForm 中的数据就是一个可行的扩展。当前,通过 XFG 插件生成的 XForm 可能只包含简单的验证规则,这些规则是根据 Web 服务使用的输入参数的元数据和用作生成 XForm 的基础的 XML 模式生成的。然而,还有一种验证 XML 内容的技术是 Schematron,这项技术可以与 XForm 结合起来使用。在文章 “将 Schematron 约束自动应用于 XForms 文档”(developerWorks,2006 年 6 月)中可以找到一个关于如何将 Schematron 验证规则合并到 XForm 中的例子。
另一种选择可能更适合较复杂的应用程序,那就是将结构和内容验证委托给外部设备,比如 IBM WebSphere DataPower SOA appliance。后者是一种 XML 处理硬件,它提供很多功能,比如 XML 模式验证和 Schematron 验证。一个示例场景就是将输入到 XForm 中的数据提交给 IBM WebSphere DataPower SOA appliance,如果验证成功,后者再将数据传递到 Universal Services,以便最终将数据插入到数据库。否则,数据应该被拒绝。如果要查看关于如何在 Universal Services 的上下文中使用 IBM WebSphere DataPower SOA appliance 的实例,请参阅 “使用 DataPower 和 DB2 pureXML 实现 XML 模式和内容验证”(developerWorks,2008 年 5 月)和 “WebSphere DataPower and DB2 pureXML, Part 2”(developerWorks,2008 年 6 月)。
结束语
本文展示了通过一种端到端的 XML 架构轻松地创建一个功能完整的应用程序。正如本文所述,创建应用程序需要三个基本步骤,其中每个步骤都可以通过可用的工件得到支持。
在应用程序架构的每个层中都利用 XML 来创建应用程序的主要优点是无需将数据从一种格式转换为另一种格式。实际上,存储、交换、查看和操作信息使用的格式都是相同的。
希望本文能够帮助您充分利用端到端的 XML 架构快速开始项目。
下载 | 描述 | 名字 | 大小 | 下载方法 |
|---|
| Universal Services 数据开发项目 | universal_services_data_development_project_irs1120.zip | 204KB | HTTP |
|---|
参考资料 学习
获得产品和技术
讨论
作者简介  | 
|  | Ronny Bartsch 是 IBM Information Management Group(隶属于 IBM software Group)的软件开发人员。他使用 XML 和 DB2 pureXML 开发过与行业标准相关的行业包和演示稿。 |
 | 
|  | Susan Malaika 是 IBM Information Management Group(属于 IBM Software Group)的一名高级技术人员。她的专长包括 XML、Web 和数据库。她曾在 Global Grid Forum 开发过支持网格环境数据的标准。她与人合作出版了关于 Web 的专著,发表了关于事务处理和 XML 的文章。她是 IBM Academy of Technology 的成员。 |
 | 
|  | Christian Pichler 是来自奥地利维也纳技术大学的带薪实习生,正在撰写计算机工程和计算机科学双硕士学位的论文,论文主题是医疗保健。在 IBM 的实习阶段,Christian 现在从事将 XML 存储到 DB2,以及通过 Web 服务、提要和 XForm 访问 XML 方面的工作。他专长于医疗保健方面的 XML 标准。 |
对本文的评价
|