IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  XML  >

使用 Xforms 创建会计工具,第 1 部分: 创建 X-Trapolate

表单和功能概述

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

讨论


级别: 中级

Stony Yakovac (syakovac@gmail.com), 软件工程师, 自由撰稿人

2007 年 8 月 02 日

系列 共分 6 部分,演示了如何利用强大的 Xforms 与 MySQL 和 PHP 相结合,为数据处理提供支持,创建在线会计工具,我们把它称为 “X-Trapolate”。每一项好的编程技术都有自己擅长的领域。本系列主要介绍了一些 Xforms 能有效解决的问题,例如对实时计算和高交互性的需求。本文(系列文章及教程的第 1 部分)概述了本系列将要创建的表单和功能,研究了在着手设计这类工具时应考虑的一些方面。
使用 Xforms 创建会计工具系列

本系列主要介绍了一些 Xforms 能有效解决的问题,例如对实时计算和高交互性的需求。演示了如何利用强大的 Xforms 与 MySQL 和 PHP 相结合,为数据处理提供支持,创建在线会计工具。

为什么选择 Xforms?

Web 在很早以前就已经出现,但传统应用程序大量地从桌面迁移到 Web 只是近来才出现的趋势。为何间隔如此之久?

首要的问题就是缺乏交互性。Web 是没有状态的,就服务器而言每次载入 Web 页面时都是完全不同的状态。直到最近,Web 应用程序才能够和传统桌面应用程序一样向用户发送即时反馈。

一些浏览器技术,例如 JavaScript 和 Ajax ,经历了长足的发展才填补了这个空缺,但是它们确实是遇到了一些问题(大部分是标准化方面的问题)。浏览器并不是通过相同的方式来实现一些高级特性的,这使得想要支持多版本的开发人员感到了棘手。

尽管浏览器的差异并不足以造成阻碍,但开发人员在面对如何实现各种不同的任务时产生了差异。

Xforms 引入了类似桌面的交互性,同时消除了所有的这些差异。它提供了标准化的方式用于执行各种任务,如表单验证、计算和条件输出。它允许用户在脱机状态下将表单保存在本地计算机上,等到稍后接入因特网时再提交给服务。或许最重要的是,Xforms 将表单和功能分离开来,这种方式能够指定表单应该完成哪些任务,而将表示留给浏览器或其他用户代理去处理。这意味着浏览器、PDA 和语音识别系统都能使用完全相同的表单。

Xforms 同时也提供了直接处理 XML 数据的方法。

在本系列中,您将学习如何使用先进的 Xforms 来创建 X-Trapolate,一种专为企业设计、基于 Xforms 的在线会计工具。在本文即第 1 部分中,您将看到设计这样的一个项目需要考虑哪些因素。





回页首


其余开发工具:XML、SQL 和 PHP

会计工具集这样的功能示例需要一些支持。浏览器中的 Xforms 提供表示编程功能。虽然 Xforms 有一些有趣的轻量级脚本和处理功能,并在实现过程中提供了一些存储空间,但是大多数的 Web 应用程序都需要一些更持久的存储空间和一些 Xpath 功能之外的脚本功能(Xforms 把 Xpath 用作一种过程计算语言 )。会计工具集使用 SQL 构造数据库存储系统,使用 PHP 编写在 Xforms 中不能很好地完成的脚本。

没有细致的计划,SQL 和 XML 之间的接合将会困难重重,而且很有可能导致效率低下,甚至使整个项目彻底失败。XML 数据定义了 Xforms 实现,因此需要存储。SQL 实现要求 XML 数据具有一个已知的和定义好的界限。会计工具集利用大量相互连接的表来为 Xforms 提供的 XML 数据提供存储空间。





回页首


浏览器的问题

然而,就算是在 Xforms 最理想的情况下,也依然存在一些问题。直到最近,Firefox 才能使用 Xforms 功能,而 Microsoft® Internet Explorer 仍需一个ActiveX 插件才行。这必然解决不了问题。规范已得到修订,因此针对问题应如何解决的争论也该平息了。遗憾的是,浏览器仍然需要完全地支持 Xforms,因此我们的浏览器也无法运行全部页面。

Firefox 附件是 X-Trapolate 的目标处理程序。尽管给人留下的印象深刻,Firefox 附件仍然还有一些 Xforms 的特性不能实现。所以虽然有些特性极具优势,但本系列并未使用它们。结束语中将在理论上对这些特性进行简要的讨论。





