CN111062684B - 云流程平台下实现业务数据与流程数据一致性处理的系统及其方法 - Google Patents
云流程平台下实现业务数据与流程数据一致性处理的系统及其方法 Download PDFInfo
- Publication number
- CN111062684B CN111062684B CN201911197690.3A CN201911197690A CN111062684B CN 111062684 B CN111062684 B CN 111062684B CN 201911197690 A CN201911197690 A CN 201911197690A CN 111062684 B CN111062684 B CN 111062684B
- Authority
- CN
- China
- Prior art keywords
- flow
- distributed transaction
- transaction
- client
- flow client
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Physics & Mathematics (AREA)
- Human Resources & Organizations (AREA)
- Data Mining & Analysis (AREA)
- General Business, Economics & Management (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- Entrepreneurship & Innovation (AREA)
- Marketing (AREA)
- Economics (AREA)
- Accounting & Taxation (AREA)
- Tourism & Hospitality (AREA)
- Development Economics (AREA)
- Technology Law (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种云流程平台下实现业务数据与流程数据一致性处理的系统,包括分布式事务管理接口模块,用于提供多个分布式事务接口;流程客户端代理模块通过动态代理技术实现对所有的流程客户端的API进行拦截;流程客户端调用上下文管理模块对调用事务性的流程客户端API的元信息进行存储和查询;分布式事务执行模块查找当前事务中所有流程客户端API操作,批量提交到流程引擎端执行。本发明还涉及一种实现云流程平台下的业务数据与流程数据一致性处理控制的方法。采用了本发明的云流程平台下实现业务数据与流程数据一致性处理的系统及其方法,避免了流程平台不再需要实现补偿操作,提升了数据一致性处理的效率;保证了流程客户端API使用方式的透明性。
Description
技术领域
本发明涉及云流程领域,尤其涉及云流程下数据一致性领域,具体是指一种云流程平台下实现业务数据与流程数据一致性处理的系统及其方法。
背景技术
随着信息化的发展,越来越多的公司采用工作流的方式来实现工作过程的自动化、智能化、整合化。工作流是指“业务过程的部分或整体在计算机应用环境下的自动化”,工作流主要解决的问题是:为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
云流程平台是采用云中部署流程平台的方式提供大规模、海量的流程支撑能力。在云流程平台中,流程平台与应用系统独立部署,两者分别使用不同的数据源,应用系统记录业务数据,流程平台记录流程数据。业务数据与流程数据的分离部署模式,导致在实际流程处理过程中存在数据不一致的问题,会导致业务流程无法正确处理。
针对目前云流程平台中流程平台与应用系统独立部署的场景,通常采用SAGAS长事务模型来保证流程数据与业务数据的一致性。Sagas长事务模型是由一个预先定义好执行顺序的子事务集合(T1、T2、……、Tn)和它们对应的补偿子事务集合(C1、C2、……、Cn)组成的。典型的一个完整的交易由T1、T2、……、Tn等多个业务活动组成,每个业务活动可以是流程操作、或者是业务操作,所有的业务活动在Sagas事务下要么全部成功,要么全部回滚,不存在中间状态。Sagas长事务模型执行如图1所示。
具体执行步骤:
1、为每个业务活动定义正交易、补偿交易操作,比如正交易操作T1、补偿交易操作C1;
2、定义正交易组合,比如按照T1、T2、……、Tn的方式编排正交易组合;
3、正交易组合中,如果Tn业务活动发生错误,按照执行的反顺序(Cn、……、C2、C1),实时执行补偿操作,实现事务回滚。
根据以上步骤通过Sagas长事务模型实现了业务数据与流程数据的一致性。
以下针对上面的技术实现方式分析对应的不足:
不足1:执行效率低下:基于Sagas长事务模型的实现原理,所有的业务活动在事务提交前均已实际执行,在发生异常时,再反向执行补偿操作,整个处理过程执行时间长,效率低下;
不足2:所有业务活动均需要实现补偿交易:为了完成业务补偿需要流程操作、业务操作均需要实现补偿操作,因为流程状态与业务关联非常紧密,对流程操作实现补偿操作非常困难,实施难度大;
不足3:对流程平台侵入性强:由于需要额外定义流程操作的补偿操作,对流程平台的侵入性较强,不具备普适性。
发明内容
本发明的目的是克服了上述现有技术的缺点,提供了一种满足安全性、效率高、适用范围广泛的云流程平台下实现业务数据与流程数据一致性处理的系统及其方法。
为了实现上述目的,本发明的云流程平台下实现业务数据与流程数据一致性处理的系统及其方法如下:
该云流程平台下实现业务数据与流程数据一致性处理的系统,其主要特点是,所述的系统包括:
分布式事务管理接口模块,用于提供多个分布式事务接口,并将分布式事务对象与线程上下文绑定;
流程客户端代理模块,与所述的分布式事务管理接口模块相连接,用于通过动态代理技术实现对所有的流程客户端的API进行拦截,并将元信息存放入流程客户端调用上下文中;
流程客户端调用上下文管理模块,与所述的流程客户端代理模块相连接,用于对调用事务性的流程客户端API的元信息进行存储和查询;
分布式事务执行模块,与所述的流程客户端调用上下文管理模块相连接,用于查找当前事务中所有流程客户端API操作,批量提交到流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作。
较佳地,所述的分布式事务执行模块包括:
分布式事务开始单元,与所述的流程客户端调用上下文管理模块相连接,用于创建分布式事务对象,并将当前分布式事务对象与线程上下文绑定;
分布式事务提交单元,与所述的分布式事务开始单元相连接,用于在流程客户端调用上下文管理模块查找当前事务中所有流程客户端API操作,批量提交至流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作;
分布式事务回滚单元,与所述的分布式事务提交单元相连接,用于对存在的用户业务事务执行回滚操作。
该利用上述系统实现云流程平台下的业务数据与流程数据一致性处理控制的方法,其主要特点是,所述的方法包括以下步骤:
(1)所述的分布式事务管理接口模块提供多个分布式事务接口,并将分布式事务对象与线程上下文绑定;
(2)所述的流程客户端代理模块在业务应用调用流程客户端接口时,通过动态代理技术实现对所有的流程客户端的API进行拦截,并对事务性的流程客户端API调用的元信息存放入流程客户端调用上下文中,非事务性的流程客户端API调用则直接转发给流程引擎处理;
(3)所述的流程客户端调用上下文管理模块对调用事务性的流程客户端API的元信息进行存储和查询;
(4)所述的分布式事务执行模块查找当前事务中所有流程客户端API操作,批量提交到流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作。
较佳地,所述的步骤(1)具体包括以下步骤:
(1.1)所述的分布式事务管理接口模块开启分布式事务操作,并关联业务事务操作;
(1.2)所述的分布式事务管理接口模块提交分布式事务操作;
(1.3)所述的分布式事务管理接口模块回滚分布式事务,并调用业务补偿接口操作;
(1.4)所述的分布式事务管理接口模块获取当前分布式事务状态操作;
(1.5)所述的分布式事务管理接口模块获取当前分布式事务ID操作。
较佳地,所述的步骤(2)具体包括以下步骤:
(2.1)定义流程客户端API的事务类型;
(2.2)定义流程客户端API的代理类;
(2.3)获取流程客户端API的代理对象;
(2.4)对在业务流程中所有对流程客户端API的访问执行拦截;
(2.5)判断是否需要代理,如果是,则拦截调用并收集流程客户端API的元信息,继续步骤(2.6);否则,将请求发送到云流程平台引擎端;
(2.6)将调用信息按照时间排序,并保存到流程客户端调用上下文管理模块。
较佳地,所述的步骤(4)具体包括以下步骤:
(4.1)创建分布式事务对象,并将当前分布式事务对象与线程上下文绑定;
(4.2)在流程客户端调用上下文管理模块查找当前事务中所有流程客户端API操作,批量提交至流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作;
(4.3)对存在的用户业务事务执行回滚操作。
较佳地,所述的步骤(4.1)具体包括以下步骤:
(4.1.1)清除线程上下文中绑定的分布式事务对象;
(4.1.2)创建一个新的分布式事务对象;
(4.1.3)设置分布式事务对象的全局唯一的ID;
(4.1.4)判断是否存在用户业务事务,如果是,则开启用户业务事务,继续步骤(4.1.5);否则,继续步骤(4.1.5);
(4.1.5)将事务开始作为一个操作存入流程客户端调用上下文管理模块;
(4.1.6)将当前的分布式事务对象绑定到线程上下文中。
较佳地,所述的步骤(4.2)具体包括以下步骤:
(4.2.1)从线程上下文获取分布式事务对象;
(4.2.2)查找所有的流程客户端API操作;
(4.2.3)批量执行所有的流程客户端API操作,判断执行操作是否成功,如果是,则继续步骤(4.2.4);否则,标记事务状态为回滚中状态,同时抛出异常信息,退出步骤;
(4.2.4)清空流程客户端调用上下文中的操作数据;
(4.2.5)标记事务状态为已提交状态,清空线程上下文中的分布式事务对象。
较佳地,所述的步骤(4.3)具体包括以下步骤:
(4.3.1)从线程上下文获取分布式事务对象;
(4.3.2)判断是否存在用户业务事务,如果是,则执行用户业务事务的回滚操作,继续步骤(4.3.3);否则,继续步骤(4.3.3);
(4.3.3)标记事务状态为已回滚状态,即分布式事务已处于回滚完成状态;
(4.3.4)清空流程客户端调用上下文中的操作数据;
(4.3.5)清空线程上下文中的分布式事务对象;
(4.3.6)判断是否存在业务补偿,如果是,则执行业务补偿操作;否则,退出步骤。
采用了本发明的云流程平台下实现业务数据与流程数据一致性处理的系统及其方法,由于实现了对流程操作API批量后提交的模式,并采用了动态代理的模式,从而避免了流程平台不再需要实现补偿操作,提升了数据一致性处理的效率;保证了流程客户端API使用方式的透明性,简化了数据一致性的开发模式;另外还避免了对流程平台的侵入性,具备较强的推广价值。
附图说明
图1为现有技术的Sagas长事务模型执行示意图。
图2为本发明的云流程平台下实现业务数据与流程数据一致性处理的系统的结构图。
图3为本发明的实现云流程平台下的业务数据与流程数据一致性处理控制的方法的流程客户端代理模块操作步骤流程图。
图4为本发明的实现云流程平台下的业务数据与流程数据一致性处理控制的方法的分布式事务开始的操作步骤流程图。
图5为本发明的实现云流程平台下的业务数据与流程数据一致性处理控制的方法的分布式事务提交的操作步骤流程图。
图6为本发明的实现云流程平台下的业务数据与流程数据一致性处理控制的方法的分布式事务回滚的操作步骤流程图。
图7为本发明的实现云流程平台下的业务数据与流程数据一致性处理控制的方法的实施例的流程图。
具体实施方式
为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。
本发明的该云流程平台下实现业务数据与流程数据一致性处理的系统,其中包括:
分布式事务管理接口模块,用于提供多个分布式事务接口,并将分布式事务对象与线程上下文绑定;
流程客户端代理模块,与所述的分布式事务管理接口模块相连接,用于通过动态代理技术实现对所有的流程客户端的API进行拦截,并将元信息存放入流程客户端调用上下文中;
流程客户端调用上下文管理模块,与所述的流程客户端代理模块相连接,用于对调用事务性的流程客户端API的元信息进行存储和查询;
分布式事务执行模块,与所述的流程客户端调用上下文管理模块相连接,用于查找当前事务中所有流程客户端API操作,批量提交到流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作。
作为本发明的优选实施方式,所述的分布式事务执行模块包括:
分布式事务开始单元,与所述的流程客户端调用上下文管理模块相连接,用于创建分布式事务对象,并将当前分布式事务对象与线程上下文绑定;
分布式事务提交单元,与所述的分布式事务开始单元相连接,用于在流程客户端调用上下文管理模块查找当前事务中所有流程客户端API操作,批量提交至流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作;
分布式事务回滚单元,与所述的分布式事务提交单元相连接,用于对存在的用户业务事务执行回滚操作。
本发明的该利用上述系统实现云流程平台下的业务数据与流程数据一致性处理控制的方法,其中包括以下步骤:
(1)所述的分布式事务管理接口模块提供多个分布式事务接口,并将分布式事务对象与线程上下文绑定;
(1.1)所述的分布式事务管理接口模块开启分布式事务操作,并关联业务事务操作;
(1.2)所述的分布式事务管理接口模块提交分布式事务操作;
(1.3)所述的分布式事务管理接口模块回滚分布式事务,并调用业务补偿接口操作;
(1.4)所述的分布式事务管理接口模块获取当前分布式事务状态操作;
(1.5)所述的分布式事务管理接口模块获取当前分布式事务ID操作;
(2)所述的流程客户端代理模块在业务应用调用流程客户端接口时,通过动态代理技术实现对所有的流程客户端的API进行拦截,并对事务性的流程客户端API调用的元信息存放入流程客户端调用上下文中,非事务性的流程客户端API调用则直接转发给流程引擎处理;
(2.1)定义流程客户端API的事务类型;
(2.2)定义流程客户端API的代理类;
(2.3)获取流程客户端API的代理对象;
(2.4)对在业务流程中所有对流程客户端API的访问执行拦截;
(2.5)判断是否需要代理,如果是,则拦截调用并收集流程客户端API的元信息,继续步骤(2.6);否则,将请求发送到云流程平台引擎端;
(2.6)将调用信息按照时间排序,并保存到流程客户端调用上下文管理模块;
(3)所述的流程客户端调用上下文管理模块对调用事务性的流程客户端API的元信息进行存储和查询;
(4)所述的分布式事务执行模块查找当前事务中所有流程客户端API操作,批量提交到流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作;
(4.1)创建分布式事务对象,并将当前分布式事务对象与线程上下文绑定;
(4.1.1)清除线程上下文中绑定的分布式事务对象;
(4.1.2)创建一个新的分布式事务对象;
(4.1.3)设置分布式事务对象的全局唯一的ID;
(4.1.4)判断是否存在用户业务事务,如果是,则开启用户业务事务,继续步骤(4.1.5);否则,继续步骤(4.1.5);
(4.1.5)将事务开始作为一个操作存入流程客户端调用上下文管理模块;
(4.1.6)将当前的分布式事务对象绑定到线程上下文中;
(4.2)在流程客户端调用上下文管理模块查找当前事务中所有流程客户端API操作,批量提交至流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作;
(4.2.1)从线程上下文获取分布式事务对象;
(4.2.2)查找所有的流程客户端API操作;
(4.2.3)批量执行所有的流程客户端API操作,判断执行操作是否成功,如果是,则继续步骤(4.2.4);否则,标记事务状态为回滚中状态,同时抛出异常信息,退出步骤;
(4.2.4)清空流程客户端调用上下文中的操作数据;
(4.2.5)标记事务状态为已提交状态,清空线程上下文中的分布式事务对象;
(4.3)对存在的用户业务事务执行回滚操作;
(4.3.1)从线程上下文获取分布式事务对象;
(4.3.2)判断是否存在用户业务事务,如果是,则执行用户业务事务的回滚操作,继续步骤(4.3.3);否则,继续步骤(4.3.3);
(4.3.3)标记事务状态为已回滚状态,即分布式事务已处于回滚完成状态;
(4.3.4)清空流程客户端调用上下文中的操作数据;
(4.3.5)清空线程上下文中的分布式事务对象;
(4.3.6)判断是否存在业务补偿,如果是,则执行业务补偿操作;否则,退出步骤。
本发明的具体实施方式中,本发明针对云流程平台下实现业务数据与流程数据一致性处理的系统及其方法,主要实现以下目的:在分布式事务提交前,对流程事务性API操作进行缓存,记录下所有的操作名称、对应的参数等,并不真正提交到流程平台端;在分布式事务提交时,再批量提交到流程平台,并使用本地事务执行所有的流程API操作;提升了数据一致性处理的效率,同时更适合流程类的长流程事务;通过在流程客户端API提供动态代理的处理方式,在分布式事务模式下的流程客户端API调用与不使用分布式事务场景下保持一致,保证了流程客户端API使用方式的透明性,简化开发模式;流程平台不再需要实现补偿操作,从而避免了实现数据一致性对流程平台的侵入性,具备推广价值。
如图2所示,本发明分为分布式事务管理接口模块、流程客户端代理模块、流程客户端调用上下文管理模块、分布式事务执行模块。
分布式事务管理接口模块,提供多个分布式事务接口,并将分布式事务对象与线程上下文绑定;流程客户端代理模块,在业务应用调用流程客户端接口时,通过动态代理技术实现对所有的流程客户端的API进行拦截,判断是否是事务性的流程客户端API,并对事务性的流程客户端API调用的元信息存放入流程客户端调用上下文中,非事务性的流程客户端API调用则直接转发给流程引擎处理;流程客户端调用上下文管理模块,负责对调用事务性的流程客户端API的元信息进行存储和查询;分布式事务执行模块,从流程客户端调用上下文管理模块中查找当前事务中所有流程客户端API操作,批量提交到流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作。
下面将详细描述分布式事务管理接口模块、流程客户端代理模块、流程客户端调用上下文管理模块、分布式事务执行模块。
一、分布式事务管理接口模块
分布式事务管理接口模块,定义分布式事务核心接口,主要包括开启分布式事务操作、开启分布式事务同时关联业务事务操作、提交分布式事务操作、回滚分布式事务操作、回滚分布式事务同时调用业务补偿接口操作、获取当前分布式事务状态操作、获取当前分布式事务ID操作。
分布式事务管理接口模块提供的核心接口参见下表:
操作名 | 功能描述 |
begin() | 开启分布式事务 |
beginWithUserTransaction() | 开启分布式事务,同时将该事务与用户事务关联 |
commit() | 提交分布式事务 |
rollback() | 回滚分布式事务 |
rollbackWithCompensate() | 回滚分布式事务,并回调业务补偿接口 |
getStatus() | 获取当前分布式事务的状态 |
getTransactionID() | 获取当前分布式事务的ID |
在分布式事务开启操作中,将分布式事务对象与线程上下文绑定,以支持在一个完整的事务操作过程中方便从线程上下文快速获取分布式事务对象。
二、流程客户端代理模块
流程客户端代理模块,在业务应用调用流程客户端接口的时机,通过动态代理技术实现对所有的流程客户端的API进行拦截,判断是否是事务性的流程客户端API;对于事务性的流程客户端API的调用,将调用元信息存放入流程客户端调用上下文中;对于非事务性的流程客户端API调用直接转发给流程引擎处理。通过代理模块,实现了对流程客户端API调用的缓存,记录下所有的操作名称、对应的参数类型、参数值等,并不真正提交到流程平台;在分布式事务提交时,再批量提交到流程平台,并使用本地事务执行所有的流程API操作。流程客户端代理模块操作的步骤如图3所示。
步骤说明:
步骤1:定义流程客户端API的事务类型:分为事务性API、非事务性API;定义以create、add开头的操作类API为事务性API接口,会被代理拦截;定义以query、find、get、generate等开头的操作类API为非事务性API,不会被代理拦截;
定义事务类型的配置参见如下:
//非事务性API
query_methods_prefix=find,query,get,generate
//事务性API
create_methods_prefix=create,add
步骤2:定义流程客户端API的代理类:定义代理类,在业务流程端发起对流程客户端API的访问时,自动被代理类拦截执行;
代理类的示意代码参见如下:
步骤3:获取流程客户端API的代理对象:业务流程中所有对流程客户端API的访问,统一返回流程客户端API的代理对象,统一进行拦截处理;
获取流程客户端API的代理对象示例代码参见如下:
步骤4:执行拦截:在业务流程中所有对流程客户端API的访问,统一被代理类拦截;
步骤5:判断是否需要代理:代理类判断当前的流程客户端API是否需要代理拦截,判断条件包括:
1)当前调用是否在事务上下文中,并且事务状态为活动状态;
2)当前调用的流程客户端API是否是事务性API;
当两个条件都为是,则跳转到步骤7,否则跳转到步骤6;
步骤6:将请求发送到云流程平台引擎端:当前的流程操作无需加入分布式事务,直接将对流程客户端API的访问,发送到云流程平台引擎端,执行流程引擎的操作;
步骤7:拦截调用并收集流程客户端API的元信息:将当前的调用拦截掉,不会真正发送到云流程平台引擎端;收集当前调用的流程客户端API的基本信息,包括操作名、操作参数类型、参数值等信息;
步骤8:存入流程客户端调用上下文管理模块:将步骤7收集的调用信息按照时间排序,并保存到流程客户端调用上下文管理模块;
三、流程客户端调用上下文管理模块
流程客户端调用上下文管理模块,负责对调用事务性的流程客户端API的元信息进行存储和查询,主要提供的操作有:
1)将API调用操作信息存入上下文;
2)获取事务ID对应的API调用列表;
3)移除事务ID对应的API调用列表;
4)判断事务ID对应的事务是否已经开启等。
其中2)获取事务ID对应的API调用列表,返回信息需要根据API调用的时间戳正序排序。
四、分布式事务执行模块
分布式事务执行模块,主要包括分布式事务开始,分布式事务提交,分布式事务回滚三部分。
1、分布式事务开始,包括创建一个分布式事务对象;并将当前分布式事务对象与线程上下文绑定,以支持在一个完整的事务操作过程中方便从线程上下文快速获取分布式事务对象;如果存在用户事务,则同时开启用户事务;
分布式事务开始的操作步骤如图4所示,步骤说明:
步骤1:清除线程上下文中绑定的分布式事务对象:从当前线程上下文中清除掉之前绑定(如果有)的分布式事务对象;
步骤2:创建一个新的分布式事务对象;
步骤3:设置分布式事务对象的全局唯一的ID:根据UUID或者其它全局ID生成器,生成全局唯一的ID,作为步骤2中创建的分布式事务对象的事务ID;
步骤4:判断是否存在用户业务事务:如果存在用户业务事务,则执行步骤5;否则执行步骤6;
步骤5:开启用户业务事务:通过调用用户业务事务的begin()操作,开启用户业务事务;
步骤6:将事务开始作为一个操作存入流程客户端调用上下文管理模块:收集事务开始操作信息,并存入流程客户端调用上下文管理模块中;
步骤7:将当前的分布式事务对象绑定到线程上下文中:将步骤2中创建的分布式事务对象绑定到当前线程上下文中;
2、分布式事务提交,从流程客户端调用上下文管理模块中查找当前事务中所有流程客户端API操作,批量提交到流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作;
分布式事务提交的操作步骤如图5所示,步骤说明:
步骤1:从线程上下文获取分布式事务对象;
步骤2:查找所有的流程客户端API操作:从流程客户端调用上下文中,根据分布式事务的ID查找所有的流程客户端API操作;
步骤3:批量执行所有的流程客户端API操作:将所有的流程客户端API操作发送到云流程平台引擎端,按照顺序执行所有的流程客户端API;
步骤4:判断步骤3是否执行成功:步骤3执行失败跳转到步骤5,步骤3执行成功则跳转到步骤6;
步骤5:标记事务状态为“RollingBack”,同时抛出异常信息;
步骤6:清空流程客户端调用上下文中的操作数据:根据分布式事务ID从流程客户端调用上下文中清空所有的流程操作;
步骤7:标记事务状态为“Committed”;
步骤8:清空线程上下文中的分布式事务对象;
3、分布式事务回滚,
分布式事务回滚的操作步骤如图6所示,步骤说明:
步骤1:从线程上下文获取分布式事务对象;
步骤2:判断是否存在用户业务事务:存在用户业务事务,则执行步骤3;否则执行步骤4;
步骤3:执行用户业务事务的回滚操作;
步骤4:标记事务状态为“RolledBack”,表示分布式事务已经处于回滚完成状态;
步骤5:清空流程客户端调用上下文中的操作数据:根据分布式事务ID从流程客户端调用上下文中清空所有的流程操作;
步骤6:清空线程上下文中的分布式事务对象;
步骤7:判断是否存在业务补偿;存在业务补偿操作则执行步骤8,否则直接结束;
步骤8:执行业务补偿操作。
本方面以金融领域常用的录入复核业务流程为具体实施例,如图7所示:
录入复核的是在银行业务中对交易类应用常用的一个业务场景,举例来说在对公业务中,由于对公业务金额数量庞大,首先有一个柜员进行数据录入,同时需要另一个柜员进行复核录入,这样保证金额数据的安全性,复核柜员不能与录入柜员相同。
录入复核主要的操作说明如下:
1)启动并创建流程实例,发起一笔录入复核业务;这是一个流程操作API;
2)工单首次录入,是第一个业务员在录入界面的首次录入区域录入工单信息;这是一个业务操作;
3)工单复核录入,是第二个业务员在录入界面的复核区域重新录入工单信息;这是一个业务操作;
4)创建复核任务,在流程中创建一个复核任务,由其它人员比对两次的录入信息或者由计算机自动执行对比;这是一个流程操作API;
场景:在上面4步动作中,希望流程操作API与业务操作API保持事务一致性,即4步操作全部成功或者全部失败,不能存在中间状态。
根据本发明的方法,采用实现业务数据与流程数据一致性的系统和方法,来实现上面定义的业务场景,将会明显感受到本发明所具有的简单便捷的优势。
一、分布式事务管理接口模块
定义分布式事务管理接口IClientGlobalTransactionManager,用于管理分布式事务IClientGlobalTransaction对象,主要包括:
1)开启分布式事务操作begin();
2)开启分布式事务同时关联业务事务操作beginWithUserTransaction();
3)提交分布式事务操作commit();
4)回滚分布式事务操作rollback();
5)回滚分布式事务同时调用业务补偿接口操作rollbackWithCompensate();
6)获取当前分布式事务状态操作getStatus();
7)获取当前分布式事务ID操作getTransactionID();
分布式事务管理接口IClientGlobalTransactionManager的声明如下:
在事务开启时将分布式事务对象绑定线程上下文中,声明ThreadLocal类型的变量threadLocal,并将分布式事务对象IClientGlobalTransaction绑定到线程变量threadLocal中。
分布式事务对象绑定线程上下文示例代码参考如下:
ThreadLocal<IClientGlobalTransaction>threadLocal=new ThreadLocal<IClientGlobalTransaction>();
threadLocal.set(IClientGlobalTransaction tx);
二:流程客户端代理模块
为所有的流程客户端API定义动态代理,并拦截所有对流程客户端API的请求,对于事务性的流程客户端API的调用,将调用元信息存放入流程客户端调用上下文中;对于非事务性的流程客户端API调用直接转发给流程引擎处理。
本模块的具体实现如下:
1、定义流程客户端API的事务类型,声明配置文件dist-trans.properties,定义流程客户端API的事务类型:
1)事务性API接口:定义以create、add开头的操作类API为事务性API接口,会被代理拦截;
2)非事务性API接口:定义以query、find、get、generate等开头的操作类API为非事务性API,不会被代理拦截;
dist-trans.properties文件的具体声明格式如下:
//非事务性API
query_methods_prefix=find,query,get,generate
//事务性API
create_methods_prefix=create,add
2、基于JDK定义的动态代理接口InvocationHandler定义流程客户端API的代理类BPSApiProxyHandler,在流程客户度API操作被调用时,会被该代理类接管处理。
代理类BPSApiProxyHandler的示例代码参见如下:
3、定义获取流程客户端API的代理对象类BPSApiProxyHelper,在获取所有的流程客户端API的对象时,返回步骤2中定义的代理类对象,实现统一进行拦截处理;
获取流程客户端API的代理对象类BPSApiProxyHelper的示例代码参见如下:
/>
参数service是流程客户端API实际的对象,参数serviceInterface是流程客户端API对应的接口,返回值为代理对象;
4、在场景中定义的两个流程操作:“启动并创建流程实例”、“创建复核任务”,在实际发生调用时,被代理类BPSApiProxyHandler拦截处理;
5、对进入代理的所有流程客户端API的操作判断是否需要代理,判断规则如下:
1)判断当前调用是否在事务上下文中,会判断当前线程上下文变量threadLocal中是否存在分布式事务对象IClientGlobalTransaction,并且状态为激活状态;
2)判断流程客户端API是否为事务性操作,根据步骤1中的定义,场景中两个流程操作“启动并创建流程实例”、“创建复核任务”均以create开头,是事务性操作;
6、根据步骤5中的判断,场景中的两个流程操作均是事务性的API,在分布式事务提交前,不会将这两个流程操作直接发送到云流程平台的引擎端执行;
7、根据步骤5中的判断,场景中的两个流程操作均是事务性的API,代理类BPSApiProxyHandler会收集场景中两个流程操作:“启动并创建流程实例”,对应的元信息为BPSApiInvokeInfo1;“创建复核任务”,对应的元信息为BPSApiInvokeInfo2;
定义流程客户端API操作元信息收集类为BPSApiInvokeInfo,主要包括租户ID、调用ID、事务ID、当前用户ID、事务状态、调用时间、操作调用信息类BPSApiInvoke(操作类名、操作方法名、操作参数类型数组、操作参数值数组);
流程客户端API操作元信息收集类BPSApiInvokeInfo与操作调用信息类BPSApiInvoke的示例代码参考如下:
/>
8、将步骤7中生成的流程客户端API操作元信息BPSApiInvokeInfo1(启动并创建流程实例)、BPSApiInvokeInfo2(创建复核任务)元信息,保存到流程客户端上下文管理模块中;
示例代码参见如下:
invokeContext.addInvoke(BPSApiInvokeInfo1);
invokeContext.addInvoke(BPSApiInvokeInfo1);
其中invokeContext是流程客户端上下文实例类,参数BPSApiInvokeInfo1、BPSApiInvokeInfo2是步骤7中流程客户端API操作的元信息收集类实例;
三、流程客户端调用上下文管理模块
流程客户端调用上下文管理模块可以采用数据库或者缓存等技术来实现对调用操作API的存储管理。定义流程上下文接口类IApiInvokeContext、实现类ClientApiInvokeContext;在本例中采用JVM中的HashMap进行本地的存储。
流程上下文接口类IApiInvokeContext定义的操作包括:
1)addInvoke():将API调用操作信息存入上下文;
2)getInvokes():获取事务ID对应的API调用列表;
3)removeInvokes():移除事务ID对应的API调用列表;
4)isTransactionBegin():判断事务ID对应的事务是否已经开启等;
流程上下文接口类IApiInvokeContext示例代码参见如下:
实现类ClientApiInvokeContext示例代码参见如下:
四:分布式事务执行模块
结合上面的场景,使用分布式事务来实现业务数据与流程数据的一致性;本示例针对业务数据的操作使用编程式事务,业务系统需要自己编码实现业务事务,在业务操作和流程操作都做完之后,先提交业务事务,再提交分布式事务;如果在提交业务事务时失败,回滚业务事务,并同时回滚分布式事务。
针对场景中的四个步骤,启动并创建流程实例、工单首次录入、工单复核录入、创建复核任务,采用如下的示例代码展示分布式事务的执行:
接下来根据分布式事务开始、分布式事务提交、分布式事务回滚三部分来实现。
1、分布式事务开始
通过分布式事务管理类IClientGlobalTransactionManager的begin()操作开启分布式事务,开启后场景中定义的4步操作(启动并创建流程实例、工单首次录入、工单复核录入、创建复核任务),将受分布式事务的管理,开启后在分布式事务管理中具体操作步骤如下:
1)从当前线程上下文中清除掉之前绑定的分布式事务对象;
2)创建一个新的分布式事务对象ClientGlobalTransaction;
3)设置分布式事务对象的全局唯一的ID,通过UUID创建全局唯一的ID,“d5e80fdb-113b-4a2b-92ab-2850c6098dba”;
4)判断是否存在用户业务事务,本场景中没有传入用户事务,跳转到步骤6执行;
5)如果存在用户事务,则调用用户事务的begin()操作,开启用户事务;
6)收集事务开始操作的元数据,并存入流程客户端调用上下文中;
7)将步骤2中创建的分布式事务对象ClientGlobalTransaction,绑定到当前的线程上下文中;
2、分布式事务提交
分布式事务开始后,基于场景的需求,分别编码执行场景中定义的4个操作:
操作一:启动并创建流程实例
long procInstId=bpsClient.getProcessInstManager().
createAndStartProcessInstance("defName","instName","instDesc");
操作二:工单首次录入
conn.createStatement().executeUpdate(“工单首次录入SQL”);
操作三:工单复核录入
conn.createStatement().executeUpdate(“工单复核录入SQL”);
操作四:创建复核任务
bpsClient.getWorkItemInstManager().createWorkItem(procInstId,
"actInstId");
由于启动了分布式事务,操作一(启动并创建流程实例)、操作四(创建复核任务)是事务性API操作,在代码执行过程中并不会直接提交给云流程平台引擎端,而是被代理拦截后缓存在流程客户端调用上下文管理模块;在分布式事务提交后(globalTxMgr.commit()),再批量发送到云流程平台引擎端执行;
分布式事务提交的具体操作步骤如下:
1)从线程上下文获取分布式事务对象ClientGlobalTransaction;
2)根据分布式事务ID“d5e80fdb-113b-4a2b-92ab-2850c6098dba”,从流程客户端调用上下文中查找所有的流程操作API信息,会查找到BPSApiInvokeInfo1(操作一:启动并创建流程实例)、BPSApiInvokeInfo2(操作四:创建复核任务)操作元信息;
3)将步骤2中查找到的两个流程操作信息:BPSApiInvokeInfo1(操作一:启动并创建流程实例)、BPSApiInvokeInfo2(操作四:创建复核任务),批量发送到云流程平台引擎,并按照顺序执行;
4)步骤3执行成功,跳转到步骤6;步骤3执行失败,跳转到步骤5;本部分示例按照步骤3执行成功来继续执行;
5)将分布式事务对象ClientGlobalTransaction标记状态为“RollingBack”,同时抛出异常信息RuntimeException();此时业务操作执行成功,流程操作失败,则标记事务状态为“RollingBack”,最后会触发业务的补偿操作;
6)根据分布式事务ID“d5e80fdb-113b-4a2b-92ab-2850c6098dba”从流程客户端调用上下文中清空所有的流程操作;
7)将分布式事务对象ClientGlobalTransaction标记状态为“Committed”;
8)清空线程上下文中的分布式事务对象ClientGlobalTransaction;
3、分布式事务回滚
针对场景中的四个步骤,启动并创建流程实例、工单首次录入、工单复核录入、创建复核任务,任何一个步骤出现错误都会触发分布式事务回滚操作。
本例中假设业务事务提交失败,导致整个分布式事务触发回滚操作,来说明分布式事务回滚的具体操作步骤如下:
1)从线程上下文获取分布式事务对象ClientGlobalTransaction;
2)判断是否存在用户业务事务:存在用户业务事务,则执行步骤3;否则执行步骤4;本例中没有传入用户业务事务,所以会继续执行步骤4;
3)执行用户业务事务的回滚操作;
4)标记分布式事务对象ClientGlobalTransaction的状态为“RolledBack”,表示分布式事务已经处于回滚完成状态;
5)根据分布式事务ID“d5e80fdb-113b-4a2b-92ab-2850c6098dba”从流程客户端调用上下文中清空所有的流程操作;
6)清空线程上下文中的分布式事务对象ClientGlobalTransaction;
7)判断是否存在业务补偿;存在业务补偿操作则执行步骤8,否则直接结束;本场景中业务操作因为提交出错,并没有提交成功,不需要定义业务补偿操作,至此分布式事务回滚完成;
8)执行业务补偿操作;
按照以上实施步骤,根据业务需求灵活的完成了业务数据与流程数据一致性的需求,开发人员只需要简单的使用分布式事务API串联业务操作和流程操作即可。
采用了本发明的云流程平台下实现业务数据与流程数据一致性处理的系统及其方法,由于实现了对流程操作API批量后提交的模式,并采用了动态代理的模式,从而避免了流程平台不再需要实现补偿操作,提升了数据一致性处理的效率;保证了流程客户端API使用方式的透明性,简化了数据一致性的开发模式;另外还避免了对流程平台的侵入性,具备较强的推广价值。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
Claims (9)
1.一种云流程平台下实现业务数据与流程数据一致性处理的系统,其特征在于,所述的系统包括:
分布式事务管理接口模块,用于提供多个分布式事务接口,并将分布式事务对象与线程上下文绑定;
流程客户端代理模块,与所述的分布式事务管理接口模块相连接,用于通过动态代理技术实现对所有的流程客户端的API进行拦截,并将元信息存放入流程客户端调用上下文中;
流程客户端调用上下文管理模块,与所述的流程客户端代理模块相连接,用于对调用事务性的流程客户端API的元信息进行存储和查询;
分布式事务执行模块,与所述的流程客户端调用上下文管理模块相连接,用于查找当前事务中所有流程客户端API操作,批量提交到流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作;
所述的流程客户端代理模块在业务应用调用流程客户端接口时,通过动态代理技术实现对所有的流程客户端的API进行拦截,判断是否是事务性的流程客户端API;对于事务性的流程客户端API的调用,将调用元信息存放入流程客户端调用上下文中;对于非事务性的流程客户端API调用直接转发给流程引擎处理;通过流程客户端代理模块,对流程客户端API调用的缓存,记录下所有的操作名称、对应的参数类型、参数值,在分布式事务提交时,再批量提交到流程平台,并使用本地事务执行所有的流程API操作。
2.根据权利要求1所述的云流程平台下实现业务数据与流程数据一致性处理的系统,其特征在于,所述的分布式事务执行模块包括:
分布式事务开始单元,与所述的流程客户端调用上下文管理模块相连接,用于创建分布式事务对象,并将当前分布式事务对象与线程上下文绑定;
分布式事务提交单元,与所述的分布式事务开始单元相连接,用于在流程客户端调用上下文管理模块查找当前事务中所有流程客户端API操作,批量提交至流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作;
分布式事务回滚单元,与所述的分布式事务提交单元相连接,用于对存在的用户业务事务执行回滚操作。
3.一种基于权利要求1所述的系统实现云流程平台下的业务数据与流程数据一致性处理控制的方法,其特征在于,所述的方法包括以下步骤:
(1)所述的分布式事务管理接口模块提供多个分布式事务接口,并将分布式事务对象与线程上下文绑定;
(2)所述的流程客户端代理模块在业务应用调用流程客户端接口时,通过动态代理技术实现对所有的流程客户端的API进行拦截,并对事务性的流程客户端API调用的元信息存放入流程客户端调用上下文中,非事务性的流程客户端API调用则直接转发给流程引擎处理;
(3)所述的流程客户端调用上下文管理模块对调用事务性的流程客户端API的元信息进行存储和查询;
(4)所述的分布式事务执行模块查找当前事务中所有流程客户端API操作,批量提交到流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作。
4.根据权利要求3所述的实现云流程平台下的业务数据与流程数据一致性处理控制的方法,其特征在于,所述的步骤(1)具体包括以下步骤:
(1.1)所述的分布式事务管理接口模块开启分布式事务操作,并关联业务事务操作;
(1.2)所述的分布式事务管理接口模块提交分布式事务操作;
(1.3)所述的分布式事务管理接口模块回滚分布式事务,并调用业务补偿接口操作;
(1.4)所述的分布式事务管理接口模块获取当前分布式事务状态操作;
(1.5)所述的分布式事务管理接口模块获取当前分布式事务ID操作。
5.根据权利要求3所述的实现云流程平台下的业务数据与流程数据一致性处理控制的方法,其特征在于,所述的步骤(2)具体包括以下步骤:
(2.1)定义流程客户端API的事务类型;
(2.2)定义流程客户端API的代理类;
(2.3)获取流程客户端API的代理对象;
(2.4)对在业务流程中所有对流程客户端API的访问执行拦截;
(2.5)判断是否需要代理,如果是,则拦截调用并收集流程客户端API的元信息,继续步骤(2.6);否则,将请求发送到云流程平台引擎端;
(2.6)将调用信息按照时间排序,并保存到流程客户端调用上下文管理模块。
6.根据权利要求3所述的实现云流程平台下的业务数据与流程数据一致性处理控制的方法,其特征在于,所述的步骤(4)具体包括以下步骤:
(4.1)创建分布式事务对象,并将当前分布式事务对象与线程上下文绑定;
(4.2)在流程客户端调用上下文管理模块查找当前事务中所有流程客户端API操作,批量提交至流程引擎端执行,并根据流程引擎返回的异常处理业务应用的补偿操作;
(4.3)对存在的用户业务事务执行回滚操作。
7.根据权利要求6所述的实现云流程平台下的业务数据与流程数据一致性处理控制的方法,其特征在于,所述的步骤(4.1)具体包括以下步骤:
(4.1.1)清除线程上下文中绑定的分布式事务对象;
(4.1.2)创建一个新的分布式事务对象;
(4.1.3)设置分布式事务对象的全局唯一的ID;
(4.1.4)判断是否存在用户业务事务,如果是,则开启用户业务事务,继续步骤(4.1.5);否则,继续步骤(4.1.5);
(4.1.5)将事务开始作为一个操作存入流程客户端调用上下文管理模块;
(4.1.6)将当前的分布式事务对象绑定到线程上下文中。
8.根据权利要求6所述的实现云流程平台下的业务数据与流程数据一致性处理控制的方法,其特征在于,所述的步骤(4.2)具体包括以下步骤:
(4.2.1)从线程上下文获取分布式事务对象;
(4.2.2)查找所有的流程客户端API操作;
(4.2.3)批量执行所有的流程客户端API操作,判断执行操作是否成功,如果是,则继续步骤(4.2.4);否则,标记事务状态为回滚中状态,同时抛出异常信息,退出步骤;
(4.2.4)清空流程客户端调用上下文中的操作数据;
(4.2.5)标记事务状态为已提交状态,清空线程上下文中的分布式事务对象。
9.根据权利要求6所述的实现云流程平台下的业务数据与流程数据一致性处理控制的方法,其特征在于,所述的步骤(4.3)具体包括以下步骤:
(4.3.1)从线程上下文获取分布式事务对象;
(4.3.2)判断是否存在用户业务事务,如果是,则执行用户业务事务的回滚操作,继续步骤(4.3.3);否则,继续步骤(4.3.3);
(4.3.3)标记事务状态为已回滚状态,即分布式事务已处于回滚完成状态;
(4.3.4)清空流程客户端调用上下文中的操作数据;
(4.3.5)清空线程上下文中的分布式事务对象;
(4.3.6)判断是否存在业务补偿,如果是,则执行业务补偿操作;否则,退出步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911197690.3A CN111062684B (zh) | 2019-11-29 | 2019-11-29 | 云流程平台下实现业务数据与流程数据一致性处理的系统及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911197690.3A CN111062684B (zh) | 2019-11-29 | 2019-11-29 | 云流程平台下实现业务数据与流程数据一致性处理的系统及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111062684A CN111062684A (zh) | 2020-04-24 |
CN111062684B true CN111062684B (zh) | 2023-10-20 |
Family
ID=70299297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911197690.3A Active CN111062684B (zh) | 2019-11-29 | 2019-11-29 | 云流程平台下实现业务数据与流程数据一致性处理的系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111062684B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111651244B (zh) * | 2020-07-01 | 2023-08-18 | 中国银行股份有限公司 | 分布式事务的处理系统 |
CN111813583B (zh) * | 2020-07-28 | 2023-06-20 | 厦门市易联众易惠科技有限公司 | 微服务架构下的事务管理方法、装置、设备及存储介质 |
CN112463810A (zh) * | 2020-12-08 | 2021-03-09 | 佳讯飞鸿(北京)智能科技研究院有限公司 | 基于分布式事务的数据处理方法、装置、设备及存储介质 |
CN112612551A (zh) * | 2020-12-31 | 2021-04-06 | 中国农业银行股份有限公司 | 一种分布式事务的管理方法、装置、设备、介质及产品 |
CN113778570B (zh) * | 2021-09-10 | 2023-06-06 | 四川新网银行股份有限公司 | 一种基于AOP+ThreadLocal技术的分布式系统断点重试方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807272A (zh) * | 2010-03-24 | 2010-08-18 | 上海普元信息技术有限责任公司 | 工作流系统实现流程事务和业务事务完整性的系统结构及方法 |
CN101833568A (zh) * | 2010-04-01 | 2010-09-15 | 武汉大学 | Web数据管理系统 |
CN102082817A (zh) * | 2009-11-25 | 2011-06-01 | 诺基亚公司 | 用于确保用户代理信息传输的方法和设备 |
CN106888129A (zh) * | 2017-04-20 | 2017-06-23 | 国家电网公司 | 一种可弹性伸缩的分布式服务管理系统及其方法 |
CN107077358A (zh) * | 2014-09-25 | 2017-08-18 | 甲骨文国际公司 | 用于在分布式计算环境中支持可执行代码的动态部署的系统和方法 |
CN107391526A (zh) * | 2017-03-28 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种基于区块链的数据处理方法及设备 |
CN109739624A (zh) * | 2018-12-27 | 2019-05-10 | 北京三快在线科技有限公司 | 分布式事务处理方法、装置、电子设备及计算机可读介质 |
CN110008224A (zh) * | 2019-03-08 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据库事务处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130204761A1 (en) * | 2012-02-02 | 2013-08-08 | Sidney P. Smith | E-Power exchange and management service |
-
2019
- 2019-11-29 CN CN201911197690.3A patent/CN111062684B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102082817A (zh) * | 2009-11-25 | 2011-06-01 | 诺基亚公司 | 用于确保用户代理信息传输的方法和设备 |
CN101807272A (zh) * | 2010-03-24 | 2010-08-18 | 上海普元信息技术有限责任公司 | 工作流系统实现流程事务和业务事务完整性的系统结构及方法 |
CN101833568A (zh) * | 2010-04-01 | 2010-09-15 | 武汉大学 | Web数据管理系统 |
CN107077358A (zh) * | 2014-09-25 | 2017-08-18 | 甲骨文国际公司 | 用于在分布式计算环境中支持可执行代码的动态部署的系统和方法 |
CN107391526A (zh) * | 2017-03-28 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种基于区块链的数据处理方法及设备 |
WO2018177250A1 (zh) * | 2017-03-28 | 2018-10-04 | 阿里巴巴集团控股有限公司 | 一种基于区块链的数据处理方法及设备 |
CN106888129A (zh) * | 2017-04-20 | 2017-06-23 | 国家电网公司 | 一种可弹性伸缩的分布式服务管理系统及其方法 |
CN109739624A (zh) * | 2018-12-27 | 2019-05-10 | 北京三快在线科技有限公司 | 分布式事务处理方法、装置、电子设备及计算机可读介质 |
CN110008224A (zh) * | 2019-03-08 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据库事务处理方法及装置 |
Non-Patent Citations (3)
Title |
---|
可自管理的分布式工作流引擎的设计与实现;辛鹏;王少锋;;计算机集成制造系统-CIMS(11);全文 * |
基于移动代理的分布式数据库事务处理算法设计;王雪丽;李中涛;;通化师范学院学报(08);全文 * |
林萌.高性能分布式一致性协调服务系统.CNKI优秀硕士学位论文全文库.2017,(第02期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111062684A (zh) | 2020-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111062684B (zh) | 云流程平台下实现业务数据与流程数据一致性处理的系统及其方法 | |
US6901405B1 (en) | Method for persisting a schedule and database schema | |
CN111143389B (zh) | 事务执行方法、装置、计算机设备及存储介质 | |
DE69938077T2 (de) | Verfahren, Vorrichtung und Programmspeichereinrichtung für einen Klienten und ein adaptiver Synchronisierungs- und Transformierungsserver | |
Rothnie Jr et al. | Introduction to a system for distributed databases (SDD-1) | |
US7702660B2 (en) | I/O free recovery set determination | |
CN111522631B (zh) | 分布式事务处理方法、装置、服务器及介质 | |
US6604117B2 (en) | Method of maintaining a network of partially replicated database system | |
KR102072726B1 (ko) | 데이터베이스로의 미들-티어 트랜잭션 로그들의 인라인 위임을 지원하는 시스템들 및 방법들 | |
US20110161281A1 (en) | Distributed Transaction Management in a Distributed Shared Disk Cluster Environment | |
WO2017063520A1 (zh) | 数据库的操作方法及装置 | |
US20080320007A1 (en) | Edge deployed database proxy driver | |
US20070156687A1 (en) | Efficient implementation of multiple work areas in a file system like repository that supports file versioning | |
KR20080104288A (ko) | 데이터 캐싱 방법, 캐싱 데이터 제공 방법, 및 컴퓨터 판독가능 매체 | |
CN102103642B (zh) | 基于oltp的数据删除方法、系统及图形数据库服务器 | |
CN111209142A (zh) | 跨数据库的事务管理方法、装置、设备及存储介质 | |
US20210286799A1 (en) | Automated transaction engine | |
US7577663B2 (en) | Distributed database systems and methods | |
US20030074371A1 (en) | Object-relational database management system and method for deleting class instance for the same | |
CN110717073B (zh) | 云流程平台中结合业务数据实现流程查询处理的系统及其方法 | |
US7752225B2 (en) | Replication and mapping mechanism for recreating memory durations | |
US20050138048A1 (en) | XML database duplicating apparatus for copying XML document to remote server without loss of structure and attribute information of XML document and method thereof | |
US20050144299A1 (en) | System and method for supporting XA 2-phase commit protocols with a loosely coupled clustered database server | |
US20080195615A1 (en) | Recursive lock-and-propagate operation | |
KR102598619B1 (ko) | 데이터베이스 관리 서비스 제공 시스템 |
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 |