CN106575231B - 具有对操作的跨用户会话撤销支持的自动保存 - Google Patents

具有对操作的跨用户会话撤销支持的自动保存 Download PDF

Info

Publication number
CN106575231B
CN106575231B CN201580044805.9A CN201580044805A CN106575231B CN 106575231 B CN106575231 B CN 106575231B CN 201580044805 A CN201580044805 A CN 201580044805A CN 106575231 B CN106575231 B CN 106575231B
Authority
CN
China
Prior art keywords
user
state
session
server
server application
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.)
Active
Application number
CN201580044805.9A
Other languages
English (en)
Other versions
CN106575231A (zh
Inventor
C·D·斯特劳布
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN106575231A publication Critical patent/CN106575231A/zh
Application granted granted Critical
Publication of CN106575231B publication Critical patent/CN106575231B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

公开了在各种实施例中记录创建了数据集的完整动作历史(用户动作)的系统和方法。动作历史然后可以被结合作为数据集的一部分。给定已保存的对象,可以在初始状态(例如,没有内容的状态)到最终状态(例如,已保存的内容)之间构建路径。通过在动作历史中向后行进,用户可以继续撤销动作一直到初始状态。

Description

具有对操作的跨用户会话撤销支持的自动保存
背景技术
应用开发框架(Application Development Framework,ADF)提供一组可在应用开发中直接/间接使用的预定义的代码/数据模块。ADF还可以提供诸如IDE(集成开发环境)、代码生成器、调试器等的工具,ADF有助于开发人员以更快/更简单的方式编码/实现应用的期望的逻辑。
一般而言,ADF通过提供可重用的组件和集成开发环境来简化应用的开发,应用开发人员可以使用该可重用的组件和集成开发环境,例如通过选择组件来执行期望的任务并定义所选组件的外观、行为和交互,来定义用户界面和应用逻辑。一些ADF基于模型-视图-控制器设计模式,该模式促进松散的耦合和更容易的应用开发和维护。Oracle应用开发框架是利用这种设计模式的ADF的一个例子。
Oracle ADF包括具有内置HTML5和Ajax功能的基于标准的Java Server Faces(JSF)组件的库。利用这些组件,可以开发web部署的用户界面,该web部署的用户界面具有先前为胖客户端应用(thick-client application)保留的功能和交互性级别。这些组件以一组易于使用的组件的形式提供数据交互、数据可视化和封装的浏览器侧操作,这组易于实现的组件使得开发丰富客户端应用(rich client application)变得前所未有地简单。Oracle ADF还提供了数据绑定框架,该框架通过IDE中简单的拖放操作简化了将UI绑定到业务服务。这是在仍然保持业务服务与消费接口的独立性的同时完成的。利用该框架,UI开发人员与业务服务层的底层实现隔离。这使得构建UI的过程与业务服务层的实现真正脱离,从而更好地定位应用以用于在面向服务的体系架构中实现。
包括Oracle ADF的大多数现代计算机应用包含以不是用户直接调用的方式执行的动作。一个例子是自动保存(AUTOSAVE或auto-save)功能,其中应用定期地保存用户完成的任何工作。自动保存功能允许用户更有信心地继续工作,因为如果用户的计算机系统或应用本身在用户有机会执行明确的数据保存之前失败,用户的大部分工作将被保存。
虽然这些自主动作可用于例如保存可能随着系统故障丢失的工作、或者使用户免于额外的键击、或者使屏幕显示免于不必要的混乱,但是它们在其它方面可能有缺点。自动保存的一个主要问题是自动保存的调用剥夺了用户撤销操作或重做操作的能力。在大多数计算机应用中,应用通常维护由用户执行的动作的历史,使得它们可以被反转。在这些环境中,有时有可能通过重复使用撤销(UNDO)选项来回退多个动作。虽然撤销用户动作的这种功能是有用的,但是当前的方法通常限于撤销历史中一定数量的撤销操作。此外,撤销历史的生命期通常只在用户会话期间。
因此,所期望的是解决与采用自动保存的应用中的撤销历史相关的问题,其中一些可以在本文中讨论。附加地,所期望的是减少与采用自动保存功能的现代基于云的应用相关的缺点,其中一些可以在本文中讨论。
发明内容
至少为了提供对本主题的基本理解的目的,本公开的以下部分呈现了对在本公开中发现的一个或多个创新、实施例和/或例子的简化概述。本概述不是试图提供对任何特定实施例或例子的广泛综述。此外,本概述不是旨在识别实施例或例子的关键/重要元素或者旨在描绘本公开的主题的范围。因此,本概述的一个目的可以是以简化的形式呈现在本公开中发现的一些创新、实施例和/或例子,作为随后呈现的更详细描述的序言。
公开了在各种实施例中记录创建了数据集的完整动作历史(用户动作)的系统和方法。动作历史然后可以被结合作为数据集的一部分。给定已保存的对象,可以在初始状态(例如,没有内容的状态)到最终状态(例如,已保存的内容)之间构建路径。通过在动作历史中向后行进,用户可以继续撤销动作一直到初始状态。
通过参考本公开的剩余部分、任何附图和权利要求,除了以上部分之外,还应当认识到对本公开的主题的本质和等同物(以及所提供的任何固有的或明确的优点和改进)的进一步理解。
附图说明
为了合理地描述和说明在本公开中发现的那些创新、实施例和/或例子,可以对一个或多个附图进行参考。被用来描述一个或多个附图的附加细节或例子不应当被认为是对在本公开中呈现的任何所要求保护的发明、任何当前描述的实施例和/或例子或者当前被认为是任何创新的最佳模式的范围的限制。
图1是示出在根据本发明的一个实施例中的应用开发框架(ADF)的框图。
图2是在根据本发明的一个实施例中的用于生成跨用户会话历史的方法的流程图。
图3是在根据本发明的一个实施例中的用于检索跨用户会话历史的方法的流程图。
图4是在根据本发明的一个实施例中的用于解决会话历史中的冲突的方法的流程图。
图5绘出了用于实现实施例之一的分布式系统的简化图。
图6示出了示例性计算机系统,在该示例性计算机系统中可以实现本发明的各种实施例。
具体实施方式
在以下描述中,为了解释的目的,阐述了具体细节,以便提供对本发明的实施例的透彻理解。但是,将显而易见的是,各种实施例可以在没有这些具体细节的情况下实践。附图和描述并不旨在是限制性的。
引言
Java EE是构成许多当今企业应用的基础的标准的、健壮的、可扩展的和安全的平台。Java EE提供了用于利用Java语言构建多层应用的一组规范。在过去,在应用的健壮本质与实现它所需的复杂性之间存在直接的关联。但是,随着ADF(诸如Oracle ADF)的出现,极其丰富的Java EE应用的实现可以通过遵守标准模式和实践来提供而大大减少了劳动量。
随着组织构建使用面向服务的体系架构(SOA)原理的复合应用的需求增加,开发人员被迫创建极其敏捷的应用。在敏捷应用中实现这些最佳实践通常涉及编写大量的基础设施代码,从而对开发人员构建其第一个Java EE应用增添了另一个障碍。除了提供健壮的、高性能的和可维护的应用之外–Oracle ADF还提供基础设施代码来实现基于敏捷SOA的应用,由此免除了在组织“自己创建(rolling their own)”中所涉及的劳动。
Oracle ADF还通过Oracle JDeveloper 11g开发工具提供Java EE开发的可视的和声明性的方法(visual and declarative approach)。Oracle ADF实现模型-视图-控制器设计模式,并且提供覆盖这种体系架构的所有层的集成解决方案,该集成解决方案具有对诸如对象/关系映射、数据持久化、可重用的控制器层、丰富Web用户接口框架、到UI的数据绑定、安全性和定制之类的领域的解决方案。超越核心基于Web的MVC方法,ADF还与Oracle SOA和网络中心门户(WebCenter Portal)框架集成,从而简化了完整复合应用的创建。
例如,Oracle ADF通过将服务接口耦合到ADF中的内置业务服务,使得容易开发将数据暴露为服务的敏捷应用。业务服务实现细节的这种分离在Oracle ADF中经由元数据执行。这种元数据驱动的体系架构的使用使得应用开发人员能够专注于业务逻辑和用户体验,而不是服务如何被访问的细节。
Oracle ADF在ADF模型层中的元数据中存储这些服务的实现细节。这使得开发人员能够在不修改用户界面的情况下交换服务,从而使得应用极其敏捷。此外,创建用户界面的开发人员不需要受业务服务访问细节的打扰。相反,开发人员可以专注于开发应用接口和交互逻辑。创建用户体验可以如同将所期望的业务服务拖放到可视化页面设计器上并指示什么类型的组件应当代表那个数据一样简单。
图1是示出在根据本发明的一个实施例中的应用开发框架(ADF)100的框图。图1是可以结合在本公开中呈现的一个或多个发明的各种实施例或实现的系统的简化图示。图1可以仅仅是说明本文公开的发明的实施例或实现,不应当限制如在权利要求中记载的任何发明的范围。本领域普通技术人员可以通过本公开和本文呈现的教导认识到图中所示的那些实施例或实现的其它变体、修改和/或替代。
作为一个例子,ADF 100可以体现为Oracle ADF。因此,ADF100是基于模型-视图-控制器(MVC)设计模式。MVC应用被分成:1)处理与数据源的交互并且运行业务逻辑的模型层,2)处理应用用户界面的视图层,和3)管理应用流程并且充当模型层和视图层之间的接口的控制器。将应用分成这三个层简化了组件跨应用的维护和重用。每个层与其它层的独立性导致松散耦合的、面向服务的体系架构(SOA)。
在此实施例中,构成企业应用的模块被示为在ADF 100中,以表示模块是利用ADF开发的并且然后在ADF 100的上下文中执行。为了简洁起见,未示出ADF的各种内部细节,假设应用是利用Java编程语言和作为JDeveloper 10.1.3的部分可用的Oracle ADF开发的,其中JDeveloper 10.1.3是可从Oracle公司获得的开发工具。但是,如通过阅读本文提供的公开对相关领域的技术人员将显而易见的,下面描述的本发明的特征可以利用编程语言及应用开发框架的任何期望的组合来实现。
在各种实施例中,ADF 100是以多层形式开发的应用,每一层包含根据预定义的规范实现期望的逻辑的代码模块/文件。因此,在一个实施例中,ADF 100使应用能够被开发为四个层:包含提供应用的用户界面的代码模块/文件的视图层110、包含控制应用的流程的代码模块的控制器层120、包含为底层数据提供抽象层的数据/代码模块的模型层130、以及包含提供对来自各种源的数据的访问并且处理业务逻辑的代码模块的业务服务层140。
Oracle ADF让开发人员选择当实现每个层时他们更喜欢使用的技术。图1示出了在构建Oracle ADF应用时开发人员可用的各种选项。集成Java EE应用的各种组件并且使开发如此灵活的胶水工具(glue)是Oracle ADF模型层。EJB、Web服务、JavaBeans、JPA/EclipseLink/TopLink对象以及许多其它全都可以用作用于Oracle ADF模型的业务服务。视图层可以包括利用JSF、Desktop Swing应用和MS Office前端实现的、基于Web的接口,以及用于移动设备的接口。
可以认识到,利用这种分层方法的应用开发常常简化了组件/代码模块跨各种应用的维护和重用。另外,每一层与其它层的独立性导致松散耦合的、面向服务的体系架构(SOA),这在多个/不同系统上部署所开发的业务/企业应用时可能是期望的。
在一方面,视图层110表示正被开发的应用的用户接口。视图层110被示为具有桌面视图、移动视图和基于浏览器的视图,其中每个视图提供用户接口的全部或一部分,并且可以以对应于视图类型的各种方式访问。例如,网页可以由应用响应于接收到包含对应URL的客户端请求而发送。然后,网页可以由与发出请求的客户端系统相关联的显示单元(未示出)上的浏览器显示,由此使发出请求的客户端系统的用户能够与企业应用交互。OracleADF支持对业务服务的多通道访问,从而允许业务服务的重用和从Web客户端、基于客户端-服务器swing桌面的应用、Microsoft Excel电子表格、诸如智能电话的移动设备等进行访问。
构成视图层的代码文件/模块(诸如网页)可以利用超文本标记语言(HTML)、Java服务器页(JSP)和Java Server Faces(JSF)中一个或多个来实现。可替代地,用户界面可以利用诸如Swing的Java组件和/或可扩展标记语言(XML)来实现。如进一步指出的,用户接口可以充分利用用户对桌面应用(诸如Microsoft的Word和Excel)的经验和熟悉程度。
如以上所指出的,相关的用户开发的代码/数据模块在每一个层中提供。但是,每一个层通常包含由ADF 100提供的其它预定义的代码/数据模块。预定义的模块中的一些可以在开发期间使用(例如,作为用于开发网页的模板)以在所开发的代码中包括期望的功能等。其它预定义的模块(诸如URL重写模块)可以连同所开发的应用一起部署,并且可以在企业应用的执行期间向用户提供附加的功能(所请求的URL到内部名称的映射)。
控制器层120包含控制应用的流程的代码模块/文件。每个控制器对象包含根据在视图层110中呈现信息的期望方式实现的软件指令和/或数据。期望的方式可以包括当另一网页中的链接被用户点击/选择时特定的网页被显示、当在执行期间发生错误时页面被显示、指示特定数据要被存储/检索,等等。
在一方面,控制器层120管理应用流程并处理用户输入。例如,当在页面上点击搜索按钮时,控制器确定要执行什么动作(进行搜索)和导航到什么地方(结果页面)。在JDeveloper中有两个针对基于web的应用的控制器选项:标准JSF控制器或扩展JSF控制器功能的ADF控制器。无论使用哪种控制器,应用流程通常通过在图上安排页面和导航规则来设计。应用的流程可以被分解成较小的、可重用的任务流程;包括非可视组件,诸如方法调用和流程中的决策点;以及创建在单个包含页面的区域内运行的“页面片段”流程。
构成控制器层120的代码模块/文件常常被实现为接收客户端请求并发送期望的网页作为对应的响应的Java servlets(Java小服务程序)。控制器对象还可以实现为例如Apache Jakarta Struts控制器或根据JSF标准实现。
模型层130包含将各种业务服务连接到在其它层中使用它们的对象(诸如连接到上面讨论的控制器对象或直接连接到如所示的桌面应用)的数据/代码模块。模型层130的每个抽象数据对象提供可被用来访问在底层业务服务层140中执行的任何类型的业务服务的对应接口。数据对象可以抽象来自客户端的服务的业务服务实现细节和/或向视图组件暴露数据控件方法/属性,从而提供视图与数据层的分离。
在一方面,模型层130包括两个组件,数据控件和数据绑定,它们利用元数据文件来定义接口。数据控件抽象来自客户端的业务服务实现细节。数据绑定向UI组件暴露数据控件方法和属性,从而提供视图和模型的彻底分离。由于模型层的元数据体系架构,开发人员在将任何类型的业务服务层实现绑定到视图层和控制器层时得到相同的开发体验。
Oracle ADF强调贯穿整个开发过程使用声明性编程范式(declarativeprogramming paradigm),以允许用户专注于应用创建的逻辑而不必进入实现细节。在高层,用于Fusion(融合)web应用的开发过程通常涉及创建应用工作空间。利用向导,用于由开发人员选择的技术所需的库和配置被自动添加,并且应用被构造成具有包和目录的项目。
通过建模数据库对象,可以创建任何数据库的在线数据库或离线副本、编辑定义以及更新模式。然后,利用UML建模器,可以为应用创建用例。也可以设计应用控制和导航。可以使用图示化工具(diagrammer)来可视地确定应用控制和导航的流程。然后,可以自动创建描述该流程的底层XML文件。资源库可以被使用,以允许开发人员通过简单地将它们拖放到应用中来查看并使用导入的库。可以利用向导或对话框从数据库表创建实体对象。从这些实体对象创建要在应用中被页面使用的视图对象。可以实现验证规则和其它类型的业务逻辑。
在这个例子中,业务服务层140管理与数据持久化层的交互。它提供诸如数据持久化、对象/关系映射、事务管理和业务逻辑执行等服务。Oracle ADF中的业务服务层可以在任何以下选项中实现:作为简单的Java类、EJB、Web服务、JPA对象和Oracle ADF业务组件。此外,数据可以直接从文件(XML或CSV)以及REST中使用(consume)。
因此,每个业务服务管理与对应的数据持久化层的交互,并且还提供诸如对象/关系映射、事务管理、业务逻辑执行等服务。业务服务层可以利用简单的Java类、企业JavaBeans、web服务等中的一个或多个来实现。
业务组件表示利用例如Oracle ADF业务组件实现、以提供与数据库、Web服务、遗留系统、应用服务器等的交互的业务服务。在一个实施例中,业务服务层140的业务组件包含应用模块、视图/查询对象和实体对象的混合,它们合作以提供业务服务实现。应用模块可以是UI客户端为了与应用/事务数据一起工作而与其通信的事务组件/代码模块。应用模块可以提供可更新的数据模型以及还有与用户事务相关的过程/功能(通常称为服务方法)。
实体对象可以表示数据库表中的对应行并且简化对存储在对应行中的数据的操纵(更新、删除等)。实体对象常常封装用于对应行的业务逻辑,以确保期望的业务规则被一致地执行。实体对象还可以与其它实体对象相关联,以反映存储在底层数据库中的行之间存在的关系。
具有跨用户会话支持的自动保存
公开了在各种实施例中记录创建了数据集的完整动作历史(用户动作)的系统和方法。动作历史然后可以被结合作为数据集的一部分。给定已保存的对象,可以在初始状态(例如,没有内容的状态)到最终状态(例如,已保存的内容)之间构建路径。通过在动作历史中向后行进,用户可以继续撤销动作一直到初始状态。
对于撤销状态保持在存储器中的传统方法,所公开的技术提供了至少一些优点。撤销状态保持在存储器中通常将撤销操作限制为预定数量的撤销。通常,这是严格的数字(例如,记住最后15个动作),或者是基于会话的(例如,直到你关闭浏览器之前,在线服务通常允许撤销操作)。但是,这些都受到限制,并且如果用户希望进一步撤销先前的动作,则用户是受限制的。
即使用户可以显式冻结内容的状态或启用自动检查点,这些解决方案也只允许用户返回到其数据的一个时间点。这个点可能太靠后、太靠前、或者在动作之间具有太宽的跨度,使得它们不足以使用户到他们想要取回他们的数据的时间点。
在各种实施例中,用户的工作的自动保存不会牺牲用户丢弃不期望的工作(无论它在往回多远被创建)或重新执行先前操作的能力。随着更复杂的基于云的应用被开发(即,在线代码编辑器是很好的例子),将工作恢复到任何时间点的能力是非常宝贵的。
图2是在根据本发明的一个实施例中的用于生成跨用户会话历史的方法200的流程图。图2中绘出的方法200中的实现或处理可以在由逻辑机器(诸如计算机系统或信息处理设备)的中央处理单元(CPU或处理器)执行时由软件(例如,指令或代码模块)执行、由电子设备或专用集成电路的硬件组件执行、或由软件和硬件元件的组合执行。图2中绘出的方法200在步骤210中开始。
在步骤220中,接收指示用户动作的信息。各种各样的计算设备(包括一些个人计算设备)包含计算能力,该计算能力包括跟踪和记录事件/动作的系统(例如,用户接口系统)。这样的事件/动作通常包括由用户直接执行的动作(例如,键击和指针(鼠标或笔)移动)、由用户间接发起的动作(例如,由用户调用的脚本或宏执行的动作)、自动调用的动作等。事件/动作可以具有其自己对应的事件/动作代码。在各种实施例中,可以使用缓冲区来存储事件/动作数据。应用可以接收用户动作的指示和从适当的缓冲区检索事件/动作数据。
在步骤230中,基于用户动作生成撤销信息。在一个实施例中,当发生任何用户动作时,为该动作记录先前状态校验和、当前状态和撤销指令以及时间戳信息。在一方面,基于先前状态和当前状态之间的差异记录当前状态的快照。此外,可以记录在该保存会话期间执行的动作。
在步骤240中,撤销信息和数据被记录在服务器处。在一个实施例中,当自动保存发生在客户端设备处时,在该保存会话期间创建的所有动作被发送到服务器(或保存服务)。图2在步骤250中结束。
图3是在根据本发明的一个实施例中的用于检索跨用户会话历史的方法300的流程图。图3中绘出的方法300中的实现或处理可以在由逻辑机器(诸如计算机系统或信息处理设备)的中央处理单元(CPU或处理器)执行时由软件(例如,指令或代码模块)执行、由电子设备或专用集成电路的硬件组件执行、或由软件和硬件元件的组合执行。图3中绘出的方法300在步骤310中开始。
在步骤320中,接收对当前状态的请求。例如,在重新开始会话时,用户可以请求跨当前会话的一个或多个撤销操作。应用可以接收用户动作的指示并从服务器请求当前状态数据。服务器可以接收该请求并确定如何生成会话状态信息。
在步骤330中,重放(replay)一个或多个动作以产生当前状态。例如,可以重放在一个或多个先前会话期间执行的一个或多个已记录的动作以生成当前状态。服务器可以评估先前快照和增量以便确定当前状态。可以在服务器上重放指令以产生当前状态(确保状态和动作匹配)。动作也与数据一起被记录。重建数据是一种优化,使得插塞数据(tipdata)可以被快速读取。
在步骤340中,当前状态被发送到客户端设备。图3在步骤350中结束。
图4是在根据本发明的一个实施例中的用于解决会话历史中的冲突的方法400的流程图。图4中绘出的方法400中的实现或处理可以在由逻辑机器(诸如计算机系统或信息处理设备)的中央处理单元(CPU或处理器)执行时由软件(例如,指令或代码模块)执行、由电子设备或专用集成电路的硬件组件执行、或由软件和硬件元件的组合执行。图4中绘出的方法400在步骤410中开始。
在步骤420中,做出会话历史中是否存在冲突的确定。例如,可以发送动作以用于记录,但是初始状态与该动作的先前状态校验和不匹配。如果在步骤430中确定决定不存在冲突,则在步骤470中重放一个或多个动作以产生当前状态。如果在步骤430中确定决定存在冲突,则在步骤440中提示用户解决该冲突。在各种实施例中,可以通知用户发生了另一个编辑。用户然后可以选择放弃他们的动作并利用冲突数据替换他们的数据,或者用他们的数据覆盖。
如果在步骤450中用户决定放弃他们的动作并利用冲突数据替换他们的数据,则在步骤470中重放一个或多个动作以产生当前状态。服务器将匹配最后的先前状态校验和与新动作,然后重放他们的客户端上的其它动作。如果在步骤450中用户决定利用他们的数据覆盖数据,则在步骤460中匹配先前状态与新动作。在步骤470中,服务器可以找到最后匹配的先前状态校验和,并且然后重放用户的动作以产生当前状态。图4在步骤450中结束。
结论
在一些图中绘出的系统可以以各种配置提供。在一些实施例中,系统可以被配置为分布式系统,其中系统的一个或多个组件跨云计算系统中的一个或多个网络分布。
图5绘出了用于实现实施例之一的分布式系统500的简化图。在所示的实施例中,分布式系统500包括一个或多个客户端计算设备502、504、506和508,这些客户端计算设备被配置为通过一个或多个网络510执行和操作客户端应用,诸如web浏览器、专有客户端(例如Oracle Forms)等。服务器512可以经由网络510与远程客户端计算设备502、504、506和508通信地耦合。
在各种实施例中,服务器512可以适于运行由系统的组件中的一个或多个组件提供的一个或多个服务或软件应用。在一些实施例中,这些服务可以作为基于web或云的服务或者在软件即服务(Software as a Service,SaaS)模型下提供给客户端计算设备502、504、506和/或508的用户。操作客户端计算设备502、504、506和/或508的用户继而可以利用一个或多个客户端应用与服务器512交互,以利用由这些组件提供的服务。
在图中所绘出的配置中,系统500的软件组件518、520和522被示为在服务器512上实现。在其它实施例中,系统500的组件中的一个或多个组件和/或由这些组件提供的服务也可以由客户端计算设备502、504、506和/或508中的一个或多个来实现。操作客户端计算设备的用户然后可以使用一个或多个客户端应用来使用由这些组件提供的服务。这些组件可以实现在硬件、固件、软件或其组合中。应当理解,各种不同的系统配置是可能的,这些配置可以与分布式系统500不同。因此,在图中示出的实施例是用于实现实施例系统的分布式系统的一个例子,并不旨在进行限制。
客户端计算设备502、504、506和/或508可以是运行诸如Microsoft Windows
Figure BDA0001228991370000131
的软件和/或运行诸如iOS、Windows Phone、Android、BlackBerry 10、Palm OS等各种移动操作系统并且启用互联网、电子邮件、短消息服务(SMS)、
Figure BDA0001228991370000132
或其它通信协议的便携式手持设备(例如,
Figure BDA0001228991370000133
蜂窝电话、
Figure BDA0001228991370000134
计算平板电脑、个人数字助理(PDA))或可穿戴设备(例如,Google
Figure BDA0001228991370000135
头戴式显示器)。客户端计算设备可以是通用个人计算机,包括例如运行各种版本的Microsoft
Figure BDA0001228991370000136
Apple
Figure BDA0001228991370000137
和/或Linux操作系统的个人计算机和/或笔记本计算机。客户端计算设备可以是运行任何各种可商用的
Figure BDA0001228991370000138
或类UNIX操作系统(包括但不限于诸如例如GoogleChrome OS的各种GNU/Linux操作系统)的工作站计算机。可替代地或附加地,客户端计算设备502、504、506和508可以是能够通过(一个或多个)网络510通信的任何其它电子设备,诸如瘦客户端计算机、启用互联网的游戏系统(例如,具有或不具有
Figure BDA0001228991370000139
手势输入设备的Microsoft Xbox游戏控制台)和/或个人消息传送设备。
虽然示例性分布式系统500被示为具有四个客户端计算设备,但是任何数量的客户端计算设备都可以被支持。其它设备(诸如具有传感器的设备等)可以与服务器512交互。
在分布式系统500中的(一个或多个)网络510可以是对本领域技术人员熟悉的任何类型的网络,该网络可以支持利用包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(系统网络体系结构)、IPX(互联网报文交换)、AppleTalk等任何各种商用协议的数据通信。仅仅作为例子,(一个或多个)网络510可以是局域网(LAN),诸如基于以太网、令牌网(token ring)等的局域网。(一个或多个)网络510可以是广域网和互联网。它可以包括虚拟网络,包括但不限于虚拟专用网(VPN)、内联网、外联网、公共交换电话网(PSTN)、红外网络、无线网络(例如,在任何电气和电子协会(IEEE)802.11协议族、蓝牙和/或任何其它无线协议下操作的网络);和/或这些和/或其它网络的任意组合。
服务器512可以由一个或多个通用计算机、专用服务器计算机(包括例如PC(个人计算机)服务器、
Figure BDA0001228991370000141
服务器、中型服务器、大型计算机、机架式服务器等)、服务器群组、服务器集群或者任何其它适当的布置和/或组合组成。在各种实施例中,服务器512可以适于运行上述公开中描述的一个或多个服务或软件应用。例如,服务器512可以对应于用于执行上述根据本公开的实施例的处理的服务器。
服务器512可以运行操作系统,操作系统包括任何以上讨论的操作系统,以及任何可商用的服务器操作系统。服务器512也可以运行任何各种附加的服务器应用和/或中间层应用,包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(公共网关接口)服务器、
Figure BDA0001228991370000142
服务器、数据库服务器等。示例性数据库服务器包括但不限于来自Oracle、Microsoft、Sybase、IBM(国际商业机器公司)等的那些可商用的数据库服务器。
在一些实现中,服务器512可以包括分析和整合从客户端计算设备502、504、506和508的用户接收到的数据馈送和/或事件更新的一个或多个应用。作为例子,数据馈送和/或事件更新可以包括但不限于
Figure BDA0001228991370000151
馈送、
Figure BDA0001228991370000152
更新或者从一个或多个第三方信息源和连续数据流接收到的实时更新,这些实时更新可以包括与传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视等相关的实时事件。服务器512也可以包括经由客户端计算设备502、504、506和508中的一个或多个显示设备显示数据馈送和/或实时事件的一个或多个应用。
分布式系统500也可以包括一个或多个数据库514和516。数据库514和516可以驻留在各种位置中。作为例子,数据库514和516中的一个或多个可以驻留在服务器512本地的非临时性存储介质上(和/或驻留在服务器512中)。可替代地,数据库514和516可以远离服务器512,并且经由基于网络的连接或专用的连接与服务器512通信。在一组实施例中,数据库514和516可以驻留在存储区域网络(SAN)中。类似地,用于执行属于服务器512的功能的任何必要的文件可以适当地存储在服务器512本地上和/或远程地存储。在一组实施例,数据库514和516可以包括适于响应于SQL格式的命令来存储、更新和检索数据的关系数据库,诸如由
Figure BDA0001228991370000153
提供的数据库。
图6示出了示例性计算机系统600,在示例性计算机系统600中可以实现本发明的各种实施例。系统600可以用来实现上述计算机系统中的任何一个。如图所示,计算机系统600包括经由总线子系统602与多个外围子系统通信的处理单元604。这些外围子系统可以包括处理加速单元606、I/O子系统608、存储子系统618和通信子系统624。存储子系统618包括有形的计算机可读存储介质622和系统存储器610。
总线子系统602提供了用于让计算机系统600的各种组件和子系统按意图彼此通信的机制。虽然总线子系统602被示意性地示为单个总线,但是总线子系统的可替代实施例可以利用多个总线。总线子系统602可以是若干种类型的总线结构中的任何一种,包括利用各种总线体系架构中的任何总线体系架构的存储器总线或存储器控制器、外围总线、以及局部总线。例如,这些体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围组件互连(PCI)总线,该PCI总线可以实现为按IEEE P1386.1标准制造的夹层(Mezzanine)总线。
可以实现为一个或多个集成电路(例如,常规的微处理器或微控制器)的处理单元604控制计算机系统600的操作。一个或多个处理器可以包括在处理单元604中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元604可以实现为一个或多个独立的处理单元632和/或634,其中在每个处理单元中包括单个处理器或多核处理器。在其它实施例中,处理单元604也可以实现为通过将两个双核处理器集成到单个芯片中而形成的四核处理单元。
在各种实施例中,处理单元604可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定时间,要执行的程序代码中的一些或全部可以驻留在(一个或多个)处理器604中和/或存储子系统618中。通过适当的编程,(一个或多个)处理器604可以提供上述各种功能。计算机系统600可以附加地包括处理加速单元606,处理加速单元606可以包括数字信号处理器(DSP)、专用处理器等。
I/O子系统608可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的指点设备、结合到显示器中的触摸板或触摸屏、滚轮、点拨轮、拨盘、按钮、开关、键板、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括例如运动感测和/或姿势识别设备,诸如Microsoft
Figure BDA0001228991370000161
运动传感器,Microsoft
Figure BDA0001228991370000162
运动传感器使得用户能够通过利用姿势和口语命令的自然用户接口控制诸如Microsoft
Figure BDA0001228991370000163
460游戏控制器的输入设备并与其交互。用户接口输入设备也可以包括眼睛姿势识别设备,诸如Google
Figure BDA0001228991370000164
眨眼检测器,Google
Figure BDA0001228991370000165
眨眼检测器检测用户的眼睛活动(例如,当拍摄图片和/或进行菜单选择时的“眨眼”)并将眼睛姿势变换为到输入设备(例如,Google
Figure BDA0001228991370000171
)中的输入。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,
Figure BDA0001228991370000172
导航器)交互的语音识别感测设备。
用户接口输入设备也可以包括但不限于三维(3D)鼠标、操纵杆或指点杆、游戏板和绘图平板、以及音频/视频设备,诸如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像机、图像扫描仪、指纹扫描仪、条形码读取器4D扫描仪、4D打印机、激光测距仪、以及眼睛注视跟踪设备。此外,用户接口输入设备可以包括,例如,医疗成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层扫描、医疗超声设备。用户接口输入设备也可以包括例如音频输入设备,诸如MIDI键盘、数字乐器等。
用户接口输出设备可以包括显示子系统、指示器灯或诸如音频输出设备的非视觉显示器等。显示子系统可以是阴极射线管(CRT)、诸如利用液晶显示器(LCD)或等离子显示器的平板设备、投影设备、触摸屏等。一般而言,术语“输出设备”的使用旨在包括用于从计算机系统600向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括但不限于可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备和调制解调器。
计算机系统600可以包括存储子系统618,存储子系统618包括被示为当前位于系统存储器610内的软件元素。系统存储器610可以存储可加载在处理单元604上并且可在处理单元604上执行的程序指令,以及可以存储在这些程序执行期间生成的数据。
取决于计算机系统600的配置和类型,系统存储器610可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器,等等)。RAM通常包含可被处理单元604立即访问和/或目前正被处理单元604操作和执行的数据和/或程序模块。在一些实现中,系统存储器610可以包括多种不同类型的存储器,诸如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实现中,基本输入/输出系统(BIOS)通常可以存储在ROM中,基本输入/输出系统(BIOS)包含有助于诸如在启动期间在计算机系统600内的元素之间传送信息的基本例程。作为例子而不是限制,系统存储器610还示出了应用程序612、程序数据614以及操作系统616,应用程序612可以包括客户端应用、Web浏览器、中间层应用、关系数据库管理系统(RDBMS)等。作为例子,操作系统616可以包括各种版本的Microsoft
Figure BDA0001228991370000181
Apple
Figure BDA0001228991370000182
和/或Linux操作系统、各种可商用的
Figure BDA0001228991370000183
或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、Google
Figure BDA0001228991370000184
操作系统等)和/或诸如iOS、
Figure BDA0001228991370000185
Phone、
Figure BDA0001228991370000186
OS、
Figure BDA0001228991370000187
10OS和
Figure BDA0001228991370000188
OS操作系统的移动操作系统。
存储子系统618也可以提供有形计算机可读存储介质,以存储提供一些实施例的功能的基本编程和数据构造。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以存储在存储子系统618中。这些软件模块或指令可以被处理单元604执行。存储子系统618也可以提供用于存储根据本发明被使用的数据的储存库。
存储子系统600也可以包括计算机可读存储介质读取器620,计算机可读存储介质读取器620可以进一步连接到计算机可读存储介质622。可选地,与系统存储器610一起和组合,计算机可读存储介质622可以全面地表示用于临时和/或更持久地包含、存储、传输和检索计算机可读信息的远程、本地、固定和/或可移除存储设备加存储介质。
包含代码或代码的部分的计算机可读存储介质622也可以包括本领域已知的或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于,以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。这可以包括有形的计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储装置、磁卡带、磁带、磁盘存储装置或其它磁存储设备、或其它有形的计算机可读介质。这也可以包括非有形的计算机可读介质,诸如数据信号、数据传输,或者可以用来传输期望的信息并且可以被计算机系统600访问的任何其它介质。
作为例子,计算机可读存储介质622可以包括从不可移除的非易失性磁介质读取或写到不可移除的非易失性磁介质的硬盘驱动器、从可移除的非易失性磁盘读取或写到可移除的非易失性磁盘的磁盘驱动器、以及从可移除的非易失性光盘(诸如CD ROM、DVD和Blu-
Figure BDA0001228991370000191
盘或其它光学介质)读取或写到可移除的非易失性光盘的光盘驱动器。计算机可读存储介质622可以包括但不限于
Figure BDA0001228991370000192
驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字音频带等。计算机可读存储介质622也可以包括基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如固态RAM、动态RAM、静态RAM,基于DRAM的SSD,磁阻RAM(MRAM)SSD)、以及使用DRAM和基于闪存存储器的SSD的组合的混合SSD。盘驱动器及其相关联的计算机可读介质可以为计算机系统600提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储装置。
通信子系统624提供到其它计算机系统和网络的接口。通信子系统624用作用于从其它系统接收数据和从计算机系统600向其它系统传输数据的接口。例如,通信子系统624可以使计算机系统600能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统624可以包括用于访问无线语音和/或数据网络的射频(RF)收发器组件(例如,利用蜂窝电话技术,诸如4G、4G或EDGE(用于全球演进的增强型数据速率)的先进数据网络技术,Wi-Fi(IEEE 802.11标准族),或其它移动通信技术,或其任意组合)、全球定位系统(GPS)接收器组件和/或其它组件。在一些实施例中,作为无线接口的附加或替代,通信子系统624可以提供有线网络连接(例如,以太网)。
在一些实施例中,通信子系统624也可以代表可以使用计算机系统600的一个或多个用户来接收结构化和/或非结构化的数据馈送626、事件流628、事件更新630等形式的输入通信。
作为例子,通信子系统624可以被配置为实时地接收来自社交网络和/或其它通信服务的用户的数据馈送626,诸如
Figure BDA0001228991370000201
馈送、
Figure BDA0001228991370000202
更新、web馈送(诸如丰富站点摘要(Rich Site Summary,RSS)馈送)和/或来自一个或多个第三方信息源的实时更新。
此外,通信子系统624也可以被配置为接收连续数据流形式的数据,连续数据流可以包括实时事件的事件流628和/或事件更新630,连续数据流形式的数据本质上可能是连续的或无界的而没有明确结束。生成连续数据的应用的例子可以包括例如传感器数据应用、金融报价机、网络性能测量工具(例如网络监视和流量管理应用)、点击流分析工具、汽车流量监视等。
通信子系统624也可以被配置为向一个或多个数据库输出结构化和/或非结构化的数据馈送626、事件流628、事件更新630等,其中这一个或多个数据库可以与耦合到计算机系统600的一个或多个流数据源计算机通信。
计算机系统600可以是各种类型中的一种,包括手持便携式设备(例如,
Figure BDA0001228991370000203
蜂窝电话、
Figure BDA0001228991370000204
计算平板、PDA)、可穿戴设备(例如,Google
Figure BDA0001228991370000205
头戴式显示器)、PC、工作站、大型机、信息站、服务器机架或任何其它数据处理系统。
由于计算机和网络不断变化的本质,在图中绘出的计算机系统600的描述旨在仅仅作为具体例子。具有比图中所绘出的系统更多或更少组件的许多其它配置是可能的。例如,也可以使用定制的硬件,和/或特定的元素可以实现在硬件、固件、软件(包括applets)或组合中。另外,可以采用到其它计算设备(诸如网络输入/输出设备)的连接。基于本文所提供的公开和教导,本领域普通技术人员将理解实现各种实施例的其它方式和/或方法。
在前面的说明书中,本发明的各方面参考其具体实施例进行了描述,但是本领域技术人员将认识到,本发明不限于此。上述发明的各种特征和方面可以被单独或联合使用。另外,在不背离本说明书的更广泛精神和范围的情况下,实施例可以在除本文所述的那些之外的任何数量的环境和应用中使用。因此,本说明书和附图应当被认为是说明性而不是限制性的。
其教导可以在本公开中呈现的一个或多个发明中的任意一个的各种实施例可以以软件、固件、硬件或其组合中的逻辑的形式实现。逻辑可以存储在机器可访问的存储器、机器可读的制造品、有形的计算机可读介质、计算机可读存储介质或其它计算机/机器可读介质当中或其上,作为适于指示逻辑机器的中央处理单元(CPU或处理器)执行可以在本公开中呈现的发明的各种实施例中公开的一组步骤的一组指令。逻辑可以构成软件程序或计算机程序产品的一部分,因为代码模块在被执行以执行在本公开中呈现的发明的各种实施例中的方法或过程时变为可利用计算机系统或信息处理设备的处理器进行操作。基于本公开和本文提供的教导,本领域普通技术人员将领会到用于在软件、固件、硬件或其组合中实现所呈现的发明中的一个或多个发明的各种实施例的任何所公开的操作或功能的其它方式、变体、修改、替代和/或方法。
其教导可以在本公开中呈现的那些发明中的任意一个的所公开的例子、实现和各种实施例仅仅是说明性的,以便以合理的清晰度向本领域技术人员传达本公开的教导。由于这些实现和实施例可以参考示例性说明或具体的图进行描述,因此所描述的方法和/或具体结构的各种修改或调整对本领域技术人员会可以变得显而易见。依赖于本公开和本文中找到的这些教导,以及所述教导通过其推动本领域的所有此类修改、调整或变体都应当被认为在其教导可以在本公开中呈现的一个或多个发明的范围内。因此,本描述和附图不应当被认为是限制意义上的,因为应当理解,公开中呈现的发明决不是要限于具体示出的那些实施例。
因此,以上描述和任何附图、说明和图都旨在是说明性而不是限制性的。因此,本公开中呈现的任何发明的范围不应当简单地参考以上描述和图中示出的那些实施例来确定,而是应当参考随附的权利要求连同其完整范围或等同物来确定。

