ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用IBM Workplace Forms V2.6将XML数据模型扩展到XFDL表单

使用IBM Workplace Forms V2.6将XML数据模型扩展到XFDL表单

原创 Linux操作系统 作者:genusBIT 时间:2008-08-26 09:26:18 0 删除 编辑

学习如何通过 IBM Workplace Forms 使用 XML 数据模型来分离表单的数据层和表示层。IBM Workplace Forms 提供了一组接口,可以使用它们创建电子表单,同时保持纸制表单的不可否认性和可审计性。

每一年,各个组织都要花费数十亿美元打印纸制表单。为了节省这一费用,Extensible Forms Description Language(XFDL)被开发出来。XFDL 是 XML 的一种应用,它帮助将传统基于纸张的表单转移到互联网上,同时保持纸制表单的不可否认性和可审计性。XFDL 还可以促进应用程序的互操作性,促使应用程序符合互联网标准。

本文讨论用于 XFDL 表单的 XML 数据模型概念。我们以一个简单的 XFDL 表单(一个休假申请)为例,演示如何使用 XML 数据模型分离表单的数据层和表示层。在本文中,学习 XML 数据模型概念,对 XML 数据模型和 XForms 模型进行比较,并学习创建 XML 数据模型的步骤。

XML 数据模型简介

XFDL 是以文档为中心的:它将表单的表示、逻辑和数据组合在一个文件中。换句话说,表单的数据嵌入在 XFDL 表单本身中。这种以文档为中心的性质使 XFDL 成为合法绑定的文档。XFDL 的目的是为法律文档和数字签名的文档提供不可否认性。因此,需要存储整个表单,包括逻辑、数据和表示。但是,一些应用程序(比如职员的休假申请表单)不需要处理或存储整个表单。在这种情况下,只将必要的数据(比如姓名、日期和休假类型)发送给进行处理的应用程序,而不需要发送整个表单。

由于这个原因,引入了 XML 数据模型。利用 XML 数据模型,可以将现有的 XFDL 表单与提供 XML 接口的应用程序轻松地集成起来。通过给 XFDL 表单添加 XML 数据模型,可以收集必需的数据并将数据放在单独的 XML 块中。这是一个任意的 XML 块,这意味着可以对它进行格式化来匹配任何 XML 模式。通过这种方式,表单的数据就与实际表示(用户界面)分离开了。不需要将整个表单传递给进行处理的应用程序,而是可以定义要从表单收集哪些数据,以及要将哪些数据发送给进行处理的应用程序。

图 1 显示在表单中输入的数据被自动地填入一个 XML 块。当触发提交时(通常是使用 Submit 按钮),就发送 XML。只要 XML 符合定义的模式,接收 XML 的应用程序就能够几乎立即执行处理。这就可以避免编写从 XFDL 表单提取数据的定制代码,大大减轻了工作负担。正如前面提到的,这个 XML 块可以以任何方式进行格式化。



从 XFDL 表单中分离出数据层

您可能会问:既然 XFDL 是基于 XML 的,那么为什么还需要创建另一个 XML 块来携带数据?这是为了能够控制数据。对于大型的复杂表单应用程序,尤其如此。我们来看看图 2 所示的示例。如果不使用 XML 数据模型,就需要处理表单字段中嵌入的所有数据,这使数据难以提取和维护。

如右边的 XML 片段所示,如果使用 XML 数据模型,那么只收集必需的数据。产生的 XML 只包含必需的数据,非常简洁。



典型的 XFDL 和 XML 模型

除了促进互操作性之外,XML 数据模型还可以简化表单页面之间的信息交换。通过使用这个模型,在一个页面上进行的数据修改可以自动地反映在另一个页面上。这是通过绑定实现的,后面的一节将详细讨论绑定。

Smartfill 是 IBM Workplace Forms 中的一个特性,它也基于这个模型。通过使用 Smartfill,可以根据保存的用户数据自动地完成表单的填写。这会显著减少填写表单所用的时间、减少人为错误并改进总体用户体验。

为了创建完整的 XML 数据模型,需要三个元素 —— 数据实例、绑定和提交规则。

数据实例

数据实例是任意的 XML 块。在一个 XML 数据模型中可以有多个数据实例。如果有多个数据实例,那么必须为每个实例定义惟一的 ID。在清单 1 中,使用 LeaveAppInstance 作为实例 ID。这个实例包含用来存储休假申请细节的四个元素:姓名、休假类型、开始日期和结束日期。可以按照任何方式对实例数据进行格式化,只要它与定义的模式匹配即可。清单 1 是休假申请数据实例的一个示例。




   
      David
      Annual
      8 February 2007
      9 February 2007
      
      

