文档管理解决方案是大生意。事实上,试图寻找一个提供所有必要功能的系统,即使没有许多特性也会超出你的预算。要得到所有需要的特性,你可以从 IBM、微软、Documentum等公司买到,或者你可以创建自己的文档管理解决方案。这里我将向你解释如何为一个文档工作流/归档解决方案创建一个节省预算的基础。
文档一般是计算机文件或者存在为计算机文件的数字化纸上文档。存储文件很简单——操作系统提供在逻辑文件夹/文件结构上存储文件的机制。这可能是最便宜的文档管理/归档解决方案。然而,大多数文档都有其用途,这就是文档工作流出现的原因。
广义上来讲,通过 Internet(或者可能是 intranet)发送和接收文件的过程,是将文件用 base64 编码然后将编码后的数据放到通往其目的地的线路上去。浏览器使用文件 <INPUT> HTML 标签处理这一过程。这个数据以多部分 POST 数据被发送给 Web 服务器,而 Web 服务器上的请求处理程序(handler)必须提取这个文件才能够使用它。可以使用 HTML 表单元素来提供相关的数据(索引数据);然后,就由运行在 Web 服务器上的脚本或可执行程序来解析数据并存储信息。这涉及到提取文件和索引值,将文件以某种归档形式(比如文件夹)存储在 Web 服务器或远程服务器上,以及在数据库中添加索引值和文件 ID 信息。
接收文件是比较有趣的一点——它必须进入某种形式的文档工作流,所谓文档工作流是在工作流到达目标状态前必须发生的步骤的逻辑集合。能够使工作流解决方案具有可扩展性的一个方法是它能够为自定义工作流提供模板。工作流可以使用 XML 定义。工作流管理器可以使用 XML 模板将工作流由一个队列引向另一个队列,在这个过程中完成动作并收集将把文档从接收者移动到目标状态的数据。
我将使用帐户应付款项/应收款项作为这种场景的一个例子。X 公司从 Y 公司接收到一张发票。这张发票和相关的文件被扫描后发送到归档中。像供应商 ID 号、发票总额以及数据等信息都被存储为文档的索引值。在这些信息被发送到归档之后,一个文档工作流流程就开始了。这个流程可以很简单,比方说就只是将文档引向一个队列,一个职员负责开支票给将查看文档的供应商。职员打开这个文档,浏览一遍,开出支票,记录支票号码和日期等等,然后将文档发送到目标状态。目标状态是工作流的终点,所以不可以再对这个文档进行其它操作。
下一期专栏中,我将使用这个例子来创建骨架文档工作流/归档解决方案的代码。这个解决方案将包含一个用来上传文件和添加索引值的页面和一个队列页面,用户将能够在他的队列中处理内容。我还会讨论定义工作流过程和工作流管理器的工作流 XML,其中工作流管理器负责将文档沿着工作流路径移动。