回页首


在线会计和 Xforms

会计工具使企业的专业人员能够评估一项业务各方面的状况,并能执行日常操作,其操作以易于理解的格式提供责任跟踪和分配。不同的工具集涵盖了业务不同的方面。X-Trapolate 工具提供了一些机制,适用于人员管理与联络、记账、预算、货运和订单处理、采购、薪资;还提供了一些工具,用于分析企业的综合财政状况。尽管从技术角度来讲,我们并不是要创建一个生产应用程序,但该工具仍然将包含真实企业工具所需的多数功能,因此我们需要把这些全部考虑在内。本系列的每一期都将涵盖其中的一个或者多个工具,有几期还将对这些工具进行增强。

登陆 —— 登陆表单

第 2 部分介绍了所有现代基于Web的应用程序所共同的话题,即用户验证的概念。有时它提供个性化的设置,有时它允许访问权力层次划分。对于 X-Trapolate 来说,登陆模块同时具备两者的部分特性,和一些跟踪功能。用户以用户名和密码的形式在登陆表单中输入。这种实现毫无安全性可言。PHP 处理用户名和密码,并为会话分配一个身份验证标记(authentication token )用于有效凭证。与会计工具的所有交互都要求该信息可用。

登陆表单演示了 Xforms 的一些特性。用户名和密码使用 “input” 和 “secret” 表单控件。提交方法向 PHP 脚本提交 XML 数据。PHP 脚本执行的一些功能包括使用 MySQL 数据库进行用户凭证验证,生成验证标记(生存期为用户会话持续的时间)等。

用户注册 —— 新用户注册表单

现代 Web 应用程序另一个共同的常住民就是新用户注册表单,它通常与登陆表单同时出现。注册表单允许新用户创建自己的账户。基本账户可用于生成订单,也可以由授权用户提高访问权限。

同样在第 2 部分中,新用户注册表单演示了一个新表单控件,即 “select1” 控件,并介绍了 “constraint” 和 “required” 属性,如图 1 所示。新用户注册表单使用了 Xforms 的另一个重要的属性,即 “repeat” 控制处理结构。“insert” 操作结合 “trigger” 操作允许用户输入任何电话号码或者 e-mail 地址,并且这些资料可以动态地更新,而不需要服务器的干预。


图 1. 注册表单
注册表单

账户管理 —— 账户管理表单

第 2 部分中创建的最后一个表单,即用户管理表单,介绍了使表单动态适合用户的思想。登陆提供了对用户账户管理表单的访问。这允许 Xforms 表单具备特别用于管理用户的访问权限的功能。比方说,销售人员能看到他们的佣金率,而消费者和主管能看到屏幕上显示的其他字段。

用户列表利用了关闭的 “select1” 表单控件。Xforms 另一个关键的特性,即 “output” 元素,显示了用户可能不会更改的各种数据。要使表单适应用户需要引入一个属性,即 “relevant”。“relevant” 属性控制 Xforms 表单元素的可见性。

订单和账单 —— 订单管理表单

订单管理表单将在第 3 部分中开发,它允许用户查看未结清的账目。Xforms 表单计算每一个账目,以得出其状态为下列四种状态中的哪一类:已付(paid)、到期(due)、过期(past due)和欠款(delinquent)。欠款(delinquent)状态的发票提供了一个提交控件,用于提交虚构的收债代理(collection agency )、债务总额(outstanding amount)和账目支付清单。还有一些控件能够手动地修改发票的状态。每一个还有余额(outstanding balance)的账户都允许用户为某一账目输入付款金额,通过提交方法将该信息存储到数据库中去。付款(paid)方法将打开一个新窗口为该账目显示收据。

订单管理表单引入了一些新的思想,包括多重提交(multiple submission)方法和新窗口的打开。检验用户和权限触发器的操作都是以 Xforms 事件为依据的。每个账户的余额都使用了 “calculate” 属性,演示了多种 Xpath 功能。

预算 —— 预算管理表单

本系列的第 3 部分将介绍预算表单。在预算中,一项业务通常每年都要进行一次评估,并对计划执行一次修改,然后在接下来的一年中便可以多次访问以跟踪目标的进展。会计工具集中的预算工具所构建的思想其实在先前的表单中就已经开发过了,如账单表单等需要登陆和许可的表单。我们可以添加或者移除层次结构中的部门和子部门。部门和子部门的层次以缩进形式显示,其外形类似于每个部门都有下级,子部门预算的总数是 “readonly” 属性的。用户可以修改预算的数目。真正的预算数目是由时间跨度和该跨度中的总天数所决定的。

