能对于电子文档通过多个计算机系统执行近实时合作的方法、系统和装置的制作方法

文档序号:6548271阅读:187来源:国知局
专利名称:能对于电子文档通过多个计算机系统执行近实时合作的方法、系统和装置的制作方法
相关申请的交叉引用本声明要求于2004年4月20日提交的序号为60/563.685、发明名称为“OneNote共享会话特性”的美国临时专利申请的优先权,该专利申请整体引用在此作为参考。
背景技术
随着因特网的到来和发展,产生了允许远程计算机用户对于共同的任务而一起工作的网络计算应用。例如,存在允许远程用户观看共同的白板、对于一个幻灯片放映进行观看和互动、相互之间的聊天、以及以合作的方式执行其它功能。对于需要协同工作但又相隔遥远的用户来说,这种程序方法通常提高了工作效率。
先前通过计算机网络来对一项任务进行协作的解决方案的一个缺点是在用户协作工作期间,不能提供满意的用户体验。例如,由于大量的数据要不断地发送到所有的参与者,先前所述的解决方案一般会使网络的性能下降。在许多情况下,当数据正在传输,应用程序会急剧减慢或者甚至阻碍用户进行输入。在这种情况下,用户将明显地察觉到共享过程正在进行,并且也许甚至变得对应用软件感到失望。
用户体验变糟的另一个事实起源于,当通过先前的解决方案进行合作时,对于一组给定的合作者,他们可用的网络带宽和等待延时是有很大差异的。比如,在一个给定的合作会话中,几个用户可能连接到高速局域网连接,而其他的用户可能被低速的拨号网络连接所限制。运用先前的解决方案,通过拨号连接的用户在接收和更新共享文件可能会有极大的困难。这个对用户来说也是非常沮丧的。
本发明的各种实施例正是基于这些因素和其它的考虑而作出的。

发明内容
根据本发明的具体实施方式
,以上所述的和其它的问题通过由两个或两个以上的计算机系统对电子文件进行近实时合作的方法,系统和装置来解决。发明的实时方式允许两个或两个以上用户参与一个共享会话,通过计算机网络,交互地产生或者修改电子文件。电子文件的更改以一种即使在高等待时间,低带宽的网络情况下,依然允许合作近实时发生的方式被识别,打包和传送给每个用户。此外,由于文件的更改被打包成为增量的修订版本,然后传送给参与者,没有必要传送大量数据使近实时合作成为可能。
根据本发明的一个方面,提供了一种通过两个或两个以上计算机来对电子文档实行近实时合作的方法。根据所述方法,一种代表共享文件内容的数据结构在每个参与合作会话的计算机系统上都可维持。当用户修改文件的输入被上述计算机系统之一接收到时,数据结构就被更新以反映此修改。为了响应修改,数据结构的改变被周期性地识别和收集成作为编辑结果的修订版,此版本只识别作出的更改。修订版识别对作为任何编辑结果的文件的核心数据模型作出的改变。
为了确保编辑状态中的正确进程,在将修订版传送给其它参与者时要先判定在诸参与者中接受编辑的计算机系统上维持的数据结构的备份是否是最新版本。如果所述数据结构不是当前版本,应从其他参与者中检索出需要使所述数据结构成为当前的所需要的版本的修订版本,并且应用到上述数据结构中去。一旦数据结构是当前的,修订版本就被打包,传送到每个参与共享会话的参与者。修订版本被频繁地接收,以确保修订版本足够小到以便通过计算机网络快速传送。
当其他参与会话的计算机系统接收到修订版时,这些修订版本就被合并成存储在参与计算机系统中的数据结构的备份。然后,该数据结构被用来刷新共享文件的显示,从而表明任何参与会话的计算机系统中的近实时修改。编辑可以被任一参与会话的计算机系统接收,并且以相似的方式传送给其他参与者。
为了进一步地确保在不同参与者中的编辑的有效进程,同步令牌可以被运用。同步令牌是一种在参与者之间传送的数据结构。只有拥有同步令牌的计算机系统才被允许对数据结构产生新的修订。因此,在作任何修订之前,参与计算机系统必须冼先确认它是否拥有了同步令牌。如果它拥有了同步令牌,它可以制定新的修订版本,并且将修订版本传送给其它参与者。如果它不拥有同步令牌,那么它必须向此时拥有同步令牌的参与计算机系统提出请求,请求同步令牌。
为了确保同步令牌在参与会话的计算机系统之间传递的公正性,对于令牌的请求包含了表明请求的计算机系统已经等待令牌的时间的数据。如果对于请求没有接收到响应,另一个请求可以被发送表明计算机系统一直在等待该令牌的延长持续时间。当同步令牌拥有者接收到索要令牌的请求,它会检测每个请求,来确定在等待接收令牌中等待时间最长的参与者,然后将令牌传送给那个计算机系统。
其它机制也被用来确保在所有的参与者中,一个并且只有一个令牌存在。例如,如果一个对于令牌的请求在预定的时间内没有完成,一个新的令牌会被产生。这种情况在以下例子中会发生,如果一个拥有令牌的计算机系统从网络中断开连接。另一方面,会周期性地检测是否在参与者中存在两个或两个以上的令牌。如果有两个同步令牌存在,一个确定性的算法会在每个拥有令牌的计算机系统上运行,以决定哪个令牌应该被废除。
一个机制也被提供用来确保通过低带宽连接的计算机系统能被公平地授予令牌。多个令牌也可以存在,但是是被用来最小化复制。根据这个机制,当接收到需要令牌的请求时,一个判断是否令牌已经被传送给另外一个参与者的判定被做出。如果令牌已经被传送,请求中“生存次数”的值将减少。如果生存次数没有过期,索要令牌的请求被转发给新的同步令牌的拥有者。通过这种方法,来自低带宽连接参与者的请求被有效地注入高带宽网络。
本发明可以被实现为一计算机过程、一计算装置或者是作为如计算机程序产品和计算机可读介质的一种制品。计算机程序产品可以是计算机系统可读的计算机存储介质,和用于执行计算机程序进行的对计算机程序指令的编码的程序。
结合附图阅读以下详细的描述,可以明显理解本发明的上述和其它方面、特征和优点。
附图简介

