CN101853199A - 基于操作效果关系的选择性撤销方法 - Google Patents
基于操作效果关系的选择性撤销方法 Download PDFInfo
- Publication number
- CN101853199A CN101853199A CN 201010176176 CN201010176176A CN101853199A CN 101853199 A CN101853199 A CN 101853199A CN 201010176176 CN201010176176 CN 201010176176 CN 201010176176 A CN201010176176 A CN 201010176176A CN 101853199 A CN101853199 A CN 101853199A
- Authority
- CN
- China
- Prior art keywords
- undo
- local
- operated
- selectivity
- effect
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
Abstract
本发明属于计算机支持的协同工作技术领域,具体是一种基于操作效果关系的选择性撤销方法。包括:操作之间Do-Undo关系的跟踪、程序的控制算法、处理本地Do/Undo操作、处理远程Do/Undo操作、整合本地操作及整合远程操作。Undo是分布式交互协同应用程序不可或缺的重要功能之一。本发明可以支持用户撤消操作日志中的任何操作,在各个用户间实现数据的一致性维护。
Description
技术领域
本发明属于计算机支持的协同工作(Computer Support Cooperative Work)技术领域,具体涉及一种基于操作效果关系的选择性撤销方法,该方法可以使得用户在分布式协同应用程序中,任意地撤销操作日志中的任何历史操作。本发明利用操作之间的操作效果关系,自动地处理用户操作之间的复杂的Do-Undo关系,在各个协同站点间实现数据的一致性维护。
背景技术
Undo是交互式应用程序不可或缺的重要功能之一。许多日常的单用户应用程序,包括文本编辑器、编程软件、设计工具、Web浏览器等都允许用户按时间顺序撤消最近的若干个历史操作。Undo通常用于用户层面的错误恢复,比如修正拼写错误等。同时由于Undo机制能撤消错误操作所带来的不良影响,它也可以鼓励用户探索不熟悉的应用程序功能。
与单用户应用程序中的Undo机制相比,在协同应用程序中实现Undo机制需要面临很多的技术挑战。当用户分布地并行工作时,由于并发性,本地和远程操作可能会被任意地交叉执行。而用户的Undo请求可能是指撤消最后一个本地操作或也可能是指撤销最后一个在本地执行的操作(可能是本地产生操作,也可能是远程站点产生操作)。用户要撤销的是最后一个本地操作时,该操作执行后可能又有其它的远程操作已经在本地被执行。因此,该操作的定义上下文已经不是当前的文档状态,撤销该操作也就不能靠简单地执行其逆操作来完成。而用户要撤销最后一个远程操作时,系统则要准确无误地判定要撤销是哪个用户所执行的哪个操作。否则,该Undo请求在不同的站点上就可能会有不同的执行效果,引起不可预测的系统行为。
在分布式的协同环境中,由于用户要撤销操作的定义状态可能已不是当前的文档状态,协同环境下的Undo机制需要支持Selective Undo以撤消操作日志中任何所选操作的操作效果。由于操作转换技术可以对任意的一对操作进行转换以交换其执行顺序,操作转换技术是在分布式协同系统中实现Selective Undo非常理想和有效的工具。操作转换的这种特性使得去除某个历史操作的效果并重新安排操作日志中操作的执行顺序成为可能。在极端情况下,借助操作转换技术我们甚至可以任意地组织历史操作的执行顺序,有选择性地保留需要的操作效果,去除不需要的操作效果。
发明内容
本发明的目的在于提出一种基于操作效果关系的选择性撤销方法,具体是构建一个可以选择性撤销任何历史操作的算法框架。该算法框架包括操作之间Do-Undo关系的跟踪、程序的控制算法、处理本地Do/Undo操作、处理远程Do/Undo操作、整合本地操作及整合远程操作。
下面先介绍一些相关的基本概念。
具有高交互性的协同应用程序的一个重要目标就是本地操作的高响应性,即本地操作的无延迟执行。实现操作的无延迟执行的一个重要手段就数据的全复制式结构,即每个站点保留一份数据副本,用户的操作在本地可以立即执行,然后发送给其它站点。每个站点拥有一个用以记录历史操作的操作日志H和用以缓存其它未处理的来自于其它站点远程操作的接收队列RQ。
在分布式系统中,基于状态向量(State Vector)的逻辑时间戳被广泛用来判别操作之间的因果关系(Causal Relationship)。一个时间戳是一个向量,向量的每一维表示一个站点,而向量中这一维上的值表示已经执行了这个站点中的操作的数量。每个站点拥有一个代表本地状态的状态向量sv。由于来自同一个站点的操作都是顺序执行的,于是一个时间戳可以表示在该时间戳的状态下已执行了哪些操作,如果一个时间戳中所有已执行的操作都包含在另一个时间戳的已执行操作中,则两个时间戳满足因果关系,否则是并发关系。如果两个操作o1和o2具有因果先于关系,则记为o1→o2;如果两个操作o1和o2具有并发关系,则记为o1||o2。每个操作产生后,本地站点的状态向量会作为逻辑时间戳附在该操作上。
一种Undo方案首先要解决如何在操作日志中选择要撤销的历史操作。操作日志中的操作可以使用其下标i来索引,例如H[i]。在基于向量时间戳的系统中,给定一个已存在的向量时间戳v,我们可以在操作日志中找到一个唯一与之对应的历史操作H[i]。我们用符号undo(i)来表示用户要撤销操作日志中第i个操作。
操作之间Do-Undo关系的跟踪
每个操作o是一个具有如下属性的九元组(id,type,pos,char,v,dv,tv,ov,uv):o.id是产生操作o的站点id;o.type是操作的类型,为ins或者del;o.pos是o的操作位置;o.char是o插入或删除效果字符。另外的5个属性都与向量时间戳有关系,它们分别是:
·o.v:o的向量时间戳集合;
·o.dv:由依赖于o的操作的向量时间戳构成的集合;
·o.tv:由效果字符与o的效果字符冲突的操作的向量时间戳构成的集合;
我们用上述这些向量时间戳来跟踪操作之间的相互关系。比如,若操作o′撤销了操作o,那么o.uv=o′.v并且o′.ov=o.v。同时,它们效果字符的操作位置相同,故o′.tv=o.v,并且o′在操作日志中紧跟着o存放。如果多个操作删除了同一效果字符或者它们撤销了同一个原始操作,那么,它们在H中将被合并为一个操作o而且o.v是这些操作的向量时间戳构成的集合。
我们定义三个用以判定两个操作之间操作效果序的操作符。
操作符<e:给定任意的两个操作o1和o2,当o1和o2定义在相同的文档状态上时,o1<e o2如果下述三个条件之一成立:
(1)o1.pos<o2.pos;
(2)o1.pos=o2.pos,o1.type=ins,o2.type=del;
(3)o1.pos=o2.pos,o1.type=o2.type=ins,o1.id<o2.id。
当o1和o2定义在相邻的文档状态上时,o1<e o2如果下述两个条件之一成立:
(1)o1.pos<o2.pos;
(2)o1.pos=o2.pos,o1.type=o2.type=del。
操作符>e:>e是与操作符<e对称的操作符。给定任意的两个操作o1和o2,当o1和o2定义在相同的文档状态上时,o1>e o2如果下述三个条件之一成立:
(1)o1.pos>o2.pos;
(2)o1.pos=o2.pos,o1.type=del,o2.type=ins;
(3)o1.pos=o2.pos,o1.type=o2.type=ins,o1.id>o2.id。
当o1和o2定义在相邻的文档状态上时,o1>e o2如果下述两个条件之一成立:
(1)o1.pos>o2.pos;
(2)o1.pos=o2.pos,o1.type=o2.type=ins。
操作符=e:任意给定两个操作o1和o2,o1=e o2如果o1.pos=o2.pos并且下述的两个条件之一成立:
(1)o1和o2定义在相同的文档状态上,o1.type=o2.type=del;
(2)o1和o2定义在相邻的文档状态上,o1.type与o2.type不同。
本发明提出的基于操作效果关系的选择性撤销方法,利用操作效果序跟踪操作之间的Do-Undo关系,并利用历史操作之间的操作效果关系处理本地和远程的Do/Undo操作。其控制算法包含三个线程L、R和N。线程N用来接收远程操作,线程L和R分别用来处理本地和远程的Do/Undo操作。其中处理本地和远程的Do/Undo操作的算法分别包含两个Do/Undo操作整合过程integrateL和integrateR。
本发明提出的选择性撤销方法分为两部分:对本地Do/Undo操作的处理和对远程Do/Undo操作的处理。
对本地Do/Undo操作的处理流程为:
1)若本地操作为Do操作,程序执行本地操作,然后调用integrateL过程将本地Do操作按操作效果序添加到操作日志中;
2)若本地操作为Undo操作,根据该操作与其原始操作之间的操作效果序产生该操作的逆操作,记录该操作与其原始操作之间的Do-Undo关系后按照处理Do操作的方式进行整合处理。
对远程Do/Undo操作的处理流程为:
1)若远程操作为Do操作,调用integrateR过程产生一个可以在当前文档状态正确执行的操作形式,执行该操作并将其添加到操作日志中;
2)若远程操作为Undo操作,扫描操作日志来定位其原始操作,如果其原始操作已经被该远程操作的并发操作所撤销,则将该远程操作与其效果等价的并发操作进行合并,否则记录该远程操作与其原始操作之间的Do-Undo关系。然后,按照处理远程Do操作的方式处理该Undo操作。
本发明提出的选择性撤销方法可以使得在多个用户进行实时编辑的分布式协同系统中,用户可以选择性地撤销操作日志中的任何历史操作,本发明可以自动处理用户之间的操作冲突,在各个用户间实现数据的一致性维护。
所说的操作效果序,是指根据操作效果字符之间的相对位置关系来对所有的操作进行比较、排序和存储。
所说的线程L,在触发本地操作(Do或Undo操作)后被激活。任何的操作(Do或Undo操作)在本地站点执行后,先由线程L将其添加到操作日志中。随后,该操作会被广播给其它远程站点。
所说的线程N,在一个远程操作到达本地站点后被激活。当接收到某个远程操作后,该操作会被线程N添加到接收队列RQ中。
所说的线程R,在系统不在忙于处理本地操作时(处理本地操作的线程L的优先级高于处理远程操作的线程R),它将被激活来处理因果就绪的远程操作(Do或Undo操作)。
所说的integrateL过程,被线程L调用,将一个新产生的本地操作o按照操作效果序添加到操作日志H中。
所说的integrateR过程,被线程R调用,具有两重目标:第一个目标是转换某个远程操作o使得转换后得到的操作可以正确地在当前文档状态上执行;第二个目标是将o添加到操作日志H中的某个恰当的位置k,以使得H在转换后仍然保持操作效果序。
下面具体介绍基于操作效果关系的选择性撤销方法中所涉及到的各个算法。
1、程序的控制算法
每个站点上运行三个主要的并发线程,线程L、N和R,其中线程L和R分别用来处理本地和远程操作。任何的操作(Do或Undo操作)在本地站点执行后,先由线程L将其添加到操作日志中。随后,该操作会被广播给其它远程站点。当接收到某个远程操作后,该操作会被线程N添加到接收队列RQ中。线程R每次处理RQ中一个因果就绪的操作。H中的所有操作按照操作效果序排列。
2、处理本地Do/Undo操作
任何本地操作要么是一个普通的Do操作,要么是某个历史操作的Undo操作。当一个本地操作被提交后,无论是哪种情况,线程L都会被触发来处理这个本地操作。
如算法1所示,当操作o是一个Do操作时,它将被直接在本地数据副本上执行。执行完后,站点k的状态向量sv的第k个元素将加1,以表示站点k执行了一个新的操作。然后,操作o的向量时间戳将被置为sv。当操作o被添加到本地的操作日志H中后,它将被广播到其它的远程站点。integrateL(o)过程用来将操作o按操作效果序添加到操作日志H中。
当操作o是一个Undo操作undo(i)时,线程L会首先检查它的原始操作H[i]是否已经被其它操作撤销或者被其它操作所依赖(第6行)。如果操作o已经被撤销或被其它操作依赖,那么,线程L将会拒绝这个Undo操作请求。否则的话,它将产生H[i]的逆操作o′,调整站点的状态向量sv,并用sv来标记o′。为了跟踪Do-Undo操作之间的关系,o′.ov被置为其原始操作的向量时间戳(第12行),而H[i]的uv属性则被置为o′.v(第13行)。
这之后,操作o′将被看作一个普通的Do操作来处理:本地执行后,被添加到操作日志H中,然后再被广播到其它远程站点。
3、处理远程Do/Undo操作
当系统不在忙于处理本地操作时,线程R将被触发来处理因果就绪的远程操作(Do或Undo操作)。线程R将首先检查o.ov来判定o是否为Undo操作。根据ov的定义,如果o.ov为空,则o是一个Undo操作;否则,o就是普通的Do操作。
如果o是Do操作(第13至15行),它将被integrateR(o)处理,该过程有两方面的作用:(1)转换操作o使得o包含其所有并发操作的效果,得到一个可以在当前文档状态上正确执行的操作o′。如果转换后的操作不是空操作,则在当前文档状态上执行操作o′。(2)将o′按照操作效果序添加到操作日志H中。
如果o是Undo操作,线程R首先扫描H来找到它的原始操作H[i](根据条件H[i].v∩o.ov不为空)。然后,检查H[i]是否已经被o的并发操作撤销。如果H[i]已经被撤销,那么首先需要找到它的Undo操作H[j](根据条件H[j].v∩H[i].uv不为空),并将o.v合并到H[j].v之中。因为一个操作只能被撤销一次,所以操作o不需要再次被执行。然而,本站点的状态向量sv仍然需要被调整,以反映o的操作效果已经被包含到本地数据副本这一事实。如果H[i]还没有被撤销,那么将H[i].uv置为o.v,并将H[i].v合并到o.ov中。然后,类似于对Do操作的处理,操作o将被转换并添加到H中。
4、整合本地操作
integrateL(o)(算法3)被线程L调用来将一个新产生的本地操作o按照操作效果序添加到H中。有两种情况需要考虑:
情况1:操作o是普通的Do操作,那么o.ov为空肯定满足。我们将o自右向左地与H中的操作进行交换转换,直到找到一个操作H[i]使得H[i]≤e o。在这一过程中,对于每一个H[i],如果H[i]>e o,则需要将o的效果包含进H[i]中(第5至7行)。如果H[i]<e o或者H[i]=e o,则需要将o插入到H[i]之后,并将o在H中的插入位置保存在k中。
如果H[i]=e o,H[i]和o的效果字符冲突,这时候我们将o.tv置为H[i].v来标记这种情况。此外,如果o.type=del,o必然是删除了H[i]之前插入的效果字符。也就是说,操作o依赖于H[i]。所以,我们将H[i].dv置为o.v来指示这种依赖关系,并使得H[i]不会被撤销。
情况2:操作o是Undo操作,这时需要在H中找到一个目标操作使得H[i].v∩o.ov为空。然后,将o插在H[i]的后面,因为这两个操作具有相同的效果字符,并将o.tv置为H[i].v来表示这种关系。此外,为了反映操作o的操作效果,我们需要调整H在插入位置之后的操作的操作位置(第19至22行)。
5、整合远程操作
integrateR(o)(4)被线程R调用,其具有两重目标(或作用):第一个目标(作用)是转换操作o使得转换后得到的o′可以正确地在当前文档状态上执行;第二个目标(作用)是将o添加到H中的某个恰当的位置k,以使得H在转换后仍然保持操作效果序。根据o.tv是否为空,我们将这个算法分为两种情况来讨论:
(I)o.tv为空:这种情况下,不存在一个时序上先于o且其效果字符与o的效果字符冲突的操作。
根据远程操作的执行条件,操作o在执行前必然是因果就绪(causally-ready)的,故所有时序上先于o的操作的效果肯定都已包含在操作日志H中。
我们首先考虑并发操作的情况。对于每一个满足H[i]||o的H[i],如果H[i]<e o,我们就将H[i]的操作效果包含进o(第7行)。
注意第6行的条件H[i].tv不为空,这个条件意味着存在某个已经检查过的操作H[j](即H[j]<e o′),j<i,满足H[j]的效果字符与H[i]的效果字符冲突。在这种情况下,H[j]<e o′且H[j]=e H[i],因此H[i]<e o′隐含地成立。
与此同时,为了完成使H保持操作效果序的目标,我们一直扫描H直到找到某个满足H[i]≥e o的H[i]。当o′=e H[i]时,o′和H[i]必然删除了同一效果字符。这时,我们将o转换为一个空操作,并将o.v合并到H[i].v中。
现在我们考虑那些时序上先于o的前继操作。这时,扫描H直到遇到某个满足H[i]>eo′条件的前继操作(第15至18行)。然后,将o′添加到H中的位置i。因为我们不需要将o与它的前继操作进行包含转换,那些按操作效果序排在o之前的前继操作直接跳过即可。
(II)O′.tv不为空:这种情况下,必然存在某个H[i],使得H[i]→o且H[i]=e o。这个条件覆盖了o是Undo操作的情况。
为了使H保持操作效果序,o需要插入到H中紧跟H[i]的位置。如果不存在效果字符与H[i]的效果字符冲突的o的并发操作的话,我们可以直接将o.pos置为H[i].pos,并将o插入到H中的位置(i+1)处(第22行)。
否则,我们就需要将o与这些并发操作做包含转换(第23至34行)。类似于第3至19行的步骤,我们扫描H直到找到某个满足H[k]≥e o′条件的H[k]。当H[k]=e H[i]时,如果o′.type=ins,则必定是o′和H[k]在H[i]删除的位置并发地插入了新的效果字符。这种情况下,我们将操作H[k]与o′按照它们的站点优先级来排序(这里采用站点id来比较优先级)。如果o′.type=del,则必定是H[k]和o′并发地删除了同一效果字符。这种情况下,o′.v被合并进H[k],并返回一个空操作。这个空操作既不需要执行也不需要添加到操作日志H中。
附图说明
图1为示例4中操作的产生和执行顺序及执行结果。
具体实施方式
下面结合四个有代表性的Undo示例进一步详细介绍本发明方法。
示例1:给定一个文档状态“a”,首先执行操作o1=del(0,a)和o2=ins(0,b),其中o1→o2。然后,Undo操作o1。
执行操作o1和o2之后,操作日志H=[o1,o2]=[del(0,a),ins(0,b)],其中o1=e o2。操作o1的逆操作o1=ins(0,a)。执行o1后,文档状态被正确地更新为“ab”。该例并不涉及远程操作,操作执行完后,线程L将调用算法3(integrateL)将o1的逆操作按照操作效果序添加到操作日志中,操作日志被更新为[del(0,a),ins(0,a),ins(1,b)]。
示例2:给定一个文档状态“a”,首先有两个并发的操作o1=del(0,a)和o2=ins(0,b)被执行。然后,Undo操作o1。
因为条件o1||o2和o2<e o1满足且o1和o2定义在相同的文档状态上,在最终的结果状态中操作o2的效果字符应该先于o1的效果字符。在执行完操作o1和o2后,根据算法4,操作日志H=[o2,o1′]=[ins(0,b),del(1,a)]。通过执行o1′的逆操作ins(1,a)得到正确的结果状态“ba”。
示例3:给定一个文档状态“ab”,首先执行两个满足o1→o2条件的操作o1=del(0,a)和o2=del(0,b)。然后,有两个用户同时并发地分别Undo操作o1和o2,即undo(o1)||undo(o2)。
执行操作o1和o2后,操作日志为[del(0,a),del(0,b)]。根据undo执行的顺序,有两种情况需要考虑。
(1)undo(o1)先于undo(o2)执行:执行完o1的逆操作后文档状态和操作日志分别为“a”和[del(0,a),ins(0,a),del(1,b)]。这时,通过执行o2的逆操作ins(1,b)来Undo操作o2。最后文档状态和操作日志分别为“ab”和[del(0,a),ins(0,a),del(1,b),ins(1,b)]。
(2)undo(o2)先于undo(o1)执行:执行o2的逆操作ins(0,b)后,文档状态和操作日志分别为[del(0,a),del(0,b),ins(0,b)]。执行完o1的逆操作ins(0,a)后,文档状态和操作日志分别为“ab”和[del(0,a),ins(0,a),del(1,b),ins(1,b)]。在两种情况下,我们都可以得到正确的结果状态“ab”。
示例4:给定一个文档状态“a”,首先执行两个具有相同操作效果的操作o1=del(0,a)和o2=del(0,a)。然后Undo操作o1和(或)o2。
该示例所描述的情形如图1所示。以站点1为例:执行操作o1和o3后,文档状态为“a”而操作日志H=[o1:del(0,a),o3:ins(0,a)]。当站点1接收到操作o2后,该操作会被转换为空操作。根据算法4的处理过程,该操作在操作日志中会与操作o1进行合并。因此,这时文档状态仍然是“a”而H变为[o1/o2:del(0,a),o3:ins(0,a)]。当操作o4到达时,它的原始操作o2(已经与o1合并为同一个操作)已经被(操作o3)撤销。这时,文档状态保持不变而H=[o1/o2:del(0,a),o3/o4:ins(0,a)]。站点2上的执行过程和站点1类似。所以,Undo操作o1和(或)o2会产生唯一的正确结果“a”。
Claims (6)
1.基于操作效果关系的选择性撤销方法,其特征在于利用操作效果序跟踪操作之间的Do-Undo关系,并利用历史操作之间的操作效果关系处理本地和远程的Do/Undo操作;其控制算法包含三个线程L、R和N:线程N用来接收远程操作,线程L和R分别用来处理本地和远程的Do/Undo操作;其中处理本地和远程的Do/Undo操作的算法分别包含两个Do/Undo操作整合过程integrateL和integrateR;整个选择性撤销方法分为两部分:对本地Do/Undo操作的处理和对远程Do/Undo操作的处理;其中:
对本地Do/Undo操作的处理流程为:
1)若本地操作为Do操作,程序执行本地操作,然后调用integrateL过程将本地Do操作按操作效果序添加到操作日志中;
2)若本地操作为Undo操作,根据该操作与其原始操作之间的操作效果序产生该操作的逆操作,记录该操作与其原始操作之间的Do-Undo关系后按照处理Do操作的方式进行整合处理;
对远程Do/Undo操作的处理流程为:
1)若远程操作为Do操作,调用integrateR过程产生一个可以在当前文档状态正确执行的操作形式,执行该操作并将其添加到操作日志中;
2)若远程操作为Undo操作,扫描操作日志来定位其原始操作,如果其原始操作已经被该远程操作的并发操作所撤销,则将该远程操作与其效果等价的并发操作进行合并,否则记录该远程操作与其原始操作之间的Do-Undo关系。然后,按照处理远程Do操作的方式处理该Undo操作。
3.根据权利要求1所述的选择性撤销方法,其特征在于假设当前站点接收到来自其它站点r的远程操作o,当前站点的接收队列为RQ,则线程N的执行结果是将o按照操作达到顺序添加到RQ中。
4.根据权利要求1所述的选择性撤销方法,其特征在于假设当前站点RQ中的某个来自站点r的远程操作o已经因果就绪,当前站点的状态向量为sv,当前站点的操作日志为H,则线程R的执行流程如下:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101761764A CN101853199B (zh) | 2010-05-13 | 2010-05-13 | 基于操作效果关系的选择性撤销方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101761764A CN101853199B (zh) | 2010-05-13 | 2010-05-13 | 基于操作效果关系的选择性撤销方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101853199A true CN101853199A (zh) | 2010-10-06 |
CN101853199B CN101853199B (zh) | 2012-08-22 |
Family
ID=42804704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101761764A Expired - Fee Related CN101853199B (zh) | 2010-05-13 | 2010-05-13 | 基于操作效果关系的选择性撤销方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101853199B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105356933A (zh) * | 2015-11-23 | 2016-02-24 | 贵州航天天马机电科技有限公司 | 一种无线通信实时传输的数据帧结构 |
CN106575231A (zh) * | 2014-08-22 | 2017-04-19 | 甲骨文国际公司 | 具有对操作的跨用户会话撤销支持的自动保存 |
CN107277112A (zh) * | 2017-05-24 | 2017-10-20 | 复旦大学 | 一种可伸缩和高效的地址空间转换算法 |
CN107943777A (zh) * | 2017-12-14 | 2018-04-20 | 北京久蓉科技有限公司 | 一种协同编辑、协同处理方法、装置、设备及存储介质 |
CN109032752A (zh) * | 2017-06-12 | 2018-12-18 | 微软技术许可有限责任公司 | 基于云平台的操作撤销 |
CN111913631A (zh) * | 2020-06-30 | 2020-11-10 | 维沃移动通信有限公司 | 内容编辑方法、装置和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119365A (zh) * | 2007-09-13 | 2008-02-06 | 复旦大学 | 大规模协同环境下的协同交互优化方法 |
CN101127644A (zh) * | 2007-08-30 | 2008-02-20 | 复旦大学 | 一种大规模协同环境下的因果并发检测方法 |
-
2010
- 2010-05-13 CN CN2010101761764A patent/CN101853199B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127644A (zh) * | 2007-08-30 | 2008-02-20 | 复旦大学 | 一种大规模协同环境下的因果并发检测方法 |
CN101119365A (zh) * | 2007-09-13 | 2008-02-06 | 复旦大学 | 大规模协同环境下的协同交互优化方法 |
Non-Patent Citations (1)
Title |
---|
《Collaborative Computing: Networking, Applications and Worksharing, 2009. CollaborateCom 2009. 5th International Conference on》 20091114 Bin Shao,Du li,Ning Gu ABTS:A transformation-based consistency control algorithm for wide-area collaborative applications 1-10 1-6 , * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106575231A (zh) * | 2014-08-22 | 2017-04-19 | 甲骨文国际公司 | 具有对操作的跨用户会话撤销支持的自动保存 |
CN106575231B (zh) * | 2014-08-22 | 2021-03-30 | 甲骨文国际公司 | 具有对操作的跨用户会话撤销支持的自动保存 |
CN105356933A (zh) * | 2015-11-23 | 2016-02-24 | 贵州航天天马机电科技有限公司 | 一种无线通信实时传输的数据帧结构 |
CN107277112A (zh) * | 2017-05-24 | 2017-10-20 | 复旦大学 | 一种可伸缩和高效的地址空间转换算法 |
CN107277112B (zh) * | 2017-05-24 | 2020-10-30 | 复旦大学 | 一种可伸缩和高效的地址空间转换算法 |
CN109032752A (zh) * | 2017-06-12 | 2018-12-18 | 微软技术许可有限责任公司 | 基于云平台的操作撤销 |
US11513918B2 (en) | 2017-06-12 | 2022-11-29 | Microsoft Technology Licensing, Llc | Action undo service based on cloud platform |
CN109032752B (zh) * | 2017-06-12 | 2023-03-10 | 微软技术许可有限责任公司 | 基于云平台的操作撤销 |
CN107943777A (zh) * | 2017-12-14 | 2018-04-20 | 北京久蓉科技有限公司 | 一种协同编辑、协同处理方法、装置、设备及存储介质 |
CN107943777B (zh) * | 2017-12-14 | 2021-07-06 | 北京久蓉科技有限公司 | 一种协同编辑、协同处理方法、装置、设备及存储介质 |
CN111913631A (zh) * | 2020-06-30 | 2020-11-10 | 维沃移动通信有限公司 | 内容编辑方法、装置和电子设备 |
CN111913631B (zh) * | 2020-06-30 | 2022-03-25 | 维沃移动通信有限公司 | 内容编辑方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101853199B (zh) | 2012-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101853199B (zh) | 基于操作效果关系的选择性撤销方法 | |
CN107451220B (zh) | 一种分布式NewSQL数据库系统 | |
Stopford | Designing event-driven systems | |
US8195702B2 (en) | Online index builds and rebuilds without blocking locks | |
CN103488754B (zh) | 一种异构文档协作云服务间透明互操作的方法 | |
Cook et al. | Workflow patterns in Orc | |
CN104767813A (zh) | 基于openstack的公众行大数据服务平台 | |
WO2019047441A1 (zh) | 一种通信优化方法及系统 | |
CN105045791A (zh) | 数据库设备 | |
Liberty et al. | Programming Reactive Extensions and LINQ | |
JP2023040041A (ja) | インタラクティブなデータプレップアプリケーションのための複数のデータセットの相関増分ロード | |
CN105975489A (zh) | 一种基于元数据的在线sql代码补全方法 | |
CN105589739A (zh) | 一种流程控制系统及方法 | |
CN103827869A (zh) | 信息对象的用户增强排序 | |
US20210149870A1 (en) | Method, apparatus, and computer program product for improved tracking of state data | |
Rosser et al. | A critique of the new comparative economics | |
CN101359337B (zh) | 用于交互式地编辑gis拓扑数据集的方法 | |
JP6677605B2 (ja) | プログラム、ストレージシステム、およびストレージシステムの制御方法 | |
CN104407853A (zh) | 一种实现table多行同时编辑的方法 | |
CN102707956A (zh) | 用于处理触发器返回结果不确定性的方法 | |
CN105930475A (zh) | 大数据的复合文档组织与存取模型GriDoc | |
Gao et al. | Supporting semantic maintenance of complex undo operations in replicated Co-AutoCAD environments | |
Kleppmann | Thinking in events | |
Xu et al. | A Multiple Locking Group Scheme for Flexible Semantic Conflict Prevention in Real-Time Collaborative Programming | |
Ronen et al. | Concurrent one-way protocols in around-the-clock social networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120822 Termination date: 20150513 |
|
EXPY | Termination of patent right or utility model |