????? 在以往的项目实施过程中,我们经常会遇到将多个不同厂家产品整合在一起从而实现协同工作的应用案例,而要提高开发效率,这就意味着需要得到这些不同领域产品非常出色的支撑和实现真正意义上的松耦合集成才能达到最好的实施效果和最高的开发效率。
?????? 数据采集方法是我们构建系统过程中必须解决的问题,是几个需要重点关注的领域之一。就像众所周知的木桶原理一样,数据采集的效率和质量如果得不到提高,其它方面使用再先进的技术和产品也是徒劳。而在数据采集环节,传统的纸质表单、电子文档和基于 MIS 系统及 HTML 的表单正在成为开发效率的瓶颈。这是因为,在信息化建设之前,用户一直采用纸质表单来驱动业务流程。系统集成商开发的第一代 MIS 系统,采用 FoxPro、PB、Delphi 等工具在软件中实现了这些纸质表单的电子化,但是开发工具的限制,使得这些表单无法达到纸质表单的效果。同时,开发人员必须是精通这些工具的专业软件人员,常常出现的情况是,开发人员不懂业务,而业务专家不懂技术,二者之间需要经过多轮迭代,才能得出用户满意的结果,极大增加了项目开发和实施的时间,导致项目开发一拖再拖。
对集成商而言更大的麻烦是,用户的需求无时不在变更,即便是按照用户最初的需求完成了所有需要的表单,到上线时,用户也会说:“对不起,我的需求变了,麻烦你给我改一下”。于是项目验收遥遥无期,项目成本居高不下。一些商家想到了让用户对需求进行签字确认,以这种方式来限制用户的需求变更。然而,这即不现实,也不合乎情理。
?????? 进入互联网时代,HTML 技术的出现使得集成商能够开发基于 Web 的应用系统。早期的 Web 表单,通常与 HTML 和诸如 JavaScript 这样的技术紧密绑定。HTML 表单编制简单,并且有众多熟悉该技术的开发人员。但是,HTML 表单也和 HTML 技术本身一样,充满了缺陷。HTML 结构松散,并且没有标准的开发界面。HTML 表单构建在不完备的基础之上。开发商面临的开发效率低下问题依旧没有得到根本改观。???
?????? 进入二十一世纪后,为了解决电子表单这个开发效率中的瓶颈问题,一种新的表单技术应运而生。对于这种新技术,有多种不同的名称,如:“智能表单”、“动态表单”、“活动文档”、“智能文档”等。但不管叫什么名称,它们的本质基本上是一致的,那就是以 XML 为核心并且实现数据模型与表现层分离的一种技术。我们姑且将这种技术称之为“动态表单”。
?????? XML 技术的发展和成熟,是电子表单领域革命性发展的契机。
基于 XML 技术的表单,在数据采集的源头,就已经将数据按照特定的结构进行了组织,并且以 XML 格式进行数据的传输和处理,从而,信息共享变得轻松自如。同时,所见即所得的表单编制,极大降低了系统开发的难度,连不懂技术的用户也可以自助地编制和分发表单。
?????? 新一代的采用 XML 技术的智能表单,开始逐步取代传统的纸质表单、电子文档和基于 MIS 系统及 HTML 的表单。
?????? W3C(万维网联盟)于 2000 年推出了 XForms 1.0 规范,作为这个规范的响应,各大国际知名厂商都决心花大力气投入动态表单产品的研发与推广。动态表单之所以具有如此巨大的吸引力,最关键的还是它给 IT 开发效率带来了革命性的突破。新一代的动态表单,为开发商提供了表单编制的柔性平台,通过改善系统的自适应能力来应对用户需求的变更,从而使得企业对信息系统拥有更大的主动性和控制权。
?????? 目前国内外比较流行的动态表单软件主要有微软的InfoPath、Adobe的Designer以及EAIFORMS(企业应用智能表单的简称),EAIFORMS是国内一个软件开发者所开发的免费软件。我们公司曾经基于该软件做过一些小的行政审批和工作流方面的项目,采用该软件主要是因为该软件是免费产品,而我们公司又是中小型IT企业,现在的项目本身就没有多少利润可言,所以对于免费和开源软件我们是比较欢迎的。不过,话又说回来,EAIFORMS与 InfoPath 和 Designer 这些投入巨资打造出来的软件产品比起来,这一款由个人开发的免费软件一点也不比它们逊色。所以,为了支持作者能将 EAIFORMS 继续发展下去,同时也让更多的用户受益。本文将以 EAIFORMS 为例讲述动态表单技术在项目中的应用。有关EAIFORMS 更多介绍和最新版的下载,你可以登录 WWW.EAIFORMS.COM 它的官方网站。
?????? EAIFORMS 的作者在EAIFORMS.COM上提供了一个开放源代码的表单服务器雏形。只所以说它是一个雏形,是因为该服务器还在开发过程中,并没有真正完成。你如果有兴趣参与这个项目或通过改造该服务器来满足自己的需求,那么你可以去 EAIFORMS.COM 上下载这个服务器的源代码。我们先从这个表单服务器介绍入手,然后讲述如何将EAIFORMS 客户端、表单服务器与业务系统(本文将以工作流系统为应用案例)结合起来。表单服务器的整体设计思路是,客户端(EAIFORMS)将基于 XML 的表单实例打成ZIP压缩包并通过HTTP提交给基于 Tomcat 的表单服务器,表单服务器将该压缩包解压后取出 XML 数据实例并将其保存到由 Xindice 改造而成的表单库中。(Xindice是Apache开源的XML数据库,这是一个天然的 XML 数据库,采用该数据库做为表单库正好符合完全以 XML 为数据载体的设计思想同时 Xindice 对基于 XPath 的数据查询以及基于 XUpdate 的数据更新都有着良好的支持,但当前最新版本稳定性欠佳。)表单保存完成后,表单库将触发一个称之为数据适配器的数据引擎(研究过 SharePoint 的朋友可能会觉得这有点类似于该服务器的文档库事件,没错,该技术就是借鉴了SharePoint 的文档库事件的处理机制。),该数据引擎将具体的表单数据通过数据映射关系保存到数据库或转换成其它格式的 XML 文件。以上就是整个数据采集的全过程,如下图所示:? 本文的第一部份到这里就结束了,在第二部份中将着重讨论动态表单技术在工作流中的应用。敬请关注。
?