W3C 已经为表单数据的表示和收集开发了 XForms 标准。如 W3C 推荐标准所述(参见 参考资料),XForms 的目标是成为 “下一代 Web 表单”。该建议还声称 “通过将传统的 XHTML 表单拆分为 3 部分(XForms 模型、实例数据和用户界面)把表示与内容分离开来,允许重用,实现了强类型,从而减少了往返服务器的次数,提供了设备独立性,并且减少了编程”。XForms 文档带有一个包含一个或多个 XML 实例文档的数据模型。表单将处理这类实例文档,并且将该 XML 的提交传递给后端系统。
XML Forms Generator 工具为表单开发提供一个好的开端。它能够快速自动地生成有效的表单,其中包含 XHTML 文档中内嵌的 XForms 标记(在本文中,我们将这个组合称为 “XHTML/XForm”)。表单生成的输入可以是带有或不带有后端 XML Schema(或 WSDL 文档)的 XML 数据实例。
XML Forms Generator 是开源的 Eclipse Workbench 的一个插件,于 2005 年 4 月首次在 alphaWorks 上发布。参见 参考资料 获得 Eclipse Workbench 下载站点和提供 XML Forms Generator 的 alphaWorks 页面的链接。这些站点帮助您了解、下载和安装工具。
Data Studio 和 Data Web Services
IBM Data Studio 是一个集成数据管理环境。它为构建数据库对象、查询、数据库逻辑和 pureQuery 应用程序提供一个完整的开发和测试环境。通过使用 Data Studio 工具,您可以借助 SQL 和 XQuery 集成查询编辑器更快地开发数据库应用程序,轻松地优化应用程序和查询,借助交互式例程调试器构建和测试存储过程(用 Java™ 代码和 SQL),并且可以在 Java 应用程序内部快速开发或定制 SQL。
IBM Data Studio 解决方案包含许多新特性,其中之一便是 Data Web Services 支持。Data Web Services 是 IBM 数据库服务器的下一代 Web 服务供应商。Data Web Services 提供一个完整的 Web 服务界面,该界面支持 REST 式服务(HTTP GET/POST 绑定)、SOAP over HTTP Web 服务,以及自动生成 WSDL。Data Web Services 支持 IBM DB2® 数据库家族、IBM Informix® Dynamic Server (IDS) 和许多流行的 Web 服务器,比如 Apache Tomcat v5.5、IBM WebSphere® Application Server V6.1 和 IBM WebSphere Application Server Community Edition V1.1。您可以从已发表的 developerWorks 文章(参见 参考资料)更多地了解如何使用 Data Studio 创建 Data Web Services。
Data Studio 在数据库和中间件层上大大方便了 Data Web Services 开发,而 XFG 通过 WSDL 文件生成功能能够提高基于 XForms 的 UI 开发的效率。因此我们将 XFG 集成到 Data Studio,以跨数据库、Web 服务提供自动的快速开发流程,并且提供一个基于 XForms 的 UI,以创建一个使用 Data Studio 和 XFG 特性的完整解决方案。
集成 Data Studio 和 XFG 带来的好处包括:
- XFG 是一个快速的原型化工具和 XML Message 可视化工具,用于 Data Studio 中的数据库项目。
- XFG 与 Data Studio 是互补的,以帮助快速开发 UI。
- XFG 可以将 DB2 pureXML 数据可视化为 XHTML/XForms。
- XFG 从数据库元数据和 XML Schema 生成验证信息。
- 这种集成能够降低开发工作负载,并且能够大大改善用户体验。
XFG 和 Data Studio 都是 Eclipse 插件,Eclipse 使两者的集成更加假单。要轻松集成 XFG 和 Data Studio,从更新站点下载 XFG 插件,并且将其安装到 Eclipse(参见 参考资料 获得 XML Forms Generator)。
这个小节介绍如何结合使用 XFG 和 Data Studio 来创建 web 应用程序。图 1 显示了 XFG 和 Data Studio 之间的架构和交互。
图 1. Data Studio 和 XFG 架构和交换图
在交互流程中,Data Studio 从数据库元数据生成 Data Web Services。然后,XFG 利用 Data Web Services 和数据库元数据生成 XHTML/XForms。最后,生成的 XHTML/XForm 通过 REST/SOAP 与 Data Web Services 通信。
为了演示 Data Studio 和 XFG 如何协同工作的详细步骤,您需要根据下表的结构创建一个微型的患者信息管理应用程序。
| 列名 | 列类型 | 必需 | 描述 |
|---|---|---|---|
| ID | INTEGER | Y | 表示针对插入到表中的每个记录的惟一 ID。 |
| NAME | VARCHAR(10) | Y | 患者的姓名。 |
| BIRTHDAY | DATE | Y | 患者的出生日期。 |
| HEIGHT | DECIMAL | Y | 患者的身高。 |
| WEIGHT | DECIMAL | Y | 患者的体重。 |
| DESCRIPTION | VARCHAR(10) | Y | 关于患者的简短描述。 |
要尝试这个示例,需要下载免费的 DB2 Express-C(参见 参考资料 获得下载站点)。使用 DB2 Control Center 创建一个数据库,然后创建一个与 图 2 中的描述匹配的表。在这个例子中,我们使用模式 “DB2ADMIN” 创建一个名为 “PATIENT” 的表。
在 DB2 中创建表之后,我们使用 Data Studio 创建 Data Web Services。为完成这个任务,Data Studio 使用创建的 SQL 定义 web 服务(单一的 SQL 语句或存储过程)。使用 SQL 语句时,所有参数将映射到 Data Web Services 的 WSDL 中的输入参数。Data Studio 和 XFG 支持两种参数样式:未命名参数和命名参数。
如果使用未命名参数,SQL 语句类似于:
INSERT INTO DB2ADMIN.PATIENT (NAME, BIRTHDAY, HEIGHT, WEIGHT, DESCRIPTION) VALUES (?,?,?,?,?)
注意,这些值由变量占位符 (?,?,?,?,?) 表示。
如果使用命名参数,SQL 语句将带有一系列包含插入值的命名变量,类似于:
INSERT INTO DB2ADMIN.PATIENT (NAME, BIRTHDAY, HEIGHT, WEIGHT, DESCRIPTION) VALUES (:NAME, :BIRTHDAY, :HEIGHT, :WEIGHT, :DESCRIPTION)
使用命名参数时,生成的 XHTML/XForm 中的每个标签都与对应的参数名相同;使用未命名参数时,将为每个标签分配名称,比如 p1,p2 等等。这里不描述整个过程。要查看如何从 SQL 文件创建 Data Web Services,请参考 参考资料。在我们的示例中,创建了一个名为 insertPatient.sql 的 SQL 文件,然后创建相应的服务和一个名为 insertPatient.wsdl 的 WSDL 文件。
从 Data Studio 创建和部署服务之后,您可以使用 XFG 生成与服务通信的 XHTML/XForm 和相应的 XML 文件。
- 使用 XFG 时,选择 insertPatient.wsdl 文件,右键单击 WSDL 文件,然后从 XForms Generator 菜单项选择 Generate XHTML/XForms 向导。图 2 显示了第一个向导步骤:
图 2. 使用 XFG 向导的第一个步骤
这个步骤需要用户名和密码,以连接到底层数据库。对于两个选项 “Generate validation information” 和 “Retrieve PureXML instance from Database”,它们在 DB2 中与 pureXML 支持一起使用,我们将在本系列的第二篇文章中讨论这个问题;现在,不要选择这两个复选框。
- 选择生成 XFG 的操作。选择 insertPatient 操作。
图 3. 选择一个目标操作
- 为生成的 XHTML 文件指定一个位置。
图 4. 为目标文件指定位置
- 将在 图 5 中突出显示的提交目标更改为已部署的 Web 服务的端点。只有正确设置端点之后(虚线矩形内),生成的 XHTML/XForm 才能够与 Web 服务通信。
图 5. 定制输出文档
- 配置 XML 实例创建选项,如 图 6 所示。
图 6. 为 XML 实例的创建选择选项
- 为 XML 实例文件输入或选择位置。
图 7. 指定 XML 文件的位置
- 提供 XML 模式文件位置。
图 8. 指定模式文件的位置
- 最后,单击 Finish 生成 XHTML/XForm。生成的 XHTML 文件名为 insertPatient.xhtml。
在 insertPatient.xhtml 中,XFG 生成一个 XForms 模型和相关的绑定属性,如 清单 1 所示(查看清单 1 的 更详细版本)。在 XForms 模型中,XFG 生成 XForms 绑定属性形式的数据约束,它与数据库元数据相对应,比如列类型、长度、是否是必需的,等等。
清单 1. 生成的 XForms 模型和绑定属性
在 Firefox 中查看 insertPatient.xhtml 时,将看到如图 9 所示的屏幕(参见图 9 的 更详细版本):
图 9. 在 Firefox 浏览器中查看 insertPatient XHTML/XForms
从显示的 insertPatient.xhtml 视图中,我们可以看到:
- 所有必填的字段后面都标有一个红色的星号。除了 DESCRIPTION 字段之外,其他字段都是必需的。
- 如果输入不正确的值,标签将变成红色,警告用户验证错误。如图 9 所见,“HEIGHT” 是一个小数,但我们输入了字符串值。(如果采用彩色显示,可以看到标签是红色的)。
- 表单中的每个字段都有提示消息。如您所见,刚才显示了 “HEIGHT is (decimal, REQUIRED)”。
- 对于类型是 Date、Boolean 的字段,或者能够通过特殊部件可视化的其他字段,当编辑它们的值时,相应的部件将显示值的字段。例如,Date Picker 将显示为 Date 类型,而 CheckBox 将显示为 Boolean 类型。
使用 insertPatient.xhtml 时,您可以通过提交表单与 Web 服务通信。像前面一样,Web 服务将调用 SQL INSERT 语句,使用表单中的值将一行插入到表中。您可以转到后端数据库表查看内容;您将看到一个相应的记录已经成功添加到表中。
本文简单介绍了 XForms、XForms Generator、Data Studio 和 Data Web Services,然后说明集成 XFG 和 Data Studio 的理由。我们演示了 XFG 如何与 Data Studio 协调工作,从而为终端用户构建完整的数据服务解决方案提供一种无缝的方法。在本系列的第二篇文章中,我们将概述 XFG 中的 DB2 pureXML 支持。我们将讨论如何在与 pureXML 实例对应的注册 XML 模式的支持下,通过集成 XFG 和 Data Studio 将 pureXML 实例可视化为 XHTML/XForms。
学习
- 您可以参阅本文在 developerWorks 全球网站上的 英文原文。
- W3C Recommendation for XForms:访问这个面向 Web 表单的组织,了解如何将分离目标、表示和结果的能力与 XML 结合起来。
- Data Web Services:访问 IBM 数据库服务器的新方式 —— 构建 Web 服务(Vijay Bommireddipalli,developerWorks,2008 年 1 月):在这个关于 Data Web Services 的概述中,学习如何构建 Data Web Service,并生成基于 Web 服务的数据库访问。
-
DB2 XML wiki:查找与 DB2 9 和 pureXML 相关的论文、演讲稿和演示。作者推荐将 DB2 Demo program(George Baklarz,developerWorks,2008 年 2 月更新)作为入手点。
- XML Forms Generator/Data Studio Overview(alphaWorks,2008 年 11 月):使用这个 Eclipse 插件生成遵循 XForms 1.0 标准的表单。
- XForms 教程(W3 组织):学习在您的应用程序中使用 XForms,它是下一代的 HTML 表单。
- Web services on developerWorks:获得提高 SOA 和 Web 服务方面的技能所需的资源。
- Information Management on developerWorks:访问并查找如何将 SOA 和 Web 服务与 IBM Information Management 产品结合使用的资源。
- Information Management Data Studio 专题:访问并查找 Data Studio 产品以及开发 SOA 和 Web 服务应用的相关资源。
- Eclipse.org:访问 Eclipse 站点。这个开源社区的项目主要关注构建一个开源的开发平台,其中包含用于跨生命周期构建、部署和管理软件的可扩展框架、工具和运行时。
- IBM XML 认证:了解如何才能成为一名 IBM 认证的 XML 和相关技术的开发人员。
- XML 技术库:访问 developerWorks XML 专区,获得广泛的技术文章和技巧、教程、标准和 IBM 红皮书。
- developerWorks 技术活动和网络广播:随时关注技术的最新进展。
- 技术书店:浏览关于这个主题和其他技术主题的图书。
- developerWorks
podcasts:收听针对软件开发人员的有趣访谈和讨论。
获得产品和技术
- Web Tools Platform (WTP) Project:获取 Eclipse Web Tools Platform (WTP) 项目,并使用开发 Web 和 Java EE 应用程序的工具扩展 Eclipse 平台。它包含针对各种语言、向导、内置应用程序的源代码和图形编辑器,从而简化了开发。此外,还提供支持部署、运行和测试应用程序的工具和 API。
- DB2 Express-C:下载 DB2 Express 9 数据库服务器的免费试用版。
- DB2 for Linux™, UNIX™, and Windows.:下载交互式数据服务器的免费试用版,它将 XML 的优点与 DB2 的高性能和易用性结合起来。
- XML Forms Generator/Data Studio on
alphaWorks:下载基于标准的、数据驱动的 Eclipse 插件。它使用嵌入在 XHTML 文档中的 XForms 标记从 XML 数据实例或 WSDL 文档生成有效表单。
- IBM Data Studio:下载集成数据库开发环境的免费试用版。它通过提高数据访问效率和数据性能来加快应用程序的设计、开发和部署。
- IBM 产品评估试用软件:使用可直接从 developerWorks 下载的 IBM 试用软件构建您的下一个项目,包括来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。
讨论
- 参与论坛讨论。
- Data Studio Team
blog:查看这个 blog 并加入 Data Studio Space。
- XML 专区讨论论坛:参与几个与 XML 有关的讨论之一。
- developerWorks blogs:查看这些 blogs 并加入 developerWorks 社区。

Xiao Feng Zhao 是 China Emerging Technology Institute, China Software Development Laboratory 的资深软件工程师。他专注于 IBM Incubator 项目。他感兴趣的领域包括 Web 2.0、SOA、J2EE 和 Web 技术。目前,他从事于 Ajax 和 SOA 标准的 PoC 开发。

Qiang Wang 是 China Technology Institute, China Software Development Laboratory 的技术主管。他专注于 IBM Incubator 项目和与 SOA 相关的东西。他感兴趣的东西包括 J2EE、SOA、MDA/MDD、AOP、RUP 和项目管理。目前,他负责领导一些与 SOA 相关的行业解决方案。

