CN107844363B - 业务事务处理方法、装置、存储介质及设备 - Google Patents
业务事务处理方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN107844363B CN107844363B CN201711038234.5A CN201711038234A CN107844363B CN 107844363 B CN107844363 B CN 107844363B CN 201711038234 A CN201711038234 A CN 201711038234A CN 107844363 B CN107844363 B CN 107844363B
- Authority
- CN
- China
- Prior art keywords
- operations
- transaction
- thread context
- ith
- called
- 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
Links
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Abstract
本公开涉及一种业务事务处理方法、装置、存储介质及设备,该方法包括:获取用于启动第一事务的开启指令,该第一事务中包含n个操作,再根据该开启指令,建立线程上下文,之后根据流程模板确定n个操作中需要将操作结果保存在线程上下文中的m个操作,按照流程模板依次执行第一事务中的n个操作,在第一事务执行完成时,将线程上下文中保存的m个操作的操作结果发送给服务器。本公开能够通过线程上下文对事务中操作结果的存储,避免在执行一个事务时对流程引擎的多次调用操作,简化流程操作过程,减轻服务器的计算压力,优化系统性能。
Description
技术领域
本公开涉及计算机技术领域,具体地,涉及一种业务事务处理方法、装置、存储介质及设备。
背景技术
在现有技术中,独立部署模式作为主流流程业务模式,其流程引擎部署在远端服务器上,而将客户端仅仅作为代理,因此在执行业务事务操作时,客户端根据业务事务中所包含的多个操作,会对调用流程引擎产生多次调用,从而进行频繁的数据交互,因此多次调用时会对服务器产生较大的计算压力,从而影响系统性能。
发明内容
本公开的目的是提供一种业务事务处理方法、装置、存储介质及设备,能够克服多次调用对系统性能影响的问题。
本公开实施例的第一方面,提供一种业务事务处理方法,应用于客户端,所述方法包括:
获取用于启动第一事务的开启指令,所述第一事务中包含n个操作,所述n个操作包括流程操作和/或业务操作;
根据所述开启指令,建立线程上下文;
根据流程模板确定所述n个操作中需要将操作结果保存在所述线程上下文中的m个操作;其中,n为正整数,m为非负整数,m≤n;
按照流程模板依次执行所述第一事务中的所述n个操作,其中在执行所述n个操作的过程中,将所述m个操作的操作结果存储在所述线程上下文中;
在所述第一事务执行完成时,将所述线程上下文中保存的所述m个操作的操作结果发送给服务器。
可选的,所述根据流程模板确定所述n个操作中需要将操作结果保存在所述线程上下文中的m个操作,包括:
从所述服务器获取流程模板;
根据所述流程模板确定所述第一事务中所包括的n个操作中是否存在被调用操作,所述被调用操作为操作结果需要被相邻的下一操作调用的操作;
当所述第一事务中存在所述被调用操作时,将所述n个操作中除所述被调用操作之外的m个操作确定为所述需要将操作结果保存在所述线程上下文中的m个操作;
当所述第一事务中不存在所述被调用操作时,确定所述n个操作均为需要将操作结果保存在所述线程上下文中的操作。
可选的,当所述第一事务中存在所述被调用操作时,按照流程模板依次执行所述第一事务中的所述n个操作,其中在执行所述n个操作的过程中,将所述m个操作的操作结果存储在所述线程上下文中,包括:
执行所述n个操作中的第i操作,所述n个操作的执行顺序是根据所述流程模板确定的,其中,i为正整数,i的起始值为1,i≤n;
当所述第i操作为所述被调用操作时,将所述第i操作的操作结果存储至所述服务器,用于在执行第i+1操作时,从所述服务器调用所述第i操作的操作结果;
当所述第i操作不是所述被调用操作时,将所述第i操作的操作结果存储在所述线程上下文中;
在执行完所述第i操作后,令i=i+1,并重复执行所述执行所述n个操作中的第i操作的步骤,直至所述n个操作均执行完成。
可选的,所述根据流程模板确定所述n个操作中需要将操作结果保存在所述线程上下文中的m个操作,还包括:
当所述第一事务中存在所述被调用操作时,为所述被调用操作添加提醒标识,用于在执行所述n个操作中的第i操作时,根据所述第i操作是否具有所述提醒标识来判断所述第i操作是否为所述被调用操作。
可选的,当所述第一事务中不存在所述被调用操作时,按照流程模板依次执行所述第一事务中的所述n个操作,其中在执行所述n个操作的过程中,将所述m个操作的操作结果存储在所述线程上下文中,包括:
执行所述n个操作中的第i操作,所述n个操作的执行顺序是根据所述流程模板确定的,其中,i为正整数,i的起始值为1,i≤n;
将所述第i操作的操作结果存储在所述线程上下文中;
在执行完所述第i操作后,令i=i+1,并重复执行所述执行所述n个操作中的第i操作的步骤,直至所述n个操作均执行完成。
本公开实施例的第二方面,提供一种业务事务处理装置,应用于客户端,所述装置包括:
指令获取模块,用于获取用于启动第一事务的开启指令,所述第一事务中包含n个操作,所述n个操作包括流程操作和/或业务操作;
线程上下文建立模块,用于根据所述开启指令,建立线程上下文;
操作确定模块,用于根据流程模板确定所述n个操作中需要将操作结果保存在所述线程上下文中的m个操作;其中,n为正整数,m为非负整数,m≤n;
操作执行模块,用于按照流程模板依次执行所述第一事务中的所述n个操作,其中在执行所述n个操作的过程中,将所述m个操作的操作结果存储在所述线程上下文中;
发送模块,用于在所述第一事务执行完成时,将所述线程上下文中保存的所述m个操作的操作结果发送给服务器。
可选的,所述操作确定模块,包括:
模板获取子模块,用于从所述服务器获取流程模板;
调用操作确定子模块,用于根据所述流程模板确定所述第一事务中所包括的n个操作中是否存在被调用操作,所述被调用操作为操作结果需要被相邻的下一操作调用的操作;
操作结果保存子模块,用于当所述第一事务中存在所述被调用操作时,将所述n个操作中除所述被调用操作之外的m个操作确定为所述需要将操作结果保存在所述线程上下文中的m个操作;
所述操作结果保存子模块,还用于当所述第一事务中不存在所述被调用操作时,确定所述n个操作均为需要将操作结果保存在所述线程上下文中的操作。
可选的,当所述第一事务中存在所述被调用操作时,所述操作执行模块,包括:
顺序执行子模块,用于执行所述n个操作中的第i操作,所述n个操作的执行顺序是根据所述流程模板确定的,其中,i为正整数,i的起始值为1,i≤n;
操作结果保存子模块,用于当所述第i操作为所述被调用操作时,将所述第i操作的操作结果存储至所述服务器,用于在执行第i+1操作时,从所述服务器调用所述第i操作的操作结果;
所述操作结果保存子模块,还用于当所述第i操作不是所述被调用操作时,将所述第i操作的操作结果存储在所述线程上下文中;
重复执行模块,用于在执行完所述第i操作后,令i=i+1,并重复执行所述执行所述n个操作中的第i操作的步骤,直至所述n个操作均执行完成。
可选的,所述操作结果确定子模块,还用于:
当所述第一事务中存在所述被调用操作时,为所述被调用操作添加提醒标识,用于在执行所述n个操作中的第i操作时,根据所述第i操作是否具有所述提醒标识来判断所述第i操作是否为所述被调用操作。
可选的,当所述第一事务中不存在所述被调用操作时,所述操作执行模块,包括:
所述顺序执行子模块,用于执行所述n个操作中的第i操作,所述n个操作的执行顺序是根据所述流程模板确定的,其中,i为正整数,i的起始值为1,i≤n;
所述操作结果保存子模块,用于将所述第i操作的操作结果存储在所述线程上下文中;
重复执行模块,用于在执行完所述第i操作后,令i=i+1,并重复执行所述执行所述n个操作中的第i操作的步骤,直至所述n个操作均执行完成。
本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述方法的步骤。
本公开实施例的第四方面,提供一种电子设备,包括:
第三方面中所述的计算机可读存储介质;以及
一个或者多个处理器,用于执行所述计算机可读存储介质中的计算机程序。
本公开提供的业务事务处理方法、装置、存储介质及设备,所述方法通过获取用于启动第一事务的开启指令,再根据所述开启指令,建立线程上下文,之后根据流程模板确定所述n个操作中需要将操作结果保存在所述线程上下文中的m个操作,按照流程模板依次执行所述第一事务中的所述n个操作,在所述第一事务执行完成时,将所述线程上下文中保存的所述m个操作的操作结果发送给服务器。能够通过线程上下文对事务中操作结果的存储,避免在执行一个事务时对流程引擎的多次调用操作,能够克服多次调用对系统性能影响的问题,从而实现简化流程操作过程,减轻服务器的计算压力的效果。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性实施例示出的一种业务事务处理方法的流程图;
图2是根据一示例性实施例示出的一种业务事务处理方法的流程图;
图3是根据一示例性实施例示出的一种业务事务处理方法的流程图;
图4是根据一示例性实施例示出的一种业务事务处理方法的流程图;
图5是根据一示例性实施例示出的一种业务事务处理装置的框图;
图6是根据一示例性实施例示出的一种操作确定模块的框图;
图7是根据一示例性实施例示出的一种操作执行模块的框图;
图8是根据一示例性实施例示出的一种操作执行模块的框图;
图9是根据一示例性实施例示出的一种电子设备的框图;
图10是根据一示例性实施例示出的另一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
在介绍本公开实施例之前,首先对本公开的应用场景和现有技术进行介绍。企业在进行业务处理时或者政府在进行公文审批时,通常都是以流程形式进行的。在信息化的过程中,企业、政府也将这些业务处理、公文审批的过程信息化,而在初期,是通过程序硬编码的方式来处理这些业务、公文的流转,随着业务、公文的复杂程度不断提升、在处理过程中问题的不断涌出以及需求的不断变更,传统的硬编码的方式显然难以应对,此时工作流管理系统应运而生。工作流程管理系统通过对业务,公文流转过程的分析以及抽象,将不变和变化的部分进行划分,用户可以简单便捷的通过可视化的工具对事务的流程、流程环节以及涉及的人员(角色)、流程环节的表单、流程环节的操作进行修改,从而达到了应对不断变化的需求的目的,而工作流管理系统通常提供的流程监控、查询统计模块能够更大程度上位用户优化流程的操作,以提高企业、政府的工作效率。
业务流程管理系统围绕业务交互逻辑、业务处理逻辑以及参与者(操作人员)三个问题进行解决,业务交互逻辑对应的为业务的流转过程,在工作管理系统中对应的提出了工作流引擎、工作流设计器、流程操作来解决业务交互逻辑的问题,业务处理逻辑应对业务流转过程中的表单、文档等的处理,在工作流管理系统中对应的提出了表单设计器、与表单的集成来解决业务处理逻辑的问题,参与者对应到的为流转过程中环节的人或者程序,在工作流管理系统中通过与应用程序的集成来解决参与者的问题。
工作流管理系统为方便业务相互逻辑、业务处理逻辑以及参与者的修改,多数通过提供可视化的流程设计器以及表单设计器来实现,为实现工作流管理系统的扩展性,大多数都会提供一系列的应用程序接口。
一个完整的工作流管理系统通常由工作流引擎、工作流设计器、流程操作、工作流客户端程序、流程监控、表单设计器、与表单的集成以及与应用程序的集成八个部分组成。
其中工作流引擎为工作流管理系统的核心部分,主要提供了对于工作流定义的解析以及流程流转的支持。工作流定义文件描述了业务之间的交互逻辑,工作流引擎通过解析此工作流定义文件并按照业务之间的交互逻辑进行业务的流转,工作流引擎通常通过参考某种模型来进行设计,通过调度算法来进行流程的流转(包括流程的启动、终止、挂起、恢复等),通过各种环节调度算法来实现对于各个环节的流转(环节的合并、分叉、选择、条件性选择等)。
一般的工作流引擎会放在远程服务器端,在执行一次业务事务时,会在执行该业务事务内所包括的业务操作和流程调用操作时,与远端服务器产生多次的调用和信息交互操作,每进行一次操作需与服务器进行交互,利用工作流引擎完成对该操作的执行,包括逻辑控制和数据存储,而一个业务事务中所包含的多个操作的结果是具有一致性的,也就是它们要么都成功,要么都失败。
本公开将服务器端的工作流引擎所执行的逻辑判断操作转移至客户端,即将流程引擎放置于客户端,在客户端上设置引擎内核,因此在执行业务事务时,有关解析逻辑和计算逻辑都可以由客户端实现,在完成一个完整事务后,将其操作结果统一发送给远端服务器,利用远端服务器进行操作结果的存储,以便之后对操作结果的查询和调用,能够避免在执行一个事务时对流程引擎的多次调用操作,从而克服多次调用对系统性能影响的问题,因此能够实现简化流程操作过程,减轻服务器的计算压力的效果,并且能够实现事务内操作的一致性,以及对事务的统一配置,优化系统性能。
图1是根据一示例性实施例示出的一种业务事务处理方法的流程图,如图1所示,该方法应用于客户端,包括以下步骤:
步骤101,获取用于启动第一事务的开启指令,该第一事务中包含n个操作,该n个操作包括流程操作和/或业务操作。
示例地,一个事务例如可以是一个审批申请或者一个订单申请,对于参与者(操作人员)来讲,可以只是点击一个提交或者申请按钮,但是对于业务系统,即客户端来讲,获取到该开启指令之后,需要执行多个操作,也就是一个事务中包含多个业务操作和/或流程操作。本实施例中的第一事务可以是任意事务,含多个业务操作和/或流程操作,其业务操作和/或流程操作的数量为n。
步骤102,根据开启指令,建立线程上下文。
当开启第一事务后,首先建立线程上下文,该线程上下文用于在之后的步骤中对当前操作的操作结果进行存储,通过该线程上下文可以使得在执行第一事务中的任一业务操作或流程操作时,暂时存储当前操作的操作结果,在完成整个事务的所有操作之后再与服务器进行数据交互,避免了多次调用导致的系统性能低下。
步骤103,根据流程模板确定n个操作中需要将操作结果保存在线程上下文中的m个操作;其中,n为正整数,m为非负整数,m≤n。
示例地,可以将该操作结果保存在线程上下文的操作的个数应该小于或等于第一事务中的操作个数n,因为在第一事务的n个操作中,可能存在一些需要对相邻的上一操作的操作结果进行调用的操作,而上述存在调用的操作需要在相邻的上一操作的操作结果的基础上继续执行操作,因此该相邻的上一操作的操作结果应在操作结束后被放在服务器端,以备之后的操作进行调用,因此有小于或等于n个操作实际需要将操作结果保存在线程上下文中的。
因此,在根据从服务器端获取的该第一事务的执行模板之后,首先确定需要被调用操作的操作,从而在步骤104执行n个操作时,针对每个操作的操作结果是否需要被调用来采取不同的保存方式。
步骤104,按照流程模板依次执行第一事务中的n个操作,其中在执行n个操作的过程中,将m个操作的操作结果存储在线程上下文中。
依据步骤103所确定的,将m个不存在调用操作的操作结果保存在线程上下文中,以便在执行完成所有n个操作之后,将线程上下文中存储的所有操作结果一次性发送给服务器。
步骤105,在第一事务执行完成时,将线程上下文中保存的m个操作的操作结果发送给服务器。
在n个操作都完成后,将保存在线程上下文中的操作结果一起发送至服务器,从而减少调用次数,以减少客户端和服务器之间的交互次数,既减轻服务器的计算压力,也能够保证事务的一致性。
综上所述,本公开提供的业务事务处理方法,通过获取用于启动第一事务的开启指令,再根据开启指令,建立线程上下文,之后根据流程模板确定n个操作中需要将操作结果保存在线程上下文中的m个操作,再按照流程模板依次执行第一事务中的n个操作,最后在第一事务执行完成时,将线程上下文中保存的m个操作的操作结果发送给服务器。能够通过线程上下文对事务中操作结果的存储,能够避免在执行一个事务时对流程引擎的多次调用操作,从而克服多次调用对系统性能影响的问题,因此能够实现简化流程操作过程,减轻服务器的计算压力的效果。
图2是根据一示例性实施例示出的一种业务事务处理方法的流程图,如图2所示,步骤103所述的根据流程模板确定n个操作中需要将操作结果保存在线程上下文中的m个操作,包括以下步骤:
步骤1031,从服务器获取流程模板。
其中,该流程模板中包括了第一事务所要执行的所有n个操作的内容,根据该流程模板就可以确定包含在该第一事务中的n个操作的相互关系,例如执行顺序,操作之间是否存在调用等,以便进行步骤1032的判断。流程模板存储在服务器上,当执行对应事务时,再由客户端进行调用,实现了流程模板和流程配置的统一管理。
步骤1032,根据流程模板确定第一事务中所包括的n个操作中是否存在被调用操作,被调用操作为操作结果需要被相邻的下一操作调用的操作。
被调用操作可能是在下一操作中需要对相邻的上一操作的操作结果的查询或者使用,因此需要执行该下一操作时应获取相邻的上一操作的操作结果。通过判断该被调用操作是否存在,再继续执行步骤1033或者1034从而确定存储在线程上下文中的m个操作结果。
步骤1033,当第一事务中存在被调用操作时,将n个操作中除被调用操作之外的m个操作确定为需要将操作结果保存在线程上下文中的m个操作。
示例地,当第一事务中存在被调用操作时,可以为被调用操作添加提醒标识,用于在执行n个操作中的第i操作时,根据第i操作是否具有提醒标识来判断第i操作是否为被调用操作。
提醒标识用于区分n个操作中的(n-m)个带有被调用操作的操作,以及剩下m个无需被调用操作的操作,通过提醒标识在顺序执行n个操作时,能够将(n-m)个操作的操作结果直接发送给服务器端,以保证相邻的下一操作能够对其相邻的上一操作结果进行调用。
步骤1034,当第一事务中不存在被调用操作时,确定n个操作均为需要将操作结果保存在线程上下文中的操作。
图3是根据一示例性实施例示出的一种业务事务处理方法的流程图,如图3所示,当第一事务中存在所被调用操作时,步骤104所述的按照流程模板依次执行第一事务中的n个操作,其中在执行n个操作的过程中,将m个操作的操作结果存储在线程上下文中,包括以下步骤:
步骤1041,执行n个操作中的第i操作,n个操作的执行顺序是根据流程模板确定的,其中,i为正整数,i的起始值为1,i≤n。
顺序执行该n个操作,再根据步骤1033中所述的对被调用操作的提醒标识,分别进行步骤1042或者步骤1043的操作。
步骤1042,当第i操作为被调用操作时,将第i操作的操作结果存储至服务器,用于在执行第i+1操作时,从服务器调用第i操作的操作结果。
步骤1043,当第i操作不是被调用操作时,将第i操作的操作结果存储在线程上下文中。
步骤1044,在执行完第i操作后,令i=i+1,并重复执行步骤1041至步骤1043的操作,直至n个操作均执行完成。
即,在根据上述步骤完成第i个操作后,再对第i个操作的下一操作重复执行上述步骤直至第一事务中所有操作执行完成,确定在线程上下文中的m个操作。
对应的,当第一事务中不存在被调用操作时,步骤104所述的按照流程模板依次执行第一事务中的n个操作,其中在执行n个操作的过程中,将m个操作的操作结果存储在线程上下文中,如图4所示,可以包括以下步骤,:
步骤1045,执行n个操作中的第i操作,该n个操作的执行顺序是根据流程模板确定的,其中,i为正整数,i的起始值为1,i≤n。
步骤1046,将第i操作的操作结果存储在线程上下文中。
步骤1047,在执行完第i操作后,令i=i+1,并重复执行步骤1045-步骤1046的操作,直至n个操作均执行完成。
与图3的实施例类似,按照流程模板顺序执行n个操作,由于其中不存在被调用操作,因此可以确定m=n,即这n个操作的操作结果都在执行完第i操作之后将操作结果保存在线程上下文中,以便进行步骤105,在完成第一事务的所有操作后,将线程上下文中的操作结果发送给服务器。
综上所述,本公开提供的业务事务处理方法,通过获取用于启动第一事务的开启指令,再根据开启指令,建立线程上下文,之后根据流程模板确定n个操作中需要将操作结果保存在线程上下文中的m个操作,再按照流程模板依次执行第一事务中的n个操作,最后在第一事务执行完成时,将线程上下文中保存的m个操作的操作结果发送给服务器。能够通过线程上下文对事务中操作结果的存储,能够避免在执行一个事务时对流程引擎的多次调用操作,从而克服多次调用对系统性能影响的问题,因此能够实现简化流程操作过程,减轻服务器的计算压力的效果,并且能够实现事务内操作的一致性,以及对事务的统一配置,优化系统性能。
图5是根据一示例性实施例示出的一种业务事务处理装置的框图,该装置500可以用于执行图1-图4任一所述的方法,应用于客户端,参见图5,该装置500包括:
指令获取模块510,用于获取用于启动第一事务的开启指令,第一事务中包含n个操作,n个操作包括流程操作和/或业务操作。
线程上下文建立模块520,用于根据开启指令,建立线程上下文。
操作确定模块530,用于根据流程模板确定n个操作中需要将操作结果保存在线程上下文中的m个操作;其中,n为正整数,m为非负整数,m≤n。
操作执行模块540,用于按照流程模板依次执行第一事务中的n个操作,其中在执行n个操作的过程中,将m个操作的操作结果存储在线程上下文中。
发送模块550,用于在第一事务执行完成时,将线程上下文中保存的m个操作的操作结果发送给服务器。
可选的,图6是根据一示例性实施例示出的一种操作确定模块的框图,如图6所示,该操作确定模块530,包括:
模板获取子模块531,用于从服务器获取流程模板。
调用操作确定子模块532,用于根据流程模板确定第一事务中所包括的n个操作中是否存在被调用操作,被调用操作为操作结果需要被相邻的下一操作调用的操作。
操作结果保存子模块533,用于当第一事务中存在被调用操作时,将n个操作中除被调用操作之外的m个操作确定为需要将操作结果保存在线程上下文中的m个操作。
该操作结果保存子模块533,还用于当第一事务中不存在被调用操作时,确定n个操作均为需要将操作结果保存在线程上下文中的操作。
可选的,图7是根据一示例性实施例示出的一种操作执行模块的框图,如图7所示,当第一事务中存在被调用操作时,操作执行模块540,包括:
顺序执行子模块541,用于执行n个操作中的第i操作,n个操作的执行顺序是根据流程模板确定的,其中,i为正整数,i的起始值为1,i≤n。
操作结果保存子模块542,用于当第i操作为被调用操作时,将第i操作的操作结果存储至服务器,用于在执行第i+1操作时,从服务器调用第i操作的操作结果。
操作结果保存子模块542,还用于当第i操作不是被调用操作时,将第i操作的操作结果存储在线程上下文中。
重复执行模块543,用于在执行完第i操作后,令i=i+1,并重复执行n个操作中的第i操作的步骤,直至n个操作均执行完成。
可选的,操作结果确定子模块533,还用于:
当第一事务中存在被调用操作时,为被调用操作添加提醒标识,用于在执行n个操作中的第i操作时,根据第i操作是否具有提醒标识来判断第i操作是否为被调用操作。
可选的,图8是根据一示例性实施例示出的一种操作执行模块的框图,如图8所示,当第一事务中不存在被调用操作时,操作执行模块540,包括:
顺序执行子模块541,用于执行n个操作中的第i操作,n个操作的执行顺序是根据流程模板确定的,其中,i为正整数,i的起始值为1,i≤n。
操作结果保存子模块542,用于将第i操作的操作结果存储在线程上下文中。
重复执行模块543,用于在执行完第i操作后,令i=i+1,并重复执行n个操作中的第i操作的步骤,直至n个操作均执行完成。
综上所述,本公开提供的业务事务处理装置,通过获取用于启动第一事务的开启指令,再根据开启指令,建立线程上下文,之后根据流程模板确定n个操作中需要将操作结果保存在线程上下文中的m个操作,再按照流程模板依次执行第一事务中的n个操作,最后在第一事务执行完成时,将线程上下文中保存的m个操作的操作结果发送给服务器。能够通过线程上下文对事务中操作结果的存储,能够避免在执行一个事务时对流程引擎的多次调用操作,从而克服多次调用对系统性能影响的问题,因此能够实现简化流程操作过程,减轻服务器的计算压力的效果,并且能够实现事务内操作的一致性,以及对事务的统一配置,优化系统性能。
图9是根据一示例性实施例示出的一种电子设备900的框图。如图9所示,该电子设备900可以包括:处理器901,存储器902,多媒体组件903,输入/输出(I/O)接口904,以及通信组件905。
其中,处理器901用于控制该电子设备900的整体操作,以完成上述的用于日志查询的索引管理方法中的全部或部分步骤。存储器902用于存储各种类型的数据以支持在该电子设备900的操作,这些数据例如可以包括用于在该电子设备900上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器902可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件903可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器902或通过通信组件905发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口904为处理器901和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件905用于该电子设备900与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件905可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备900可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的用于日志查询的索引管理方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器902,上述程序指令可由电子设备900的处理器901执行以完成上述的用于日志查询的索引管理方法。
图10是根据一示例性实施例示出的另一种电子设备1000的框图。例如,电子设备1000可以被提供为一服务器。参照图10,电子设备1000包括处理器1022,其数量可以为一个或多个,以及存储器1032,用于存储可由处理器1022执行的计算机程序。存储器1032中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器1022可以被配置为执行该计算机程序,以执行上述的用于日志查询的索引管理方法。
另外,电子设备1000还可以包括电源组件1026和通信组件1050,该电源组件1026可以被配置为执行电子设备1000的电源管理,该通信组件1050可以被配置为实现电子设备1000的通信,例如,有线或无线通信。此外,该电子设备1000还可以包括输入/输出(I/O)接口1058。电子设备1000可以操作基于存储在存储器1032的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器1032,上述程序指令可由电子设备1000的处理器1022执行以完成上述的用于日志查询的索引管理方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (8)
1.一种业务事务处理方法,其特征在于,应用于客户端,所述方法包括:
获取用于启动第一事务的开启指令,所述第一事务中包含n个操作,所述n个操作包括流程操作和/或业务操作;
根据所述开启指令,建立线程上下文;
根据流程模板确定所述n个操作中需要将操作结果保存在所述线程上下文中的m个操作;其中,n为正整数,m为非负整数,m≤n;
按照流程模板依次执行所述第一事务中的所述n个操作,其中在执行所述n个操作的过程中,将所述m个操作的操作结果存储在所述线程上下文中;
在所述第一事务执行完成时,将所述线程上下文中保存的所述m个操作的操作结果发送给服务器;
所述根据流程模板确定所述n个操作中需要将操作结果保存在所述线程上下文中的m个操作,包括:
从所述服务器获取流程模板;
根据所述流程模板确定所述第一事务中所包括的n个操作中是否存在被调用操作,所述被调用操作为操作结果需要被相邻的下一操作调用的操作;
当所述第一事务中存在所述被调用操作时,将所述n个操作中除所述被调用操作之外的m个操作确定为所述需要将操作结果保存在所述线程上下文中的m个操作;
当所述第一事务中不存在所述被调用操作时,确定所述n个操作均为需要将操作结果保存在所述线程上下文中的操作。
2.根据权利要求1所述的方法,其特征在于,当所述第一事务中存在所述被调用操作时,按照流程模板依次执行所述第一事务中的所述n个操作,其中在执行所述n个操作的过程中,将所述m个操作的操作结果存储在所述线程上下文中,包括:
执行所述n个操作中的第i操作,所述n个操作的执行顺序是根据所述流程模板确定的,其中,i为正整数,i的起始值为1,i≤n;
当所述第i操作为所述被调用操作时,将所述第i操作的操作结果存储至所述服务器,用于在执行第i+1操作时,从所述服务器调用所述第i操作的操作结果;
当所述第i操作不是所述被调用操作时,将所述第i操作的操作结果存储在所述线程上下文中;
在执行完所述第i操作后,令i=i+1,并重复执行所述执行所述n个操作中的第i操作的步骤,直至所述n个操作均执行完成。
3.根据权利要求2所述的方法,其特征在于,所述根据流程模板确定所述n个操作中需要将操作结果保存在所述线程上下文中的m个操作,还包括:
当所述第一事务中存在所述被调用操作时,为所述被调用操作添加提醒标识,用于在执行所述n个操作中的第i操作时,根据所述第i操作是否具有所述提醒标识来判断所述第i操作是否为所述被调用操作。
4.根据权利要求1所述的方法,其特征在于,当所述第一事务中不存在所述被调用操作时,按照流程模板依次执行所述第一事务中的所述n个操作,其中在执行所述n个操作的过程中,将所述m个操作的操作结果存储在所述线程上下文中,包括:
执行所述n个操作中的第i操作,所述n个操作的执行顺序是根据所述流程模板确定的,其中,i为正整数,i的起始值为1,i≤n;
将所述第i操作的操作结果存储在所述线程上下文中;
在执行完所述第i操作后,令i=i+1,并重复执行所述执行所述n个操作中的第i操作的步骤,直至所述n个操作均执行完成。
5.一种业务事务处理装置,其特征在于,应用于客户端,所述装置包括:
指令获取模块,用于获取用于启动第一事务的开启指令,所述第一事务中包含n个操作,所述n个操作包括流程操作和/或业务操作;
线程上下文建立模块,用于根据所述开启指令,建立线程上下文;
操作确定模块,用于根据流程模板确定所述n个操作中需要将操作结果保存在所述线程上下文中的m个操作;其中,n为正整数,m为非负整数,m≤n;
操作执行模块,用于按照流程模板依次执行所述第一事务中的所述n个操作,其中在执行所述n个操作的过程中,将所述m个操作的操作结果存储在所述线程上下文中;
发送模块,用于在所述第一事务执行完成时,将所述线程上下文中保存的所述m个操作的操作结果发送给服务器;
所述操作确定模块,包括:
模板获取子模块,用于从所述服务器获取流程模板;
调用操作确定子模块,用于根据所述流程模板确定所述第一事务中所包括的n个操作中是否存在被调用操作,所述被调用操作为操作结果需要被相邻的下一操作调用的操作;
操作结果确定子模块,用于当所述第一事务中存在所述被调用操作时,将所述n个操作中除所述被调用操作之外的m个操作确定为所述需要将操作结果保存在所述线程上下文中的m个操作;
所述操作结果确定子模块,还用于当所述第一事务中不存在所述被调用操作时,确定所述n个操作均为需要将操作结果保存在所述线程上下文中的操作。
6.根据权利要求5所述的装置,其特征在于,当所述第一事务中存在所述被调用操作时,所述操作执行模块,包括:
顺序执行子模块,用于执行所述n个操作中的第i操作,所述n个操作的执行顺序是根据所述流程模板确定的,其中,i为正整数,i的起始值为1,i≤n;
操作结果保存子模块,用于当所述第i操作为所述被调用操作时,将所述第i操作的操作结果存储至所述服务器,用于在执行第i+1操作时,从所述服务器调用所述第i操作的操作结果;
所述操作结果保存子模块,还用于当所述第i操作不是所述被调用操作时,将所述第i操作的操作结果存储在所述线程上下文中;
重复执行模块,用于在执行完所述第i操作后,令i=i+1,并重复执行所述执行所述n个操作中的第i操作的步骤,直至所述n个操作均执行完成。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-4中任一项所述方法的步骤。
8.一种电子设备,其特征在于,包括:
权利要求7中所述的计算机可读存储介质;以及
一个或者多个处理器,用于执行所述计算机可读存储介质中的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711038234.5A CN107844363B (zh) | 2017-10-27 | 2017-10-27 | 业务事务处理方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711038234.5A CN107844363B (zh) | 2017-10-27 | 2017-10-27 | 业务事务处理方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107844363A CN107844363A (zh) | 2018-03-27 |
CN107844363B true CN107844363B (zh) | 2020-08-28 |
Family
ID=61680981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711038234.5A Active CN107844363B (zh) | 2017-10-27 | 2017-10-27 | 业务事务处理方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107844363B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109086388B (zh) * | 2018-07-26 | 2020-12-29 | 百度在线网络技术(北京)有限公司 | 区块链数据存储方法、装置、设备及介质 |
CN111353748A (zh) * | 2018-12-21 | 2020-06-30 | 上海戈吉网络科技有限公司 | 一种应用办公自动化的工作流系统 |
CN111090658B (zh) * | 2019-11-08 | 2021-03-02 | 网联清算有限公司 | 异常事务处理方法、系统及其设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7890604B2 (en) * | 2004-05-07 | 2011-02-15 | Microsoft Corproation | Client-side callbacks to server events |
CN102521712A (zh) * | 2011-12-27 | 2012-06-27 | 东软集团股份有限公司 | 一种流程实例数据处理方法和装置 |
US8380788B2 (en) * | 2009-06-23 | 2013-02-19 | Oracle International Corporation | System and method for providing user context support in a native transaction platform |
CN103546440A (zh) * | 2012-07-16 | 2014-01-29 | 上海宝信软件股份有限公司 | 一种客户端发起事务的事务实现方法和系统 |
CN104424018A (zh) * | 2013-08-23 | 2015-03-18 | 阿里巴巴集团控股有限公司 | 分布式计算事务处理方法及装置 |
CN105635208A (zh) * | 2014-10-30 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 一种业务处理方法和装置 |
CN106921734A (zh) * | 2017-02-13 | 2017-07-04 | 上海大学 | 一种基于选择性缓存与同步的客户端与服务器数据交互方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110320347A1 (en) * | 2007-03-30 | 2011-12-29 | Obopay, Inc. | Mobile Networked Payment System |
US10223268B2 (en) * | 2016-02-23 | 2019-03-05 | International Business Systems Corporation | Transactional memory system including cache versioning architecture to implement nested transactions |
-
2017
- 2017-10-27 CN CN201711038234.5A patent/CN107844363B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7890604B2 (en) * | 2004-05-07 | 2011-02-15 | Microsoft Corproation | Client-side callbacks to server events |
US8380788B2 (en) * | 2009-06-23 | 2013-02-19 | Oracle International Corporation | System and method for providing user context support in a native transaction platform |
CN102521712A (zh) * | 2011-12-27 | 2012-06-27 | 东软集团股份有限公司 | 一种流程实例数据处理方法和装置 |
CN103546440A (zh) * | 2012-07-16 | 2014-01-29 | 上海宝信软件股份有限公司 | 一种客户端发起事务的事务实现方法和系统 |
CN104424018A (zh) * | 2013-08-23 | 2015-03-18 | 阿里巴巴集团控股有限公司 | 分布式计算事务处理方法及装置 |
CN105635208A (zh) * | 2014-10-30 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 一种业务处理方法和装置 |
CN106921734A (zh) * | 2017-02-13 | 2017-07-04 | 上海大学 | 一种基于选择性缓存与同步的客户端与服务器数据交互方法 |
Non-Patent Citations (2)
Title |
---|
基于Ajax技术的智能客户端引擎;邵一川,申德荣,赵宏伟,聂铁铮;《计算机工程》;20090630;275-278 * |
基于轻量级Java EE架构电子商务模拟平台的设计与实现;黄欣;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150615;I138-285 * |
Also Published As
Publication number | Publication date |
---|---|
CN107844363A (zh) | 2018-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107844363B (zh) | 业务事务处理方法、装置、存储介质及设备 | |
CN111400000B (zh) | 网络请求处理方法、装置、设备和存储介质 | |
CN113438355B (zh) | 基于云手机的通讯方法、装置、设备以及存储介质 | |
KR102623476B1 (ko) | 클라우드 컴퓨팅 환경에서 가상 에이전트를 위한 시스템들 및 방법들 | |
CN114157701B (zh) | 一种任务测试方法、装置、设备以及存储介质 | |
CN110764894A (zh) | 一种定时任务管理方法、装置、设备及存储介质 | |
CN110781180A (zh) | 一种数据筛选方法和数据筛选装置 | |
CN113393367A (zh) | 图像处理方法、装置、设备和介质 | |
CN106850838A (zh) | 移动终端云应用的控制方法及系统 | |
CN107133741B (zh) | 待办任务处理方法、装置、可读存储介质及电子设备 | |
CN112382294B (zh) | 语音识别方法、装置、电子设备和存储介质 | |
CN111767149B (zh) | 调度方法、装置、设备及存储设备 | |
WO2023169193A1 (zh) | 用于生成智能合约的方法和装置 | |
CN108733468A (zh) | 定时任务动态配置方法及装置、存储介质及服务器集群 | |
CN110893616B (zh) | 一种远程控制方法、装置、计算机设备和存储介质 | |
CN110264035A (zh) | 工作流程的配置方法、装置、终端和存储介质 | |
CN113691403B (zh) | 拓扑节点配置方法、相关装置及计算机程序产品 | |
US20220129423A1 (en) | Method for annotating data, related apparatus and computer program product | |
CN111294377A (zh) | 一种依赖关系的网络请求发送方法、终端装置及存储介质 | |
CN114564249A (zh) | 推荐调度引擎、推荐调度方法及计算机可读存储介质 | |
CN111736712B (zh) | 输入信息的预测方法、系统、服务器及电子设备 | |
CN111080250B (zh) | 流程回退补偿方法、装置、存储介质及电子设备 | |
CN111813529B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN107391354A (zh) | 自动监测终端性能的方法及系统、存储装置 | |
CN112530435A (zh) | 数据传输方法、装置、系统、可读存储介质及电子设备 |
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 |