Claims (22)

1.一种计算机实现的方法,包括:
在计算机处接收在与服务器上运行的服务器应用的客户端应用的第一用户会话期间执行的一个或多个用户动作,其中服务器应用在服务器上被实现为模型-视图控制器设计,所述一个或多个用户动作是在模型-视图控制器设计的视图层中执行的,并且所述一个或多个用户动作创建数据集,数据集包含所保存的内容的当前状态,所保存的内容包括来自模型-视图控制器设计的模型层的数据对象;
由计算机将在第一用户会话期间执行的所述一个或多个用户动作以及针对所述一个或多个用户动作的撤销指令、先前状态校验和、当前状态记录在服务器应用的动作历史中,其中所述动作历史被结合到数据集中,并且针对所述一个或多个用户动作的撤销指令提供从包括所述数据对象的所保存的内容的当前状态返回到在执行所述一个或多个用户动作之前的初始状态的路径;
由计算机发起与服务器应用的客户端应用的第二用户会话;
由计算机在第二用户会话期间生成撤销在与服务器应用的客户端应用的第一用户会话期间执行的所述一个或多个用户动作中的一个或多个的请求;
将所述请求发送到服务器应用;
在计算机处接收与客户端应用相关联的当前会话状态,当前会话状态表示以下各项的结果:评估针对在第一用户会话期间执行的所述一个或多个用户动作而记录的撤销指令、当前状态、先前状态校验和、以及服务器上的服务器应用的动作历史,并且在服务器应用中基于所述评估来重放所述一个或多个用户动作以产生当前会话状态;及
由计算机基于接收到的当前会话状态来修改在与服务器应用的客户端应用的第二用户会话期间的数据,以撤销在第一用户会话期间执行的所述一个或多个用户动作当中的一个或多个并且反映在第一用户会话期间的数据的状态。
2.如权利要求1所述的方法,其中由计算机将在第一用户会话期间执行的所述一个或多个用户动作记录在服务器应用的动作历史中包括生成服务器应用的当前会话状态的快照。
3.如权利要求1所述的方法,其中由计算机将在第一用户会话期间执行的所述一个或多个用户动作记录在服务器应用的动作历史中包括生成服务器应用的当前会话状态的快照,该快照具有服务器应用的先前会话状态的校验和。
4.如权利要求1所述的方法,其中由计算机将在第一用户会话期间执行的所述一个或多个用户动作记录在服务器应用的动作历史中包括生成服务器应用的当前会话状态的快照,该快照具有撤销指令。
5.如权利要求1所述的方法,其中由计算机将在第一用户会话期间执行的所述一个或多个用户动作记录在服务器应用的动作历史中包括基于当前会话状态和先前会话状态之间的差异来生成服务器应用的当前会话状态的快照。
6.如权利要求1所述的方法,其中在计算机处接收与客户端应用相关联的当前会话状态包括重放与第一用户会话相关联的快照中的撤销指令当中的一个或多个撤销指令。
7.如权利要求1所述的方法,其中在计算机处接收与客户端应用相关联的当前会话状态包括评估先前快照和增量以确定当前会话状态。
8.一种计算机系统,包括:
硬件处理器;及
存储一组指令的非临时性存储器,所述一组指令在由所述处理器执行时,配置所述处理器,以:
接收在与服务器上运行的服务器应用的客户端应用的第一用户会话期间执行的一个或多个用户动作,其中服务器应用在服务器上被实现为模型-视图控制器设计,所述一个或多个用户动作是在模型-视图控制器设计的视图层中执行的,并且所述一个或多个用户动作创建数据集,数据集包含所保存的内容的当前状态,所保存的内容包括来自模型-视图控制器设计的模型层的数据对象;
将在第一用户会话期间执行的所述一个或多个用户动作以及针对所述一个或多个用户动作的撤销指令、先前状态校验和、当前状态记录在服务器应用的动作历史中,其中所述动作历史被结合到数据集中,并且针对所述一个或多个用户动作的撤销指令提供从包括数据对象的所保存的内容的当前状态返回到在执行所述一个或多个用户动作之前的初始状态的路径;
发起与服务器应用的客户端应用的第二用户会话;
在第二用户会话期间生成撤销在与服务器应用的客户端应用的第一用户会话期间执行的所述一个或多个用户动作中的一个或多个用户动作的请求;
将所述请求发送到服务器应用;
接收与客户端应用相关联的当前会话状态,当前会话状态表示以下各项的结果:评估针对在第一用户会话期间执行的所述一个或多个用户动作而记录的撤销指令、当前状态、先前状态校验和、以及服务器上的服务器应用的动作历史,并且在服务器应用中基于所述评估来重放所述一个或多个用户动作以产生当前会话状态;及
基于接收到的当前会话状态来修改在与服务器应用的客户端应用的第二用户会话期间的数据,以撤销在第一用户会话期间执行的所述一个或多个用户动作当中的一个或多个并且反映在第一用户会话期间的数据的状态。
9.如权利要求8所述的系统,其中为了将在第一用户会话期间执行的所述一个或多个用户动作记录在服务器应用的动作历史中,所述处理器被配置为生成服务器应用的当前会话状态的快照。
10.如权利要求8所述的系统,其中为了将在第一用户会话期间执行的所述一个或多个用户动作记录在服务器应用的动作历史中,所述处理器被配置为生成服务器应用的当前会话状态的快照,该快照具有服务器应用的先前会话状态的校验和。
11.如权利要求8所述的系统,其中为了将在第一用户会话期间执行的所述一个或多个用户动作记录在服务器应用的动作历史中,所述处理器被配置为生成服务器应用的当前会话状态的快照,该快照具有撤销指令。
12.如权利要求8所述的系统,其中为了将在第一用户会话期间执行的所述一个或多个用户动作记录在服务器应用的动作历史中,所述处理器被配置为基于当前会话状态和先前会话状态之间的差异来生成服务器应用的当前会话状态的快照。
13.如权利要求8所述的系统,其中为了接收与客户端应用相关联的当前会话状态,所述处理器被配置为重放与第一用户会话相关联的快照中的撤销指令当中的一个或多个撤销指令。
14.如权利要求8所述的系统,其中为了接收与客户端应用相关联的当前会话状态,所述处理器被配置为评估先前快照和增量以确定当前会话状态。
15.一种存储计算机可执行代码的非临时性计算机可读介质,所述非临时性计算机可读介质包括:
用于接收在与服务器上运行的服务器应用的客户端应用的第一用户会话期间执行的一个或多个用户动作的代码,其中服务器应用在服务器上被实现为模型-视图控制器设计,所述一个或多个用户动作是在模型-视图控制器设计的视图层中执行的,并且所述一个或多个用户动作创建数据集,数据集包含所保存的内容的当前状态,所保存的内容包括来自模型-视图控制器设计的模型层的数据对象;
用于将在第一用户会话期间执行的所述一个或多个用户动作以及针对所述一个或多个用户动作的撤销指令、先前状态校验和、当前状态记录在服务器应用的动作历史中的代码,其中所述动作历史被结合到数据集中,并且针对所述一个或多个用户动作的撤销指令提供从包括数据对象的所保存的内容的当前状态返回到在执行所述一个或多个用户动作之前的初始状态的路径;
用于发起与服务器应用的客户端应用的第二用户会话的代码;
用于在第二用户会话期间生成撤销在与服务器应用的客户端应用的第一用户会话期间执行的所述一个或多个用户动作中的一个或多个的请求的代码;
用于将所述请求发送到服务器应用的代码;及
用于接收与客户端应用相关联的当前会话状态的代码,当前会话状态表示以下各项的结果:评估针对在第一用户会话期间执行的所述一个或多个用户动作而记录的撤销指令、当前状态、先前状态校验和、服务器上的服务器应用的动作历史,并且在服务器应用中基于所述评估来重放所述一个或多个用户动作以产生当前会话状态;及
用于基于接收到的当前会话状态来修改在与服务器应用的客户端应用的第二用户会话期间的数据以撤销在第一用户会话期间执行的所述一个或多个用户动作当中的一个或多个并且反映在第一用户会话期间的数据的状态的代码。
16.如权利要求15所述的非临时性计算机可读介质,其中用于将在第一用户会话期间执行的所述一个或多个用户动作记录在服务器应用的动作历史中的代码包括用于生成服务器应用的当前会话状态的快照的代码。
17.如权利要求15所述的非临时性计算机可读介质,其中用于将在第一用户会话期间执行的所述一个或多个用户动作记录在服务器应用的动作历史中的代码包括用于生成服务器应用的当前会话状态的快照的代码,其中该快照具有服务器应用的先前会话状态的校验和。
18.如权利要求15所述的非临时性计算机可读介质,其中用于将在第一用户会话期间执行的所述一个或多个用户动作记录在服务器应用的动作历史中的代码包括用于生成服务器应用的当前会话状态的快照的代码,其中该快照具有撤销指令。
19.如权利要求15所述的非临时性计算机可读介质,其中用于将在第一用户会话期间执行的所述一个或多个用户动作记录在服务器应用的动作历史中的代码包括用于基于当前会话状态和先前会话状态之间的差异来生成服务器应用的当前会话状态的快照的代码。
20.如权利要求15所述的非临时性计算机可读介质,其中用于接收与客户端应用相关联的当前会话状态的代码包括用于重放与第一用户会话相关联的快照中的撤销指令当中的一个或多个撤销指令的代码。
21.如权利要求15所述的非临时性计算机可读介质,其中用于接收与客户端应用相关联的当前会话状态的代码包括用于评估先前快照和增量以确定当前会话状态的代码。
22.一种计算机实现的方法,包括:
在服务器处接收在与服务器上运行的服务器应用的客户端应用的第一用户会话期间在客户端计算设备上执行的一个或多个用户动作;
由服务器将在第一用户会话期间执行的所述一个或多个用户动作以及针对所述一个或多个用户动作的先前状态校验和、当前状态和撤销指令记录在服务器上的服务器应用的历史中;
由服务器接收在第二用户会话期间实例化的、撤销在与服务器应用的客户端应用的第一用户会话期间执行的所述一个或多个用户动作中的一个或多个的请求;
由服务器生成与客户端应用相关联的当前会话状态,当前会话状态表示以下各项的结果:评估针对在第一用户会话期间执行的所述一个或多个用户动作而记录的先前状态校验和、当前状态和撤销指令,并且在服务器应用中基于所述评估来重放所述一个或多个用户动作以产生当前会话状态,其中所述评估包括:
由服务器基于先前状态校验和以及初始状态确定所述历史中是否存在冲突;
当不存在冲突时,由服务器通过重放所述一个或多个用户动作来生成与客户端应用相关联的当前会话状态;
当存在冲突时,由服务器提示客户端设备的用户通过放弃所述一个或多个用户动作或者用所述一个或多个用户动作覆盖冲突数据来解决冲突;
当用户决定通过放弃所述一个或多个用户动作来解决冲突时,由服务器通过重放新动作来生成与客户端应用相关联的当前会话状态,当前会话状态表示以下各项的结果:评估针对所述新动作而记录的撤销指令、当前状态以及先前状态校验和,并且在服务器应用中基于所述评估来重放所述新动作以产生当前会话状态;以及
当用户决定通过用所述一个或多个用户动作覆盖冲突数据来解决冲突时,由服务器通过重放所述一个或多个用户动作来生成与客户端应用相关联的当前会话状态;及
由服务器将当前会话状态发送给客户端计算设备上的客户端应用。
CN201580044805.9A 2014-08-22 2015-08-21 具有对操作的跨用户会话撤销支持的自动保存 Active CN106575231B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462040505P 2014-08-22 2014-08-22
US62/040,505 2014-08-22
US14/667,260 2015-03-24
US14/667,260 US10491695B2 (en) 2014-08-22 2015-03-24 Autosave with across user session undo support
PCT/US2015/046288 WO2016029111A1 (en) 2014-08-22 2015-08-21 Autosave with across user session undo support of operations

