论文部分内容阅读
工作流技术在管理、生产等领域得到了非常广泛的应用。在工作流的流转过程中,单个参与者所执行的任务并非是独立的。很多情况下多个参与者会对同一份文档、同一个数据对象进行操作,他们之间需要协同编辑,才能达到一个整体的目标。现有的工作流系统在处理需要协同交互的过程时却有着很大的局限性。很多优秀的协同编辑工具,如Grove、REDUCE等都很好的支持实时的协同交互,但作为编辑工具来讲,其功能和可用性远不如某些常用的单用户应用程序,如MS Word。为了既能拥有强大的编辑功能和可用性,又能很好的支持协同交互,对单用户应用程序进行扩展是个很好的方案。本文提出了一个单用户应用程序共享的方案,用于支持协同工作流中的协同编辑,并结合现有的工作流管理系统,设计和实现了一个支持协同编辑的协同工作流系统。为了支持多用户之间实时的无限制的协同编辑,本文对单用户应用程序进行扩展,并使用操作变换机制维护数据在全局的一致性。操作变换机制并非适用于任意结构的文档。操作变换要求共享文档中的对象存储在一维或多维的地址空间中,并且可以使用位置作为索引定位对象。为了达到操作变换需要的条件,在单用户应用程序的外部设置了一个线性表用以索引文档中的对象。另一方面,传统的操作变换算法只能支持对文档的插入和删除操作,David Sun提出一种扩展的操作变换算法,可以另外支持更新操作,但它的算法是不完备,本文在它的基础上提出了一个改进的扩展OT算法,以维持协同编辑中具有复杂对象结构的文档在全局的一致性。本文以MS Word作为单用户应用程序的例子,设计和实现了一个系统原型,对上述方案进行试验和验证。选择一个现有的传统工作流引擎:Shark工作流引擎,在其基础上进行适当的扩展,将现有的工作流引擎和现有的单用户应用程序进行集成,实现一个能支持协同编辑的协同工作流系统。整个系统采用B/S和C/S混合的结构模式,使用多种语言开发完成。系统主要分为工作流引擎服务器,协同数据服务器,协同客户端和单用户应用程序四个部分。协同同客户端是整个系统的纽带,它将系统的其余部分有机地连接起来。协同客户端本身又分为三个模块:工作流客户端、协同数据客户端和应用程序代理。应用程序代理是协同客户端中的核心,采用Windows Hook技术和COM接口对MS Word进行监听和控制,协同多个用户之间的同步操作。关键的操作变换算法就在应用程序代理中实现。通过实现系统原型进行验证,证明本文提出的通过单用户应用程序共享方法实现协同编辑的方案是正确的。