背景技术
协作是任何机构的必要部分。团队工作提高了生产率,共享了知识并且激发了创造力。它还为理念和服务的发展提供了关键环境。随着廉价的国际通信系统,诸如计算机网络以及包括因特网的光纤电缆之类的发展,机构可跨越不同的大陆和时区在全球范围内协作。甚至在地区范围内,灵活的工作惯例和接近普及的无线通信系统意味着,团队成员可在不同的地理位置同时协作或在同一办公室的不同时间协作。所述协作还可涉及在若干个不同的网络设备上操作的若干个用户。
现代协作的大多数形式涉及电子文件的编辑。这些文件可包括文字处理文档、电子表格、数据库、多介质演示、音频和视频内容、计算机程序代码或专有文件类型等。现有技术中已经提出多种方法,以使得能够在这些文件上进行协作。
第一种方法使用单一的系统信息中心库来保留给定文件或文档的主版本(masterversion)。用户个人检索(或“检查”)来自系统信息中心库的最新版本并且随后将新副本保存(或“提交”)回至系统信息中心库,该新副本包括他们所做出的任何改变。这样的布置的公知实例包括由RichardGrune开发的并发版本系统(CVS),以及由CollabNetIncorporated开发的副版本(SVN),这两个实例为在应用开发期间管理不同版本的计算机程序代码问题提供了开源解决方案。在某些情况下,系统信息中心库可由连接至因特网的服务器提供。在这种情况下,多个客户机设备可将系统信息中心库作为在线服务来访问,以“检查”和“提交”文档(例如,由微软公司所提供的MicrosoftOfficeLive)。
在WO/2005114467A2中陈述了一种相似的方法,其中提供了远程计算机系统。该远程计算机系统用作若干个工作站的服务器,并且将待编辑的文档存储作为多个链接字符对象。通过工作站和远程计算机系统之间的通信,可更新集中存储的文档。然而,所述系统具有与以服务器为中心的系统相关联的惯常缺陷,如下面进一步讨论的。
当一个以上用户同时编辑文档时,这种类型的文档管理解决方案通常遇到困难。在所述情况下,在由每个用户做出编辑之间可存在“冲突”;例如,用户A和B检查给定文档的版本1;然后用户A提交有修改的版本1.1;以及,用户B随后提交有修改的版本1.2。在此阶段,版本1.2缺少由用户A所做出的修改。
已经提出了合并工具来用于合并在不同版本(例如,上面的版本1.1和1.2)中做出的修改,使得可产生该文件的合并版本。这些机制通常与系统信息中心库方法相关联,但是也可用于独立式软件,例如,也是由微软公司提供的MicrosoftWord。合并工具的使用未必在所有环境中都能提供足够的一致性。例如,如果由用户A和用户B做出的编辑是相互排斥的(例如,用户A删除一个段落而用户B为该段落添加详情),则对于简单的合并工具,存在产生不一致结果的可能性。
建议一种替代的方法,由此所有用户均在线编辑存储在中央服务器上的文档。在所述系统中,文档不因为本地编辑而被检查。代替地,每一用户建立与中央服务器的连接,并且任何修改都直接对存储在服务器上的文档的主版本进行。所述类型的技术的一个实例是GoogleDocuments,由Google公司提供。然而,为了使用系统(例如这些系统),用户必须在线,从而访问该集中存储的文档。另外,用户还必须在线地编辑文档。当在与服务器的连接易于中断的情况下,例如在使用广域蜂窝电话网交换来自移动车辆的数据时,这会产生问题。
多个用户管理单一文档的另一替代方法是桌面共享。根据该方法,第一用户存储文档,并且能够允许一个或多个其他用户远程访问他们的计算机,允许其他的用户来暂时控制用于编辑该文档的应用。这与上面讨论的中央服务器方法相似,不同之处在于特定用户的机器被用作服务器。该方法的实例包括由思科系统公司提供的CiscoWebex以及由微软公司提供的MicrosoftShareView。然而,该方法并不允许一个以上的用户来同时编辑文档。
在EP1589722A1中微软公司还描述了一种用于协作的方法、系统和装置。此公开文本描述了他们的“OneNote”应用的一个变体。通过使用共享的会话应用程序接口(API),在用户之间建立共享的笔记(note-taking)会话。在所述共享会话中,页同步对象被用于使对笔记文档的相应页所施加的改变同步。请求同步令牌(token)对页同步对象做出改变。尽管所描述的方法、系统和装置确实解决了一些实时协作问题,然而它们仍是不灵活的,并且不允许自由协作。例如,对共享会话的需要限制了国际协作,以及对同步令牌的需要生成某一组问题,这组问题在环形网络拓扑领域中进行了很好的记载。
可在通用网络上实现的另一方法是采用可在网络上运行的现有的消息传递软件。例如,一个人可为电子表格(例如,由微软公司提供的MicrosoftExcel,其调用一个应用,例如由Tibco软件公司提供的TibcoRendezvous)中的每一单元写自定义的公式,以经由网络基础设施发布一段信息。该方法的缺点在于两方面:首先,在改变的公布上缺少控制,所述信息仅仅被放在网络上用于检索;以及,其次,作者需要明确地声明该文档内的什么信息是待共享的并且明确地配置该文档本身(即,需要手动地配置每一单元),以共享所述信息,这不仅产生了非常大的文档,而且需要对每一文档进行自定义,这既耗时又需要专业知识。
US2004/0088646A1通过在节点(即,计算机)之间传递移动代理(agent)来扩展该消息传递方法。该移动代理可以是Java类。一旦移动代理抵达一节点,该移动代理可核查版本信息,使得锁定一文档并且发送最新版本的文档至其他节点。然而,该方法不仅受制于消息传递的缺点,而且受制于上文以及下文所讨论的那些文档锁定和文档共享的缺点。移动代理还可呈现出安全风险。
上面所概括的现有文档管理技术的限制意味着用户通常求助于简单地在协作者之间连续地分布文档。通常这样来实现,即将该文档附至寄给合适的用户的电子邮件消息(“email”)。例如,用户A创建了版本1.0并且将该版本1.0传输至用户B,用户B创建了版本1.1并且将该版本1.1传输至用户C,等。该方法的限制是明显的:不仅一个以上的用户同时编辑该文档是不可能的,而且用户在未收到该文档时不能对该文档做出任何贡献。另外,公共使用的email产生了附加的问题,例如缺少安全性以及在所传输的文件大小上的限制。
因此,现有技术中要求提供一种方法和/或系统,使得用户能够在文件或文档上协作,而没有上面描述的问题。所述解决方案应当优选地容易使用,多个用户应当能够实时编辑,并且应当便利而非限制该协作过程。
发明内容
根据本发明的第一方面,提供一种使得在文件的编辑中能够协作的计算机实现方法,该方法包括:
检测对与第一客户机设备相关联的所述文件的已打开的副本所做出的改变;
确定是否可以建立与连接至网络的一个或多个客户机设备的连接;
当不能建立网络连接时,持久化所检测到的改变;以及
当能够建立网络连接时,经由所述网络选择性地将所述改变传输至所述一个或多个另外的客户机设备,从而指示一个或多个相应的代理将所述改变施加至所述文件的相应的副本。
本发明确保网络上的所有文件的副本是同步的且是最新的,并且同时仍允许用户在本地编辑文件。这是通过使用现有的用来编辑文件的应用以允许实现实时或接近实时的改变来实现的。这确保了所有时间中对文件所做出的改变的一致性,并且还允许文件被每个用户的机器上的不同的应用所编辑。
本发明允许一个以上的用户同时编辑文件而没有冲突的风险,因为每一用户能够实时或接近实时地观察到由其他用户所做出的改变。
值得注意的是,本发明不试图在中央位置存储文件的“主”副本,所述文件的“主”副本在每一次用户保存文件时会被更新。本发明也不将所保存且更新的文件版本传输至每一用户。代替地,仅有做出的改变经由网络传输,并且这些改变被代理和每一用户所使用的文件编辑应用单独地施加。
优选地,本方法进一步包括:
经由所述网络接收来自一个或多个其他代理的改变;以及
将所接收的改变施加至与所述第一客户机设备相关联的所述文件的副本。
优选地,使用与所述第一客户机设备相关联的应用来施加所述改变。所述施加至文件的副本的改变可被施加至所述文件的已打开的副本。
优选地,本发明进一步包括:
经由网络接收新共享文件的通知;以及
生成与所述第一客户机设备相关联的所述新共享文件的新副本。
优选地,持久化改变包括存储所检测到的改变。在某些实施方案中,本方法可包括将所述改变直接施加至文件的副本,而不打开该文件的副本,即不使用应用。
优选地,所述选择性地传输的步骤包括仅将所述改变传输至与所述网络连接的一个或多个另外的客户机设备,所述一个或多个另外的客户机设备与共享所述文件的用户相关联。
优选地,客户机设备通过用户注册的代理的存在来与该用户相关联。优选地,检测改变的步骤进一步包括:
下载适于与用于编辑该文件的应用交互的合适的文档处理器(documenthandler);
其中所述文档处理器将所述改变从专用于该应用的格式转换为与应用无关的格式。
优选地,选择性地传输的步骤包括:
确定是否能够建立与选定的客户机设备的直接连接;
如果能够建立直接连接,则建立该直接连接;以及
如果不能建立直接连接,则建立与中间设备的连接,以将数据路由至所述选定的客户机设备。
根据本发明的第二方面,提供一种包括计算机可执行指令的计算机程序产品,用于执行上面描述的方法。
根据本发明的第三方面,提供一种使得在共享文件的编辑中能够协作的代理,该代理包括:
协作事件管理器,检测对与第一客户机设备相关联的所述文件的已打开的副本所做出的改变;
网络管理器,确定是否可以建立与连接至网络的一个或多个另外的客户机设备的连接;以及
离线管理器,可连接至所述网络管理器,从而当不能建立连接时,持久化由所述协作事件管理器所检测到的改变;
其中,所述网络管理器适于在能够建立连接时经由网络选择性地将所述改变传输至所述一个或多个另外的客户机设备,从而指示一个或多个相应的代理将所述改变施加至所述文件的相应的副本。
本发明的第三方面提供了关于本发明的第一方面所讨论的相同优点。
优选地,所述网络管理器适于经由网络从一个或多个其他代理接收与所述共享文件有关的改变;以及,所述协作事件管理器适于将所述改变施加至与所述第一客户机设备相关联的文件的副本。
优选地,所述一个或多个相应的代理和/或所述协作事件管理器适于将所述改变施加至合适文件的已打开的副本。
优选地,所述协作事件管理器适于使用加载到所述第一客户机设备上的应用来施加所述改变。
优选地,所述代理进一步包括:文件系统管理器,以接收来自所述网络管理器的新共享文件的通知,以及生成与所述第一客户机设备相关联的所述新共享文件的副本。
优选地,所述文件系统管理器适于与所述第一客户机设备的文件系统交互。
优选地,所述离线管理器适于与所述第一客户机设备的文件系统交互。所述离线管理器可适于在未打开共享文件的副本时接收来自所述协作事件管理器的改变。在某些实施方案中,所述离线管理器可适于直接将所述改变施加至所述文件的副本,而不打开该文件的副本,即不使用应用。
优选地,当客户机设备连接至网络时,所述网络管理器适于选择性地传输由所述离线管理器所存储的任何改变。
优选地,所述网络管理器选择性地将所述改变传输至与所述网络连接的一个或多个另外的客户机设备,所述一个或多个另外的客户机设备与共享该文件的用户相关联。
优选地,客户机设备通过用户注册的代理的存在来与该用户相关联。
优选地,所述网络管理器适于:确定是否能够建立与选定的客户机设备的直接连接;基于所述确定,如果能够建立直接连接,则建立直接连接;以及,基于所述确定,如果不能建立直接连接,则建立与中间设备的连接,以将数据路由至所述选定的客户机设备。
优选地,在上述任一方面中,第一用户对所述文件的第一内存副本做出改变,所述第一内存副本是在该第一用户打开该文件时由于文件编辑应用的实时编辑而被创建。此外,所述一个或多个另外的客户机设备可与共享该文件的一个或多个相应的用户相关联,并且所述改变的施加可通过由所述一个或多个相应的用户所操作的文件编辑应用而施加至所述文件的内存副本,所述内存副本是在所述一个或多个相应的用户打开文件时被创建。
优选地,实时改变组件包括监控器组件,该监控器组件检测对所述文件的已打开的副本所做出的改变,而不修改该文件的副本。
可提供一种使得在编辑文件时能够在多个用户之间连接的路由器,所述路由器包括:
接收设备,用于经由网络接收来自第一代理对共享文件所施加的改变,所述改变被施加至与选定的客户机设备相关联的文件副本,所述选定的客户机设备在接收时未连接至网络;以及
传输设备,将所述改变传输至所选定的客户机设备,从而指示相应的第二代理将所述改变施加至与选定的客户机设备相关联的文件的副本。
优选地,所述路由器进一步包括路由管理器,该路由管理器用于经由网络接收来自连接至第四代理的第三代理的请求,所述路由管理器适于经由网络将数据从所述第三代理路由至所述第四代理。
优选地,所述第一至第四代理可以是与多个用户相关联的任何代理。
具体实施方式
本发明提出了一种用于管理电子文件的方法和系统。所述方法和系统使得用户之间能够协作。该系统利用在用户的客户机设备上运行的代理。代理可看作是由载入客户机设备的工作内存中的计算机程序代码所实现的组件,例如由客户机设备的处理器正在处理的程序代码,以提供下面所描述的功能。然而,代理不应限制于由计算机程序代码所实现的组件,而可包括适当配置的电子电路系统,无论是固定的或可编程的;例如,代理可包括被配置为经由通用系统总线与客户机设备通信的电路系统,以提供所述功能。
图1图解了在本发明的实施方式中所采用的各种示例性组件之间的功能关系。图1示出了由用户操作的一个客户机设备100。客户机设备100可操作地连接至网络120。路由器110以及多个由各自用户操作的其他客户机设备130也被连接至网络120。
可使用图7的计算机系统来实现客户机设备100、路由器110和其他客户机设备130中的任一个。出于解释本发明的目的,图7被作为一个实例提供,然而本领域普通技术人员将意识到,取决于需求和用户偏好,每一系统的组件可不同。图7的计算机系统包括连接至系统总线710的一个或多个处理器720。工作内存750也被连接至系统总线710,工作内存750可包括任何随机存取存储器或只读存储器(RAM/ROM)和通信接口760,该通信接口760使得能够经由网络120通信。计算机系统还可以可选地包括一个或多个存储设备740以及附加的输入/输出(I/O)设备730。存储设备740可以是使用任何已知存储介质形式的本地存储系统或远程存储系统。在使用中,计算机程序代码被加载入工作内存750中,以被一个或多个处理器720处理。在图7的实例中,操作系统(OS)751,连同用于实现代理或服务器功能的计算机程序代码752,以及用于实现一个或多个应用的计算机程序代码753被加载入内存750中。OS751和/或代理或服务器752可包括适当配置的计算机程序代码,从而使得计算机系统能够正常工作。
在本实例中,网络120包括因特网,即使用公共的传输控制协议/互联网协议(TCP/IP)的互连的网络的结合。然而,网络120还可包括局域网(LAN)、广域网(WAN)或者这两者的结合,并且可使用任何已知的网络协议(例如,用户数据报协议(UDP)等)。网络120还可以对特定组织是公用的,或者可以代表由使用合适的硬件来连接的各种组织所管理的多个网络。
返回图1,客户机设备100实现代理150。代理150通常包括在创建、编辑或删除文件或文档时实现的持久性系统组件。代理150被配置为经由网络120通信,并且控制对待被共享的文件的传送以及对那些文件所做出的任何改变。代理150还被配置,以与客户机设备100上运行的文件系统140和任何应用145进行交互。通常,文件系统140由OS751实现,并且协调存储设备740上的数据存取和存储。在本实例中,应假设,客户机设备的存储设备是本地设备。如图7中所示出的,应用145通常由加载入工作内存中的计算机程序代码实现,并且可包括现有技术中已知的任何应用。应用145的一个实例是由微软公司提供的任一微软办公应用(Word、Excel、Powerpoint等)。
代理150具有能够成功协作的若干功能。协作涉及多个用户对文件或文档的共同编辑。所述文件或文档将被称作“共享文件”,并且可以是任何形式的电子文件或结构化数据,包括但是不限于:字处理、视频、音频、演示或这些的任何结合。本发明的方法和系统还可用于提供“聊天”功能,即电子文本对话,其中该对话可包括图形元素。代理的功能包括下列中的一个或多个:选择经由网络120对客户机设备之间的数据进行路由的最佳方法;将由客户机设备100的用户选定作为共享的文件发送至其他客户机设备130的选定用户;将由一个客户机设备130的用户共享的文件写至客户机设备100的本地文件系统140;传递和提交由其他客户机设备130的用户对共享文件所做出的改变;将对本地共享文件所作出的改变发送至共享该文件的用户;以及,当用户离线时,即,未连接至网络120时,将改变持久化,从而使得当客户机设备100返回在线时,所述改变可被发送至其他用户。总之,在下面的公开文本中,文字“持久化”或“持久性”被用于描述:保留信息直至该信息可被施加至所有用户的文件的时候为止。
为了完成上面描述的各种功能,代理150的架构被分割为三个主要的组件:网络管理器155、文件系统管理器160和协作事件管理器180。协作事件管理器180可以是实时或接近实时改变管理器。网络管理器155提供经由网络120的通信接口,文件系统管理器160控制本地存储设备上的数据存储,以及协作事件管理器180与应用145接口。下面描述了每一管理器的一种优选实施方案;然而,在仍保持本发明的代理的功能方面的同时,偏离每一实施方案是可能的。
网络管理器155被用于使用网络120在用户计算机130之间传递待共享的文件副本,并且随后共享对这些文件的打开的副本所施加的改变。图2图解了网络120的非限制性数目的可能配置以及可由网络管理器155采用的路由策略。在图2中,计算机系统230可以是来自图1的系统100或130中的任何一个。
网络120可包括若干个不同的配置,其中所述配置可以是动态的(即,随时间改变)。图2示出了公司网络200,其包括由直接的网络连接240A——例如,以太网所连接的两个客户机设备230A和230B。公司网络200具有由软件或硬件实现的防火墙,即过滤来自IP地址的特定子集的网络流通量或者到达IP地址的特定子集的网络流通量。尽管公司网络200内的客户机设备可自由地彼此通信,但是网络200以外的客户机设备将不能建立与网络200内的客户机设备的直接连接。
图2还示出了两个单独的家庭网络210A和210B。这些网络210中的每一个都可包括连接至路由设备或路由器(未示出)的一个或多个客户机设备230C、230D。路由器还可包括用于连接至因特网服务提供商(ISP)的调制解调器。通常,每一网络中的路由器具有公共IP地址(即,任何客户机设备可访问因特网的全球唯一的IP地址),并且将此公共地址映射在家庭网络内的客户机设备230C、230D的私用IP地址上。这称作网络地址转换(NAT)。因而,每个网络210以外的客户机设备与该网络210内的客户机设备230C、230D建立直接连接是不可能的。
最后,图2示出了两个具有公共IP地址的客户机设备230E和230F。所述设备可被连接至开放式网络220A和220B。由于这些设备具有公共IP地址,所以网络220A和网络220B以外的客户机设备可建立到该设备的连接。
当在两个或多个客户机设备之间传递数据时,网络管理器155需要确定是否可能存在直接连接。通常,直接或点对点连接是优选的,因为任何延迟被最小化,并且由系统所执行的总工作量被减少,即,使用中介增加了系统的复杂性。为了确定是否可能存在直接连接,网络管理器155使用图8中示出的示例性算法。
在步骤800,第一客户机设备上的网络管理器155确定它是否可以打开至第二客户机设备的套接字。套接字是双向通信链路中的一个端点,它提供网络管理器155和OS751的网络例程之间的接口。在TCP/IP网络中,套接字需要IP地址和端口号。
在一个优选的可选实施方案中,在步骤800中,路由器110可被用于确定是否可打开至第二客户机设备的套接字。当客户机设备连接至网络120且开始使用本协作系统时,该客户机设备或操作该客户机设备的用户自行认证(例如,登录)到路由器110。如果就是这样,则路由器110能够检测特定的用户和/或客户机设备何时上线。在认证之后,路由器110还可定期地与客户机设备通信(例如,可“ping”该客户机设备),并且等待答复以确定客户机设备是否仍连接至网络120。通过分析与客户机通信相关联的IP地址的结构,路由器110还能够确定IP地址是与公共网络还是与私用网络相关联(例如,私用IP地址通常从数字192开始)。因而,通过核对所述信息,路由器110可生成指示是否可建立到特定的客户机设备的直接连接的连接数据。在图8中的步骤800,第一客户机设备可与路由器110通信,并且指示它希望与特定的用户或客户机设备通信。然后路由器110询问连接数据并且向第一客户机设备和/或其用户通知是否可向请求的客户机设备(或者请求的用户的当前的客户机设备)打开套接字,并且可能地为第一客户机设备提供建立直接连接所需要的信息。
在公司网络200上的客户机设备230A和客户机设备230B之间通信的情况下,套接字对于通信来说是可用的,因为这两个系统具有同一网络上的私用IP地址。因此,在步骤810,网络管理器可打开新的直接连接240A。在客户机设备230E和客户机设备230F之间通信的情况下,套接字对于通信来说是可用的,因为这两个系统都具有公共IP地址。因此,在步骤810,网络管理器可打开新的直接连接240F。在这两种情况下,在步骤840,经由连接的点对点通信,即数据传送,是可能的。
在客户机设备230B和客户机设备230C之间通信的情况下,套接字对于通信不可用,因为公司网络200上的防火墙将客户机设备230B从公共访问“隐藏”,以及家庭网络210A上实现的NAT将客户机设备230C从公共访问“隐藏”。在这种情况下,在步骤820,第一客户机设备(比方说,230B)上的网络管理器150打开与已知中间设备的新连接。中间设备是具有公共IP地址的设备,其详情以可由网络管理器155存取的配置数据存储。中间设备可以是路由器110或具有公共IP地址的客户机设备230E、230F。在图2中,客户机设备230B建立与路由器110的直接连接,例如经由因特网。同时,客户机设备230C还建立与路由器110的直接连接240C。然后,在步骤830,路由器110被配置用于对数据进行路由。然后路由器110在两个客户机设备230B和230C之间对通信量进行路由,使得这两个系统之间能够进行通信。
还可执行一组相似的步骤,使得客户机设备230E能够协调客户机设备230C和客户机设备230D之间的通信量,即对数据进行路由。在这种情况下,在客户机设备230C和230E之间建立第一直接连接240D,以及在客户机设备230D和230E之间建立第二直接连接240E。因而,在图2中,路由器110和客户机设备240E变为代理(proxy),在步骤840,用户设备能够与其通信以发送数据。
返回至图1,文件系统管理器160提供客户机设备100的代理150和文件系统140之间的接口。文件系统管理器160具有三个主要的任务:在文件系统140内创建共享文件副本;当用户离线时保留对本地编辑的文件做出的改变;以及,当连接可用时在网络上立即共享所述改变。这样,文件系统管理器160包括:文件生成器组件165,负责第一任务;以及,离线组件或管理器170,负责第二任务和第三任务。
文件系统管理器160与网络管理器155通信,从而接收来自其他用户(例如,来自客户机设备130)的文件,并且传输在用户离线时已存储的改变。通过文件生成器165和离线组件170,文件系统管理器160能够与客户机设备100的文件系统140通信。这使得文件管理器165能够存储从其他选定的用户所接收的用于共享的文件,并且在客户机设备100的用户离线时存储对本地文件副本做出的改变。这些较后的改变必须在文件系统140上持久化,直至用户在线。
文件系统管理器160还具有与协作事件管理器180的接口。这允许协作事件管理器180向文件系统管理器160通知:在客户机设备100的用户离线时该用户对共享文件的本地副本做出的改变。
协作事件管理器180被用于:检测由应用145在本地编辑期间对文件做出的改变,以及,经由网络管理器155将从其他客户机设备130所接收的改变施加至文件的本地副本。为此,实时改变管理器180由多个组件组成。
第一组件负责确定用户是在线还是离线。这可通过如下方式实现:与网络管理器155通信,以核查用户是否连接至网络120或最近曾与路由器110通信。如果用户在线,则在本地做出的改变需要被发送至协作者,即客户机设备100的用户决定与其共享文件的其他用户。替代地,如果用户离线,则所述改变需要使用与文件系统管理器160的接口来持久化,直至用户在线。
第二组件是文档处理器185的集合,其中每一处理器负责管理特定应用中的给定文件或文档。例如,用户A可使用Excel编辑共享的电子表格,然而用户B可使用OpenOffice编辑电子表格。因此将提供两种文档处理器,一种用于Excel以及一种用于OpenOffice。协作事件管理器180将基于检测到的或注册的编辑应用来执行合适的文档处理器;在每一情况下,处理器都可用一种不同的方式绑定到编辑应用。每一文档处理器负责将任何以专用于应用的格式所生成的数据转换为与所使用的应用无关的格式。
第三组件包括代理150和应用145之间的集成层190,给定的文档在应用145中进行编辑。集成层190指定一组集成方法,执行该组集成方法以将代理150集成在应用145中。这些方法可被扩展,每一处理器可使用不同的一组方法,并且每一方法可被一个以上的处理器采用。
现在将关于微软Excel应用来描述一种集成方法的一个非限制性实例。在这种情况下,通过使用嵌入在集成层190中的组件对象模型(COM)接口191和本地的超文本传送协议(HTTP)网络服务器192来不对称地实现将代理150集成在Excel应用145中。从其他客户机设备130的选定用户接收的改变使用COM接口190来施加,而由客户机设备100的用户做出的改变从外插件Excel组件发布至本地网络服务器192。然后网络服务器192经由网络管理器155和网络120将所述改变向外发送至协作者。所述外插件可以看作是安装在该应用中的代理150的一个组件。网络服务器192可包括集成在代理150中的java网络服务器。在其他实施方案中,应用可具有定义明确的应用程序接口(API),该API避免了对外插件的需要。
为了检测对加载入应用145中的文件做出的改变,上面讨论的外插件在该文件上注册VisualBasic监听器。所述监听器为特定事件监控该应用,所述特定事件即在该应用中发生的动作,如在VisualBasic内所限定的。本发明的一个优选实施方案的关键特征是检测所述改变,而不对该文件或文档做出修改。每一事件触发外插件中的一个功能,该功能确定在该文件或应用中做出了什么改变(如果有)。例如,用户A可设置A2单元的值为“45”,以及该单元的字体风格为“粗体”。这些是与该文档的其他用户的副本相关的改变,即这些是“有意义的改变”,从而需要被传输至其他用户的客户机设备130以及被施加至他们编辑的文件的任一副本。相反,打开弹出菜单将不构成有意义的改变,因为在将该文件保存回至磁盘时它不影响该文件。
在一个优选的实施方案中,通过在接收一个事件时构造和比较数据树来确定改变,这些数据树代表着文档的所有子集或部分子集。这些数据树包括待发送至其他用户的改变数据。例如,当用户选择A2单元时,外插件接收SheetChangeEvent(表格改变事件)。一旦接收该事件,外插件检查A2单元,并且构造代表其详情的数据树;上述实例的数据树将按如下方式显示:
当随后的SheetChangeEvent事件被外插件接收时,它构造新的数据树;例如,如果用户A将要将A2单元的值改变为“42”以及将字体改变为“italic”时,可构造下面的数据树:
为了减少交换的数据的量,外插件只构造一棵仅代表已做出改变的特征的数据树;在这种情况下,不呈现字体颜色,因为未对其做出改变:
有意义的改变被打包为只是呈现其自身改变的一组键值。为了清楚起见,通过扩展标记语言(XML)类型的格式来陈述上述实例,但是这不应当视为限制。优选地,每一分立的改变被给出唯一的标识符。依赖于该客户机设备与任何相关的客户机设备的当前连接,则所述改变数据可经由HTTP网络服务器192被发送至其他用户的客户机设备或路由器110。下面更详细地描述该过程。代理150可通过采用工作表上的Excel网页查询(ExcelWebQuery)(其被设置为对用户是不可见的)来将改变数据传递至HTTP网络服务器192。
图3至图6示出了各种方法,图解了可如何使用本发明在文件上协作。
图3图解了用户共享文档所采取的初始步骤,并且将从一个客户机设备130的视角来解释。在步骤300,用户首先选择待添加至系统的文件或文档。这可使用适当配置的用户接口(UI)来实现。例如,UI可由超文本标记语言(HTML)页来提供,该HTML页为用户提供“添加文件”控制。然后用户可点击该控制,并且使用标准文件系统浏览器来从他们的设备的文件系统中选择文件或文档。在步骤310,用户添加他们希望与其共享该文件或文档的第一用户。例如,该用户可从UI中所包含的若干个预注册用户的下拉框中选择一位特定的用户。
在本实例中,我们将假定第一用户是客户机设备100的用户。在添加第一用户后,在步骤320,客户机设备130的代理确定所添加的用户是否在线。通常,这可通过经由网络管理器与存在于所添加的用户的客户机设备100上的代理150交换数据来实现。网络管理器150可使用先前关于图8的步骤800所描述的方法。如果第一用户在线,则在步骤330,在所述用户的客户机设备上创建文档副本。这可使用代理150和文件系统管理器160来实现,其中所述代理的文件生成器165在所添加的用户的文件系统140中存储文件或文档的本地副本。如果初始用户希望与其他用户共享该文档,可在步骤350添加这些其他用户。在一个替代实施方案中,步骤350可在步骤320之前执行,以及步骤320至330可作为对所有已添加的用户的批处理来执行。如果不再有待添加的用户,则该批处理结束。
图4图解了其中代理150用于监听对文件或文档所做出的改变的方法。该方法可在图3的方法中的步骤330中所生成的文件或文档副本上执行,或者该方法可被施加至任何其他的共享文件或文档。该方法还可以在客户机设备100或任一客户机设备130上执行。在步骤400,当客户机设备100上的文件或文档是被打开的时侯,代理150在步骤410通过COMAPI将监听器添加至应用145。这允许当对文件或文档做出改变时代理150可以知道。
图5图解了当检测到文件或文档的改变时,在文件或文档中传播改变所采取的步骤。所述方法可使用安装在客户机设备100、130中的任一个上的代理来执行,然而,为了清楚起见,本方法将从客户机设备100的角度来描述。首先,在步骤500,代理150检测到改变。如先前所讨论的,对于Excel,这可涉及监控改变事件并且构造改变“数据树”,在其他实施方案中,这可涉及应用程序API的使用。然后在步骤510,所述改变被打包以用于在网络120上传输。这可涉及将所述改变发布至协作事件管理器180的集成层190中的HTTP网络服务器191。
在步骤520,代理150检索正共享该文件或文档的用户列表。如果存在一个或多个用户,则在步骤530代理150检索列表上的第一用户的详情,并且在步骤540证实该用户是否在线。又一次,这可通过使用关于图8的步骤800中描述的网络管理器155来执行。如果用户在线,即连接至网络120,则在步骤550所述改变经由网络120被发送。如果用户不在线,则网络管理器可间断地核查用户的状态,即核查他们是否使用对等设备或客户机设备来被连接至网络,以确定何时他们确实在线。如图5中虚线所示,所述进程是可选的,并且可作为后台线程或进程发生。代表所述改变的数据的通信,通常是由与任何接收客户机设备130的网络管理器一起工作的客户机设备100的网络管理器155管理。所述通信可采用关于图2所描述的任何形式。
在步骤560,第一用户的客户机设备130上的代理经由其网络管理器接收来自网络120的数据,并且将该数据传递至协作事件管理器。如果第一用户将讨论中的文件或文档在他们的设备上打开,则所述改变经由合适的文档处理器和集成层中的组件被施加至该文件或文档。如果第一用户未在他们的设备上打开讨论中的文件或文档,则所述改变经由与协作事件管理器的接口被发送至文件系统管理器。在一个优选变体中,则所述改变被离线组件存储。下一次当该文档或文件在客户机设备130上被打开时,这些改变被施加至该文件或文档。在一个替代实施方案中,离线组件170可适于将所述改变施加至存储在文件系统140中的文件副本,而不使用应用145;例如,离线组件170可将二进制级的改变施加至该文件。在步骤580,初始用户代理150重复该过程,直至考虑了所有用户。
图6图解了当用户初次在线时由代理所采取的步骤。将从客户机设备100的角度来描述该方法。当客户机设备100连接至网络120时,代理150必须核查至少以下事项:是否在本地对任何共享文件或文档做出了任何改变;是否有已被分配为用于由该系统的其他用户与该用户共享的新文件或新文档;以及,其他用户是否已对现有共享文档做出改变。
在步骤600,用户登录该系统。这可涉及用户通过登录屏幕将自身在代理150中认证。该步骤还可涉及建立与路由器110的初始连接和/或可参考图8的步骤800所讨论的步骤。然后代理150平行地实现下列进程或线程。
在所述第一进程或线程中,在步骤610,代理150在本地核查对共享文件或文档所做出的改变。如果存在未被发布的任何改变(即,未经历图4中所描述的步骤),则在步骤615代理150识别这些改变。然后在步骤620,每一个这样的改变被检索;以及在步骤625中每一个这样的改变被发布。通常,诸如列表或队列之类的数据结构被离线组件170使用,以管理仍未被发布的任何改变。然后网络管理器155可被配置,以处理该数据结构并且将该改变通信至合适的各方。在步骤630,代理150确定是否存在待发布的更多改变,并且如果存在,重复步骤620和625,直至所有改变已被发布,例如,直至数据结构中所有被识别的改变已被处理。
第二进程或线程涉及核查新共享文件或文档。在步骤640,代理150经由网络管理器155与其他已连接的客户机(即,一个或多个对等设备)通信,并且核查任何新共享文件或文档。在步骤645,如果代理发现存在新共享文件,则每一共享文件被依次检索。在步骤650,来自已连接的客户机的第一可用文件或文档被选定。然后,在步骤655,通过使用网络管理器155,新文档从对等设备被下载。然后该文件或文档被传递至文件系统管理器160,在步骤660,该文件系统管理器160使用文件生成器165将该文件或文档写至用户的文件系统140。在步骤665,对在任何对等设备上是否存在任何更多的文件或文档进行核查;如果它们确实存在,则重复步骤650至665,直至所有文件或文档已被下载。
第三进程或线程涉及核查一个或多个对等设备对现有文档的任何改变。在步骤670,代理150核查其对等设备对已本地存储在文件系统140上的一个或多个文件或文档做出的任何未施加的改变。在一个可选优选的实施方案中,每一改变是唯一可识别的。从而,代理150可跟踪特定用户是否施加或下载了特定改变。如果在步骤675发现了改变,则在步骤680它们从任意的对等设备被单独检索,其中那些改变是可得的,在步骤685从所述对等设备下载这些改变,以及在步骤690使用协作事件管理器180将这些改变施加至合适的文件或文档。然后在步骤695代理150核查更多的改变,并且重复步骤680至695,直至所有改变已被施加。优选地,源对等设备跟踪每一改变以及必须分布该改变的用户,一旦用户已下载或消费了改变,则该改变从对等设备被移除和/或被存档。
重要的是应注意,尽管在完全功能数据处理系统的环境中描述了本发明,但是本领域普通技术人员应理解,本发明的方法能够以指令的计算机可读介质形式以及任何其他各种形式被分布,且不管事实上用于执行分布的信号承载介质的特定类型,都等同地实现本发明。计算机可读介质的实例包括可记录类型的介质(例如,软盘、硬盘驱动器、RAM和CD-ROM),以及传输类型的介质(例如,数字通信链路和模拟通信链路)。
总之,在文本中描述的或者在图中图解的任何功能性可使用软件、固件(例如,固定的逻辑电路系统)、人工计算机实现方法或这些实施方式的结合来实施。在此所使用的术语“组件”或“功能性”通常表示软件、固件或软件和固件的结合。例如,在软件实施方式的情况下,术语“组件”或“功能性”可涉及当在一个或多个处理设备(例如,一个或多个处理器720)上执行指定任务的程序代码。如上面所描述的,所述程序代码可被存储在一个或多个计算机可读存储器设备中。所示出的将组件和功能性分隔为不同的单元,可反映所述软件和/或硬件的实际的物理分组以及分配,或可对应于由单一软件程序和/或硬件单元执行的不同任务的概念分配。