图1是就本发明的各种实施例示出了说明性运行环境的各方面的计算机网络图。
图2是就本发明的各种实施例所提供和使用的计算机系统的各方面的计算机系统结构图。
图3A是计算机软件架构图,说明了有关本发明的各种实施例所使用的一些软件部分的各方面。
图3B是流程图,说明了根据本发明的一个实施例而初始化一个新的共享会话的过程。
图4A是计算机软件架构图,说明了当加入一现存的共享会话时,被使用的软件组分的各方面。
图4B是流程图,说明了根据本发明中的一个实施例,加入一个现存的共享会话的过程。
图5A是屏幕图,说明了在本发明实施例中所运用到的屏幕显示。
图5B是数据结构图,说明了在本发明实施例中所运用到的图形数据结构的各方面。
图6A和图6B是数据结构图,说明了在本发明不同实施例中产生修订版本的过程。
图7是计算机软件架构图,说明了在本发明不同实施例中使用的一些软件部件的各方面。
图8-12是状态图,说明了根据本发明不同实施例对于电子文档提供靠近实时合作的一些步骤。

发明内容
现在参照附图,图中相似的编号代表相似的元件,本发明的各个方面将被描述。特别是,图1和相应的讨论是用来提供对适于本发明实现的运算环境的简短而一般的描述。尽管本发明将在程序模块的一般上下文中描述,此程序模块和运行在个人计算机上的操作系统连同执行,本领域的技术人员会认识到本发明也可以结合其它类型的计算机系统和程序模块来实现。
一般而言,程序模块包括例行程序、程序、组件、数据结构以及其它类型的执行特殊任务或者运行特殊抽象数据类型的结构。此外,本领域中的那些技术人员将理解本发明也可用其它计算机系统配置来实施,这些配置包括手持设备、多处理器系统、基于微处理器或可编程的消费者电子设备、小型机、主机,以及类似的配置。本发明也可在分布式计算环境中实施,其中任务由通过通信网络链接的远程处理装置执行。在分布式计算环境中,程序模块既可以安置在本地也可安置在远程存储器存储装置中。
现在参照图1,描述本发明的几个具体实施例的说明性运行环境。如图1所示,网络4把许多计算机系统(2A-2D)相互联结起来。应该认识到网络4可以包含任何类型的计算机网络,包括局域网(LAN)或者如因特网之类的广域网(WAN)。网络4提供使2A-2D的计算机系统中任何成员间的通信成为可能的介质,也将使和通过网络4连接的其它计算机网络间的通讯成为可能。根据本发明的一个具体实施方式
,网络4包含了一诸如因特网的传输控制协议/互联网协议(TCP/IP)网络。
每个在2A-2D中的计算机系统包含了通用台式机、便携式计算机、写字板或者其它能执行一个或多个应用程序的计算机。特别是,根据本发明的各种实施例,计算机2执行记笔记的应用。本领域的技术人员都了解,笔记应用程序提供捕获和组织包括文本、手写笔迹、图像、绘画、语音和其它信息的纪录的功能。
根据本发明的实施例,笔记应用程序也允许对由笔记应用产生的文件的近实时合作。就像此处描述的一样,近实时是指使在参与合作会话的每个计算机系统(2A-2D)上的文件的刷新可以做到和网络4所允许的一样快。当用高带宽网络将计算机系统2A-2D连接到网络4的情况下,响应时间将接近实时。当用较慢的网络连接时,响应时间将变慢。然后,就像将要在下面更详细描述的那样,提供许多机制以确保通过较慢连接的参与共享会话的计算机系统也会享受很好的响应性能,而不致于对使用较高带宽连接的参与者的性能受到负面影响。
用来确保即使用户在慢连接时也将拥有响应经验的一种方法包括同步令牌6的公平传递。同步令牌6在参与共享会话的计算机系统2A-2B之间传递。同步令牌6是一种数据结构,它授权计算机系统使得拥有它的计算机系统可将共享文件刷新至当前状态。令牌的拥有权将不阻止用户做局部更改。有关运用同步令牌6来提供近实时合作的更多细节将在以下关于图2-11中提供。
应当理解,根据本发明的一个实施例,笔记应用包含来自华盛顿州雷蒙德的微软公司的ONENOTE笔记应用程序。然而应当理解,在此描述的本发明的各个方面也可以和来自其它制造者的的笔记应用程序一起运用。此外,虽然在此描述的本发明的多个方面是以笔记应用程序的上下文中被介绍,应当理解其它类型的应用程序也可以用来实施本发明的各个方面。例如,本发明的各个方面可以和文字处理程序、电子制表程序、绘图程序、计算机辅助设计程序、显示程序、和任何可以被用来对文档内容与一个或多个用户合作的其它类型的计算机程序一起使用。
现在参照图2,将描述运用在本发明的各种实施例中的计算机2的说明性计算机架构。图2所示的计算机架构示出了常规的台式计算机、便携式计算机、或者是笔记本计算机,包括中央处理器(CPU)8、包含了随机存取存储器(RAM)18和只读存储器(ROM)20的系统存储12以及把存储器和CPU8相连的系统总线10。一个包含帮助在计算机内部部件中诸如在启动期间传送信息的基本程序的基本输入/输出系统存储在ROM20中。此外,计算机2还包括用来存储操作系统32、应用程序和其它程序模块的大容量存贮器器件14,下面将作详细描述。
大容量存贮器器件14通过连接至总线10上的大容量存贮控制器(未显示)连接到CPU8。大容量存贮器器件14及与其相联系的计算机可读介质为计算机2提供非易失性存储。虽然这里对于计算机可读介质的描述是指诸如硬盘或光盘驱动器之类的大容量存贮器器件,那些本领域中的技术人员应该认为,计算机可读介质可以是任何可被计算机2访问的介质。
作为例子,而非限制,计算机可读介质可以包含计算机存储介质和通信介质。计算机存储介质包括任何用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的方法或技术中所运用的易失性和非易失性、可移动性和非可移动性的介质。计算机存储介质包括,但非局限于,RAM、ROM、EPROM、EEPROM、闪存或其它固态存储技术,CD-ROM、数字化视频光盘(DVD)、或其它光学存贮器,盒式磁带、磁带、磁盘存储器或其它磁性存储器件,或者任何其它可以被用于存储所需要的信息并且可以被计算机2存取的介质。
根据本发明的各种具体实施方式
,计算机2可以在一个采用通过TCP/IP网络4,诸如因特网的逻辑连接到远程计算机的联网环境中运行。计算机2可以通过一个连接到总线10的网络接口单元16连接到网络4。应该理解网络接口单元16也可以用来连接到其它类型的网络和远程计算机系统。计算机2也可包括用来接收和处理来自许多其它包括键盘、鼠标或者电子输入笔(在图2中未显示出)器件的输入的输入/输出控制器22。类似地,输入/输出控制器22可提供到显示屏、打印机或者其它类型的输出器件输出。
就像以上简短提及的,许多程序模块和数据文件,包括诸如来自美国华盛顿州雷蒙德微软公司的WINDOWS XP操作系统的适于控制联网的个人计算机操作的操作系统32,可以存储在计算机2中的大容量存贮器件14和RAM18中。大容量存贮器件14和RAM18也可以存储一个或多个程序模块。特别是如上所述,大容量存贮器件14和RAM18可以存储笔记应用程序24。就像以上简短描述的笔记应用24包含捕获和组织可包括文本、手写笔迹、图片、绘画、语音或者其它信息的记录的应用程序。
记录可以被笔记应用24组织到笔记本、文件夹、页和节中。在一个页面中,注记可以被随处放置并且随后可被重新定位。此外,可通过加着重号和列表方式,也可用标记和高亮方式而对注记予以强调。字体、式样、大小和颜色,也可完全控制。当用户退出笔记应用24时,笔记本中的内容可存储在在大容量存贮器件14上的笔记文档26中。有关ONENOTE笔记应用程序操作的其它详情可从华盛顿州雷蒙德微软公司公开获取。
为了创建共享会话文档,笔记应用24使用对等(“P2P”)应用编程接口(“API”)28。P2P API 28运用网络端口API30来提供在传输协议层和会话协议层的与介质无关的联网服务。P2P API的介质无关性是指合作会话可以在TCP/IP网络,IPX网络以及其它经直接连接的调制解调器和串行电缆上运行。P2P API 28可以创建包括客户/服务器和对等的联网会话、群组管理、保证和非保证的消息传输、顺序和非顺序的消息传输、消息分割和重组、话务流量节制、报文优先级、连接统计量和会话说明查询的p2p基础结构。
根据本发明的一项具体实施,P2P API 28包含来自微软公司的DIRECTPLAYAPI。DIRECTPLAY API是一个公开的API,更多有关它的使用和实现的其他详情可从微软公司公开获取。应该认为可从其它厂商获取的其它技术也可以用以在计算机2A-2D间产生对等联网会话。
大容量存贮器件14和RAM18也可以存储电子邮件客户应用程序34。电子邮件应用程序34可以用来发送和接收包含加入共享会话邀请的电子邮件。例如,计算机2A-2D之一的用户可以在笔记应用24内开始共享会话,其中笔记文档26的一个或多个页面被共享。为了邀请其他参与者共享会话,电子邮件客户应用34可以用来创建指向其他已打算参加的参与者的电子邮件。该电子邮件可包括一与笔记应用程序24相关的附件,附件中包括对于连接到共享会话所需的信息(网络协议地址等)。
当其中一个打算参加会话的接收者收到从会话发起者发出的电子邮件消息时,此消息中的附件即可被选择并执行。附件的执行可以导致笔记应用24执行并用附件中所包含的数据连接到共享会话中。一旦连接到共享会话,每个参与者的计算机系统中都会有一份由共享文档形成的副本。通过这个方式,当用户加入到共享的会话时,页面即可通过笔记应用24插入到存储在他们计算机中的笔记簿中。随着共享会话中的各个参与者对于文档已作了编辑,文档的各种副本随后便会彼此同步化。会话发起者可以规定用户是否可以基于个人或全局编辑共享的文档。
有关电子文档更改的同步化的其他详情将在下面提供。应当理解并不必需将电子邮件邀请传送给共享会话的参与者。共享会话的网络地址可以由参与者手动地或是通过其它途径提供。网络地址随后可用于以手动方式与共享会话连接。
现在转到图3A,更多的有关创建新共享会话的细节将被提供。如图3A所示,文档26包括一个或多个可共享的页面40A-40C。当开始新会话的请求被接收时,诸如通过选择用户界面按钮或者菜单选项46,请求即被传送到由笔记应用24提供的已被共享的会话API 44。共享会话API 44协调共享会话的创造与加入、管理会话,调用该P2P API 28以执行通讯;此外,API 44也执行此处描述的其他功能。
当创造新的共享会话时,已被共享的会话API 44即对将要被共享的每个页面40A-40C的创建一新的页面同步化对象42A-42C。每个页面同步化对象42A-42C连接到相应的已共享页面40A-40C。就像将要在下面进行详加描述的那样,每个页面同步对象42A-42C负责监控每个页面所基于的数据模型的更改,创建描述更改此数据模型的修订版,并把修订版传送给在每个参与会话的计算机系统上执行的相应的页面同步对象。页面同步对象42A-42C也负责接收、合并从其它计算机系统接收的修订版,还负责执行在此描述的其它功能。
参照图3B,现将描述一例行程序300,说明由笔记应用程序24执行的用来初始化一个新的文档共享会话的过程。当读到在此所表示的对例行程序和状态机的讨论时,应当理解本发明的各种实施例中的逻辑操作被实现为(1)运行在计算系统上的计算机实现的动作的一个序列或程序模块和/或(2)在计算系统内相互连接的机器逻辑电路或电路模块。该实现是一个根据实现本发明的计算系统运行需求做出选择的问题。因此,在此所讨论的说明状态图的逻辑操作和在此描述的实现本发明的具体实施方式
,都是指各种操作、结构器件、动作或模块。本领域的技术人员将认识到这些操作、结构器件、动作或模块可以以软件、固件、专用数字逻辑及其任何组合来实现,而不偏离本权利说明书中所列举的本发明的精神和范围。
例行程序300在操作302处开始,此处诸如来自用户的一个请求被接收,用以共享当前笔记文件的一个或多个页面。作为对请求的响应,例行程序300继续到操作304,在此共享的会话API 44调用P2P API 28以创建一个新的对等会话。例行程序300从操作304,继续到操作306,在此对于将在新会话中被共享的每个页面40A-40C,创建一个新的页面同步对象42A-42C。每个页面同步对象42A-42C被链接到页面40A到40C,并被连接到新的共享对话。应当理解当一个参与者加入一先前创建的会话中时,参与者计算机系统上的页面同步对象也被初始化,以控制存储在计算机系统上的页面更新。
从操作306,例行程序300继续到操作308,在此参与者可被邀请加入新的共享会话。就上所述,加入共享会话的邀请函可以通过电子邮件消息传送给其他参与者。或者,其它方式也可用来邀请参与者和把共享会话的网络地址传送给其它参与者。例行程序300,从操作308再继续到操作310,在此,确定是否其他参与者已经加入到共享对话中。应当理解当等待其他参与者加入共享会话以及在共享会话的期间,笔记应用24可以常规方式运行。
如果,在操作310处,确定没有其它参与者加入到共享会话中,例行程序300就返回到操作310,在此作出另一个相似的确定。然而,如果其他用户已经加入到新的共享会话中,例行程序300就继续到操作312。在操作312中,每个共享页面40A-40C的最新修订版被传送给每个新的参与者。如将在下面详加描述的那样,修订版标识了对于用来代表作为任何编辑结果的文档26的核心数据模型的变更。因为之前没有修订版传送给参与者,第一个修订版包含了共享文件的完整状态。这在操作312被传送给其它参与者。
例行程序300又从操作312,继续到操作314,在此,由任何参与者作出的对共享文档的变更被交换和同步化。通过以在此描述的方式交换修订版并把修订版合并到共享文档中去,近实时合作可被执行,即使用户通过慢速网络连接到网络4。有关共享文件的同步化的其他细节将在下面对照图8-11提供。
从操作314,例行程序300继续到判决操作316,在此已确定共享会话是否已结束。如果共享会话尚未结束,例行程序300转回到操作314,在此继续同步化进程。如果会话已经结束,例行程序300继续到操作318,并在此结束。
现在参照图4A,有关加入先前创建的共享会话的更多细节将被提供。如上所述,电子邮件消息可当做加入共享会话的邀请函被传送。该电子邮件可以包括附件50,该附件包括共享会话的会话地址52。当附件50被下载到一计算机系统时,在具有会话地址52的共享会话API44上的一个加入方法54被调用。作为对调用加入方法54的响应,共享会话API 44用一条加入共享会话指令调用P2P API 28,作为响应,P2P API 28可通过网络4连接到共享会话。有关这个过程的更多详情在下面对照图4B描述。
图4B表示了一说明性的加入先前创建的共享会话的过程。例行程序400从操作402开始,在此收到加入现存的共享会话的邀请函。当该邀请被选中时,例行程序400继续到操作404,在此存储在参与者计算机系统上的P2P API 28用加入现存共享会话的请求。然后,例行程序400继续到操作406,在此确定到共享会话的连接是否已经建立。如果连接不能建立,例行程序400继续到操作414而结束。如果连接被建立,例行程序400就从操作406继续到操作408。
在操作408处,共享文档的当前修订版408被参与者计算机接收。因为先前没有接受过的修订版,第一个修订版就包含当参与者加入会话时文档的状态。一旦接受到当前修订版,例行程序400继续到操作410,在此所有在共享会话中的参与者的共享页面的内容被同步化。更多有关共享页面同步化的详情将针对图8-11提供。
从操作410,例行程序400继续到判决操作412,在此作出共享会话是否已结束的确定。如果共享会话尚未结束,例行程序400返回到操作410,在此继续同步进程。如果会话已结束,例行程序400便继续到操作414而结束。应该理解不论多少参与者都可以针对4A和4B所描述的方法加入共享会话。
现在参照图5A和5B,有关笔记应用24的操作和笔记应用24用来代表页面的数据结构的更多详情将被提供。图5表示了由笔记应用24提供的屏幕显示的说明性示例。如在图5A上表出的示例页面所示,该屏幕显示代表一个用户可以在上面做注记的页面40D。特别是,用户可以运用笔记应用24把轮廓对象60A添加到页面40D上去。该轮廓对象60A可以包括一个或多个轮廓元素,诸如文本62A和手写笔迹62B。文本62A可以用键盘输入,笔迹62B可以运用电子笔得出。图片64也可以插入页面40D。应该认为图5A中所示的显示只是示例性的,其它类型的数据也可添加进页面40D。
图5B显示了由笔记应用24维持的用以代表图5A所示的页面40D的内容的数据结构。特别是,有向非循环图(DAG)70A被用来在内部代表页面的内容。在DAG70A的顶端,节点72A相应于页面40D创建。在节点72A下方,节点73A相应于轮廓元素60A而创建,而节点80相应于图片64而创建。在节点73A的下方,节点74A和74B相应于轮廓62A和62B而创建。在节点74A的下方,节点76A被创建用以存储实际内容,在这个情况中,对于轮廓62A,文本是”hello”,类似的,在节点74B的下方,节点78被创建用以存储在轮廓62B中的手写笔迹。以这种方式,笔记应用24能代表具有随便多少个数据对象和复杂程度随便多高的页面。应当理解DAG70A对由笔记应用24维持的每个页面而被创建。也应当理解DAG的内容对于同步进程并不重要。任何包含于DAG节点中的数据都可以被同步化。用这种方式,特征可以加到笔记应用24中去,也可从笔记应用24中移走,而不会影响同步化机制。如下面将更详细描述,对每个页面DAG的变更可被识别并当做修订版在共享会话中传送给其他参与者。
现在参照图6A和图6B,有关捕获代表共享页面的一个DAG修订版的过程的详情将被描述。图6A示出一个包括轮廓对象60B和包含在轮廓对象中的文本62C的说明性页面40E。DAG 70B代表页面40E的内容。特别是,节点72B代表页面对象,节点73B代表轮廓对象60B,节点76B代表文本62C。当一个新的共享会话开始时,DAG的任何内容均未传送给其他参与者。因此,整个DAG被认为是一个必须被传送给其它参与者的修订版80A。一旦其他参与者接收到DAG 70B,只有对DAG 70B做出的更改在参与者间交换。这一过程在图6B中示出。
图6B显示出上述针对图6A所描述的页面40E,附加添加的文本62D。文本”BAR”已被用户加到页面40E中。结果,DAG70B已被更新而包括新的节点76C代表新的文本。为了把DAG 70B中的更改传播给其他在共享会话中的参与者,一个新的修订版80B被取作数据结构。
新的修订版80B只包含自最近的修订版被取得后的由用户更改的DAG的那部分。因此,新的修订版80B只包含包括了新添加的文本的节点76C。如将在下面详加描述的那样,一旦被捕获,修订版76C可被串行化成字节流被传播给其他参与者。当修订版76C被其他参与者接收时,它的内容被加到本地存储的DAG70B的副本中,以在每个参与计算机系统处反映由用户作出的更改。然后DAG70B被用来在每个计算机系统上呈现页面,由此来反映更改,但参与者须具有所要求的相关修订版。如果相关的修订版不存在,它们必须被请求。因为呈现是递增的,所以是有效而迅速的。有关修订版的传送、同步化和合并的更多详情将在下面提供。
现在参照图7,有关用来在共享会话中的各个参与者中传送和应用修订版的机制更多详情将被提供。图7说明了参与共享会话的计算机系统2A和计算机系统2B。如上所述,计算机系统2A和2B均维持共享页面40F和40G的副本。另外,计算机系统2A和2B每一个也均维持链接到共享页面的页面同步对象。计算机系统2A维持分别链接到页面40F和40G对应的页面同步对象42F和42G。计算机系统2B维持分别链接到页面40F和40G的页面同步对象42H和42J。
为了简化共享会话中参与者之间的通信,对等网络被划分成许多通道。每个在参与者之间交换的信息被指定一个通道标识号,并且用以识别通道号的数据也随消息一起传送。每个页面同步对象在自己的通道上“收听”信息。例如,如图7所示,页面同步对象42F和42H通过在第一条通信通道上传递一通道信息90A进行通信。同样地,页面同步对象42G和42J通过在第二条通信通道上传递一通道消息90B进行通信。其他页面同步对象可以在其他通道上以相似的方式通信。
当一个新参与者加入现存的共享会话时,一条消息被传送给使会话开始的计算机系统。作为对接收该消息的响应,主机以上述描述的方式把当前的修订版传送给新的参与者。每个页面都在一条新的通道上传送。当一个参与者在通道上接收到一条消息时,就对此通道创建一个新的页面同步对象。参与者还创建一个新的页面并且把新的页面链接到新的同步对象。当当前的修订版第一次被传送时,和其它修订版并无关联,所以接收到的修订版可以被用来代替新创建的页面。以这种方式,新的页面和新的页面同步对象在每个参与会话的计算机系统上以一种自动的方式被创建。
也应该理解,因为页面消息是基于按通道为基础传送,用户可同时编辑不同的页面而不导致在编辑和修订版中发生冲突的可能。然而,如果多个用户同时编辑相同的页面,包含每个用户编辑的修订版都会同时被取出并放在网络上的可能性就会出现。这种可能导致另外一种可能即在网络上出现的状态不一致。为了避免这种可能性,本发明的各种具体实施方式
运用在参与者中传递的同步令牌。该同步令牌是一种可以批准拥有令牌者产生DAG数据结构的下一个修订版的数据结构。当且仅当一个参与者拥有了同步令牌,才可以被批准对数据结构申报修订。应该理解要作出的本地性修改并不需要拥有同步令牌。运用同步令牌的过程将针对图8在下面描述。
现在参照图8,一个说明对共享数据结构指定一个新修订版的过程的说明性状态机将被描述。状态机开始于状态802,在此判定对于数据结构是否已做出本地更改。如果尚未做出任何更改,就没有必要申报新的修订版。因此,如果尚未做出任何更改,状态回到状态802。如果有更改被做出,状态机过渡到状态803。在状态803,在创建一个修订版前要花费一段预定的时间进行等待。这确保修订版不致过于频繁地取出。
从状态803,状态机过渡到状态808。在状态808,判断是否做出编辑的计算机系统是当前同步令牌的拥有者。如果该计算机系统是当前的拥有者,状态机过渡到状态804。如果该计算机系统不是当前的拥有者,状态机过渡到状态810,在此索要令牌的请求被传送给令牌的当前拥有者。状态机然后过渡到状态812。
在状态812,判断是否同步令牌已被接收。如果令牌已被接收,状态机过渡到状态804。如果令牌尚未被接收到,状态机过渡到状态814。在状态814,一直在等待接收同步令牌的计算机系统的时间被增加。如以下将要详述的那样,等待时间与请求同步令牌的时间包括在一起。当决定同步令牌应该发送到哪个计算机系统时,该数据被一个参与者利用。特别的,等待同步令牌时间最长的计算机系统被给予同步令牌。有关这个过程的更多详情将在下面描述。
从状态814,状态机过渡到状态816。在状态816,判定是否在预定时间用完时还没有得到任何关于同步令牌请求的回应。如果一段延长的时间周期已用完,这就可说明令牌已经丢失,例如令牌拥有者正从网络4断开连接。因此,如果该时间周期已过去,状态机过渡到状态818,在此运用当前的修订版/状态作为基础而创建一个新的令牌。如果该时间周期没有过去,状态返回状态810,在此另外一个索要同步令牌的请求和更新过的等待时间被一起传送。令牌拥有者也可以选择拒绝请求,在这种情况下将接受到一个拒绝消息。请求者就要等待一段时间,然后再次请求,也就是转回到状态810。
从状态818,状态过渡到状态804,在此判定DAG的当前状态是否赶上了所有其他的由其他参与者所做的修订版。如果该图表不是当前最新的,状态过渡到状态806,在这里使数据结构当前化所必需的修订版被请求,并从其他参与者那里被接收。一旦必需的修订版已被接收,状态机从状态806返回到状态804。
如果在状态804,确定数据结构是当前的,状态机转移到状态822,在此修订版以上述方法被取出,并且被串行化以便通过网络4传送。然后状态过渡到状态826,其中一个以ID形式的参照被放入令牌。然后状态过渡到状态828,在此令牌和修订版被推送给所有在共享会话中的参与者。如果用户并未像下面所描述的那样被限制,那么状态就从状态828返回到状态802。根据本发明的具体实施方式
,存在限制机制,以使只有当参与者已经完成对其他所接收到的最近的修订版的处理时修订版才推向该参与人。当参与者完成对其最近的修订版的处理,最新的修订版就随之被发送。如果参与者不能和修订的流程同步,那么某些修订版将被漏过。这相当于降低对于参与者的“帧速率”。有关把接收到的修订版合并入数据结构、检测和校正多个令牌的存在、以一种公平的方式接收和响应索要令牌的请求的细节将针对图9-11在下面详细描述。
现在转到图9,一个说明性的状态机900将被描述以说明接收包含一个修订版的令牌的过程。状态机900开始于状态902,在此一份同步令牌通知被接收。令牌拥有者频繁地传播他们是令牌的拥有者的标示。如果这样的标示被收到,状态机900就会随之继续到操作904,在此确定在共享会话的参与者中是否存在两个同步令牌。这个确定是用确定接收到该通知的参与者是否已经拥有了令牌而作出的。如果是,那么就存在两个令牌。如果不存在两个令牌,状态过渡到状态912。如果确有两个令牌存在,状态便过渡到状态906。
在状态906,一场用来决定两个令牌中哪个应被运用哪个应被废除的“竞争”被执行。该竞争包含一个在两个拥有同步令牌的计算机上都执行的确定性算法。例如,该算法可以简单的比较指定给每个对等者的独特的整数标识号来决定哪个较大。有标识号较大的对等者赢得竞争,而有标识号较小的对等者则输掉竞争。应当认为其他类型的确定性算法也可以运用。
如果在状态906,该计算机系统被判定已赢得竞争,状态过渡到状态908,在此一个指令对等者删除其令牌的指令被传送给其他拥有令牌的对等者体。状态随之转移到状态912,并在此结束。以这种方式,令牌的合法拥有者能以正常的方式继续其进程。
如在状态906,该计算机系统已输掉这一竞争,状态过渡到状态910,在此收到的令牌被删除,状态随之过渡到状态912,在此令牌拥有者以及最近修订版的ID被记录以便将来引用。这个信息以后被用来得知从谁那里请求令牌。从状态912,状态机900过渡到状态916并在此结束。应该理解在图8、9、10和12中所示的过程是被独立地运行,并且可能被并行运行。
现在转到图10,以一种公平的方式接收和响应索要同步令牌请求的说明性状态机1000将被描述。状态机1000开始于状态1002,在此索要同步令牌的请求被接收。状态机从状态1002过渡到状态1004,在此,在继续之前要过一段预定的一个时间段。然后状态过渡到状态1006,在此确定同步令牌是否已经被转发给另外一对等者。如果同步令牌没有被转发,状态机1000过渡到状态1008。
在状态1008,如果接收到一个以上索要令牌的请求,作出确定哪个等令牌的请求时间最长。状态机1000随后过渡到状态1010,在此令牌被传送到发送索要同步令牌请求后等待时间最长的计算机系统。用这种方式,等令牌时间最长的对等者将接收令牌。从状态1010,状态机1000过渡到1012并在此结束。
如果在状态1006确定令牌已经被发送给另一个对等者,状态机过渡到状态1014。在状态1014,在索要同步令牌的请求中建立的“生存次数”值减1。生存次数值指在其过期之前,应该给新的同步令牌拥有者转发请求的次数。状态机然后被过渡到状态1016,在此判定是否请求已经过期。如果请求已经过期,状态机从状态1016过渡到状态1012并在此结束。如果请求没有过期,根据生存次数值,状态过渡到状态1018,在此请求(包括减少的生存次数值)被转发给新的同步令牌拥有者。通过这种式,一个对于同步令牌晚到的请求也可以被注入到高速网络中。从状态1018,状态过渡到状态1012并在此结束。
现在转到图11,说明性状态机1100将被描述以显示本发明对于给每个在合作会话中的对每个用户分派单独的撤消堆栈的特性。状态机1100从状态1102开始,在此一个对于每个页面的撤消堆栈在每个参与共享会话的计算机系统上被维持。该撤消堆栈跟踪对DAG所作的更改,以致这些更改可在以后按照客户的请求而“撤消”。
从状态1102,状态机1100过渡到状态1104,在此确定是否已收到一个撤消请求。如果任何撤消请求均未收到,状态机1100返回到状态1102。如果收到撤消请求,状态过渡到状态1106,在此,对于DAG执行反向合并以确定应该被撤消的编辑。然后状态过渡到状态1108,在此创建一个包括撤消编辑的新的修订版。状态机随后过渡到状态1110,在此该新的修订版被传播给共享会话中的其他参与者。以这种方式,每个由任何个人用户在任何单独页面所做的编辑可以被容易地撤消。从状态1110,状态机1100过渡到状态1102并在此结束。
现在参照图12,描述一个合并对图片的修订的说明性状态机1200。状态从状态1202开始,在此从网络中接收修订版。如果修订版是对于DAG的最近版本(也就是如果旧的修订版被接收,他们不被用到DAG中),状态随后过渡到状态1204,在此确定是否存在本地更改。如果没有做本地更改,状态过渡到状态1212,在此接收到的修订版被直接用到图片上。状态随后过渡到状态1210并在此返回。
在状态1204,如果确定局限变更已经作出,状态过渡到状态1206。在状态1206,确定是否有同步令牌可供使用。如果令牌供使用,状态过渡到状态1210并在此返回。用这种方式,如果收到新的修订版并且已对文档做出更改,在状态1208,3路合并被执行并将本地更改加到刚收到的修订版上。任何本地更改都在上述结合图8概括描述的过程中传送给其他参与者。
如果在状态1206,确定出没有令牌可供使用,状态过渡到状态1208,在此执行了路合并。3路合并的输入为作为从网络中接收到的最近的修订版的基线,来自网络的更新(从修订版中导出)以及本地更改。通过对图片的当前状态,本地编辑和接收到的修订版执行了路合并,一份图片的最近修订版即可计算,而依旧维持本地编辑为修订版,以便将来有令牌提供时,传送给其他参与者。从状态1208,状态过渡到状态1210并在此结束。
根据以上所述,应该认为本发明的各种具体实施方式
包括电子文档近实时合作的一种方法、系统、设配和计算机可读介质。以上的详细说明、示例和数据提供了一份有关完成制造和运用本发明的组成的完整描述。由于本发明的许多实施例可在不偏离本发明精神和范围的情况下完成,本发明归属于下文附加的权利要求中。
权利要求
1.一种通过多个计算机系统能对电子文档作近实时合作的方法,该方法包括维持代表整个电子文档内容的数据结构;在多个计算机系统的第一个计算机系统上接收用户输入,上述用户输入包含对于数据结构的修改;响应于对数据结构的修改,创建只标识对数据结构所作修改的修订版;和把修订版发送给除了在其上做出该输入之外的每个计算机系统。
2.根据权利要求1所述的方法,进一步包括在多个计算机系统中的第二个上接收所述修订版;把修订版合并为维持在多个计算机系统中的第二个计算机系统上的数据结构版本;在多个计算机系统中的第二个计算机系统上显示数据结构的内容。
3.根据权利要求2所述的方法,进一步包括先于发送修订版本在第一个计算机系统上确定数据结构是否是当前的;和如果数据结构不是当前的,提取并合并成必需的修订版以使数据结构当前化。
4.根据权利要求3所述的方法,进一步包括先于发送修订版在第一个计算机系统上确定是否该第一个计算机系统是同步令牌的拥有者;响应于第一个计算机系统不是同步令牌拥有者的确定,向同步令牌拥有者请求同步令牌;和响应于第一个计算机系统是同步令牌拥有者的确定,将修订版传送给在其上做出该输入的计算机系统之外的多个计算机系统的每一个。
5.根据权利要求4所述的方法,其特征在于从同步令牌拥有者请求同步令牌包括产生一个索要同步令牌的请求,所述请求包括表明第一个计算机系统已经等待同步令牌的持续时间的数据;将请求发送给拥有同步令牌的计算机系统;确定同步令牌是否已被接收到;响应于同步令牌尚未被接收到的确定,产生一个新的索要同步令牌的请求,所述新的请求包括表明第一个计算机系统已经等待同步令牌的延长的持续时间的数据;和将新的请求发送给拥有同步令牌的计算机系统。
6.根据权利要求5所述的方法,进一步包含接收同步令牌;确定是否存在两个同步令牌;和响应于存在两个同步令牌的确定,执行一计算以确定两个令牌中哪个令牌应该被删除。
7.根据权利要求5所述的方法,进一步包含接收一个索要同步令牌的请求;响应于该请求,确定同步令牌先前是否已经被发送给多个计算机系统中的一个;如果同步令牌先前尚未被发送过,识别等待同步令牌经过的时间最长的对同步令牌的请求;和将同步令牌发送给发出索要同步令牌请求后等待时间经过最长的计算机系统。
8.根据权利要求7所述的方法,进一步包含如果同步令牌先前已被发送了,将索要同步令牌请求中的生存值减一次,判定生存值次数是否大于0,和如果生存值次数大于0,将请求转发给同步令牌的当前拥有者。
9.根据权利要求8所述的方法,其中的数据结构包含一个有向非循环图。
10.一个有计算机可执行指令存储在其中的计算机可读介质,当上述指令被计算机执行时,会导致计算机执行权利要求1所述的方法。
11.一个能执行权利要求1所述的方法的计算机控制设备。
12.一种通过多个计算机系统能对于电子文档的一个页面进行近实时合作的方法,上述方法包含在每个计算机系统上维持一图表,该连接的图表标识了电子文档页面的内容;在多个计算机系统中第一个计算机系统接收对于页面的更改,对于页面的更改导致相应的图表的更改;产生图表的修订版以响应所述更改,所述修订版包含只识别对图表进行了更改的数据;把米自多个计算机系统中的第一个的修订版发送给其他每个计算机系统;和把修订版合并入维持在其他每个计算机系统上的图表中。
13.根据权利要求12所述方法,进一步包含先于发送修订版确定是否多个计算机系统中的第一个是同步令牌的拥有者;和仅当第一个计算机系统是同步令牌的拥有者时传送修订版。
14.根据权利要求13所述方法,进一步包含在第一个计算机系统上接收一个或多个来自其他计算机的索要同步令牌的请求,每个请求指明了发出请求的计算机为接收同步令牌已等待的时间量;响应于接收到一个或多个索要同步令牌的请求,确定在请求中已等待同步令牌时间最长的计算机;把同步令牌发送给该等待时间最长的计算机。
15.根据权利要求14所述方法,进一步包括响应于接收一个或多个索要同步令牌的请求确定同步令牌先前是否已经被转发;和响应于确定同步令牌先前已经被转发,在每个接收到的索要同步令牌的请求中将生存值减少一次,并把请求转发给同步令牌的当前拥有者。
16.根据权利要求15所述方法,进一步包括确定是否有两个同步令牌存在;和响应于确定有两个同步令牌存在,在每个拥有同步令牌的计算机系统上执行一个识别算法以确定两个同步令牌的哪个同步令牌应该被删除。
17.根据权利要求16所述方法,进一步包括在多个计算机系统中的每一个上执行一页面同步对象,所述同步对象可操作用于在通信通道上收听对页面的修订版,接收对页面的修订版,并在修订版已收到时修改图表。
18.根据权利要求17所述方法,其中电子文档包含多个页面,且其中对于每个页面均创建一同步对象。
19.一个有计算机可执行指令存储在其中的计算机可读介质,当上述指令被计算机执行时,会导致计算机执行权利要求21所述的方法。
20.一个能执行权利要求12所述方法的计算机控制设备。
全文摘要
提供了一种对电子文档合作的方法、系统和装置。根据该方法,一种用来代表共享文件内容的数据结构在每个参与合作会话的计算机系统上被维持。当用户的输入被其中一个计算机系统接收用来修改该文档时,数据结构被更新,以此来反映修改。响应于该修改,对于数据结构的改变被周期性地识别和收集成为一个修订版,用来标识自先前修订版产生以来,仅对数据结构的改变被当做编辑所作的结果。修订版被打包和发送给在每个共享会话中的参与者。修订版被合并到存储在参与会话的计算机系统上的数据结构的副本中。
文档编号G06F17/30GK1738254SQ20051006683
公开日2006年2月22日 申请日期2005年4月20日 优先权日2004年8月18日
发明者S·P·克拉克 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1