要想定义更多的数据实例,就添加另一个 块。最佳实践是根据用途对数据进行分组。以休假申请为例;可能需要两个数据实例 —— 一个发送给处理休假的应用程序,另一个发送给更新日历的应用程序。

绑定

绑定描述 XML 数据模型中的元素与表单上的字段之间的关系。绑定是使用 标记定义的。图 3 描述了表单上 Name 文本字段和数据实例的 Name 元素之间的关系。



表单元素和 XML 数据模型之间的关系

图 4 说明了在 Page 1、Page 2 和休假申请数据之间创建的关系。对 Page 1 的修改会更新 Page 2。

表单页面之间的关系示例

提交规则

提交规则控制将哪些数据实例传输给进行处理的应用程序,以及如何传输。如果希望将整个表单提交给进行处理的应用程序,那么就不需要提交规则。在提交规则的 submissions 属性中定义要提交哪些数据实例。提交规则通常与表单的 Submit 按钮相关联。

XML 数据模型还有其他组成部分,比如用于数据实例检验的模式和 Smartfill 使用的数据片段。本文中不讨论模式和数据片段的细节。

XML 数据模型和 XForms 模型

XML 数据模型是在 IBM Workplace Forms 以前的版本中引入的。从 IBM Workplace Forms V2.6 开始,有两种数据模型可供选择:XML 数据模型和 XForms 模型。

XForms 模型的用途与 XML 数据模型相似:对数据层和表示层进行分离。与 XML 数据模型相似,XForms 模型也用来描述数据。XForms 模型也由三个核心部分组成,它们合在一起组成一个完整的模型:数据实例、绑定和提交。

XForms 是一个 World Wide Web Consortium(W3C)标准,它将是下一代的表单。因此,如果要创建新的表单,并希望在其中添加数据层,那么可以考虑使用 XForms。但是,使用 XForms 模型并不总是可行的,尤其是对于包含 XFDL 元素的老式表单。将每个单独的 XFDL 元素转换为 XForm. 元素非常耗费时间,对于大型的复杂表单应用程序尤其如此。因此,本文讲解如何为现有的表单创建 XML 数据模型。

为 XFDL 表单创建 XML 数据模型

在创建 XML 数据模型之前,首先必须有一个表单。表单可以是现有的 XFDL 表单;如果您只是想学习概念,它也可以是用 IBM Workplace Forms Designer 创建的新表单。为了方便讲解,我们创建一个简单的休假申请表单,供本文使用。可以从本文的 “下载” 一节下载这个表单。这里不讨论创建这个表单的详细方法。

需求

要想执行下一节中的步骤,需要安装以下产品:

  • IBM Workplace Forms Designer V2.6
  • IBM Workplace Forms Viewer V2.6
  • Microsoft Internet Explorer V6.0

休假申请表单是一个典型的 XFDL 表单,它没有启用 XML 数据模型。这个表单由 5 个字段组成:

  • Name。这是用来输入申请人姓名的文本字段。
  • Leave type。这是一个弹出控件,申请人可以在这里选择休假的类型,例如年假、病假和婚假。
  • Start date。这是一个日期选择组合框,用来输入休假的开始日期。
  • End date。这是一个日期选择组合框,用来输入休假的结束日期。
  • Submit。这是用来提交休假申请的按钮。

前 4 个元素(Name、Leave Type、Start Date 和 End Date)是要收集的数据,也就是要放在一个数据实例中的数据。Submit 按钮触发向进行处理的应用程序提交这个数据实例。休假申请表单见图 5。



休假申请表单示例

准备环境

为了使用 XML 数据模型,需要两个视图:XMLModel 视图和 XMLModel Instance 视图。IBM Workplace Forms 的默认透视图不显示这些视图。按照以下步骤启用这些视图:

  1. 在 IBM Workplace Forms Designer 中,导航到 Window - Show View - XMLModel,见图 6。重复这个步骤来启用 XMLModel Instance 视图。XMLModel 视图提供 XML 数据模型的预览,包括数据实例、绑定(已经绑定的字段)和提交(提交规则和操作)。另一方面,XMLModel Instance 视图提供定义的实例的预览。

