发明名称 基于半分布式实时协同编辑软件的协同处理方法
摘要 本发明公布了一种基于半分布式实时协同编辑软件的协同处理方法。本发明利用半分布式CRES站点间通讯的特征通过对操作进行编号来实现因果保持和收敛性;通过引入多视角队列来实现对只需要操作队列进行一次遍历并只使用包含变换来实现意图保持。利用本发明提供的技术方案,可以降低协同处理算法实现的难度。收敛性策略不需要对文档进行撤销操作;因果保持策略避免了复杂的状态向量计算;意图保持策略不需要先逆向执行排除变换然后再正向执行包含变换;同时每一个操作在发送到其他站点时所需要附加的信息也减少;半分布式CRES利于进行文档管理,编辑权限管理。
申请公布号 CN102355478B 申请公布日期 2013.08.14
申请号 CN201110194215.8 申请日期 2011.07.12
申请人 北京大学 发明人 郁莲;谢丹
分类号 H04L29/08(2006.01)I;G06F9/44(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 北京万象新悦知识产权代理事务所(普通合伙) 11360 代理人 贾晓玲
主权项 一种基于半分布式实时协同编辑软件的协同处理方法,所述半分布式实时协同编辑软件表示实时协同编辑软件的协同站点分为客户端站点和服务器站点,通讯只在服务器站点和客户端站点之间进行,其特征在于,所述协同处理满足收敛、因果保持和意图保持的方法如下:A.实现服务器端因果保持的方法:A1.在服务器站点对所有的客户端站点进行编号,假如有N个客户端站点,则这些站点的编号分别为0,1,...,N‑1;然后在服务器站点上定义一个长度为N的一维数组SV作为状态向量,其中SV[k]记录服务器站点接受的来自编号为k的客户端站点的操作的个数,并且SV[k]初始化为SV[k]=0;在编号为k的客户端站点上定义一个变量SVk记录该站点发送了的操作次数,SVk初始化为SVk=0;A2.对于编号为k的客户端站点,如果它产生一个操作O,则SVk=SVk+1;O在被发送时将SVk作为附加信息,即O.SVk;A3.服务器站点接受O的条件是SV[k]==O.SVk‑1,否则该消息将被延时处理以便保证服务器站点按照客户端站点产生操作的顺序来处理这些操作;A4.服务器站点如果接受操作O,则SV[k]=O.SVk;B.实现客户端因果保持的方法:B1.在服务器站点上定义一个变量SS记录服务器站点发送操作的个数,并且将SS初始化SS=0;在编号为k的客户端站点上定义一个变量SSk记录该客户端站点接受来自服务器站点的操作的个数,SSk初始化为SSk=0;B2.服务器站点如果发送操作EO,则SS=SS+1;EO在被发送时将SS作为附加信息,即EO.SS;B3.编号为k的客户端站点接受EO的条件是SSk==EO.SS‑1,否则该消息将被延时处理以便保证客户端站点按照服务器站点发送操作的顺序来处理这些操作;B4.编号为k的客户端站点如果接受操作EO,则SSk=EO.SS;C.在服务器站点和客户端站点按照步骤A和步骤B中所定义的方法处理操作后,客户端站点和服务器站点就能够按照相同的顺序处理操作,因此也就满足了收敛性的要求;D.实现服务器站点意图保持的方法:D1.服务器站点为每一个客户端站点维护一个上下文队列,编号为i的客户端站点的 上下文队列为HB[i],并且HB[i]初始化为HB[i]=Φ;HB[i][j]表示上下文队列HB[i]中的第j个操作;D2.对于服务器接受的操作O,使用O.id表示产生该操作的客户端站点的编号,O.SS表示客户端站点产生操作O时该客户端站点上定义的变量SSk的值;D3.当一个服务器站点按照A3,A4中步骤对操作进行处理后,上下文队列中HB[O.id]中从O.SS开始的每一个操作O′,如果O′.id≠O.id则先执行O″=IT(O,O′),然后使用O″′=IT(O′,O)代替队列中的操作O′,最后执行O=O″,并开始对队列中下一个操作按照步骤D3处理;所述IT为包含变换函数,IT(X,Y)表示考虑操作Y的影响并且实现操作X原来的意图;D4.将操作O加入到服务器站点维护的每一个上下文队列中;E.实现客户端站点意图保持的方法:E1.在客户端站点使用变量CC_ID来表示该客户端站点的编号;客户端站点维护一个上下文队列HB,并且HB初始化为HB=Φ;客户端使用变量MsgReturn来记录由该客户端发送到服务器,并且从服务器返回的操作的个数;E2.服务器发送的操作EO使用EO.SS来表示服务器站点发送操作EO时变量SS的值;EO.id表示操作EO产生的站点的编号;E3.如果EO.id==CC_ID,则MsgReturn=MsgReturn+1;否则执行步骤E4;E4.对于上下文队列HB中从MsgReturn开始的每一个操作O′,先执行EO″=IT(EO,O′),然后使用O″′=IT(O′,EO)代替队列中的操作O′,最后执行O=EO″并开始对队列中下一个操作按照步骤E4处理。
地址 100871 北京市海淀区颐和园路5号
您可能感兴趣的专利