Lotus Forms 通过构建动态的电子表单,收集用户信息并将其传递给其他应用系统,以实现业务流程的管理。与纸质表单相比,电子表单的最大优势之一就是能够动态地响应用户活动。如,根据用户输入动态改变背景颜色,响应鼠标点击事件发送邮件或提交表单,等等。本文将通过若干实例,向您详细讲述 Lotus Forms 中对计算功能的支持。作为复杂事件处理的基础,计算功能允许设计者通过编程实现表单对用户活动的响应。
Lotus Forms 概述
Lotus Forms 提供了一种以电子表单的形式收集用户信息并将其传递给其他应用系统的方式。它可以作为业务流程的前端,例如申请保险索赔。当用户完成表单进行提交后,这些用户信息就会作为输入传输给业务流程、数据库,或者其他类型的应用系统。Lotus Forms 是一个产品家族,它包括三种产品:
Lotus Forms Designer :该产品是一个基于 Eclipse 的图形化设计工具,用于创建和编辑 XFDL 表单。
Lotus Forms Viewer :该产品帮助用户查看、填写和提交表单。Viewer 不但可以作为插件内嵌于浏览器中,也可以独立于浏览器作为单独的应用运行。
Lotus Forms Server :该产品包含四个组件,分别为
API –提供用于应用和扩展 Lotus Forms 功能的函数集合。
Deployment Server –通过 Applet 技术,帮助用户自动安装所需软件,如 Viewer。
Forms Services Platform –提供用于实现 Lotus Forms 与其他系统集成的函数库。
Webform Server –用于将 XFDL 表单文件翻译成 HTML/JavaScript 文档,使得用户可以在浏览器中填写和提交表单,而不需要其他软件支持。
本文主要涉及的产品是 Lotus Forms Designer 3,重点讨论在表单设计阶段如何为表单注入丰富的事件处理功能。整篇文章主要包含以下内容:第二部分对 Lotus Forms 表单所使用的描述语言(XFDL)进行简要的介绍,以便更好地理解本文所引用的示例表单代码;第三部分讨论 Lotus Forms 表单中对计算功能的支持,包括 Designer 工具的使用以及实现代码;最后一部分是结束语。在本系列的第二篇文章中 , 我们将讨论 Lotus Forms 中为表单设计提供的主要函数支持以及 Lotus Forms 表单中对事件和活动处理的支持。
表单定义语言–XFDL
在 Lotus Forms 中设计和处理的表单是使用扩展表单描述语言(XFDL)进行定义的。XFDL 使用可扩展标记语言(XML)提供一种为便于数字化存储和显示而定义数据字段和企业或政府复杂表单设计的标准方法 , 它将先前开发的全球表格定义语言(UFDL)和 XML 结合了起来。
在本小节中,我们将首先以一个实际的 XFDL 表单代码为例(如清单 1 所示),向您介绍 XFDL 表单的基本结构,让您对 XFDL 表单有个感性的认识。接下来,我们将把 XFDL 表单的组织结构抽象成数据模型,更加详细地向您介绍表单中的基本组成元素。
从一个简单的 XFDL 表单开始
清单 1. 一个简单的 XFDL 表单
0 < ?xml version="1.0" encoding="UTF-8"?>
1 <XFDL xmlns="http://www.ibm.com/xmlns/prod/XFDL/7.5"
2 xmlns:xfdl="http://www.ibm.com/xmlns/prod/XFDL/7.5"
3 xmlns:xforms="http://www.w3.org/2002/xforms">
4 <globalpage sid="global">
5 <global sid="global">
6 <xformsmodels>
7 <model xmlns="http://www.w3.org/2002/xforms">
8 <instance>
9 <data xmlns="">
10 <a>3</a>
11 <b></b>
12 </data>
13 </instance>
14 <bind nodeset=”b” calculate=”../a * ../a”/>
15 </model>
16 </xformsmodels>
17 <bgcolor>lightgrey</bgcolor>
18 </global>
19 </globalpage>
20 <page sid="PAGE1">
21 <global sid="global">
22 <label>Square Area Form</label>
23 <bgcolor>cornsilk</bgcolor>
24 <fontinfo>
25 <fontname>Times</fontname>
26 <size>24</size>
27 <effect>plain</effect>
28 </fontinfo>
29 </global>
30 <field sid="side">
31 <xforms:input ref="a">
32 <xforms:label>Length of square side :</xforms:label>
33 </xforms:input>
34 <labelfontinfo>
35 <fontname>Times</fontname>
36 <size>24</size>
37 <effect>bold</effect>
38 </labelfontinfo>
39 </field>
40 <field sid="area">
41 <xforms:input ref="b">
42 <xforms:label>Area of square:</xforms:label>
43 </xforms:input>
44 <labelfontinfo>
45 <fontname>Times</fontname>
46 <size>24</size>
47 <effect>bold</effect>
48 </labelfontinfo>
49 </field>
50 </page>
51 </XFDL>