图 6. 启用 XMLModel 和 XMLModel Instance 视图
启用 XMLModel 和 XMLModel Instance 视图

  1. 确认 XMLModel 和 XMLModel Instance 视图可见。

创建 XML 模型

在默认情况下,休假申请的示例表单没有启用 XML 模型,所以要在休假申请表单中添加一个 XML 数据模型。在 XMLModel 视图中,右击 “No XML Model Exists” 并选择 “Add XML Model”。这样做之后,可以看到创建了模型 “XML Model Instances (1) instances”。

点击表单的 Source 视图。然后,会看到表单中添加的 XML 数据模型 和默认的数据实例 。




   
      
   


注意:通过从 XMLModel Instance 视图选择 “Create XML Model Instance” 可以添加任意数量的数据实例。在本文中,我们使用默认数据实例(即 instance1)。如果有多个实例,那么必须为每个实例分配惟一的 ID。

接下来,将实例 ID 重命名为 LeaveAppInstance。重命名可以在 XMLModel Instance 视图或表单的源代码中进行。源代码与清单 3 所示的代码相似。







回到 Design 视图。

在 LeaveAppInstance 数据实例中添加元素

在前一节中,学习了如何创建 XML 数据模型和数据实例(默认实例)。每个 XML 数据模型可以包含任意数量的数据实例;数据实例链接到一个按钮,这个按钮用来触发数据实例的提交。在将数据实例链接到 Submit 按钮之前,需要先完成一些步骤。必须定义希望包含在数据实例中的元素和属性 —— 在这个示例中,是姓名、休假类型、开始日期和结束日期。执行这个步骤的方法是将元素和属性添加到数据实例中。

  1. 创建一个称为 LeaveApplicationData 的元素,它用来包含 4 个子元素(Name、Leave Type、Start Date 和 End Date)。在 XMLModel Instance 视图中,右击 并选择 Add Element。
  2. 创建新元素 。
  3. 右击 并选择 Rename。将它命名为 LeaveApplicationData。
  4. 重复步骤 1 到 3 来创建姓名、休假类型、开始日期和结束日期的元素。这四个元素是 LeaveApplicationData 的子元素。最终结果见图 7。


对子元素/属性进行分组




   
      
          
			
			
			
			
			
		
	


  1. 保存表单。

将元素绑定到表单

已经创建了数据实例并在这个实例中添加了元素。接下来,将数据实例中的每个数据节点绑定到表单上的 XFDL 元素。这会在数据节点和 XFDL 元素之间创建链接。如果修改其中之一的值,绑定的另一个元素就会更新来反映修改。

  1. 在 XMLModel Instance 视图中,点击元素 Name;将它拖动到要绑定的 XFDL 元素上 —— 在这个示例中,是表单设计视图上的 Name 文本字段。
  2. 在 XMLModel 视图中,确认绑定已经成功创建了。应该会看到图 8 所示的绑定细节。


绑定示例

  1. 对于 LeaveType 重复步骤 1 和 2。
  2. 对于 StartDate 和 EndDate 绑定,在通过拖放创建绑定时,可能会发现一个问题。这是一个已知的问题,计划在 IBM Workplace Forms Designer 的下一个版本中修复。目前,需要手工创建这些绑定。将清单 5 中的代码添加到表单的源代码中,放在 LeaveType 元素的 标记后面, 的前面。

清单 5. StartDate 和 EndDate 的绑定定义

   
   [custom:LeaveApplicationData][custom:StartDate]
   PAGE1.combo_startDate.value


   
   [custom:LeaveApplicationData][custom:EndDate]
   PAGE1.combo_endDate.value


  1. 在 XMLModel 视图中,确认已经成功创建了 StartDate 和 EndDate 的绑定。

现在,已经创建了表单元素和数据实例中数据节点之间的关系。对数据层的修改会更新表示层,对表示层的修改也会更新数据层。可以将数据节点绑定到表单上的多个字段;这样元素就能共享数据。在表单有多个页面的情况下,这尤其有用;比如,用户就不必在表单的每个页面上重新输入他们的姓名。通过将 Name 数据节点绑定到表单上的 Name 元素,数据就可以同步了。

提交 XML 模型

现在,已经创建了模型、实例和绑定。接下来,创建提交规则和 Submit 按钮,从而触发向进行处理的应用程序提交数据实例。这个提交规则定义提交哪个数据实例,以及如何提交。提交规则是可选的;只有在希望提交数据实例而不是整个表单的情况下,才需要提交规则。

