利用 XForms 和 ODF 实现交互式办公文档

引言

通常的办公文档为我们提供了丰富的输入方式,除了文字,还可以利用表格、图形、图表等形式更好的表达信息,但是其往往仅作为静态信息的载体,交互能力有限。

一份贷款合同,除了一些格式化条款外,还包括贷款人信息、贷款额度、贷款银行信息、银行贷款审批记录,并且需要多方的信息录入流程后,一份有效的贷款合同才能够生成。想象这样一种办公文档,其可以作为贷款合同的载体,在贷款工作流中流动,其内容在工作流中不断被补充,修改。在工作流结束时,生成一份有效的正式贷款合同。贷款合同中的定制输入的内容,可以随意被提取,并以不同视图的方式提供给终端用户,供其修改。同时,用户的修改还会影响其在合同文档中关联内容的动态变化,例如,贷款额度和还款年限数据信息与合同文档中的年还款额的图表相关联,当贷款额度和还款年限数据信息发生变化时,该关联的图表会自动更新,以更加形象的反应还款额的变化。

利用 ODF 和 XForms 就可以实现此种交互式办公文档,本文通过一个实例阐述此种交互式文档。


XForms 和 ODF 简介

XForms 是 W3C 的表单标准,XForms 最显著的特征是:将一个窗体的逻辑、表示和数据分离开来,形成一个与平台和设备无关的、基于 XML 的抽象窗体定义。逻辑层包含窗体中各域的填充、多页、Form 次序等的控制管理以及合法性检查;表示层描述窗体的表现,即采用何种窗体控制部件,响应何种事件;数据层则是针对实际的数据源,通过应用更丰富的模式(schema)或类型(type),为窗体增加更多的数据结构以及数据一致性的维护 . 目前 Lotus Forms 实现了对 XForms 标准的支持,其基于 XForms 的 XFDL 文档提供了向导式的表单输入功能,更加复杂的公式支持,数据签名的安全性检查及全文提交能力,同时其还具有附件支持的功能,即将其他文档作为附件存储在 XFDL 文档中。

ODF(开放文档格式)是标准的基于 XML 的办公文档格式,包括电子表格、图表、简报和文字处理文件。ODF 格式最大的优势在于其开放性和可继承性,基于 ODF 格式的文档在许多年以后仍然可以为最新版的任意一款办公软件打开使用。同时 ODF 使用了 XForms 作为其表单标准,即 XForms 模型可以嵌入到 ODF 文档中。IBM Lotus Symphony 实现了对 ODF 文档格式的全面支持,其提供了丰富的文档内容显示方式,并支持 XForms 模型的显示及存储。

基于以上背景,XForms 提供了理想的逻辑,数据和表示分离,而 ODF 文档支持 XForms,这为实现交互式办公文档提供了可能。


架构图

XForms 文档运行于 Form 编辑器,其包含了 XForms 的逻辑层,数据层和表示层,同时还包含 ODF 附件,并且文档数据层的 XML 数据模型与 ODF 附件中 XForms 数据层的 XML 数据模型是相对应的,用户在 Form 编辑器中的向导功能进行表单输入,输入完成后,可以打开附件,这时 ODF 文档将在 ODF 编辑器中打开,并且用户输入的表单数据也会在 ODF 文档内容中相应地更新。用户可以在 ODF 编辑器中浏览文档内容并还可以对相应数据进行修改,当用户切回到 Form 编辑器中是会发现,其在 ODF 文档中数据的修改,在 Form 编辑器中也进行了同步。


图 1. 交互式办公文档运行时流程图
图 1. 交互式办公文档运行时流程图

其中,我们采用 Lotus Forms 作为 Form 编辑器,Lotus Symphony 作为 ODF 编辑器,并利用 Lotus Notes/Expeditor 复合应用技术实现了两个应用的无缝集成和数据交换。由下图可以看出,Lotus/Expeditor 复合应用成为两个应用进行数据交换的桥梁,Lotus Forms 与 Lotus Symphony 各自提供了处理 XForms 数据模型的 API。


图 2. 交互式办公文档架构图
图 2. 交互式办公文档架构图

交互式办公文档实例介绍

下面我们通过一个实例展现此交互式办公文档在运行时的工作过程。假设一个客户正在填写一份贷款合同,其通过下图的 Form 视图向导,填写基本信息。用户输入了贷款银行的名称。


图 3.Form 视图向导 - 银行信息页
图 3.Form 视图向导 - 银行信息页

然后在下一个向导页中,用户输入了贷款人的信息。Form 视图对于各个输入项可以具有校验功能。例如用户在邮编项输入的信息无效,视图会提醒用户该错误。


图 4.Form 视图向导 - 申请人信息页
图 4.Form 视图向导 - 申请人信息页

当用户在 Form 视图中完成基本信息后,其可通过点击“Loan Agreement”查看相应的如下图的合同内容。可以发现用户在 Form 视图输入的信息,已经更新到合同文本中了。


图 5.ODF 编辑器中的合同文档
图 5.ODF 编辑器中的合同文档

另外,用户在 Form 视图中输入的贷款数额信息,在 ODF 文档内容中可以用图表的方式展现给用户,这使贷款信息更加直观。例如,贷款申请中各项用途在贷款中的比例。


图 6. 动态变化的图表
图 6. 动态变化的图表

用户在 ODF 编辑器中可以对合同内容进行编辑,例如修改贷款银行,贷款人信息。还可以对合同中的格式化条款进行增删或修改。完成修改后,用户点击“Return to Form”回到 Form 视图。


图 7. 编辑合同文档
图 7. 编辑合同文档

回到 Form 视图,可以发现 ODF 编辑器中修改的内容已经在 Form 视图中更新了。事实上,合同内容中的所有修改都已经同步到 Form 视图中。


图 8. 银行信信息更新
图 8. 银行信信息更新

图 9. 申请人信息更新
图 9. 申请人信息更新

通过以上实例,可以看出利用 XForms 模型和 ODF 文档,使办公文档具有了更加友好的互操作性。另外,Lotus Form 的 Form 视图还提供了数字签名的功能,在合同完成后,对其进行数字签名,则合同内容将不再可以修改,同时可以利用 Lotus Symphony 直接将合同打印。


参考资料

关于作者

苏赫峰,2005 年加入 IBM,现在在 IBM 中国软件开发中心从事 Lotus Symphony 研发工作,主要方向是文档互操作性。

原文地址:https://www.cnblogs.com/hannover/p/1962624.html