预算 Xforms 表单展示了 “readonly” 属性是可配置的。表单中再次出现了插入和删除操作,和一些更加深入的运算,其中使用到了对 Xforms 处理至关重要的一些 Xpath 功能。

订单处理 —— 货运和订单处理表单

订单处理表单将在第 4 部分中开发,它能提供许多不同的功能。该实现假设用户远执行远程填写订单的基本功能。订单处理和货运表单允许用户根据各地的存货填写订单。每选择一个订单,它都会分别详细地显示购买列表。用户把不同货源的购买分开,脱期订单通知会自动地显示在一个单独的窗口中,用于部分还未填写的订单。

这个 Xforms 表单中出现了很多触发和复制功能。合计、插入、删除和用于重复一个节点集的部分字集的方法,可以实现分批订单和验证合计的功能。“relevant” 属性控制提交(submission)元素,确证在记录之前进行正确的操作。

采购 —— 资本资产和采购表单

在第 4 部分中,我将继续介绍资本资产表单,它能根据用户的角色提供两种基本的显示。通过引用用户的部门 ID,非采购部门的用户能看到与他们部分相关的设备列表。用户能够报告、跟踪和确认设备的发放决议。用户可以在一个文本输入框中输入对请求的描述,还有一个选择项提供了替换(replace)、修理(repair)和增加(add)选项。

对采购用户显示的将会是 Xforms 表单的另一个部分。其基本显示类似于订单处理表单,公开了采购用户要处理的请求列表。若采购用户决定要修理机器,所有的修理请求和与机器有关的联系信息将自动填入一个文本框。采购职员可以在一组动态的选项中选择。当采购表单的提交(submisstion)元素触发时,将显示出一个购买订单。如果其操作为修理,修理文本将显示出来。

Xforms 表单使用 Xpath 功能实现了自动填写的文本框。采购表单使用到了先前还未用过的输入控件,即文本框。Switch/case/toggle 结构使表单能够根据各种条件显示不同的表单显示。

财务分析 —— 主管分析表单

本系列的第 5 部分将开发财务分析工具。财务分析工具允许主管人员分析各部门和公司的总体表现。图形能使财务分析更易于理解。财务分析工具演示了各图形与 Xforms 表单之间的交互。财务工具将需要实现更多复杂和繁锁的计算。

薪金册和应付款 —— 可支付表单

第 5 部分将开发最后一个 Xforms 表单,它在企业管理中发挥了最基本的作用。支付款有各种不同的种类,支付欠款的方式也不尽相同。薪资和支付表单演示了如何与互联网基于服务器的 API 进行接口连接,以实现薪资功能。薪资管理公司提供了多种多样的服务,其中包括对薪资的管理。此处的表单演示了如何管理全体职工,以及如何管理他们个人选择的薪金发放方式。各组支付款可选择设置源账户的数目,这对企业非常有用的。可支付表单允许用户将某付款项或者其中的一部分与特定的部门相关联。





回页首


结束语

X-Trapolate 会计工具集演示了众多标准 Xforms 开发方法和资源。读者将逐步了解一个有用 Xforms 实现的接口开发。一些基本的表单控件,例如输入(input)、输出(output)、选择(select)、文本输入(text entry)和密码(secret)控件都在这个会计工具中发挥了各自应有的作用。我们在实现每一个表单控件的时候,都会对它们进行详细的介绍,并且会讨论为什么要使用该控件。其他一些不可见的 Xforms 特性同样也发挥了重要的作用,介绍这些特性的教程重点指出了它们的用处。文章还涵盖了这些特性的一些例子,包括计算(calculation)、相关(relevant)、所需属性、toggle 结合 case 和 switch、连接 PHP 接口和连接、原生 XML 服务器接口。请继续阅读第 2 部分,了解用户身份验证。



参考资料

学习

获得产品和技术
  • 可以在 W3C 站点上找到 XForms 推荐标准

  • 获取 MozzIE,一种开放源码控件,使您能在 IE 中呈现 XForms。

讨论


关于作者

Stony Yakovac 是一名工程师,同时也是一名自由作家,他住在美国爱达荷州的 Lava Hot Springs。他参与过许多项目,包括软件和数字硬件设计。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款