Publications (2)

Publication Number Publication Date
CN106575231A CN106575231A (zh) 2017-04-19
CN106575231B true CN106575231B (zh) 2021-03-30

Family

ID=55349344

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580044805.9A Active CN106575231B (zh) 2014-08-22 2015-08-21 具有对操作的跨用户会话撤销支持的自动保存

Country Status (5)

Country Link
US (1) US10491695B2 (zh)
EP (1) EP3183647A1 (zh)
JP (1) JP6684778B2 (zh)
CN (1) CN106575231B (zh)
WO (1) WO2016029111A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10491695B2 (en) 2014-08-22 2019-11-26 Oracle International Corporation Autosave with across user session undo support
TWI616770B (zh) * 2015-02-03 2018-03-01 緯創資通股份有限公司 雲端資料管理方法、電子裝置及雲端伺服器
US10089294B2 (en) * 2015-12-30 2018-10-02 Sap Se Systems and methods for tracking and modifying actions in an action history
US11003916B2 (en) * 2017-11-03 2021-05-11 Toyota Research Institute, Inc. Systems and methods for object historical association
KR102306392B1 (ko) * 2019-08-19 2021-09-30 한국과학기술연구원 인터랙션 인터페이스의 제어 방법 및 이를 지원하는 장치
US11029980B2 (en) * 2019-10-31 2021-06-08 Salesforce.Com, Inc. Customizable animations
CN111581330B (zh) * 2020-04-26 2023-04-07 北京明略软件系统有限公司 一种非结构化文本中标记操作的撤销或恢复的方法和装置
CN116560710A (zh) 2022-01-29 2023-08-08 脸萌有限公司 重置命令配置方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286127A (zh) * 2008-05-08 2008-10-15 华中科技大学 一种多叉日志存储的连续数据保护和恢复方法
CN101853199A (zh) * 2010-05-13 2010-10-06 复旦大学 基于操作效果关系的选择性撤销方法
WO2013066889A2 (en) * 2011-11-03 2013-05-10 Oracle International Corporation Oracle rewind: metadata-driven undo
CN103475496A (zh) * 2013-09-09 2013-12-25 北京思特奇信息技术股份有限公司 一种保证多节点业务一致性的方法及系统

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0006413D0 (en) 2000-03-17 2000-05-03 Ibm A dynamic shortcut to reverse autonomous computer program actions
JP2003337699A (ja) * 2002-03-13 2003-11-28 Saora Inc 情報処理装置及びその方法、及びそのプログラムを記憶した記憶媒体
US7003695B2 (en) 2002-10-03 2006-02-21 Seiko Epson Corporation Undo/redo algorithm for a computer program
US7181476B2 (en) * 2003-04-30 2007-02-20 Oracle International Corporation Flashback database
US7207034B2 (en) * 2003-06-23 2007-04-17 Microsoft Corporation Undo infrastructure
US7818718B2 (en) 2003-09-30 2010-10-19 Sap Ag Undoing user actions in a client program
US20070234337A1 (en) * 2006-03-31 2007-10-04 Prowess Consulting, Llc System and method for sanitizing a computer program
US8880480B2 (en) * 2007-01-03 2014-11-04 Oracle International Corporation Method and apparatus for data rollback
US8010507B2 (en) 2007-05-24 2011-08-30 Pado Metaware Ab Method and system for harmonization of variants of a sequential file
US7937663B2 (en) * 2007-06-29 2011-05-03 Microsoft Corporation Integrated collaborative user interface for a document editor program
US8756204B2 (en) * 2008-01-08 2014-06-17 Microsoft Corporation Asynchronous multi-level undo support in javascript grid
US8341132B2 (en) * 2008-10-01 2012-12-25 Ca, Inc. System and method for applying deltas in a version control system
US8751464B1 (en) * 2009-02-11 2014-06-10 Avnet, Inc. Integrated version control in a business intelligence environment
US8209603B2 (en) * 2009-04-29 2012-06-26 Microsoft Corporation Maintaining undo and redo capability across metadata merges
US8806331B2 (en) * 2009-07-20 2014-08-12 Interactive Memories, Inc. System and methods for creating and editing photo-based projects on a digital network
US8732247B2 (en) * 2009-09-28 2014-05-20 Bjorn Michael Dittmer-Roche System and method of simultaneous collaboration
US9135312B2 (en) * 2009-11-02 2015-09-15 Google Inc. Timeslider
US20110106776A1 (en) * 2009-11-03 2011-05-05 Schlumberger Technology Corporation Incremental implementation of undo/redo support in legacy applications
CA2738428A1 (en) * 2010-04-30 2011-10-30 Iliv Technologies Inc. Collaboration tool
US20110289161A1 (en) * 2010-05-21 2011-11-24 Rankin Jr Claiborne R Apparatuses, Methods and Systems For An Intelligent Inbox Coordinating HUB
US9009726B2 (en) * 2010-12-10 2015-04-14 Microsoft Technology Licensing, Llc Deterministic sharing of data among concurrent tasks using pre-defined deterministic conflict resolution policies
US8549154B2 (en) * 2011-09-09 2013-10-01 Oracle International Corporation Recovering stateful read-only database sessions
EP2954425A4 (en) * 2013-02-05 2017-01-11 Brigham Young University System and methods for multi-user cax editing conflict management
US20140258894A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Visual Timeline Of An Application History
US20140253574A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Development Environment For Capture Of Image Data From A Mobile Device
US20140258969A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Web-Based Integrated Development Environment For Real-Time Collaborative Application Development
US20140258968A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Visual Representation Of Edits For Collaborative Application Development
US9268755B2 (en) 2013-03-06 2016-02-23 Shashank Bhide Performing persistent undo and redo operation within computer software
US9158518B2 (en) * 2013-03-11 2015-10-13 Blackberry Limited Collaborative application development environment using a connected device
US8893220B2 (en) * 2013-03-15 2014-11-18 International Business Machines Corporation Managing co-editing sessions
US9773264B2 (en) * 2013-03-26 2017-09-26 Blackberry Limited Method for providing composite user interface controls and an online storefront for same
US9832237B2 (en) * 2013-11-27 2017-11-28 Getgo, Inc. Collaborative online document editing
US9535853B2 (en) * 2013-12-30 2017-01-03 International Business Machines Corporation Building an undo log for in-memory blocks of data
US9892185B2 (en) * 2014-08-19 2018-02-13 Projectwizards Gmbh Method and system for syncing data structures
US10491695B2 (en) 2014-08-22 2019-11-26 Oracle International Corporation Autosave with across user session undo support

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286127A (zh) * 2008-05-08 2008-10-15 华中科技大学 一种多叉日志存储的连续数据保护和恢复方法
CN101853199A (zh) * 2010-05-13 2010-10-06 复旦大学 基于操作效果关系的选择性撤销方法
WO2013066889A2 (en) * 2011-11-03 2013-05-10 Oracle International Corporation Oracle rewind: metadata-driven undo
CN103475496A (zh) * 2013-09-09 2013-12-25 北京思特奇信息技术股份有限公司 一种保证多节点业务一致性的方法及系统

Also Published As

Publication number Publication date
JP6684778B2 (ja) 2020-04-22
US10491695B2 (en) 2019-11-26
WO2016029111A1 (en) 2016-02-25
JP2017527901A (ja) 2017-09-21
EP3183647A1 (en) 2017-06-28
US20160057240A1 (en) 2016-02-25
CN106575231A (zh) 2017-04-19

Similar Documents

Publication Publication Date Title
CN106575231B (zh) 具有对操作的跨用户会话撤销支持的自动保存
US10127206B2 (en) Dynamic column groups in excel
US10048948B2 (en) Optimized retrieval of custom string resources
US10223347B2 (en) Date picker in excel
US9626351B2 (en) Status viewer
US9948700B2 (en) ADFDI support for custom attribute properties
JP6541647B2 (ja) ランタイムカスタマイゼーションインフラストラクチャ
US9600342B2 (en) Managing parallel processes for application-level partitions
US10007356B2 (en) Chart dual-Y resize and split-unsplit interaction
US10582012B2 (en) Adaptive data transfer optimization
US20160092414A1 (en) Standardized approach to contextual code identification in editors and ides
US10163235B2 (en) Line and area chart performance by data filtering
WO2015041829A1 (en) Runtime customization infrastructure

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant