CN101911010A - Javascript网格中的异步多级撤消支持 - Google Patents
Javascript网格中的异步多级撤消支持 Download PDFInfo
- Publication number
- CN101911010A CN101911010A CN2008801245992A CN200880124599A CN101911010A CN 101911010 A CN101911010 A CN 101911010A CN 2008801245992 A CN2008801245992 A CN 2008801245992A CN 200880124599 A CN200880124599 A CN 200880124599A CN 101911010 A CN101911010 A CN 101911010A
- Authority
- CN
- China
- Prior art keywords
- change
- data
- server
- grid
- tracker
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/197—Version control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
一种用在基于网格的应用程序中的客户机上的多级撤消的体系结构。该体系结构是控制驱动的级联变更系统,其中变更跟踪在异步(以及同步)场景中无缝地工作。客户机应用程序与网格对象相关联,并且实例化并配置该网格对象。该应用程序可以启动对网格中的数据的变更和/或用户可以直接编辑网格中的数据。变更的结果是对应用程序的通知,该通知包括次序键。该应用程序消费该通知并随后可以通过使用该次序键调用更新函数来基于同步或异步计算追加新变更。该应用程序使用该键来附加正确地收集在一起以用撤消/重做的进一步更新。
Description
背景
桌面客户机应用程序和“瘦”web应用程序之间的主要区别之一是编辑体验的丰富性。传统上,web应用程序根据各单独的回发(post-back)来与服务器办理数据,这些回发在用户导航该应用程序时将数据提交给服务器。一旦用户导航离开网页,则撤消用户动作通常是不可能的。相反,用户可以更流畅地与客户机应用程序交互,只有在用户准备好时才保存数据。此外,如果用户在客户机应用程序中工作时犯了编辑错误,则该用户可以选择“撤消”一次或多次来还原变更,从而不影响所保存的文件。
许多软件技术现在需要雇员通过web类应用程序来与企业服务器上的数据进行交互。考虑对通常在项目服务器中例如经由网页找到的结构化任务数据的编辑(例如,添加/删除任务、分配资源、改变排定的数据等)。在没有多级撤消能力的情况下,这一体验是危险的,因为不允许用户撤消动作。用户可以执行频繁的保存,但将这样的数据集保存到服务器是缓慢的过程。因此,有效的编辑性能与用户对将复杂数据键入网页的舒适度成比例地降低。
概述
以下提出了简化概述以便提供对在此描述的某些新颖实施例的基本理解。该概述不是详尽的概览,它不旨在标识关键/重要的元素,也不旨在描绘其范围。其唯一的目的是以简化的形式来介绍一些概念,作为稍后提出的更为详细的描述的序言。
所公开的多级撤消体系结构是控制驱动的级联变更系统,其中变更跟踪在异步(以及同步)场景中无缝地工作。此外,撤消超越保存动作,理解隐式和显式变更之间的差异,并相应地处理这些变更以提供用于撤消的上下文。
客户机应用程序与将该应用程序的数据呈现为表格表示的网格对象相关联,从而支持编辑和可视化。该应用程序部分地实例化并配置该网格对象。该应用程序可以通过程序启动对网格中的数据的变更和/或用户可以直接编辑网格中的数据。变更的结果是对应用程序的通知,该通知包括次序键。该应用程序消费该通知并随后可以通过使用该次序键调用更新函数来基于同步或异步计算(例如,调度)追加新变更。该应用程序可以在将来的任何时候使用该键来附加对变更的将来更新。这些更新被正确地收集在一起以用于撤消/重做。
为实现上述及相关目的,本文结合下面的描述和附图描述某些说明性方面。然而,这些方面仅指示了可利用此处公开的原理的各种方法中的少数几种,且旨在包括所有这些方面及等效方面。结合附图阅读下面的详细描述,则其他优点和新颖特征将变得清楚。
附图简述
图1示出计算机实现的撤消系统。
图2示出提供多级数据变更反转操作的客户机-服务器系统的实现。
图3示出对数据的异步撤消/重做操作的示例。
图4示出基于对变更键的使用来解决异步乱序变更处理的最终数据更新。
图5示出作为变更组件的一部分的变更跟踪器和作为反转组件的一部分的撤消栈。
图6示出网格中的数据的初始网格状态、撤消栈的栈状态、以及变更跟踪器的跟踪器状态。
图7示出隐式变更和对栈状态及跟踪器状态的影响。
图8示出网格数据的任务名称的变更和对撤消栈及变更跟踪器的影响。
图9示出撤消操作的执行。
图10示出提供数据反转操作的计算机实现的方法。
图11示出处理显式/隐式变更的方法。
图12示出
图13示出根据所公开的体系结构的可用于执行多级撤消的计算系统的框图。
图14示出用于多级撤消处理的示例性客户机-服务器计算环境的示意性框图。
详细描述
所公开的体系结构通过在基于网格的应用程序中的客户机上支持多级撤消而桥接了“瘦”web应用程序的编辑体验中的主要空白。这一特征对多个在线编辑体验而言也是有用的。例如,多级撤消允许用户对一次编辑更多数据感到更加舒适,并且增加了用户对应用程序的积极性能的感知。此外,应用程序的在线版本也可获益,使得能撤消和重做记录内的多个变更以便用户具有对编辑的完全控制。
现在参照附图,全部附图中,相同的附图标记用于表示相同的元素。在以下描述中,为解释起见,描绘了众多具体细节以提供对本发明的全面理解。然而,显然,各新颖实施例可以在没有这些具体细节的情况下实现。在其他情况下,以框图形式示出了公知的结构和设备以便于描述它们。
图1示出计算机实现的撤消系统100。系统100包括用于跟踪经由web应用程序106对数据104的异步变更的变更组件102。系统100还包括用于针对对于数据104的数据变更执行反转操作(例如,撤消、重做)以返回先前状态的反转组件108。对数据104的变更可以经由数据网格110作出。对数据104的变更可以经由网格110手动地或通过程序来作出。
应用程序106实例化并配置网格110。网格110是存储在应用程序106中的数据的表格表示,从而支持编辑和可视化。变更是一单元格的数据的先前和之后版本加上造成该单元格值变更所需的动作。
在一个实施例中,web应用程序106是浏览器应用程序,经由该浏览器应用程序对服务器所主存的网页进行变更。用户随后可针对对于网页文档作出的变更行使多级撤消/重做反转操作。在另一实现中,web应用程序106是允许用户与本地数据而非网络数据进行交互并且行使诸如多级撤消/重做等反转操作的浏览器。
图2示出提供多级数据变更反转操作的客户机-服务器系统200的实现。系统200示出图1的系统100,即,用于经由web应用程序106来跟踪对数据104的异步变更的变更组件102,和用于对数据变更执行反转操作(例如,撤消、重做)以回到先前状态的反转组件108。数据变更是经由数据网格110手动地和/或通过程序作出的。在此,数据变更被应用于web服务器202的web文档(例如,网页)200。随着将编辑传递到网格110,变更通知经由应用程序106发送到服务器202以供异步确认。一旦得到确认,则这些变更经由应用程序106作为对数据104的更新来发送回网格110。
图3示出对数据的异步撤消/重做操作的示例300。异步变更是需要任何数量的异步确认或扩充的变更。在实体对网格数据作出变更时,这一变更的结果是对应用程序106的通知。这一通知内包含有次序(即,变更)键。应用程序106消费该通知并随后可以通过使用该次序键调用更新函数来基于一些同步或异步计算(例如,调度)追加新变更。应用程序106可以在将来的任何时候自由使用该次序键来附加对这一变更的将来更新。这些更新被正确地收集在一起以用于撤消/重做。
在此,表示成A和B的两个变更被输入到需要异步确认的网格110。在进行编辑时,网格110按次序来捕捉变更。每一变更都用次序键加上标签。例如,用次序键A(也表示变更键A)对变更A加上标签,并且用变更键B来表示第二变更B(比变更A的时间晚)。在进行数据变更时,网格110检测到这一点并向应用程序106(例如,浏览器)发送通知,其中应用程序106随后将该通知发送到服务器202以供确认。服务器202处的确认过程可乱序发生,或者一旦完成确认则服务器可乱序发出先前排序的确认。因此,次序键便于在网格110处对变更进行排序。
在该示例中,第一变更通知请求302从网格110发送到应用程序106以说明数据变更A,数据变更A是在第二行对具有被标记为“持续时间”的字段的列作出的并且该持续时间的新值被设定成5天。在后续数据编辑中,网格110将第二变更通知请求304发送到应用程序106以说明数据变更B,数据变更B是在第三行对具有被标记为“持续时间”的字段的列作出的并且该持续时间的新值被设定成7天。变更通知请求(302和304)按次序(例如,变更A在变更B之前)发送到应用程序106。应用程序106随后将通知请求(302和304)转发到服务器202,服务器202异步地确认变更请求(302和304)并将确认返回给应用程序106。
在此,服务器202开始对第一变更通知请求302的第一确认过程306。接着,服务器202接收并开始对第二变更通知请求304的第二确认过程308。服务器202在第一确认过程306之前完成第二确认过程308。因此,第二更新响应310从服务器202通过应用程序106发送到网格110以用于更新相关联的数据。第二更新响应310包括表示相对于第一数据变更A作出该数据变更的次序的次序键B。第二更新响应310还包括该变更是在第三行在被标记为“结束日期”的字段处作出的以及结束日期的新值“5/27”。这对应于第二变更通知请求304中的新值“7天”。
服务器202随后完成第一确认过程306并将第一更新响应312通过应用程序106发送到网格110以供更新相关联的数据。第一更新响应312包括表示相对于第二数据变更B作出该数据变更的次序的次序键A。第一更新响应312还包括该变更是在第二行在被标记为“结束日期”的字段处作出的以及结束日期的新值“5/25”。这对应于第一变更通知请求302中的新值“5天”。因此,变更从确认乱序返回(变更B在变更A之前)。
图4示出基于对变更键的使用来解决异步乱序处理的最终数据更新。示出了对自从最后保存操作以来发生的数据变更的请求的结果400。在从服务器202返回时,这些结果按变更(即,次序)键所指示的逻辑次序(变更B在变更A之后)而非事件实际发生的次序(变更A在变更B之后)来放置和存储。因此,与变更A相关的变更402被存储在一起并被表示为发生在变更B之前。类似地,与变更B相关的变更404被存储在一起并被表示为发生在变更A之后。
撤消和重做反转操作也以此方式处理。因此,如果用户要选择撤消,则即使对变更A的更新是网格遇到的最后事件,与变更B相关联的两个变更(持续时间和结束日期)也将被撤消,因为这是用户作出的最后变更,如变更键B所示。
实体(例如,用户或系统)与网格交互以对该网格中的数据显式地或隐式地作出变更。显式变更是对网格作出的直接影响数据的变更(例如,变更任务的开始日期)。隐式变更是对网格作出的对数据没有影响的变更(例如,调整列的大小)。
图5示出作为变更组件102的一部分的变更跟踪器500和作为反转组件108的一部分的撤消栈502。在实体对网格数据作出变更时,记录每一变更的类型,并且将用于执行和撤消的函数置于撤消栈502上。撤消栈502是存储最后动作集合的排序历史的数据结构。在撤消事件发生时,从撤消栈502移除操作并还原操作,直至遇到第一显式变更为止。该第一显式变更是所还原的最后动作。此时,撤消操作结束。以相同的方式处理后续撤消操作;撤消命令将在下一显式动作之前还原所有隐式动作,并且随后还原显式动作。
这一系统的效果是在撤消操作后,网格的视觉状态恢复到被撤消的动作之前。所有显式变更都被存储在与撤消栈502分开的结构(变更跟踪器500)中。这一变更跟踪器500可作为单元格级变更的集合来导出。
撤消栈502和变更跟踪器500是独立的结构。在变更发生时,该变更被推送到撤消栈502,并且如果该变更是显式的则在变更跟踪器500中创建对应于该变更的条目。如果该变更是隐式的,则不在变更跟踪器500中记录该变更。
在撤消事件发生时,从撤消栈502和变更跟踪器500中移除该变更,并且在变更跟踪器500中记录新值。如果该变更存在于变更跟踪器500中,则移除该变更。如果该变更不存在于变更跟踪器500中,则将用于还原该变更的动作(其本身是变更)添加到变更日志。在保存操作发生时,从变更跟踪器500读出变更并将其提交给数据源,并且清除变更跟踪器500。
这一系统的效果是实体可以撤消在保存事件之前发生的动作,因为撤消变更所必需的信息被存储在撤消栈502中。类似地,变更跟踪器500可以在没有撤消栈502的情况下工作。
图6-9示出用于例示在网格数据状态、撤消栈、以及变更跟踪器中发生的变更的一系列示图。图6示出网格中的数据的初始网格状态600、撤消栈的栈状态602、以及变更跟踪器的跟踪器状态604。变更将在网格数据的第二和第三行中发生。
实体随后通过决定为围栏上漆应花2天而非1天来作出显式变更。变更网格状态606包括第二行持续时间列中的变为2天的变更。在作为项目管理应用程序的一部分的项目的情况下,例如,持续时间的变更造成结束日期(也被称为“结束”)的变更(级联变更)。创建涵盖这两个变更的级联事务。因此,第二行中“结束”列中的字段信息从“星期一5/21/xx”变更为“星期二5/22/xx”,如变更的网格状态606所示。
这些持续时间和结束变更被推送到撤消栈,如栈状态608所示。另外,跟踪器状态610反映这些变更。图7示出隐式变更和对栈状态及跟踪器状态的影响。在此,实体隐藏“结束”列,从而变更到网格状态612,这将该变更推送到撤消栈,从而变更到栈状态614,但不变更变更跟踪器的跟踪器状态610。实体保存该项目,这使得变更跟踪器中的跟踪器状态610被清除成栈状态616,因为网格的数据现在与服务器数据相一致。
图8示出网格数据的任务名称的变更和对撤消栈及变更跟踪器的影响。实体基于第三行中任务名称从“清理工具”到“清理项目”的变更来变更网格状态618。栈状态620反映被推送到栈的这一变更,并且跟踪器反映跟踪器状态622。
图9示出撤消操作的执行。撤消通过从撤消栈和变更跟踪器弹出变更来还原最后的显式变更,如在栈状态622和跟踪器状态626所示(之前没有变更)。实体随后再一次执行撤消,这还原隐式变更和其余的显式变更。这一级联效果将变更从撤消栈移除到栈状态628,将对变更跟踪器的反转变更添加到跟踪器状态630,并将网格状态变更回网格状态632,其与图6网格状态600相同。
以下是表示用于执行所公开的体系结构的各新颖方面的示例性方法的一系列流程图。尽管出于解释简明的目的,此处例如以流图或流程图形式示出的一个或多个方法被示出并描述为一系列动作,但是可以理解和明白,各方法不受动作的次序的限制,因为根据本发明,某些动作可以按与此处所示并描述的不同的次序和/或与其他动作同时发生。例如,本领域技术人员将会明白并理解,方法可被替换地表示为一系列相互关联的状态或事件,诸如以状态图的形式。此外,并非在一方法中示出的所有动作都是新颖实现所必需的。
图10示出提供数据反转操作的计算机实现的方法。在1000,经由基于客户机的网格检测服务器的服务器文档中的数据变更。在1002,向变更通知中的变更分配次序键。在1004,将变更通知发送到服务器以供确认。在1006,基于通知从服务器接收异步确认信息。在1008,在网格中根据次序键对确认信息进行排序。在1010,基于次序键管理服务器文档中的撤消/重做操作。
图11示出处理显式/隐式变更的方法。在1100,经由网格接收数据变更。在1102,将变更的类型和用于撤消/重做该变更的函数存储在撤消栈中。在1104,接收反转操作(例如,重做、撤消)。在1106,从栈中移除撤消操作并还原,直至遇到第一显式变更(其是被还原的最后动作)为止。
图12示出提供数据反转操作的计算机实现的方法。在1200,经由客户机web应用程序启动对服务器的web文档的数据变更。在1202,将变更作为变更的排序历史存储在客户机撤消栈中并作为变更条目存储在客户机变更跟踪器中。在1204,在服务器处确认变更。在1206,从服务器将确认信息异步地接收到web应用程序中。在1208,在客户机处基于撤消栈中的变更的排序历史和变更跟踪器中的变更条目来管理web文档中的撤消/重做操作。
如在本申请中所使用的,术语“组件”和“系统”旨在表示计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是但不限于,在处理器上运行的进程、处理器、硬盘驱动器、多个(光和/或磁存储介质的)存储驱动器、对象、可执行代码、执行的线程、程序、和/或计算机。作为说明,运行在服务器上的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,且组件可以位于一台计算机上和/或分布在两台或更多的计算机之间。
现在参考图13,示出了可用于执行根据所公开的体系结构的多级撤消的计算系统1300的框图。为了提供用于其各方面的附加上下文,图13及以下讨论旨在提供对其中可实现该各方面的合适的计算系统1300的简要概括描述。尽管以上描述是在可在一个或多个计算机上运行的计算机可执行指令的一般上下文中进行的,但是本领域的技术人员将认识到,新颖实施例也可结合其他程序模块和/或作为硬件和软件的组合来实现。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构等等。此外,本领域的技术人员可以理解,本发明的方法可用其他计算机系统配置来实施,包括单处理器或多处理器计算机系统、小型计算机、大型计算机、以及个人计算机、手持式计算设备、基于微处理器的或可编程消费电子产品等,其每一个都可操作上耦合到一个或多个相关联的设备。
所示各方面也可以在其中某些任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
计算机通常包括各种计算机可读介质。计算机可读介质可以是可由计算机访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或者其他存储器技术、CD-ROM、数字视频盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或可以用于存储所需信息并且可以由计算机访问的任何其他介质。
再次参考图13,用于实现各方面的示例性计算系统1300包括具有处理单元1304、系统存储器1306和系统总线1308的计算机1302。系统总线1308向包括但不限于系统存储器1306的各系统组件提供到处理单元1304的接口。处理单元1304可以是市场上可购买到的各种处理器中的任意一种。双微处理器和其他多处理器体系结构也可用作处理单元1304。
系统总线1308可以是若干种总线结构中的任一种,这些总线结构还可互连到存储器总线(带有或没有存储器控制器)、外围总线、以及使用各类市场上可购买到的总线体系结构中的任一种的局部总线。系统存储器1306可包括非易失性存储器(NON-VOL)1310和/或易失性存储器1312(例如随机存取存储器(RAM))。基本输入/输出系统(BIOS)可被存储在非易失性存储器1310(例如ROM、EPROM、EEPROM等)中,其中BIOS存储帮助诸如在启动期间在计算机1302内的元件之间传输信息的基本例程。易失性存储器1312还可包括诸如静态RAM等高速RAM来用于高速缓存数据。
计算机1302还包括内置硬盘驱动器(HDD)1314(例如,EIDE、SATA),该内置HDD 1314还可被配置成在合适的机壳中外部使用;磁软盘驱动器(FDD)1316(例如,从可移动磁盘1318中读取或向其写入);以及光盘驱动器1320(例如,从CD-ROM盘1322中读取,或从诸如DVD等其他高容量光学介质中读取或向其写入)。HDD 1314、FDD 1316、以及光盘驱动器1320可分别由HDD接口1324、FDD接口1326和光盘驱动器接口1328来连接到系统总线1308。用于外置驱动器实现的HDD接口1324可包括通用串行总线(USB)和IEEE 1394接口技术中的至少一种或两者。
驱动器及相关联的计算机可读介质提供了对数据、数据结构、计算机可执行指令等的非易失性存储。对于计算机1302,驱动器和介质容纳适当的数字格式的任何数据的存储。尽管以上对计算机可读介质的描述涉及HDD、可移动磁盘(例如FDD)以及诸如CD或DVD等可移动光学介质,但是本领域的技术人员应当理解,示例性操作环境中也可使用可由计算机读取的任何其他类型的介质,诸如zip驱动器、磁带盒、闪存卡、盒式磁带等等,并且任何这样的介质可包含用于执行所公开的体系结构的新颖方法的计算机可执行指令。
多个程序模块可存储在驱动器和易失性存储器1312中,包括操作系统1330、一个或多个应用程序1332、其他程序模块1334和程序数据1336。该一个或多个应用程序1332、其他程序模块1334、以及程序数据1336可包括例如变更组件102、数据104、web应用程序106、反转组件108、数据网格110、变更通知(302和304)、更新响应(310和312)、变更跟踪器500、撤消栈502、网格状态(600、606、612、618、以及632)、栈状态(602、608、614、620、624、以及628)、以及跟踪器状态(604、610、616、622、626、以及630)。
操作系统、应用程序、模块和/或数据的全部或部分也可被高速缓存在易失性存储器1312中。应该明白,所公开的体系结构可以用市场上可购得的各种操作系统或操作系统的组合来实施。
用户可以通过一个或多个有线/无线输入设备,例如键盘1338和诸如鼠标1340等定点设备将命令和信息输入到计算机1302中。其他输入设备(未示出)可包括话筒、IR遥控器、操纵杆、游戏手柄、指示笔、触摸屏等等。这些和其他输入设备通常通过耦合到系统总线1308的输入设备接口1342连接到处理单元1304,但也可通过其他接口连接,如并行端口、IEEE1394串行端口、游戏端口、USB端口、IR接口等等。
监视器1344或其他类型的显示设备也经由诸如视频适配器1346等接口来连接到系统总线1308。除了监视器1344之外,计算机通常包括诸如扬声器、打印机等其他外围输出设备(未示出)。
计算机1302可使用经由有线和/或无线通信至一个或多个远程计算机,诸如远程计算机1348的逻辑连接在网络化环境中操作。远程计算机1348可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其他常见的网络节点,并且通常包括相对于计算机1302描述的许多或所有元件,尽管为简明起见仅示出了存储器/存储设备1350。所描绘的逻辑连接包括到局域网(LAN)1352和/或例如广域网(WAN)1354等更大的网络的有线/无线连接。这一LAN和WAN连网环境常见于办公室和公司,并且方便了诸如内联网等企业范围计算机网络,所有这些都可连接到例如因特网等全球通信网络。
当在LAN连网环境中使用时,计算机1302通过有线和/或无线通信网络接口或适配器1356连接到LAN 1352。适配器1356可以方便到LAN 1352的有线和/或无线通信,并且还可包括其上设置的用于使用适配器1356的无线功能进行通信的无线接入点。
当在WAN连网环境中使用时,计算机1302可包括调制解调器1358,或连接到WAN 1354上的通信服务器,或具有用于通过WAN 1354,诸如通过因特网建立通信的其他装置。或为内置或为外置以及有线和/或无线设备的调制解调器1358经由输入设备接口1342连接到系统总线1308。在联网环境中,相对于计算机1302所描述的程序模块或其部分可以存储在远程存储器/存储设备1350中。应该理解,所示网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。
计算机1302可用于使用IEEE 802标准家族来与有线和无线设备或实体通信,例如在操作上安置成与例如打印机、扫描仪、台式和/或便携式计算机、个人数字助理(PDA)、通信卫星、任何一件与无线可检测标签相关联的设备或位置(例如,电话亭、报亭、休息室)以及电话进行无线通信(例如,IEEE 802.11空中调制技术)的无线设备。这至少包括Wi-Fi(即无线保真)、WiMax和蓝牙TM无线技术。由此,通信可以如对于常规网络那样是预定义结构,或者仅仅是至少两个设备之间的自组织(ad hoc)通信。Wi-Fi网络使用称为IEEE 802.11x(a、b、g等等)的无线电技术来提供安全、可靠、快速的无线连接。Wi-Fi网络可用于将计算机彼此连接、连接到因特网以及连接到有线网络(使用IEEE 802.3相关介质和功能)。
现在参考图14,示出了用于多级撤消的示例性客户机-服务器计算环境1400的示意性框图。环境1400包括一个或多个客户机1402。客户机1402可以是硬件和/或软件(例如,线程、进程、计算设备)。例如,客户机1402可容纳cookie和/或相关联的上下文信息。
环境1400还包括一个或多个服务器1404。服务器1404也可以是硬件和/或软件(例如,线程、进程、计算设备)。服务器1404可以例如通过使用本体系结构来容纳线程以执行变换。在客户机1402和服务器1404之间的一种可能的通信能够以适合在两个或多个计算机进程之间传输的数据分组的形式进行。数据分组可包括例如cookie和/或相关联的上下文信息。环境1400包括可以用来使客户机1402和服务器1404之间通信更容易的通信框架1406(例如,诸如因特网等全球通信网络)。
通信可经由有线(包括光纤)和/或无线技术来促进。客户机1402操作上被连接到可以用来存储对客户机1402本地的信息(例如,cookie和/或相关联的上下文信息)的一个或多个客户机数据存储1408。同样地,服务器1404可在操作上连接到可以用来存储对服务器1404本地的信息的一个或多个服务器数据存储1410。
客户机1402可包括web应用程序106,并且客户机数据存储1408可包括数据104。服务器1404可包括服务器202和异步确认过程(306和308),并且服务器数据存储1410可包括文档200。
上面描述的包括所公开的体系结构的各示例。当然,描述每一个可以想到的组件和/或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,许多其他组合和排列都是可能的。因此,该新颖体系结构旨在涵盖所有这些落入所附权利要求书的精神和范围内的更改、修改和变化。此外,就在说明书或权利要求书中使用术语“包括”而言,这一术语旨在以与术语“包含”在被用作权利要求书中的过渡此时所解释的相似的方式为包含性的。
Claims (20)
1.一种计算机实现的撤消系统(100),包括:
用于跟踪经由web应用程序对数据的异步变更的变更组件(102);以及
用于对所述数据变更执行反转操作以返回先前状态的反转组件(108)。
2.如权利要求1所述的系统,其特征在于,所述数据变更与网页相关联。
3.如权利要求1所述的系统,其特征在于,所述web应用程序是浏览器应用程序。
4.如权利要求1所述的系统,其特征在于,所述数据变更是经由基于客户机的数据网格来作出的。
5.如权利要求4所述的系统,其特征在于,所述数据变更是经由所述网格来手动地或通过程序作出的。
6.如权利要求1所述的系统,其特征在于,所述反转操作将所述数据恢复到根据至少两个先前变更而存在的状态。
7.如权利要求1所述的系统,其特征在于,所述web应用程序接收变更通知,所述通知包括将所述变更相对于其他变更来记录的次序键。
8.如权利要求1所述的系统,其特征在于,所述变更与服务器文档相关联,其被输入基于客户机的撤消栈以用于所述反转操作并在基于客户机的变更跟踪器中进行跟踪。
9.一种提供数据反转操作的计算机实现的方法,包括:
经由基于客户机的网格检测服务器的服务器文档中的数据变更(1000);
向变更通知中的变更分配次序键(1002);
将所述变更通知发送到所述服务器以供确认(1004);
基于所述通知从所述服务器接收异步确认信息(1006);
根据所述次序键对所述网格中的确认信息进行排序(1008);以及
基于所述次序键管理所述服务器文档中的撤消/重做操作(1010)。
10.如权利要求9所述的方法,其特征在于,还包括基于所述网格中的变更通过撤消栈和变更跟踪器来级联变更。
11.如权利要求9所述的方法,其特征在于,还包括作为撤消/重做操作的一部分,将变更存储在撤消栈中并且还原所述变更直至到达第一显式变更。
12.如权利要求9所述的方法,其特征在于,还包括将显式变更存储在变更跟踪器数据结构中。
13.如权利要求9所述的方法,其特征在于,还包括还原下一显式动作之前的所有隐式变更并随后还原该下一显式动作。
14.一种提供数据反转操作的计算机实现的方法,包括:
经由客户机web应用程序启动对服务器的web文档的数据变更(1200);
将所述变更作为变更的排序历史存储在客户机撤消栈中并作为变更条目存储在客户机变更跟踪器中(1202);
在所述服务器处确认所述变更(1204);
从所述服务器将确认信息异步地接收到所述web应用程序中(1206);以及
基于所述撤消栈中的变更的排序历史和所述变更跟踪器中的变更条目来管理所述web文档中的撤消/重做操作(1208)。
15.如权利要求14所述的方法,其特征在于,还包括经由客户机数据网格来展示所述数据变更和所述数据变更的可视化。
16.如权利要求14所述的方法,其特征在于,还包括撤消所述web文档中的在所述web应用程序中执行的保存操作之前发生的变更。
17.如权利要求14所述的方法,其特征在于,还包括响应于保存操作,从所述变更跟踪器读出变更,将所述变更提交给数据源,并清除所述变更跟踪器。
18.如权利要求14所述的方法,其特征在于,所述变更的排序历史是基于分配给每一变更的变更键的。
19.如权利要求14所述的方法,其特征在于,还包括将隐式变更信息和显式变更信息连同用于执行来撤消隐式和显式变更的函数一起存储在所述撤消栈中。
20.如权利要求14所述的方法,其特征在于,还包括导出解释变更来作为单元格级变更的集合。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/971,206 US8756204B2 (en) | 2008-01-08 | 2008-01-08 | Asynchronous multi-level undo support in javascript grid |
US11/971,206 | 2008-01-08 | ||
PCT/US2008/087925 WO2009088727A2 (en) | 2008-01-08 | 2008-12-22 | Asynchronous multi-level undo support in javascript grid |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101911010A true CN101911010A (zh) | 2010-12-08 |
CN101911010B CN101911010B (zh) | 2013-05-08 |
Family
ID=40845425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008801245992A Active CN101911010B (zh) | 2008-01-08 | 2008-12-22 | Javascript网格中的异步多级撤消支持 |
Country Status (13)
Country | Link |
---|---|
US (2) | US8756204B2 (zh) |
EP (1) | EP2250550B1 (zh) |
JP (1) | JP5298136B2 (zh) |
KR (1) | KR101577841B1 (zh) |
CN (1) | CN101911010B (zh) |
BR (1) | BRPI0820809A2 (zh) |
CA (1) | CA2707635C (zh) |
ES (1) | ES2646091T3 (zh) |
IL (1) | IL206065A (zh) |
MY (1) | MY155811A (zh) |
RU (1) | RU2501069C2 (zh) |
WO (1) | WO2009088727A2 (zh) |
ZA (1) | ZA201003843B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106575231A (zh) * | 2014-08-22 | 2017-04-19 | 甲骨文国际公司 | 具有对操作的跨用户会话撤销支持的自动保存 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100229052A1 (en) * | 2008-01-08 | 2010-09-09 | Microsoft Corporation | Resolving asynchronous validation errors |
US20110185282A1 (en) * | 2010-01-28 | 2011-07-28 | Microsoft Corporation | User-Interface-Integrated Asynchronous Validation for Objects |
US9336137B2 (en) * | 2011-09-02 | 2016-05-10 | Google Inc. | System and method for performing data management in a collaborative development environment |
US8484166B2 (en) * | 2011-11-03 | 2013-07-09 | Oracle International Corporation | Oracle rewind: metadata-driven undo |
US8738706B1 (en) | 2011-11-16 | 2014-05-27 | Google Inc. | Systems and methods for collaborative document editing |
US10733057B2 (en) * | 2015-10-30 | 2020-08-04 | Bently Systems, Incorporated | Techniques for application undo and redo using SQL patchsets or changesets |
KR102010556B1 (ko) * | 2018-06-27 | 2019-10-21 | 주식회사 한글과컴퓨터 | 비동기 방식의 액션을 이용하는 웹 전자 문서 편집 장치 및 이의 동작 방법 |
US11308272B1 (en) * | 2020-11-12 | 2022-04-19 | Microsoft Technology Licensing, Llc | Controlling a productivity application to integrate a revision stream and an undo stack to perform out of order undo operations |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481710A (en) * | 1992-09-16 | 1996-01-02 | International Business Machines Corporation | Method of and system for providing application programs with an undo/redo function |
JP3793226B2 (ja) | 1992-12-23 | 2006-07-05 | オブジェクト テクノロジー ライセンシング コーポレイション | アトミック・コマンド・システム |
AU6161594A (en) * | 1993-02-26 | 1994-09-14 | Taligent, Inc. | Collaborative work system |
US5537526A (en) * | 1993-11-12 | 1996-07-16 | Taugent, Inc. | Method and apparatus for processing a display document utilizing a system level document framework |
US5956728A (en) * | 1996-07-17 | 1999-09-21 | Next Software, Inc. | Object graph editing context and methods of use |
US7680879B2 (en) * | 1996-07-18 | 2010-03-16 | Computer Associates Think, Inc. | Method and apparatus for maintaining data integrity across distributed computer systems |
US5983242A (en) * | 1997-07-01 | 1999-11-09 | Microsoft Corporation | Method and system for preserving document integrity |
US6192378B1 (en) | 1998-05-13 | 2001-02-20 | International Business Machines Corporation | Method and apparatus for combining undo and redo contexts in a distributed access environment |
US6185577B1 (en) | 1998-06-23 | 2001-02-06 | Oracle Corporation | Method and apparatus for incremental undo |
US6460051B1 (en) * | 1998-10-28 | 2002-10-01 | Starfish Software, Inc. | System and methods for synchronizing datasets in a communication environment having high-latency or other adverse characteristics |
US6527812B1 (en) | 1998-12-17 | 2003-03-04 | Microsoft Corporation | Method and system for undoing multiple editing operations |
DE19912008A1 (de) | 1999-03-17 | 2000-09-21 | Philips Corp Intellectual Pty | Netzwerkstation |
DE10040987B4 (de) | 1999-09-29 | 2006-10-12 | International Business Machines Corp. | Verfahren und Vorrichtung für übereinstimmende Aktualisierungen von redundanten Daten in relationalen Datenbanken |
TW527802B (en) | 2000-11-14 | 2003-04-11 | Farstone Technology Inc | Network recovery system and its backup/recovery method |
US20030212987A1 (en) * | 2001-02-28 | 2003-11-13 | Demuth Steven J. | Client container for building EJB-hosted java applications |
AU2002252404B2 (en) * | 2001-03-16 | 2006-03-16 | Netomat, Inc. | Sharing, managing and communicating information over a computer network |
US6907428B2 (en) | 2001-11-02 | 2005-06-14 | Cognos Incorporated | User interface for a multi-dimensional data store |
CA2370601A1 (en) * | 2002-02-05 | 2003-08-05 | Ibm Canada Limited-Ibm Canada Limitee | Optimizing log usage for temporary objects |
US20030182278A1 (en) | 2002-03-25 | 2003-09-25 | Valk Jeffrey W. | Stateless cursor for information management system |
US7346652B2 (en) * | 2002-05-13 | 2008-03-18 | First Data Corporation | Asynchronous data validation |
EP1543420B1 (en) * | 2002-07-29 | 2012-04-04 | Open Invention Network LLC | Consistent message ordering for semi-active and passive replication |
US7207034B2 (en) * | 2003-06-23 | 2007-04-17 | Microsoft Corporation | Undo infrastructure |
EP1789892A2 (en) * | 2004-08-02 | 2007-05-30 | JustSystems Corporation | A document processing and management approach to adding an exclusive plugin implementing a desired functionality |
US7739244B2 (en) * | 2004-10-14 | 2010-06-15 | Oracle International Corporation | Operating logging for online recovery in shared memory information systems |
US7418460B2 (en) | 2004-10-19 | 2008-08-26 | Microsoft Corporation | Method and system for enabling undo across object model modifications |
US20080040588A1 (en) * | 2004-11-12 | 2008-02-14 | Justsystems Corporation | Data Processing Device and Data Processing Method |
US7788237B2 (en) | 2004-12-17 | 2010-08-31 | Microsoft Corporation | Method and system for tracking changes in a document |
US8103624B2 (en) | 2005-01-13 | 2012-01-24 | International Business Machines Corporation | Apparatus and method for automating the logging of table changes in a database |
US8176002B2 (en) | 2005-03-24 | 2012-05-08 | Microsoft Corporation | Method and system for user alteration of the configuration of a data warehouse |
US7584226B2 (en) | 2005-05-24 | 2009-09-01 | International Business Machines Corporation | System and method for peer-to-peer grid based autonomic and probabilistic on-demand backup and restore |
CN1859379B (zh) | 2005-12-07 | 2011-02-09 | 华为技术有限公司 | 一种可扩展标记语言文档管理方法及系统 |
US8108763B2 (en) * | 2007-01-19 | 2012-01-31 | Constant Contact, Inc. | Visual editor for electronic mail |
-
2008
- 2008-01-08 US US11/971,206 patent/US8756204B2/en active Active
- 2008-12-22 KR KR1020107014564A patent/KR101577841B1/ko active IP Right Grant
- 2008-12-22 EP EP08869540.8A patent/EP2250550B1/en active Active
- 2008-12-22 BR BRPI0820809-3A patent/BRPI0820809A2/pt not_active IP Right Cessation
- 2008-12-22 RU RU2010128169/08A patent/RU2501069C2/ru active
- 2008-12-22 ES ES08869540.8T patent/ES2646091T3/es active Active
- 2008-12-22 MY MYPI2010002674A patent/MY155811A/en unknown
- 2008-12-22 CA CA2707635A patent/CA2707635C/en active Active
- 2008-12-22 CN CN2008801245992A patent/CN101911010B/zh active Active
- 2008-12-22 JP JP2010542241A patent/JP5298136B2/ja active Active
- 2008-12-22 WO PCT/US2008/087925 patent/WO2009088727A2/en active Application Filing
-
2010
- 2010-05-28 ZA ZA2010/03843A patent/ZA201003843B/en unknown
- 2010-05-30 IL IL206065A patent/IL206065A/en active IP Right Grant
-
2014
- 2014-05-07 US US14/271,948 patent/US20140297599A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106575231A (zh) * | 2014-08-22 | 2017-04-19 | 甲骨文国际公司 | 具有对操作的跨用户会话撤销支持的自动保存 |
Also Published As
Publication number | Publication date |
---|---|
KR20100111673A (ko) | 2010-10-15 |
EP2250550B1 (en) | 2017-08-09 |
AU2008346831A1 (en) | 2009-07-16 |
ZA201003843B (en) | 2011-07-27 |
EP2250550A4 (en) | 2012-10-24 |
IL206065A (en) | 2015-11-30 |
JP5298136B2 (ja) | 2013-09-25 |
WO2009088727A3 (en) | 2009-10-08 |
IL206065A0 (en) | 2010-11-30 |
BRPI0820809A2 (pt) | 2015-06-16 |
MY155811A (en) | 2015-11-30 |
ES2646091T3 (es) | 2017-12-12 |
JP2011509489A (ja) | 2011-03-24 |
US8756204B2 (en) | 2014-06-17 |
US20140297599A1 (en) | 2014-10-02 |
KR101577841B1 (ko) | 2015-12-28 |
RU2501069C2 (ru) | 2013-12-10 |
EP2250550A2 (en) | 2010-11-17 |
WO2009088727A2 (en) | 2009-07-16 |
RU2010128169A (ru) | 2012-01-20 |
CA2707635C (en) | 2016-08-09 |
CA2707635A1 (en) | 2009-07-16 |
CN101911010B (zh) | 2013-05-08 |
US20090177703A1 (en) | 2009-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101911010B (zh) | Javascript网格中的异步多级撤消支持 | |
CN101589599B (zh) | 移动设备管理代理系统 | |
CN101983380B (zh) | 文档的同步协作审阅 | |
JP4536817B2 (ja) | エンドユーザによるワークフローの動的な再配置 | |
CN101669092B (zh) | 管理本机/受管对等体的对象寿命 | |
CN102142024B (zh) | 在分布式数据库中使用递增捕捉来进行逻辑数据备份和回退 | |
US10614397B2 (en) | Sub-problem optimization of supply chain planning problems | |
CN102047252B (zh) | 对分层数据分页 | |
CN102388361A (zh) | 差别文件以及从对等点和云恢复的系统 | |
CN101828169A (zh) | 软件工厂指定和执行模型 | |
CN101090356A (zh) | 使能对远程存储装置的访问的方法和系统 | |
CN101663654A (zh) | 用于连接到主机的存储设备的优化的提示模型和用于存储设备的写优化方案 | |
CN101101649A (zh) | 管理工作流处理中的数据的方法和系统 | |
CN101981591A (zh) | 将命令表面与多个活动组件进行关联 | |
Lowe et al. | Building a Modern Data Center | |
US11146524B2 (en) | Intelligent contextual timelining of notifications | |
CN110580259A (zh) | 基于流程管理大数据的客户需求挖掘方法和设备 | |
CN102541542A (zh) | 存储和发布内容存储设备的内容 | |
CN102812437A (zh) | 高和低值应用状态 | |
Choubey | IT Infrastructure and Management: For the GBTU and MMTU | |
CN101866692A (zh) | 用于写入和擦除非易失性存储器的方法 | |
US20130245804A1 (en) | Network based calculations for planning and decision support tasks | |
Nath et al. | Architecting the Industrial Internet | |
Warfield et al. | Spreadsheets in Team X: preserving order in an inherently chaotic environment | |
CN102150149B (zh) | 利用同步通信协议来实现异步应用和业务线行为 |
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 | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150428 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150428 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |