本专利申请涉及一般指定的待批美国专利申请号10/376,873,于2003年2月28日提交,代理摘要号MSFT-1586,题为“Method and System for ManagingMultiple File States For Replicated Files”。
背景技术
网络化计算机环境中的通常实践是使一个计算机用户与网络上的另一用户合作一电子文档。这种网络可以是局域网(LAN)、广域网(WAN)、因特网等等。在这种合作中,每个用户可以通过使用软件应用程序来创建和编辑电子文档,软件应用程序有:普通应用软件、或者专门为合作对象的文件类型设计的软件、等等。
通过把电子文档的主版本维持在将在文件上合作的所有用户可访问的位置处,而使合作变得可能。在传统的网络化计算机环境中,可能存在一个服务器计算机以及一个或多个用户计算机。服务器维持各个用户计算机之间的通信链路,并且可以被各个用户计算机访问,因此可以存储并控制由用户合作的文件的主版本。当合作一电子文档时,用户首先访问服务器上文件的主版本,然后把该文件复制到用户的计算机。然后,用户可以应用程序允许用户可用的任何方式来改变该文件,从而作用于该文件。例如,如果应用程序是一文字处理器、电子表格、数据库和/或其他,应用程序可以提供用于执行像编辑、复制、删除等任务的装置。在任何改动完成时,如果用户希望保留对文件的这些改动,那么用户就可以保存对用户计算机上存储的文件版本的变化。在其他系统中,比如不存在服务器计算机的系统,主版本可以被存储在用户计算机上。
为了通过服务器与其他用户合作,有变化版本存储在用户计算机上的用户必须把计算机上的文件版本与服务器上的文件主版本同步。同步同一个电子文件的多个版本的最简单的形式,就是确保一旦被同步,所有的版本就是相同的。这样,执行同步的用户会使参与合作的其他用户访问最近改动的文件。按照惯例,同步由一同步工具(utility)来执行。同步工具一般与应用程序分开,并且在许多情况下是用户计算机的操作系统的一部分。常规的同步工具在预定的时间、或者根据操作系统的请求而执行同步。
在常规的同步中,同步工具会使用与工具能理解的拷贝有关的任何信息,把用户文件版本与文件的主版本相比较。一般而言,这种信息限于每种版本的上一次更新的日期和/或时间。如果日期和/或时间是相同的,同步工具就确定两种版本是相同的,因此是同步的,并且不需要进一步的行为。然而,如果日期和/或时间之间存在差异,则同步工具向与驱动同步事件的计算机相关联的用户提供一用户界面。用户界面通常向用户提供一简要通知说明存在差异,每个文件版本的这种上一次更新的日期和/或时间,以及对来自用户的指令的请求,所述指令关于用户希望保持文件的哪个拷贝。如果用户选择保持用户版本,同步工具就用用户版本覆盖主版本,从而使用户版本成为服务器上的主版本。如果用户希望保持主版本,则不再采取任何动作,或者用主版本覆盖用户版本。在某些用户界面中,给予用户一个选项来放弃同步,而不是选择哪种版本成为主版本。
上述常规的同步具有显著的缺点。由于常规的同步工具限制了关于电子文档的功能,因此由常规工具所产生的用户界面在提示用户选择动作过程时仅仅向用户给出有限的信息量。因此,这种有限的信息量会使这些用户作出与要采取的动作过程有关的无通知的且可能不正确的判决。例如,第一用户可以改变前面被同步的用户文件版本,然后常规的同步工具在某些点启动一同步事件。当被常规的用户界面通知时,用户可以看见用户版本在主版本以后被更新,因此决定覆盖主版本。然而,常规用户界面给出的信息未通知用户主版本是否在用户开始改变用户版本后保持不变。这导致一种有问题的情况,其中第二用户可以对另一用户版本作出改变,然后在第一用户的同步之前把该用户版本与主版本同步。第一用户的版本比较近——在后面被更新——但是主版本已经经第二用户的改变,该第二用户在第一用户最初从服务器拷贝文件时还不存在。结果,一旦第一用户完成同步,第二用户对主版本的改变就丢失。
上述情况因为常规的同步工具缺乏与文件有关的应用中固有功能的全部范围而造成,因此工具不能在同步事件期间使用该功能。因此,工具只能向用户提供与电子文档的不同版本有关的非常有限的信息量,比如对上述每个文件版本的上一次更新的日期和/或时间。
由常规同步工具的有限功能所造成的另一个缺点是在同步期间缺乏用户可用的多个行为过程。例如,在上述示例中,用户界面仅给出三个选项:用用户拷贝来更新主拷贝、用主拷贝来更新用户拷贝、或者放弃。
常规同步的还有一个缺点源于缺乏这种工具与这种应用程序的集成。例如,如上所述,常规的同步工具是用户或服务器计算机的操作系统的一部分。因此,同步进程以及任何可应用的用户界面通常在应用程序用户体验以外实施。这会在对操作系统不熟悉得用户中引起混淆,同样也会在对应用程序不熟悉的用户中引起混淆。此外,由于缺乏集成,同步可能由同步工具在对于发生这种事件不是最佳的时刻启动。常规同步工具的附加缺点是这种工具不能被用作软件应用程序的组件。例如,通过使用常规方法,计算机编程者不能创建第一软件应用程序来协调电子文档的多种版本,所述第一软件应用程序使用一同步工具,该同步工具能使用对于电子文档适当的第二应用程序。因此,需要一种有效的装置,使用有关软件应用程序功能来解决同步期间文件拷贝间的冲突。
具体实施方式
概述
本发明提供了把应用程序接口与软件应用程序集成的方法,所述软件应用程序允许应用程序请求并控制文件同步进程,而同时保留在应用程序用户体验中。本发明提供了用于管理电子文档的第一和第二版本的方法。在该方法中,识别电子文档的第一和第二版本,并且用工作在第一计算机上的第一软件应用程序启动同步事件,用于把第一计算机上的第一版本与第二版本同步。应用程序接口访问第一和第二版本,比较与第一和第二版本中每一个相关联的信息,并且产生一结果。比较结果被报告给第一软件应用程序。使第二软件应用程序按照第二软件应用程序的特性而产生一用户界面,其中电子文档与第二软件应用程序相关联,用户界面显示在显示设备上。
本发明还提供了第二软件应用程序,用于产生同步选项并且要由用户界面给出该同步选项,并且把同步选项显示在显示设备上。第二软件应用程序还接收一选项选择,并且按照该选项选择同步电子文档的第一和第二版本。本发明还提供了:第一软件应用程序和第二软件应用程序可以是相同的软件应用程序,因此所有的步骤可由单个应用程序来执行。
应用程序可以向用户提供与第一和第二版本有关的任何信息量,用户可以输入任何数量或类型的同步选择。一实施例中,用户可以创建第三版本,第三版本包括第一或第二版本的任何一个、或两者的任何部分或不包含其中的任何部分。应用程序可以在任何时间启动同步,比如在用户请求时。
示例性计算环境
图1说明了可实现本发明的适当的计算系统环境100的一示例。计算系统环境100仅是适当的计算环境的一例并且并非意图限制本发明的使用范围或功能。计算环境100不应被解释为具有与示例性操作环境100中所述的组件的任一或组合有关的从属性或要求。
本发明可与许多其他通用或专用的计算机系统环境或配置一起操作。适用于本发明的公知计算系统、环境和/或配置的示例包括、但不限于:个人计算机、服务器计算机、手提或便携式设备、多处理器系统、基于微处理器的系统、机顶盒、可编程用户电子设备、网络PC、小型计算机、大型计算机、包括任一上述系统的分布式计算环境、及其他。
本发明可以用计算机可执行指令的一般内容来描述,比如由计算机执行的程序模块。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定任务或实现特定的抽象数据类型。本发明还可以实际用于分布式计算环境中,其中由通过通信网络或其他数据传输媒介连接的远程处理设备来执行任务。在分布式计算环境中,程序模块及其他数据可能位于包括存储器存储设备的本地和远程存储媒介中。
参照图1,用于实现本发明的示例性系统包括形式为计算机110的通用计算设备。计算机110的组件可以包括、但不限于:处理单元120、系统存储器130、及把包括系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可能是多种类型总线结构的任一种,包括存储器总线或存储控制器、外围设备总线、及使用任一多种总线结构的本地总线。通过示例但非限制,这种结构包括:工业标准结构(ISA)总线、微通道结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准联盟(VESA)本地总线、及外围组件互连(PCI)总线(也称为Mezzanine总线)。
计算机110一般包括多种计算机可读媒介。计算机可读媒介可以是能由计算机110访问的任何可用媒介并且包括易失性和非易失性的媒介、可移动和不可移动媒介。通过示例但非限制,计算机可读媒介可能包括计算机存储媒介和通信媒介。计算机存储媒介包括易失性和非易失性的、可移动和不可移动的媒介,它们以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据这样的信息的任意方法或技术来实现。计算机存储媒介包括、但不限于:RAM、ROM、EEPROM、闪存或其他存储器技术、CDROM、数字化通用光盘(DVD)或其他光盘存储器、磁带盒、磁带、磁盘存储器或其他磁性存储设备、或用于存储期望信息并能由计算机110访问的任何其他媒介。通信媒介一般在诸如载波或其他传输机制这样的已调数据信号中包含计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传递媒介。术语“已调数据信号”意指其一个或多个特性以对信号内信息进行编码的方式被设置或被改变的信号。通过示例但非限制,通信媒介包括诸如有线网络或直接线连接这样的有线媒介、以及诸如声音、RF、红外这样的无线媒介及其他无线媒介。上述的任意组合应该包含在计算机可读媒介的范围内。
系统存储器130包括计算机存储媒介,其形式为易失性和/或非易失性的存储器,比如ROM 131和RAM 132。基本输入/输出系统133(BIOS)一般存储在ROM 131内,它包含在例如启动期间帮助在计算机110内的组件间传输信息的基本例程。RAM132一般包含数据和/或程序模块,它们可以被立即访问并且/或者当前由处理单元120在其上操作。通过示例但非限制,图1说明了操作系统134、应用程序135、其他程序模块136和程序数据137。
计算机110还可以包括其他可移动/不可移动的、易失性/非易失性的计算机存储媒介。仅仅通过示例,图1说明了对不可移动、非易失性磁性媒介进行读写的硬盘驱动器140、对可移动、非易失性磁盘152进行读写的磁盘驱动器151、以及对可移动、非易失性光盘156进行读写的光盘驱动器155,比如CD RAM或其他光学媒介。示例性操作环境中可用的其他可移动/不可移动、易失性/非易失性的计算存储媒介包括、但不限于:磁带盒、闪存卡、数字化视频光盘、数字视频磁带、固态RAM、固态ROM、及其他。硬盘驱动器141一般通过如接口140这样的不可移动的存储器接口与系统总线121相连,而磁盘驱动器151和光盘驱动器155一般通过如接口150这样的可移动存储器接口与系统总线121相连。
上面讨论并在图1中说明的驱动器和它们的相关计算机存储媒介为计算机110提供了计算机可读指令、数据结构、程序模块和其他数据的存储。在图1中,例如,说明硬盘驱动器141用于存储操作系统144、应用程序145、其他程序模块146和程序数据147。注意到这些组件或者可与操作系统134、应用程序135、其他程序模块136和程序数据137相同,或者与它们不同。这里为操作系统144、应用程序145、其他程序模块146和程序数据147给出不同数字以说明它们至少是不同的拷贝。用户可以通过诸如键盘162和指示设备161这样的输入设备把命令和信息输入到计算机110中,指示设备161通常称为鼠标、轨迹球或触板。其他输入设备(未示出)可以包括麦克风、游戏杆、游戏板、卫星式转盘、扫描仪及其他。这些和其他输入设备通常通过与系统总线耦合的用户输入接口160而与处理单元120相连,但也可能用其他接口和总线结构连接,比如并行端口、游戏端口或通用串行总线(USB)。监视器191或其他类型的显示设备也通过诸如视频接口190这样的接口与系统总线121相连。除了监视器之外,计算机还可以包括其他外围设备,比如扬声器197和打印机196,它们可以通过输出外设接口190连接。
计算机110可以工作在网络化环境中,该环境使用到诸如远程计算机180这样的一个或多个远程计算机的逻辑连接。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,并且一般包括上述相关于计算机110描述的许多或全部元件,尽管图1中仅说明了存储器存储设备181。所述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但还可以包括其他网络。这种网络环境在办公室、企业范围计算机网络、企业内部网和互联网中是常见的。
当用于LAN网络环境中时,计算机110通过网络接口或适配器170与LAN 171相连。当用于WAN网络环境中时,计算机110一般包括用于在诸如因特网这样的WAN 173上建立通信的调制解调器172或其他装置。调制解调器172可以是内部或外部的,它可以通过用户输入接口160或其他适当机制与系统总线121相连。在网络化环境中,相对计算机110所述的程序模块或其部分可以被存储在远程存储器存储设备中。通过示例但非限制,图1说明了驻留在存储器设备181上的远程应用程序185。可以理解,所示网络连接是示例性的,也可以使用在计算机间建立通信连接的其他装置。
示例性的分布式计算框架或结构
考虑到个人计算和因特网的趋同现象,已经且正在研发各种分布式计算框架。个人和商业用户同样都有用于应用程序和计算设备的无缝可共同操作的和web使能的接口,使计算活动日益变为面向web浏览器或面向网络。
例如,微软公司的.NET平台包括服务器、如基于web的数据存储这样的构件块(building-block)服务、以及可下载的设备软件。一般而言,.NET平台提供了(1)使计算设备的全部范围一起工作并且自动地更新并同步在它们之上的用户信息,(2)通过广泛使用XML而非HTML而允许web站点增加交互性能,(3)联机服务,特征是为了管理诸如电子邮件等各种应用程序或者诸如Office.NET等软件,从中心起始点向用户提供产品和服务的用户化访问和传递,(4)集中的数据存储,这会提高访问信息的效率和容易性,以及信息在用户和设备间的同步,(5)集成诸如电子邮件、传真和电话等各种通信媒介的能力,(6)对于开发商而言,能够创建可重复使用的模块,从而提高了生产率并且降低了编程差错数,以及(7)许多其他的跨平台集成特性。
虽然这里的示例性实施例是结合驻留在计算设备上的软件而描述的,然而本发明的一个或多个部分也可以通过以下来实现:操作系统、API、或者协同处理器和请求对象间的“中间人”对象,以便这些服务通过所有.NET的语言和服务来执行、被支持并且被访问,并且也在其他分布式计算框架中得以执行、支持和访问。
示例性实施例
当把一个电子文档形成为不止一个版本时,按照本发明,应用程序接口可以被配置成允许与文件相关联的软件应用程序来控制同步多个版本的进程。在一个实施例中,应用程序可以自动地启动同步,而在另一个实施例中,应用程序可以根据用户输入而启动同步。在另一实施例中,应用程序向用户给出由应用程序功能所提供的同步选项,并且允许用户选择选项并且用应用程序功能来执行任务。在还有一实施例中,第一应用程序启动同步,而第二应用程序向用户给出同步选项。
现在参照图2,第一计算机210包括与存储设备218进行有效通信的第一处理器220。第一计算机210可以是通用台式机或便携式计算机、工作站、专用计算设备以及/或者其他。类似地,第一处理器220可以是通用计算机处理器、专用处理器、处理器的网络及其他。显示设备230与第一计算机210操作上相关联。显示设备230可以是向用户给出选项及其他的任何装置,例如监视器、扬声器等等。显示设备230与第一计算机210的这种操作管理可以由有线或无线的连接装置作出。虽然图2中示出显示设备230在第一计算机210内,然而显示设备230可以位于与第一处理器220有效通信的任何地方,以包括远程位置或其他。
存储设备218可以是硬盘驱动器、CD-ROM、磁盘、DVD、RAM和/或其他。类似于显示设备230,存储设备218可以位于与第一处理器220有效通信的任何地方。这种情况下的有效通信可以是有线的、无线的、或者两者的组合。存储设备218内包含电子文档的第一版本212。这个第一版本212可以是任何类型的电子文档,比如字处理文档、电子表格、数据库和/或其他。
第一应用程序208和第二应用程序214可以存储在存储设备218中。第一应用程序208和第二应用程序214可以是任何类型的计算机可执行指令,比如字处理器、电子表格、编程的脚本、专用软件或其他。在第一应用程序208和第二应用程序214都存在的实施例中,如下所述,仅仅第二应用程序214需要与电子文档兼容。或者,如下面将讨论的,第一应用程序208和第二应用程序214可以是相同的应用程序。第一应用程序208和第二应用程序214中的一个或两个也可以位于存储设备218以外,因为任一应用程序只需与第一计算机210有效通信。
应用程序接口216是任何类型的计算机可执行指令,适用于为了同步而检验并比较电子文档的两个或多个拷贝,并且可以是为同步电子文档的两个或多个拷贝而特别设计的单独软件、作为另一应用程序的组件而工作的软件工具、第一或第二应用程序208、214等等的集成组件。应用程序接口216还可以执行与同步有关或无关的附加任务。第一版本212、第一应用程序208、第二应用程序214以及应用程序接口216可以驻留在相同的存储设备218中,或者在任何数量的不同存储设备218内。
第二计算机222包括第二处理器224和存储设备228,后者包括上述电子文档的第二版本226以及第一版本212。如上所述,存储设备228可以位于与第二计算机222有效通信的任何位置,包括远程位置等等。同样,在一实施例中,存储设备228和存储设备218可以是相同的存储设备。操作上连接第一和第二计算机210、222的是网络218。网络218可以是适用于这种有效通信的任何通信网络,比如LAN、WAN、无线网络等等。可以理解,可以把任何数量的第一计算机210和第二计算机222连接到网络218。
现在参照图3,在步骤311中,同步进程开始。在一个实施例中,第一应用程序208启动同步进程,第二应用程序214实现同步进程。在另一实施例中,第一应用程序208和第二应用程序214是单个应用程序,其中单个应用程序既启动又实现同步。虽然下面图3的讨论描述了涉及第一应用程序208和第二应用程序214两者的进程,然而可以理解,单个应用程序可以单独执行由第一应用程序208和第二应用程序214所执行的所有步骤。
会使第一应用程序208启动同步进程的任何数量的情况比如:第一版本212的打开、关闭、保存等等;在识别电子文档的第一和第二版本时;根据用户请求手动地启动;以定时间隔启动;在用户登录到系统等等之上后。此外,第一应用程序208可以利用附加条件或者可以使用代替条件,比如仅仅在存在某些数量的版本时才启动同步。下面结合图4更详细地说明一个实施例中同步事件的启动。为了启动该进程,第一应用程序208使应用程序接口216访问第一版本212和第二版本226。访问第一版本212和第二版本216可以用任何计算装置来执行,比如通过浏览与每个版本相关的信息、通过使用搜索功能找到每个版本、通过使用由第一应用程序208所提供的标识信息来定位每个版本,等等。
第一应用程序208可以为接口216提供与第二版本206有关的任何数量的标识信息,比如文件名、位置、地址和/或其他。接口216适用于活动地定位第二版本226,或者具有仅允许观看第一应用程序208、第一版本212等所指定的位置的有限功能。同样,接口216可以用于执行任何数量的附加任务,这些附加任务甚至与同步进程无关。步骤313中,应用程序接口216定位第二版本226,并且检验同步状态。应用程序接口216通过比较第一版本212与第二版本226的信息来确定状态,比如上一次更新的时间和/或日期等等。同步状态还可以用除上述信息之外或代替上述信息的标准来确定。如果所述信息与第一应用程序208所指定的信息和/或标准相匹配,第一和第二版本212、226就具有同步的状态。如果信息不一致,则第一和第二版本212、226没有同步的状态,这样的不一致性就说明可能对这些版本212、226之一作出改变。或者,如果应用程序接口216检测到一个错误、未提供的条件、第一应用程序208已经指定为终止同步的原因的条件,则接口216就继续到步骤330。在步骤330中,接口216把条件通知第一应用程序208,第一应用程序208相应地进行,可以包括任何类型的动作或不动作。
步骤315中,应用程序接口216可以根据步骤313的同步判决的结果采用两种动作过程之一。如果应用程序接口216已确定第一版本212和第二版本226是同步的,那么接口216就继续到步骤325。步骤325中,应用程序接口向第一应用程序208报告第一版本212和第二版本226是同步的。这种报告向第一应用程序208指明目前不必要有任何进一步的同步活动,因为第一版本212包括电子文档最近的版本。该报告还指出用户可以使用第一应用程序208或第二应用程序214来改变第一版本212。
步骤323中,同步进程结束。在该步骤中,第一应用程序208可以停止作用,比如如果这种同步进程在第一应用程序208正在关闭电子文档的第一版本212时发生。因此在这种情况下,一旦发生同步,第一应用程序208就不再执行任何功能,并且可以由用户手动地终止或自动地终止。在另一实施例中,第一应用程序208在打开第一版本212时启动同步进程。在这种情况下,应用程序不会在这种同步事件完成时终止,而是会允许用户使用第一应用程序208的功能开始改变第一版本212,如果该功能可用。
然而在步骤315中,应用程序接口216已经确定第一版本212和第二版本226不同步,接口216继续到步骤317。步骤317中,应用程序接口216向第一应用程序208和/或第二应用程序215报告第一版本212和第二版本226不同步。该报告使第二应用程序215根据用户输入开始同步第一版本212和第二版本226,如下面结合步骤319和321所讨论的。
步骤319中,第二应用程序214通过把用户界面显示在显示设备230上而向用户给出一用户界面。这种用户界面的形式可以是文本和/或图形窗口、音频提示等等,用户界面的任何这种配置都与本发明的实施例相一致。在给出这种用户界面时,第二应用程序214可以用第二应用程序214的功能等向用户给出一个或多个选项。例如,如果第二应用程序214是一个字处理器,那么第二应用程序214就可以在第二应用程序214的字处理用户环境中向用户给出同步选项,比如在有这种第一版本212的页面视图的编辑窗口内等等。同样,第二应用程序214可以用颜色、声音、图形等高亮表示出第一版本212和第二版本226之间的差异,使用户能更好地作出同步判决。第二应用程序214还可以提供附加信息,比如改变了任一版本212、226的各用户的标识,并且可以仅允许一个用户来改变版本212、226,如果用户具有这么做的许可,比如以安全性许可等形式。第二应用程序214使用户能把版本212、226合并到第三拷贝中,以便结合两种版本212、226中的变化。附加选项的形式还可以是从第二应用程序214的功能导出的引导,比如推荐的动作过程等。可以理解,选项可以是由第二应用程序214使用应用程序214的功能参照第一版本212和第二版本226而产生的任何选项。
步骤321中,第二应用程序214结束并处理用户输入。这种用户输入可以包括关于这种同步的任何信息量。例如,用户输入可以选择用户希望保留的电子文档的第一版本212或第二版本226的任何一个的特定改变。在另一个实施例中,用户输入可以包括用户希望完全保留的任一第一版本212或第二版本226的选择。在还有一个实施例中,用户输入可以包括用第二应用程序214的功能对第一和/或第二版本212、226作出的编辑,在完成时使第一版本212和第二版本226同步。可以理解,用户输入包括可由第二应用程序214作出的任何输入,用于选择或用户的使用,并且包括与本发明实施例相一致的任何输入。
还可以理解,步骤319和321可以重复,因为这种用户界面可以取决于用户输入而被重新显示和/或刷新。例如,用户界面可以由第二应用程序214根据用户输入而被重新配置。例如,如果用户选择选择第一版本212和第二版本226之间多个差异之一,且第二应用程序214向用户重新显示用户界面以反映这种选择,那么会发生这种重新配置。步骤319和321可以重复任意次数,或者根本不重复,任一情况都与本发明的实施例相一致。同样,第二应用程序214可以向第一应用程序208或向接口216报告同步的任何结果。由第二应用程序214所报告的结果可以是与同步相关的任何信息,比如选项选择、同步结果等等。
当触发事件发生时,第二应用程序214可以继续到步骤323,同步结束处。这种触发事件可以在任何时间发生,比如在用户已完成协调第一版本212和第二版本226之间的所有差异时、在用户指示第二应用程序214在预定时间放弃或终止同步进程而不完成同步时、等等。步骤323中,同步结束。然后,如上结合步骤325所述,第一应用程序208或第二应用程序214可以在步骤323采取与其中发生同步的环境相一致的任何动作。
现在参照图4,按照本发明的一个实施例示出步骤311的详细图。如上结合图3所述,在步骤311中,第一应用程序208启动同步进程。图4说明了这种启动步骤的更详细的实施例,其中第一应用程序208在打开电子文档的第一版本212后启动这种同步进程。如上所述,第一应用程序208可以在任何时间启动这种同步进程,比如在打开、保存或关闭第一版本212时、在设定的或可变的间隔处、在用户输入后、等等。
步骤411中,第一应用程序208打开电子文档的第一版本212。这种打开最常见地发生在用户输入以打开该第一版本212之后,但是用于启动第一版本212的这种打开的任何装置都与本发明的实施例相一致。步骤413中,第一应用程序208确定第一版本212是否有相关的第二版本226。第一应用程序208在步骤411中完全打开第一版本212后继续到步骤413,或者可以在这种打开进程期间的任何点处继续到步骤413,例如包括在步骤411中打开第一版本212之前。同样,可以采用任何方法来使第一应用程序208作出这种判决。例如,诸如电子标志(stamp)等信息可以与第一版本212相关联,从而使第一应用程序208作出这种判决。相反,第一应用程序208为了这种判决可以搜索操作上耦合到网络218的任何或全部计算设备,比如第二计算机222。可以理解,第一应用程序208可以使用任何确定第二版本226存在的方法,而同时保持与本发明的实施例相一致。
如果在步骤413中第一应用程序208未找到第二版本226,第一应用程序208就确定第一版本212是该电子文档的仅有拷贝,并且继续到步骤417。步骤417中,第一应用程序208正常地处理第一版本212。这种正常处理可以是第一应用程序208一般对与第一版本212相同格式的电子文档所执行的任何类型的处理,可能按照任何用户输入来执行。例如,在图4中,当第一应用程序208按照步骤311启动这种同步进程时,第一应用程序208正在打开第一版本212。在发现不需要同步后-由于不存在第二版本226-第一应用程序208完成第一版本212的打开并且相应地继续。
如果在步骤413中,第一应用程序208发现第二版本226,第一应用程序208就继续到步骤415。步骤415中,第一应用程序208联系应用程序接口216以开始同步第一版本212和第二版本226。在联系了应用程序接口216以后,这种同步进程继续到步骤313,如上结合图3所讨论的。
这样,给出了用于管理应用程序中的文件复制的方法和装置。虽然已经结合各图的优选实施例描述了本发明,然而应该理解,可以使用其他类似的实施例,并且可以对所述实施例作出修改或添加以执行与本发明相同的功能而不背离本发明。例如,本领域的技术人员会认识到,在本申请中描述的发明可以应用于任何计算设备或环境,无论有线或无线,并且可以应用于通过通信网络连接的任何数量的这种计算设备,并且在网络上交互作用。而且,应该强调,构想了多种计算机平台,包括手提设备操作系统和其他特定的操作系统,尤其是在无线网络化设备的数目继续增加的情况下。更进一步的是,本发明可以在多个处理芯片或设备中实现,存储可能在多个设备上受到影响。因此,本发明不应限于任何单个实施例,而应被理解为符合所附权利要求最宽泛的范围。