[发明专利]基于操作效果关系的选择性撤销方法无效
申请号: | 201010176176.4 | 申请日: | 2010-05-13 |
公开(公告)号: | CN101853199A | 公开(公告)日: | 2010-10-06 |
发明(设计)人: | 邵斌;李杜;顾宁 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06F11/34 | 分类号: | G06F11/34 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;盛志范 |
地址: | 20043*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 操作 效果 关系 选择性 撤销 方法 | ||
技术领域
本发明属于计算机支持的协同工作(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关系的跟踪
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010176176.4/2.html,转载请声明来源钻瓜专利网。