协同工作方法以及使用该方法的系统与流程

文档序号:16039492发布日期:2018-11-24 10:21阅读:348来源:国知局
本发明关连于一种协同工作环境技术,特别是一种协同工作方法以及使用该方法的系统。
背景技术
:协同工作环境(cwe,collaborativeworkingenvironment)用以支援多人(例如,网络专家)的协同作业。协同工作系统(cws,collaborativeworkingsystem)的成功因素包含群体合作技术或群体软件的可用性,包含可帮助群体存取及分享信息的硬件及软件工具。于协同工作环境中,当二或多个人编辑同一份电子文件时,可能发生命令冲突。为解决协同工作环境中发生的命令冲突,需要一种协同工作方法以及使用该方法的系统。技术实现要素:本发明的实施例提出一种协同工作方法,由处理单元载入并执行客户端的程序码时实施,包含:透过人机界面接收使用者编辑电子文件的信号;产生并执行相应于信号的编辑命令;将客户端更版计数器加一;传送包含编辑命令的同步请求给服务器;从服务器接收认可信息,其中包含编辑命令及服务器更版计数器的值;以及当相应于编辑命令的客户端更版计数器的值与服务器更版计数器的值不相符时,判定发生命令冲突及执行冲突化解程序,用以让所有客户端间的编辑命令的执行顺序一致。本发明的实施例提出一种协同工作方法,由处理单元载入并执行服务器的程序码时实施,包含:从第一客户端接收到第一同步请求,包含编辑命令;将服务器更版计数器加一;转送第二同步请求给第二客户端,包含编辑命令及服务器更版计数器的值;以及回复认可信息给第一客户端,包含编辑命令及服务器更版计数器的值。本发明的实施例提出一种协同工作系统包含服务器装置及客户端装置。服务器装置包含第一记忆体及第一处理单元。第一记忆体存储服务器更版计数器的值。第一处理单元从第一客户端接收到第一同步请求,包含第一编辑命令;将服务器更版计数器加一;转送第二同步请求给第二客户端,包含第一编辑命令及服务器更版计数器的值;以及回复认可信息给第一客户端,包含第一编辑命令及服务器更版计数器的值。客户端装置包含第二记忆体及第二处理单元。第二记忆体存储客户端更版计数器的值。第二处理单元透过人机界面接收使用者编辑电子文件的信号;产生并执行相应于信号的第一编辑命令;将客户端更版计数器加一;传送第一同步请求给服务器装置,包含第一编辑命令;从服务器装置接收认可信息;以及当相应于第一编辑命令的客户端更版计数器的值与服务器更版计数器的值不相符时,判定发生命令冲突及执行冲突化解程序,用以让所有客户端间的编辑命令的执行顺序一致。附图说明图1是依据本发明实施例的协同工作系统的网络架构图;图2是依据本发明实施例的网络附属存储的系统架构图;图3是依据本发明实施例的计算机装置的系统架构图;图4是依据本发明实施例的协同工作环境初始化的方法流程图;图5a及图5b是依据本发明实施例的协同工作环境的编辑命令同步及执行的方法流程图;图6是依据本发明实施例的信息交换图;图7是依据本发明实施例的试算表画面的示意图;图8a及图8b是依据本发明实施例的试算表画面的示意图。【符号说明】100网络;110服务器;120_1~120_n客户端;210处理单元;240存储单元;250记忆体;260通信接口;310处理单元;320显示单元;330输入装置;340存储装置;350记忆体;360通信接口;s411~s435方法步骤;s511~s555方法步骤;c1~c3使用个案;t1~t10时间点;700、810、820试算表。具体实施方式以下说明是为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的
发明内容必须参考之后的权利要求范围。于权利要求中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。图1是依据本发明实施例的协同工作系统(cws,collaborativeworkingsystem)的网络架构图,包含一个服务器(server)110及多个客户端120_1至120_n,n为任意整数。服务器110可以服务多个客户端,而客户端120_1至120_n中的任一者可使用多个服务器。服务器110为一个计算机程序,用以为客户端120_1至120_n(亦即是计算机程序)提供所需的功能。服务器110可提供协同工作环境(cwe,collaborativeworkingenvironment)服务,例如,于客户端120_1至120_n之间存取及分享数据。详细来说,服务器110可协调客户端120_1至120_n对同一份电子文件的存取,例如,试算表(spreadsheet)、绘图(drawing)、行事历(schedule)等。客户端120_1至120_n中的任一者可透过网络100连接上服务器110,用以存取服务器110中的数据。网络100可为网际网络(internet)、区域网络(localareanetwork,lan)、无线区域网络(wirelesslocalareanetwork,wlan)、无线电信网络(wirelesstelephonynetwork),或以上的任意组合。虽然本发明实施例描述客户端120_1至120_n经由网络100连接服务器110,然而,熟悉此技艺人士亦可修改网络架构,使得服务器处理及至少一个客户端处理执行于相同电子装置,本发明并不因此受限。执行服务器110的装置可称为服务器装置,而执行客户端120_1至120_n中的至少一者的装置可称为客户端装置。于一些实施例中,网络附属存储(nas,network-attachedstorage)系统可执行服务器110的程序码。图2是依据本发明实施例的网络附属存储的系统架构图。处理单元210可使用多种方式实施,例如以专用硬件电路或通用硬件(例如,单一处理器、具平行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行程序码或软件时,提供之后所描述的功能。系统架构另包含记忆体250用以存储执行过程中需要的数据,例如,变量、数据表等。存储装置240可包含多个存储单元,例如硬盘(hd,harddisk)、固态硬盘(ssd,solidstatedisk)、非挥发性记忆装置等,组织为独立磁盘冗余阵列(redundantarrayofindependentdisks,raid),用以存储各式各样的电子文件,例如,网页、文件、音频文件、视频文件等。系统架构另包含通信接口260,让处理单元210可借以跟其他电子装置进行沟通。通信接口260可以是区域网络通信模块、无线区域网络通信模块等。图3是依据本发明实施例的计算机装置的系统架构图。此系统架构可用以执行服务器110及客户端120_1至120_n中的任一者的程序码,可为手机、平板计算机、个人计算机、笔记型计算机,或其他具备运算能力的电子装置。处理单元310可使用多种方式实施,例如以专用硬件电路或通用硬件(例如,单一处理器、具平行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行程序码或软件时,提供之后所描述的功能。系统架构另包含记忆体350用以存储执行过程中需要的数据,例如,变量、数据表等,以及存储装置340,用以存储各式各样的电子文件,例如,网页、文件、音频文件、视频文件等。系统架构另包含通信接口360,让处理单元310可借以跟其他电子装置进行沟通。通信接口360可为区域网络通信模块、无线区域网络通信模块、2.xg、3.xg、4.xg、5.xg电信网络通信模块等。输入装置330可包含键盘、鼠标、触控面板等。使用者可按压键盘上的按键来输入字符,通过操作鼠标来控制光标,或者是在触控面板制造手势来控制执行中的应用程序。手势可包含单击、双击、单指拖曳、多指拖曳等,但不限定于此。显示单元320可包含显示面板(例如,薄膜液晶显示面板、有机发光二极管面板或其他具显示能力的面板),用以显示输入的字符、数字、符号、拖曳光标的移动轨迹、绘制的图案或应用程序所提供的画面,提供给使用者观看。为了避免当二或多个人编辑同一份电子文件时可能发生的命令冲突,本发明实施例让服务器110及客户端120_1至120_n各自维护更版计数器(revisioncounter),使得客户端120_1至120_n中的任一者可通过检查自己及服务器110间的更版计数器来侦测是否发生命令冲突。当命令冲突发生时,客户端可执行冲突化解程序(conflict-resolvingprocedure),用以让此客户端的电子文件存取状态与其他客户端同步。服务器110可运行于处理器210或310,客户端120_1至120_n可运行于处理器310。当服务器110初始化时,将更版计数器初始为0。每次接收到客户端120_1至120_n中的任一者的编辑命令后,服务器110将更版计数器(以下称为服务器更版计数器)加1。当客户端120_1至120_n中的任一者初始化时,从服务器110取得最新的更版计算器值,并将更版计数器(以下称为客户端更版计数器)设定为取得的值。图4是依据本发明实施例的协同工作环境初始化的方法流程图。此方法分为二个部分,由虚线隔开,左边由相应于客户端120_1至120_n中的任一者的处理单元执行,而右边由相应于服务器110的处理单元执行。当客户端120_1至120_n中的任一者初始化时(步骤s411),发出初始化请求给服务器110(步骤s413)。于一些实施例中,客户端120_1至120_n中的任一者可透过通信接口360发送初始化请求给服务器110。于另一些实施例中,客户端120_1至120_n中的任一者可透过处理间通信(ipc,inter-processcommunication)发送初始化请求给服务器110。初始化请求至少包含识别信息,例如客户识别码、网际网络协议(ip,internetprotocol)地址、媒体存取控制(mac,mediaaccesscontrol)地址或其他,用以让服务器110识别发出请求的客户端。服务器110接收初始化请求后(步骤s431),取得服务器更版计数器的值(步骤s433)并回复取得的值给请求的客户端(步骤s435)。服务器更版计数器可维护于记忆体250或350。于一些实施例中,服务器110可透过通信接口260或360回复取得的值给相应于识别信息的客户端。于另一些实施例中,服务器110可透过处理间通信回复取得的值给相应于识别信息的客户端。客户端接收回复后(步骤s415),设定客户端更版计数器为取得的值(步骤s417)。客户端更版计数器可维护于记忆体350。于运行时,同一份电子文件的编辑命令由客户端120_1至120_n乱序(out-of-order)产生,需要透过服务器110同步客户端120_1至120_n间的编辑命令执行顺序。图5a及图5b是依据本发明实施例的协同工作环境的编辑命令同步及执行的方法流程图。此方法分为三个部分,由虚线隔开,左边由相应于客户端120_1的处理单元执行,中间由相应于服务器110的处理单元执行,而右边由相应于客户端120_2至120_n中的任一者的处理单元执行。客户端120_1提供人机界面(mmi,manmachineinterface),用以让使用者编辑电子文件。人机界面包含用以接收使用者输入信号的软件(例如,驱动程序、操作系统等)及硬件(例如,键盘、鼠标、触控屏幕等)。客户端120_1透过人机界面接收使用者编辑电子文件的信号后(步骤s511),产生并执行编辑命令(步骤s512),将客户端更版计数器加一(步骤s513),以及传送同步请求给服务器110(步骤s514)。编辑电子文件的信号可为键盘输入信号,或单击、双击、单指拖曳、多指拖曳等手势信号。详细来说,底层的驱动程序及操作系统根据编辑电子文件的信号产生应用程序操作信号,例如点击或双击一个存储格、将一个使用者界面(ui,userinterface)物件从座标a拖放置座标b、于使用者界面中输入英文字母、符号、特殊符号等,接着,客户端120_1根据应用程序操作信号产生编辑命令,例如,设定试算表中一个存储格的公式、设定试算表中一个存储格为特定数值、绘制矩形或三角形等、新增或删除一笔行事历记录等。客户端120_1产生的编辑命令可被其他客户端120_2至120_n中的每一者解译并执行。同步请求可包含客户端120_1的识别信息及产生的编辑命令,用以通知服务器110此编辑命令是由客户端120_1产生。记忆体350可更存储映射数据表(mappingtable),客户端120_1可产生并存储一笔记录至映射数据表,用以指出于步骤s512产生的编辑命令及于步骤s513中产生的客户端更版计数器的值间的映射关系。于将步骤s512及产生的编辑命令及于一些实施例中,同步请求另可包含客户端更版计数器的最新值。于另一些实施例中,客户端120_1于步骤s514中传送的同步请求可还包含编辑命令的执行结果,使得其他客户端120_2至120_n可从同步请求中直接取得执行结果,而不需要执行编辑命令。服务器110接收同步请求后(步骤s531),将服务器更版计数器加一(步骤s533),以及转送同步请求给其他客户端120_2至120_n,使得其他客户端120_2至120_n可执行其中的编辑命令(步骤s535)。转送的同步请求中可包含客户端120_1产生的编辑命令及服务器更版计数器的最新值。于正常情况下(亦即是没有命令冲突),客户端120_2至120_n中的每一者接收到同步请求后(步骤s551),执行同步请求中的编辑命令(步骤s553),以及将记忆体350中的客户端更版计数器设定为同步请求中服务器更版计数器的值(步骤s555)。服务器110转送同步请求给其他客户端120_2至120_n后(步骤s535),回复认可信息(acknowledgment)给客户端120_1,包含客户端120_1产生的编辑命令及服务器更版计数器的最新值,使得客户端120_1可据以侦测是否发生命令冲突(步骤s537)。于此可了解的是,即使于步骤s511前客户端120_1及服务器110间的更版计数器已经同步过,但是,于步骤s511及步骤s531之间,服务器110可能接收到其他客户端120_2至120_n中的至少一者传来的编辑命令,使得步骤s533中产生的服务器更版计数器的最新值大于步骤s513中产生的客户端更版计数器的最新值。换句话说,当侦测到回复的服务器更版计数器的最新值大于步骤s513中相应于编辑命令的客户端更版计数器的值时,客户端120_1判定发生命令冲突。当侦测到回复的服务器更版计数器的最新值等于步骤s513中相应于编辑命令的客户端更版计数器的值时,客户端120_1判定没有发生命令冲突。客户端120_1接收回复后(步骤s515),判断相应于编辑命令的客户端更版计数器的值是否相符于回复中的服务器更版计数器的值(步骤s516)。如果相符,代表没有发生命令冲突,客户端120_1等待下一个使用者编辑电子文件的信号(步骤s511)。如果不相符,代表发生命令冲突,执行冲突化解程序(步骤s517至s520)。客户端120_1可搜寻记忆体350中的映射表来取得相应于编辑命令的客户端更版计数器的值。于冲突化解程序中,详细来说,客户端120_1取消(undo)先前执行过的编辑命令(步骤s517),依据服务器更版计数器的值顺序地执行服务器110转送给客户端120_1的编辑命令(步骤s518),重新执行编辑命令(步骤s519),以及将记忆体350中的客户端更版计数器设定为同步请求中服务器更版计数器的值(步骤s520)。步骤s517中的取消编辑命令是清除此电子文件的最后一次改变或将此电子文件回复至前一个状态。换句话说,取消编辑命令回复步骤s212中对此电子文件执行过的上一个编辑命令。熟悉此技艺人士可理解的是,冲突化解程序令客户端120_1在执行步骤s512产生的编辑命令前,依据服务器更版计数器的值插入执行其他客户端产生的编辑命令,用以让所有客户端120_1至120_n间的编辑命令执行顺序一致。服务器110转送给客户端120_1的编辑命令可依据同步请求中服务器更版计数器的值由小至大推入到先进先出队列(fifo,first-in-first-outqueue),并且于步骤s518中依序取出并执行。以下举出数个使用个案(usecases),说明此方法如何同步所有客户端120_1至120_n间的编辑命令执行顺序。图6是依据本发明实施例的信息交换图。使用个案c1描述客户端120_1启动时的处理:于时间点t1,服务器110中的服务器更版计数器rev_s为“13”。当客户端120_1启动时,客户端120_1及服务器110执行如图4所示的初始化作业。当初始化作业完成时,于时间点t2,客户端120_1中的客户端更版计数器rev_c1设定为13。使用个案c2描述使用者透过客户端120_1的人机界面编辑试算表时的处理:图7是依据本发明实施例的试算表画面的示意图。客户端120_1的显示单元320显示试算表700。参考图5a及图5b。使用者透过客户端120_1的人机界面将试算表700的存储格b1设为公式“=a1+1”后(步骤s511),客户端120_1产生并执行试算表的相应编辑命令“b1=a1+1”(步骤s512)。于时间点t3,客户端120_1将客户端更版计数器rev_c1加一,成为“14”(步骤s513),接着,传送同步请求“req:setb1=a1+1(rev_c1=14)”给服务器110,包含试算表的编辑命令“setb1=a1+1”及客户端更版计数器rev_c1的最新值“14”。服务器110接收到同步请求后(步骤s531),于时间点t4,将服务器更版计数器rev_s加一,成为“14”(步骤s533)。接着,服务器110转送同步请求“fwd:setb1=a1+1(rev_s=14)”给其他客户端120_2至120_n,包含试算表的编辑命令“setb1=a1+1”及服务器更版计数器rev_s的最新值“14”(步骤s535),以及回复认可信息“ack:setb1=a1+1(rev_s=14)”给客户端120_1,包含编辑命令“setb1=a1+1”及服务器更版计数器rev_s的最新值“14”(步骤s537)。客户端120_2至120_n中的每一者从服务器110接收同步请求后(步骤s551),执行同步请求中的编辑命令(步骤s553),并且,于时间点t5,将客户端更版计数器rev_c2设定为“14”(步骤s555)。于一些实施例中,同步请求可为“req:setb1=a1+1(rev_c1=14)(res=6)”,而转送的同步请求可为“fwd:setb1=a1+1(rev_c1=14)(res=6)”,二者还包含编辑命令的执行结果res为“6”,使得客户端120_2至120_n中的每一者可直接取得执行结果,而不需要执行编辑命令“b1=a1+1”。客户端120_1从服务器110接收到认可信息后(步骤s515),发现认可信息中服务器更版计数器rev_s的值“14”与相应于编辑命令“req:setb1=a1+1”的客户端更版计数器rev_c1的值“14”相符,判定没有发生命令冲突(步骤s516中“是”的路径)。使用个案c3描述二个使用者分别透过客户端120_1及120_2的人机界面编辑试算表而产生命令冲突时的处理:图8a及图8b是依据本发明实施例的试算表画面的示意图。客户端120_1的显示单元320显示试算表810,而客户端120_2的显示单元320显示试算表820。使用者透过客户端120_2的人机界面将试算表820的存储格a2设为“6”后,客户端120_2产生并执行试算表的相应编辑命令“a2=6”。于时间点t6,客户端120_2将客户端更版计数器rev_c2加一,成为“15”,接着,传送同步请求“req:seta2=6(rev_c2=15)”给服务器110,包含试算表的编辑命令“seta2=6”及客户端更版计数器rev_c2的最新值“15”。参考图5a及图5b。使用者透过客户端120_1的人机界面将试算表810的存储格c1设为公式“=a1+b1”后(步骤s511),客户端120_1产生并执行试算表的相应编辑命令“c1=a1+b1”(步骤s512)。于时间点t7,客户端120_1将客户端更版计数器rev_c1加一,成为“15”(步骤s513),接着,传送同步请求“req:setc1=a1+b1(rev_c1=15)”给服务器110,包含试算表的编辑命令“setc1=a1+b1”及客户端更版计数器rev_c1的最新值“15”(步骤s514)。然而,服务器110从客户端120_2接收到同步请求“req:seta2=6(rev_c2=15)”的时间点早于从客户端120_1接收到同步请求“req:setc1=a1+b1(rev_c2=15)”的时间点。服务器110接收到同步请求“req:seta2=6(rev_c2=15)”后,于时间点t8,将服务器更版计数器rev_s加一,成为“15”。接着,服务器110转送同步请求“fwd:seta2=6(rev_s=15)”给客户端120_1、120_3至120_n,包含试算表的编辑命令“seta2=6”及服务器更版计数器rev_s的最新值“15”,以及回复认可信息“ack:seta2=6(rev_s=15)”给客户端120_2,包含编辑命令“seta2=6”及服务器更版计数器rev_s的最新值“15”。客户端120_1接收到同步请求“fwd:seta2=6(rev_s=15)”后,由于还未收到相应于同步请求“req:setc1=a1+b1(rev_c1=15)”的认可信息,先存储编辑命令“seta2=6”于记忆体350。服务器110回复认可信息“ack:seta2=6(rev_s=15)”给客户端120_2后,于时间点t9,将服务器更版计数器rev_s加一,成为“16”(步骤s533)。接着,服务器110转送同步请求“fwd:setc1=a1+b1(rev_s=16)”给其他客户端120_2至120_n,包含试算表的编辑命令“setc1=a1+b1”及服务器更版计数器rev_s的最新值“16”(步骤s535),以及回复认可信息“ack:setc1=a1+b1(rev_s=16)”给客户端120_1,包含编辑命令“setc1=a1+b1”及服务器更版计数器rev_s的最新值“16”(步骤s537)。于一些实施例中,同步请求可为“req:setc1=a1+b1(rev_c1=15)(res=11)”,而转送的同步请求可为“fwd:setc1=a1+b1(rev_c1=15)(res=11)”,二者还包含编辑命令的执行结果res为“11”,使得客户端120_2至120_n中的每一者可直接取得执行结果,而不需要执行编辑命令“setc1=a1+b1”。客户端120_1从服务器110接收到认可信息后(步骤s515),发现认可信息中服务器更版计数器rev_s的值“16”与相应于编辑命令“setc1=a1+b1”的客户端更版计数器rev_c1的值“15”不相符,判定发生命令冲突(步骤s516中“否”的路径)。客户端120_1取消先前执行过的编辑命令“setc1=a1+b1”(步骤s517)。执行服务器110转送给客户端120_1的编辑命令“seta2=6”后(步骤s518),重新执行编辑命令“setc1=a1+b1”(步骤s519),以及,于时间点t10,将客户端更版计数器rev_c1设定为认可信息中服务器更版计数器rev_s的最新值“16”(步骤s520)。虽然图2至图3中包含了以上描述的元件,但不排除在不违反发明的精神下,使用更多其他的附加元件,已达成更佳的技术效果。此外,虽然图5a至图5b的方法流程图采用特定的顺序来执行,但是在不违反发明精神的情况下,熟悉此技艺人士可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了熟悉此技艺人士显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1