CN106575231A - 具有对操作的跨用户会话撤销支持的自动保存 - Google Patents
具有对操作的跨用户会话撤销支持的自动保存 Download PDFInfo
- Publication number
- CN106575231A CN106575231A CN201580044805.9A CN201580044805A CN106575231A CN 106575231 A CN106575231 A CN 106575231A CN 201580044805 A CN201580044805 A CN 201580044805A CN 106575231 A CN106575231 A CN 106575231A
- Authority
- CN
- China
- Prior art keywords
- user
- server application
- application
- ession
- telecommunication
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/535—Tracking the activity of the user
-
- 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
- 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/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1069—Session establishment or de-establishment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3438—Recording 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的软件和/或运行诸如iOS、Windows Phone、Android、BlackBerry 10、Palm OS等各种移动操作系统并且启用互联网、电子邮件、短消息服务(SMS)、或其它通信协议的便携式手持设备(例如,蜂窝电话、计算平板电脑、个人数字助理(PDA))或可穿戴设备(例如,Google头戴式显示器)。客户端计算设备可以是通用个人计算机,包括例如运行各种版本的MicrosoftApple和/或Linux操作系统的个人计算机和/或笔记本计算机。客户端计算设备可以是运行任何各种可商用的或类UNIX操作系统(包括但不限于诸如例如Google Chrome OS的各种GNU/Linux操作系统)的工作站计算机。可替代地或附加地,客户端计算设备502、504、506和508可以是能够通过(一个或多个)网络510通信的任何其它电子设备,诸如瘦客户端计算机、启用互联网的游戏系统(例如,具有或不具有手势输入设备的MicrosoftXbox游戏控制台)和/或个人消息传送设备。
虽然示例性分布式系统500被示为具有四个客户端计算设备,但是任何数量的客户端计算设备都可以被支持。其它设备(诸如具有传感器的设备等)可以与服务器512交互。
在分布式系统500中的(一个或多个)网络510可以是对本领域技术人员熟悉的任何类型的网络,该网络可以支持利用包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(系统网络体系结构)、IPX(互联网报文交换)、AppleTalk等任何各种商用协议的数据通信。仅仅作为例子,(一个或多个)网络510可以是局域网(LAN),诸如基于以太网、令牌网(token ring)等的局域网。(一个或多个)网络510可以是广域网和互联网。它可以包括虚拟网络,包括但不限于虚拟专用网(VPN)、内联网、外联网、公共交换电话网(PSTN)、红外网络、无线网络(例如,在任何电气和电子协会(IEEE)802.11协议族、蓝牙和/或任何其它无线协议下操作的网络);和/或这些和/或其它网络的任意组合。
服务器512可以由一个或多个通用计算机、专用服务器计算机(包括例如PC(个人计算机)服务器、服务器、中型服务器、大型计算机、机架式服务器等)、服务器群组、服务器集群或者任何其它适当的布置和/或组合组成。在各种实施例中,服务器512可以适于运行上述公开中描述的一个或多个服务或软件应用。例如,服务器512可以对应于用于执行上述根据本公开的实施例的处理的服务器。
服务器512可以运行操作系统,操作系统包括任何以上讨论的操作系统,以及任何可商用的服务器操作系统。服务器512也可以运行任何各种附加的服务器应用和/或中间层应用,包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(公共网关接口)服务器、服务器、数据库服务器等。示例性数据库服务器包括但不限于来自Oracle、Microsoft、Sybase、IBM(国际商业机器公司)等的那些可商用的数据库服务器。
在一些实现中,服务器512可以包括分析和整合从客户端计算设备502、504、506和508的用户接收到的数据馈送和/或事件更新的一个或多个应用。作为例子,数据馈送和/或事件更新可以包括但不限于馈送、更新或者从一个或多个第三方信息源和连续数据流接收到的实时更新,这些实时更新可以包括与传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视等相关的实时事件。服务器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格式的命令来存储、更新和检索数据的关系数据库,诸如由提供的数据库。
图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运动传感器,Microsoft运动传感器使得用户能够通过利用姿势和口语命令的自然用户接口控制诸如Microsoft460游戏控制器的输入设备并与其交互。用户接口输入设备也可以包括眼睛姿势识别设备,诸如Google眨眼检测器,Google眨眼检测器检测用户的眼睛活动(例如,当拍摄图片和/或进行菜单选择时的“眨眼”)并将眼睛姿势变换为到输入设备(例如,Google)中的输入。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,导航器)交互的语音识别感测设备。
用户接口输入设备也可以包括但不限于三维(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可以包括各种版本的MicrosoftApple和/或Linux操作系统、各种可商用的或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、Google操作系统等)和/或诸如iOS、Phone、OS、10OS和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-盘或其它光学介质)读取或写到可移除的非易失性光盘的光盘驱动器。计算机可读存储介质622可以包括但不限于驱动器、闪存卡、通用串行总线(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,诸如馈送、更新、web馈送(诸如丰富站点摘要(Rich Site Summary,RSS)馈送)和/或来自一个或多个第三方信息源的实时更新。
此外,通信子系统624也可以被配置为接收连续数据流形式的数据,连续数据流可以包括实时事件的事件流628和/或事件更新630,连续数据流形式的数据本质上可能是连续的或无界的而没有明确结束。生成连续数据的应用的例子可以包括例如传感器数据应用、金融报价机、网络性能测量工具(例如网络监视和流量管理应用)、点击流分析工具、汽车流量监视等。
通信子系统624也可以被配置为向一个或多个数据库输出结构化和/或非结构化的数据馈送626、事件流628、事件更新630等,其中这一个或多个数据库可以与耦合到计算机系统600的一个或多个流数据源计算机通信。
计算机系统600可以是各种类型中的一种,包括手持便携式设备(例如,蜂窝电话、计算平板、PDA)、可穿戴设备(例如,Google头戴式显示器)、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.一种方法,包括:
在计算机处接收在与服务器应用的客户端应用的第一用户会话期间执行的一个或多个用户动作;
由计算机将在第一用户会话期间执行的所述一个或多个动作记录在服务器应用的历史中;
由计算机接收在第二用户会话期间实例化的、撤销在与服务器应用的客户端应用的第一用户会话期间执行的所述一个或多个动作中的一个或多个动作的请求;
由计算机生成与客户端应用相关联的当前会话状态,当前状态表示评估服务器应用的历史的结果;及
由计算机将当前状态发送给客户端应用。
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 true CN106575231A (zh) | 2017-04-19 |
CN106575231B 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) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753865A (zh) * | 2017-11-03 | 2019-05-14 | 丰田研究所股份有限公司 | 对象历史关联的系统和方法 |
CN111581330A (zh) * | 2020-04-26 | 2020-08-25 | 北京明略软件系统有限公司 | 一种非结构化文本中标记操作的撤销或恢复的方法和装置 |
US11914584B2 (en) | 2022-01-29 | 2024-02-27 | Lemon Inc. | Method and apparatus for reset command configuration, device and storage medium |
Families Citing this family (5)
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 |
KR102306392B1 (ko) * | 2019-08-19 | 2021-09-30 | 한국과학기술연구원 | 인터랙션 인터페이스의 제어 방법 및 이를 지원하는 장치 |
US11029980B2 (en) * | 2019-10-31 | 2021-06-08 | Salesforce.Com, Inc. | Customizable animations |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1573691A (zh) * | 2003-06-23 | 2005-02-02 | 微软公司 | 撤消基础结构 |
US20050081105A1 (en) * | 2003-09-30 | 2005-04-14 | Malte Wedel | 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 |
CN101221573A (zh) * | 2003-04-30 | 2008-07-16 | 甲骨文国际公司 | 将储存库还原到先前状态的方法 |
CN101286127A (zh) * | 2008-05-08 | 2008-10-15 | 华中科技大学 | 一种多叉日志存储的连续数据保护和恢复方法 |
CN101853199A (zh) * | 2010-05-13 | 2010-10-06 | 复旦大学 | 基于操作效果关系的选择性撤销方法 |
CN101911010A (zh) * | 2008-01-08 | 2010-12-08 | 微软公司 | Javascript网格中的异步多级撤消支持 |
CN102414679A (zh) * | 2009-04-29 | 2012-04-11 | 微软公司 | 保持跨元数据合并的撤销和重复能力 |
US20130117238A1 (en) * | 2011-11-03 | 2013-05-09 | Oracle International Corporation | Oracle rewind: metadata-driven undo |
CN103475496A (zh) * | 2013-09-09 | 2013-12-25 | 北京思特奇信息技术股份有限公司 | 一种保证多节点业务一致性的方法及系统 |
Family Cites Families (29)
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 |
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 |
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 |
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 |
US8788590B2 (en) * | 2010-04-30 | 2014-07-22 | 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 |
US9648059B2 (en) * | 2013-02-05 | 2017-05-09 | Brigham Young University | System and methods for multi-user CAx editing conflict management |
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 |
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 |
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 |
-
2015
- 2015-03-24 US US14/667,260 patent/US10491695B2/en active Active
- 2015-08-21 WO PCT/US2015/046288 patent/WO2016029111A1/en active Application Filing
- 2015-08-21 EP EP15760554.4A patent/EP3183647A1/en not_active Ceased
- 2015-08-21 JP JP2017508982A patent/JP6684778B2/ja active Active
- 2015-08-21 CN CN201580044805.9A patent/CN106575231B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221573A (zh) * | 2003-04-30 | 2008-07-16 | 甲骨文国际公司 | 将储存库还原到先前状态的方法 |
CN1573691A (zh) * | 2003-06-23 | 2005-02-02 | 微软公司 | 撤消基础结构 |
US20050081105A1 (en) * | 2003-09-30 | 2005-04-14 | Malte Wedel | 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 |
CN101911010A (zh) * | 2008-01-08 | 2010-12-08 | 微软公司 | Javascript网格中的异步多级撤消支持 |
CN101286127A (zh) * | 2008-05-08 | 2008-10-15 | 华中科技大学 | 一种多叉日志存储的连续数据保护和恢复方法 |
CN102414679A (zh) * | 2009-04-29 | 2012-04-11 | 微软公司 | 保持跨元数据合并的撤销和重复能力 |
CN101853199A (zh) * | 2010-05-13 | 2010-10-06 | 复旦大学 | 基于操作效果关系的选择性撤销方法 |
US20130117238A1 (en) * | 2011-11-03 | 2013-05-09 | Oracle International Corporation | Oracle rewind: metadata-driven undo |
WO2013066889A2 (en) * | 2011-11-03 | 2013-05-10 | Oracle International Corporation | Oracle rewind: metadata-driven undo |
CN103475496A (zh) * | 2013-09-09 | 2013-12-25 | 北京思特奇信息技术股份有限公司 | 一种保证多节点业务一致性的方法及系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753865A (zh) * | 2017-11-03 | 2019-05-14 | 丰田研究所股份有限公司 | 对象历史关联的系统和方法 |
CN109753865B (zh) * | 2017-11-03 | 2023-12-26 | 丰田研究所股份有限公司 | 对象历史关联的系统和方法 |
CN111581330A (zh) * | 2020-04-26 | 2020-08-25 | 北京明略软件系统有限公司 | 一种非结构化文本中标记操作的撤销或恢复的方法和装置 |
CN111581330B (zh) * | 2020-04-26 | 2023-04-07 | 北京明略软件系统有限公司 | 一种非结构化文本中标记操作的撤销或恢复的方法和装置 |
US11914584B2 (en) | 2022-01-29 | 2024-02-27 | Lemon Inc. | Method and apparatus for reset command configuration, device and storage medium |
Also Published As
Publication number | Publication date |
---|---|
US10491695B2 (en) | 2019-11-26 |
WO2016029111A1 (en) | 2016-02-25 |
US20160057240A1 (en) | 2016-02-25 |
JP6684778B2 (ja) | 2020-04-22 |
JP2017527901A (ja) | 2017-09-21 |
EP3183647A1 (en) | 2017-06-28 |
CN106575231B (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11775572B2 (en) | Directed acyclic graph based framework for training models | |
EP3959658B1 (en) | Insights into performance of a bot system | |
CN106575231A (zh) | 具有对操作的跨用户会话撤销支持的自动保存 | |
US10824403B2 (en) | Application builder with automated data objects creation | |
CN105593844B (zh) | 运行时定制基础设施 | |
EP2487595B1 (en) | Web service for automated cross-browser compatibility checking of web applications | |
CN105493049B (zh) | 针对基于云的调试 | |
US20160092048A1 (en) | Display of hierarchical datasets using high-water mark scrolling | |
US10216491B2 (en) | Controlled availability of objects in a visual design tool for integration development | |
US10007356B2 (en) | Chart dual-Y resize and split-unsplit interaction | |
JP7291740B2 (ja) | モデリングパラメータの設定方法、装置、デバイス、コンピュータ記憶媒体、及びコンピュータプログラム | |
US20240078171A1 (en) | Techniques for model artifact validation | |
CN112487790A (zh) | 包括粗略语义解析器和精细语义解析器的改进语义解析器 | |
US9706013B2 (en) | Mobile runtime conditional sections for surveys | |
KR102199247B1 (ko) | 버그 제보를 위한 게임 서비스 제공 시스템 | |
Filippidis et al. | CIR–A Citizen Incident Reporting tool |
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 |