一种异构文档协作云服务间透明互操作的方法
【专利摘要】本发明属于云计算和计算机支持的协同工作【技术领域】,具体为一种异构文档协作云服务间透明互操作的方法。该方法通过中间代理为使用异构文档协作云服务的用户提供透明的跨云文档协作服务,并保证共享文档的一致性。本发明的有益效果在于:一方面,用户可以使用他们所熟悉的服务参与跨云文档协作,而不需要学习或为新的服务付费,不需要安装任何软件或插件;另一方面,服务提供商不需要投入任何额外工作,如制定标准或修改代码,即可实现和其他类似的服务间的互操作。
【专利说明】一种异构文档协作云服务间透明互操作的方法
【技术领域】
[0001]本发明属于云计算和计算机支持的协同工作【技术领域】,具体的说,涉及一种异构文档协作服务间透明互操作的方法。
【背景技术】
[0002]1.云协同编辑服务
在经济全球化的今天,云服务成为了理想的在线协作平台。地理分散的企业、组织和个人可以通过任意设备,随时随地访问云服务进行在线协作。越来越多的用户因为云服务的高可用性、弹性和低维护成本开始转向使用云服务。文档协作云服务是一类具有代表性的在线协作云服务,例如 Google Docs、Microsoft Office Web Apps、Zoho Office Suite等。它们能够支持地理分散的用户进行实时的在线文档协作,用户可以通过浏览器打开并编辑在线文档,各协作用户对文档的更新可以被实时同步并保证各用户文档视图的最终一致。文档协作云服务通常和文档存储、分享、电子邮件、即时消息等云服务紧密整合,从而为终端用户提供完整的在线协作解决方案。
[0003]2.实时协同组编辑技术
实时协同组编辑技术是实现文档协作云服务最为重要的技术之一。地址空间转换AST(Address Space Transformation)和操作转换 OT (Operation Transformation)是两种最具代表性的实时协同组编辑技术。它们通过将远程操作或本地文档地址空间转换成正确的形式,从而正确的执行操作,自动解决并发操作间冲突,并实现文档状态的一致性维护。
[0004]AST的基本思想是:共享文档被复制在各用户协作站点上,用户的本地操作可以被立即执行并发送至其他站点;当接收到远程操作后,首先去除并发操作对文档状态产生的影响,将文档(即地址空间)转换成该操作产生时的状态,远程操作按照其原有形式被执行后,再恢复并发操作的效果将文档转换成最新状态。为了实现地址空间转换,每个节点拥有一个有效状态标志;执行后的操作被存储在对应的文档空间节点中;被删除的节点会被保留在地址空间中。并发操作效果的去除和恢复可以通过遍历地址空间,正确设置节点的有效状态标志实现。
[0005]3.云服务的互操作
云服务通常采用按需付费的部署模型,企业用户可以根据自己的喜好和需求选择合适的云服务来应对市场需求的变化。一方面,用户通常不希望受制于一家服务提供商;另一方面,用户通常也不愿意放弃自己已经熟悉的服务和用户界面而转向选择其他的服务提供商并因此付出额外的费用。因此,用户通常更倾向于选择对互操作支持较好的云服务。
[0006]标准化是实现云服务间互操作的一种方式,然而,由于各大服务提供商因为自身利益很难达成一致,往往导致服务标准化进程非常缓慢。云服务代理(Cloud ServiceBrokerage)是在服务标准化之前更为有效的一种实现云服务间互操作的方案。比如,Jolidriver是一种典型的云存储代理服务,它通过对各种云存储服务的API进行封装从而屏蔽异构云存储服务之间的差异,为用户提供统一的云存储服务界面。[0007]但是,文档协作云服务属于多用户交互式应用,由于涉及多用户对共享文档的同时操作,实现异构文档协作云服务间的互操作要比实现云存储服务间的互操作困难很多。第一,已有的文档协作服务仅仅提供文档存储、分享等功能的API,并不直接提供支持共享文档编辑的API ;第二,多用户在不同云服务上对共享文档的并发操作可能会导致操作冲突并最终导致文档状态的不一致,传统实时协同组编辑系统中的操作冲突解决和数据一致性维护的挑战,在实现异构文档协作云服务间的互操作中仍然存在;第三,支持异构文档协作服务间互操作的代理服务不能改变用户使用已有服务的体验,例如,不能要求用户安装新的软件或浏览器插件,不能对用户之间的协作产生任何干扰。
[0008]4.需要解决的关键问题
本发明中需要解决的一个关键问题是如何以透明的方式实现文档协作云服务间的互操作?这里的透明性主要包含两层含义:一层含义是指服务提供商不需要付出任何的工作,如制定标准或修改代码,即可实现和其他类似的服务间的互操作;另一层含义是指用户不需要安装任何的软件或插件,即可使用他们各自熟悉的服务与用户界面和其他用户进行实时的在线文档协作。
[0009]另一个需要解决的关键问题是如何保证跨云文档协作中的文档一致性?由于用户使用他们各自熟悉的服务进行跨云文档协作,并发的文档操作间可能会存在冲突或导致共享文档处于不一致的状态。实现文档协作中的一致性维护中的困难主要存在于两个方面:一方面,我们无法准确知道各文档协作服务所使用的一致性维护技术、冲突解决方法、文档同步协议等,并且各服务提供商可能会采用完全不同的技术;另一方面,已有的实时协同组编辑技术依赖于用户操作历史的获取,在保证上述互操作透明性的前提下,我们无法获取用户的操作历史。因此,我们只能将各文档协作云服务当作“黑盒”处理,来实现跨云文档协作中的文档一致性维护。
【发明内容】
[0010]为了解决现有技术问题,本发明提出一种异构文档协作云服务间透明互操作的方法。
[0011]本发明提供的一种异构文档协作云服务间透明互操作的方法中,跨云文档协作以中间代理服务的形式提供,中间代理服务中引入机器人,其通过机器人与所属文档协作云服务之间的自动交互及机器人之间的文档交互,实现异构文档协作云服务间的透明互操作;具体如下:
采用Web浏览器自动化技术,读取文档状态,将文档的视图表示转换成用统一的文档模型表示,应用接收到的远程操作,使得本地文档与所属组中共享文档同步,实现机器人与所属文档协作服务之间的自动交互。
[0012]参与跨云文档协作的用户组的机器人之间通过协同引擎相互连接,形成一个P2P的文档协同编辑网络,通过文档间diff (文档比较)推导机器人所属用户组用户的更新操作,检测文档更新,再利用地址空间转换技术AST,将接收到的来自其他用户组的机器人的远程操作转换成正确的形式后,执行转换后的操作,使得所有文档协作服务中的共享文档处于一致状态,实现机器人之间的文档交互。
[0013]1.主要思想和中间代理服务设计文档协作服务允许地理分散的用户同时编辑一份文档,用户之间的文档和视图将保持自动同步。考虑图1中的两组用户&和& ,他们在不同的文档协作云服务上独立地对同一
份文档进行编辑。对于组内的任一用户,例如4 EGil,14可以看到^中其他用户对文档的
做出的任何更新。因此,对于任意两个用户U4 G &和Us G Gs ,如果他们能告诉对方所属组
内文档的变化,并将对方告知的文档变化正确的应用于自己做所属组的文档上,那么£^和
Gs中的文档即可通过!4和£4之间的“对话”实现同步。
[0014]基于上述思想,本发明在中间代理服务中引入机器人,并自动化机器人与文档协作云服务之间的交互以及机器人之间的文档同步对话,来实现异构文档协作云服务间的透明互操作。从用户的角度来看,他们不需要安装任何的软件或插件,可以按照自己的习惯使用熟悉的云服务参与跨云的文档协作,用户只需把机器人用户看作同组的一个普通成员,将共享文档分享给代理服务中的机器人即可。从服务提供商的角度来看,机器人用户和其他普通用户并无差别,他们不需要对源代码做出任何更改,甚至不需要提供任何的API来支持和其他类似服务之间的互操作。
[0015]中间代理服务中的机器人按照普通用户的方式工作,使用Web浏览器参与所属组中的文档协作。组Gi4中的文档更新可以通过如下步骤同步到组Ga中:
步骤1:?将其本地文档与 所属文档协作服务器进行同步以获得组内其他用户对文档的更新;
步骤2 =Ui4读取当前的文档状态;
步骤3:1^将最新的文档状态与之前读取的文档状态进行比较;
步骤4:如果检测到任何更新,Ua将这些更新以操作的形式发送给Ub ;否则,结束此次文档同步;
步骤5:Ub将接收到的文档更新应用于本地文档中;
步骤6:118将其本地文档与所属文档协作服务器进行同步以更新组内的共享文档状态。
[0016]图2显示了中间代理服务的体系结构。每个机器人用户由三个核心组件构成:CES 用户界面(CU1: CES User Interface)、CES 适配器(CA: CES Adaptor)、协同引擎(CE:Collaboration Engine)。
[0017]CES用户界面用于参与所属组的文档协作。机器人所使用的用户界面与普通用户相同,即Web浏览器中打开的Web用户界面。
[0018]CES适配器实现机器人与所属文档协作服务的自动化交互,包括:读取文档状态,应用接收到的远程操作,以及实现本地文档与所属组中共享文档的同步。直观上,CES适配器可以被看作机器人的“眼”和“手”。CES适配器的实现是文档协作服务相关的,但是其实现了如下的公共接口:
interface CESAdaptor {
ReadDocument(): Document
Apply (Operation[] operations): void
Sync (): void
}
ReadDocument方法返回显示在用户界面中的文档对象。文档对象对应于Web用户界面中一段或多段HTML代码。机器人之间需要在相同的文档模型基础上进行“对话”。
[0019]方法被调用以将编辑操作应用于机器人的本地文档上。这些操作来 自其他机器人,即来自使用其他文档协作云服务的用户组,并同样定义与统一的文档
模型上。Apply方法的调用必须保证传入的操作operations是定义在机器人当前用户界面中显示的文档上。
[0020]Sync方法被调用以实现机器人本地文档与所属云服务中共享文档的同 步。具体来说,当Sync方法被调用后,同组的其他普通用户将看到来自于其他组用户对文档的更改,同时,如果所属组内其他普通用户对文档进行了更改,机器人的本地文档也将得到更新。
[0021]协同引擎负责检测文档更新并实现与其他机器人的文档同步。在跨云文档协作中,机器人将周期性与服务器进行同步,并检查文档更新,即所属组内其他普通用户对文档的更改。如果检测到任何变化,机器人将会把这些更新以操作的形式发送给其他机器人的协同引擎。当接收到来自于其他机器人的远程操作时,由于一致性的问题,这些操作不能直接应用于机器人的本地文档上,而首先需要将这些操作转换成正确的形式。
[0022]协同引擎适用于所有的文档协作云服务,它只需要被实现一次,并在集成新的文档协作云服务时得到重用。值得注意的是,图2中只显示了两个机器人,实际上,机器人的数目取决于参与跨云文档协作的用户组个数。这些机器人在中间代理服务中,通过协同引擎相互连接,形成一个P2P的文档协作网络。
[0023]2.文档协作云服务的适配方法
由于几乎所有的文档协作云服务都不提供文档编辑的API,因此,本发明中采用一种更加通用的方法——Web浏览器自动化技术,实现机器人与文档协作服务的自动化交互。Selenium是实现Web应用自动化的一套工具集,它使用JavaScript注入与Web页面中的UI元素进行交互,并提供Java, C#, Ruby和Python的客户端API。
[0024]在对文档协作服务进行适配之前,我们需要首先定义统一的文档模型和操作。文档模型的选择取决于文档协作中所支持的文档格式,例如适用于描述格式化文档的OfficeOpen XML,描述图形文档的SVG DOM等。这里我们采用简化的格式化文档作为示例,并通过使用Selenium实现对Google Document和Microsoft Word Web App的适配,来说明如何通过Web浏览器自动化技术实现CES适配器接口中的方法。在简化的格式化文档模型中,文本文档是由格式化字符组成的序列构成。文档上支持的操作包括Insert (pos,ch)和Delete (pos, ch),分别表示在指定位置插入一个带格式的字符和删除指定位置的字符。字符格式的修改可以通过Delete和Insert操作的组合来实现。
[0025]读取文档状态其实是一个将文档的视图表示转换成模型表示的逆向工程。在Web用户界面中,文档对应于HTML视图中一段或多段代码片段。例如,图3(a)和(b)分别显示了一个示例文本文档及其在Microsoft Word Web App用户界面中对应的HTML代码片段。
[0026]在Microsoft Word Web App 中,文档内容位于 DOM 兀素〈div id="PageContentContainer〃 …〉中。Selenium能够使用兀素的CSS选择器div#PageContentContainer定位该元素。每个段落位于元素p.Paragraph中;具有相同格式的连续字符位于元素span.NormalTextRun中,并通过元素span.TextRun指定文本的格式。图 3 (C)、(d)分别显不了 Microsoft Word Web App 和 Google Document 中文档显不相关的Web元素构成的层次结构。Selenium支持通过标识符、标签、CSS选择器等定位Web元素,并获取元素的属性和内部文本。因此,文档的内容可以通过遍历文档显示相关元素构成的层次结构被抽取出来。
[0027]类似普通用户与Web用户界面的交互一样,应用远程操作可以通过向用户界面发送一连串的鼠标或键盘消息来完成。在应用一个编辑操作之前,需要将光标移动到操作参数pos所指定的编辑位置。我们采用两种策略来优化光标定位的效率:(I)从段首开始定位。编辑位置的所在段落以及段落之前的字符各数k可以很容易的计算得到,因此,光标定位可以通过一次鼠标操作定位到段首并通过pos-k`次右键操作实现;(2)记录前次编辑位置。对于位于统一段落的编辑为止,光标定位可以通过计算与前次编辑位置的相对位置和光标的右移或左移操作完成。第二种策略非常适用于连续的插入和删除操作。将光标设置到正确的编辑位置之后,删除操作可以直接通过向Web用户界面发送一次“DELETE”键盘消息完成。在插入格式化字符时,如果待插入的字符格式与当前格式相同,则直接发送键盘消息即可;否则,需要通过与字体设置相关的UI控件进行交互来设置字符格式。图4显不了 Google Document和Microsoft Word Web App中与字体设置相关的UI控件,例如,字体的加粗或取消加粗可以通过如下所示的代码片段实现:
Il Enable/disable the bold font setting in Google Document
driver, findElement(By.cssSelector(〃div#boldButton〃))? click ()
IlEnable/disable the bold font setting in Microsoft Word Web App
driver, findElement(By.cssSelector(〃a#fsbcBold_Small〃))? click ()
CES适配器接口中的方法为协同引擎提供了所属组内文档同步编程接口,实际上,它是对文档协作服务的一种扩展以支持异步的文档的同步。Microsoft Word Web App中的文档同步本身就是异步的,用户需要通过点击“保存”按钮或“Ctrl+S”按键显式的保存文档来触发文档同步。所以,Microsoft Word Web App适配器的Sync方法可以通过向“保存”按钮(a#qatSave_Small)控件发送一次鼠标点击事件完成。但是,Google Document中的文档是实时同步的,用户文档被自动保存并能实时看到组内其他用户对文档的更改。幸运的是,Google Document可以支持离线的文档编辑,离线操作被保存在本地,并在网络可用时同步到服务器上。因此,可以通过在线和离线的工作模式切换实现Google Document的异步文档同步。
[0028]3.通用的协同引擎
由于在跨云文档协作中,不同文档协作云服务中的用户对共享文档进行并发的修改,因此,将接收到的来自其他机器人的远程操作将会导致不一致的文档状态。例如,如图5 (a)
所示,假设机器人用户&和%的原始文档均为Qk。在文档同步之前,&和Ue分别检测到文档状态被组内用户更改为和ae ,如果他们彼此交换更新操作O1 = Msert〔I,X〕和
O2= Delete(tb),并将操作直接应用于本地文档上,Ws的文档状态将变为oar ,而仏的文档状态将变为aie,其中字符*被错误的删除了。
[0029]因此,本发明采用地址空间转换技术AST,在执行接收到的远程操作之前,首先将其转换成正确的形式,再通过CES适配器中的々7/7#方法将转换后的操作应用于机器人的
本地文档上,如图5(b)所示,远程操作O2在执行之前被转换成了0丨=Detetep,!?);类似
的,O1在执行之前被转换成O1 = Iwserf 尽管其转换后的形式和其原有形式相同。
[0030]在中间代理服务中,各机器人用户组成了一个P2P的文档协作网络。对于一个机器人用户而言,其本地文档对应于所属文档协作服务中的共享文档,所属组内其他普通用户对文档的编辑操作可以被视为机器人用户在其本地文档上所执行的操作。
[0031]协同引擎的实现可以适用于所有的文档协作云服务,其中包括两个核心的方法De tec tLocalChanges和Execu teRemo teChanges,分别用于检测本地文档的更新和执行接收到的远程操作。在所有的用户操作在各机器人的本地文档上都得到执行之后,所有文档协作服务中的共享文档将处于一致状态。
[0032]De tec tLocalChanges方法可按如下步骤实现:
步骤1:调用CES适配器中的Sync方法更新本地文档状态;
步骤2:调用CES适配器中的方法读取并记录当前的文档状态;
步骤3:与之前记录的文档状态进行diff操作;
步骤4:如果检测到更新,则将更新操作发送至其他机器人站点。
[0033]在典型的实时协同组编辑中,用户执行的操作将被捕捉并记录,然而,在文档协作服务间的互操作中,机器人用户却无法获知组内其他普通用户对文档的操作历史。因此,我们在本发明中采用文档间diff的方式来推导出文档上的更新操作。
[0034]给定远程机器人用户标识符rM ,接收到的远程操作opts,以及操作产生时文档状态的向量时间戳,ExecuteRemoteChanges方法可以按照如下步骤实现:
步骤1:如果操作处于非因果就绪状态,将其加入等待队列并返回;否则,跳至步骤2 ; 步骤2:通过AST方法将操作opts转换成正确形式;
步骤3:调用CES适配器中的Apply方法将转换后的操作应用于本地文档;
步骤4:检查等待队列,重复步骤2和步骤3执行因果就绪操作;
步骤5:调用CES适配器中的Sync方法更新所属组的共享文档。
[0035]本发明的有益效果在于:一方面,用户可以使用他们所熟悉的服务参与跨云文档协作,而不需要学习或为新的服务付费,不需要安装任何软件或插件;另一方面,服务提供商不需要投入任何额外工作,如制定标准或修改代码,即可实现和其他类似的服务间的互操作。
【专利附图】
【附图说明】
[0036]图1:本发明的基本思想:通过自动化机器人与所属文档协作云服务之间的交互以及机器人之间的文档同步,来实现异构文档协作云服务间的透明互操作。
[0037]图2:中间代理服务的体系结构。
[0038]图3: (a) —个不例文本文档;(b)不例文档在Microsoft Word Web App用户界面中对应的 HTML 代码片段;(c) - (d) Microsoft Word Web App 和 Google Document 与文档显示相关的Web元素层次结构。
[0039]图4: (a) Goog le Document 和(b) Microsoft Word Web App 中与字体设置相关的UI控件及其CSS选择器。
[0040]图5:(a)机器人之间文档同步中的不一致问题;(b)操作转换。
【具体实施方式】
[0041]跨云文档协作的中间代理服务可以参照以下方式实现:
(I)根据
【发明内容】
部分实现通用协同引擎,其中ifetectZocaJCXaflges和Execu teRemo teChanges方法的伪代码分别参见附录2和附录3。协同引擎中的操作转换方法可以参阅文献顾宁等人发表于ACM Group’05上的文章《Consistency maintenancebased on the mark & retrace technique in groupware systems》(《群件系统中基于标记回溯的一致性维护方法》)。所实现的协同引擎可以被重用,如图2所示,各机器人之间通过协同引擎连接,形成一个P2P的文档协作网络。因此,在协同引擎中还需要实现相应的消息收发模块,用于广播本地操作和接收远程操作。
[0042](2如
【发明内容】
所述的文档协作云服务的适配方法,为每一个需要接入的文档协作云服务(例如:Google Document或Microsoft Word Web App)独立实现适配器接口CESAdaptor中的三个方法iReadDocument,Apply,Sync。实现过程中需要对文档结构、文档元素以及相应的界面元素进行分析,并利用Selenium框架对其进行访问和交互。值得注意^lUeadDocument方法返回的文档状态必须定义在统一的文档模型之上。Apply方法的实现示例可参见附录1,该伪代码给出了执行格式化字符插入和删除操作的示例。
[0043](3)如图2所示,各机器人由CES Web用户界面,CES适配器和通用协同引擎三个组件构成。各机器人可以运行在一个单独的进程中。为了实现跨云文档协作,还需要对各机器人进程进行统一调度。具体调度方式可根据实际的应用流程确定。例如可按照如下方式开始跨云文档协作:启动机器人进程一启动Web浏览器一打开共享文档—启动协同引擎。为了保证异构云服务中的文档状态能够正确同步,在启动协同引擎之前,需要保证各机器人所读取的文档状态处于一致状态。
[0044]附录1.操作应用于机器人的本地文档
【权利要求】
1.一种异构文档协作云服务间透明互操作的方法,其特征在于,跨云文档协作以中间代理服务的形式提供,中间代理服务中引入机器人,其通过机器人与所属文档协作云服务之间的自动交互及机器人之间的文档交互,实现异构文档协作云服务间的透明互操作;具体如下: 采用Web浏览器自动化技术实现机器人与所属文档协作服务之间的自动交互:读取文档状态,将文档的视图表示转换成用统一的文档模型表示;应用来自于其它机器人的远程操作;将本地文档与所属组中共享文档进行同步; 参与跨云文档协作的用户组的机器人之间通过协同引擎相互连接,形成一个P2P的文档协同编辑网络:通过文档间diff推导机器人所属用户组用户的更新操作,检测文档更新;再利用地址空间转换技术AST,将接收到的来自其他用户组的机器人的远程操作转换成正确的形式后并执行,使得所有文档协作服务中的共享文档处于一致状态,实现机器人之间的文档交互。
2.根据权利要求1所述的异构文档协作云服务间透明互操作的方法,其特征在于:所述机器人由CES用户界面、CES适配器和协同引擎三个核心组件构成; 所述CES用户界面为Web浏览器打开的Web用户界面,用于参与所属组的文档协作; 所述CES适配器,用以实现机器人与所属文档协作服务的自动化交互; 所述协同引擎负责检测文档更新并实现与其他机器人的文档同步。
3.根据权利要求2所述的异构文档协作云服务间透明互操作的方法,其特征在于,所述CES适配器实现了如下的公共接口:
interface CESAdaptor {
ReadDocument(): Document
Apply (Operation[] operations): void
Sync (): void
} 其中: ReadDocument方法返回显示在用户界面中的文档对象; Apply方法被调用以将编辑操作应用于机器人的本地文档上; Sync方法被调用以实现机器人本地文档与所属云服务中共享文档的同步。
4.根据权利要求1所述的异构文档协作云服务间透明互操作的方法,其特征在于:所述Web浏览器自动化技术中采用Selenium框架,实现机器人与所属文档协作服务之间的自动交互。
5.根据权利要求1所述的异构文档协作云服务间透明互操作的方法,其特征在于:所述协同引擎中检测文档更新方法按如下步骤实现: 步骤1:调用CES适配器中的Sync方法更新本地文档状态; 步骤2:调用CES适配器中的方法读取并记录当前的文档状态; 步骤3:与之前记录的文档状态进行diff操作; 步骤4:如果检测到更新,则将更新操作发送至其他机器人站点。
6.根据权利要求1所述的异构文档协作云服务间透明互操作的方法,其特征在于:所述协同引擎中实现与其他机器人的同步,按照如下步骤实现:步骤1:如果操作处于非因果就绪状态,将其加入等待队列并返回;否则,跳至步骤2 ;步骤2:通过AST方法将操作序列转换成正确形式;步骤3:调用CES适配器中的Apply方法将转换后的操作应用于本地文档;步骤4:检查等待队列,重复步骤2和步骤3执行因果就绪操作;步骤5:调用CES适 配器中的Sync方法更新所属组的共享文档。
【文档编号】G06F17/30GK103488754SQ201310439944
【公开日】2014年1月1日 申请日期:2013年9月22日 优先权日:2013年9月22日
【发明者】夏欢欢, 卢暾, 邵斌, 丁向华, 顾宁 申请人:复旦大学