创建提交和提交规则的步骤如下:

  1. 在 XMLModel 视图中,右击 XML 模型并选择 Create submissions。
  2. 确认已经创建了 submissions。
  3. 接下来,创建提交规则,提交规则定义提交哪些数据以及如何提交。在 XMLModel 视图中,右击 submissions 并选择 Create submission。
  4. 接下来,设置提交的属性。选择步骤 3 中创建的提交规则,见图 9。然后在 Properties 视图中展开 Miscellaneous 属性;会看到可以配置的一系列属性。ID 是提交规则的惟一名称,instanceid 用来指定要提交的实例,见图 10。在默认情况下,提交表单中的第一个实例。如果希望提交其他数据实例,那么必须指定实例 ID。


提交规则



提交规则的属性

  1. 按照表 1 所示的建议修改属性值。提交规则(名为 LeaveSubmission)用来提交前面创建的 LeaveAppInstance 数据实例。将目标输出设置为 application/xml 内容类型。

    对于本文,不需要提交给任何操作。如果希望将 XML 提交给一个操作,那么必须在这里指定操作 URL。Includenamespace 和 ref 是可选的。如果希望限制数据实例继承的名称空间,那么将它们添加到 Includenamespace 属性中。只有在希望提交数据实例的一部分的情况下,才需要 ref 属性。

表 1. 建议的属性值
属性 值
id LeaveSubmission
instanceid LeaveAppInstance
action <保持为空>
mediaType application/xml
Includenamespace <保持为空>
ref <保持为空>
  1. 接下来,创建触发提交的 Submit 按钮。下载的休假申请示例表单包含一个 Submit 按钮。接下来,需要修改这个按钮的属性。首先,选择 Submit 按钮。
  2. 在 Properties 视图中,点击向下的箭头,然后选择 Show Advanced Properties,见图 11。

图 11. 显示 Submit 按钮的高级属性
显示 Submit 按钮的高级属性

  1. 在 General 下面,将值设置为 Submit,类型设置为 submit,见图 12。

图 12. 配置 Submit 按钮的属性
配置 Submit 按钮的属性

  1. 接下来,在 url 属性中输入要将数据发送到的 URL。

    注意:目标 URL 可以是 servlet、cgi 脚本或提供 XML 接口的应用程序。关于编写接收 XML 的应用程序的更多信息,请参考 IBM Workplace Forms Designer documentation: Using the XML data model。
  2. 展开 Transmit。
  3. 将 transmitformat 设置为 application/xml;id="SubmissionID",见图 13。

图 13. 配置 Submit 按钮的属性
配置 Submit 按钮的属性

  1. 将 SubmissionID 替换为提交规则的名称(即 LeaveSubmission),见图 14。


修改传输格式

  1. 保存表单。

恭喜!您已经完成了创建 XML 数据模型的步骤。要提交表单,只需点击 Submit 按钮。XML 数据将发送到前面指定的操作 URL。如果没有任何接收 XML 的应用程序,那么可以在 Submit 按钮的属性中将 URL 指定为一个电子邮件地址(例如 mailto:example@my.ibm.com),从而进行快速的测试,见图 15。


图 15. Submit 按钮的属性
Submit 按钮的属性

保存修改并提交表单。XML 输出如清单 6 所示。




            xmlns="http://www.ibm.com/xmlns/prod/XFDL/Custom"
            xmlns:custom="http://www.ibm.com/xmlns/prod/XFDL/Custom"
            xmlns:designer="http://www.ibm.com/xmlns/prod/workplace/forms/designer/2.6"
            xmlns:xfdl="http://www.ibm.com/xmlns/prod/XFDL/7.0"
            xmnls:xforms="http://www.w3.org/2003/xforms">
                       
            David
            Annual
            8 Feb 2007
            9 Feb 2007
 

结束语

XML 数据模型可以将 XFDL 表单与提供 XML 接口的应用程序轻松地集成起来。XML 数据模型创建一个用来收集表单数据的 XML 块。因此,不必发送整个表单,而是只发送必需的数据。IBM Workplace Forms Designer(现在称为 IBM Lotus Component Designer)提供了一组接口,可以使用它们为 XFDL 表单创建 XML 数据模型,使 XFDL 表单与支持 XML 的应用程序的集成更简单。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14751907/viewspace-434635/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-04

  • 博文量
    233
  • 访问量
    483861