CN115269161A - 一种异常流程逆向回滚方法和系统 - Google Patents
一种异常流程逆向回滚方法和系统 Download PDFInfo
- Publication number
- CN115269161A CN115269161A CN202211213027.XA CN202211213027A CN115269161A CN 115269161 A CN115269161 A CN 115269161A CN 202211213027 A CN202211213027 A CN 202211213027A CN 115269161 A CN115269161 A CN 115269161A
- Authority
- CN
- China
- Prior art keywords
- rollback
- task
- data
- main process
- flow
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
-
- 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
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Abstract
本发明涉及一种异常流程逆向回滚方法,包括kafka平台接收conductor服务执行主流程处理完成后生成的流程执行数据;回滚服务端监听kafka平台并消费监听到的流程执行数据,并根据主流程结果数据,判断主流程是否需要回滚;回滚服务端判断主流程需要回滚时,获取流程执行数据,并根据任务节点数据获取主流程中已执行完成的任务节点,将所有已执行完成的任务节点放入回滚链表中,利用回滚链表、主流程结果数据和任务节点数据,进行主流程的回滚。本发明还涉及异常流程逆向回滚系统。本发明实现了无需通过发送指令进行触发回滚,回滚前不需要备份数据,回滚过程中不需要查询日志信息,提高了异常流程的回滚效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种异常流程逆向回滚方法和系统。
背景技术
随着互联网的快速发展,众多公司的工程是以流程的方式来完成,其中许多业务流程是通过在微服务上执行异步编排任务来驱动的,但是在执行某个流程过程中,若某个任务执行异常则会导致整个流程执行失败。由于某些工程执行失败需要重新施工,即流程需重新执行,但因为上次执行流程时,失败任务前的任务已经执行成功,再次执行该流程,就需要执行成功的任务返回到未执行状态。
当前的回滚方法都是针对事务并且回滚触发需发送指令,且一些回滚方法的实现的前提条件需要备份数据,存储大量日志且需要查询日志信息,这样需要消耗大量的内存。有些流程包括多个节点,若每个节点回滚都发送指令进行触发,则会造成回滚效率太低。因此需要一种更有效的回滚方法。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种异常流程逆向回滚方法和系统。
本发明解决上述技术问题的技术方案如下:
第一方面,本发明提供一种异常流程逆向回滚方法,所述方法包括:
kafka平台接收conductor服务执行主流程完成后所生成的流程执行数据,所述流程执行数据包括所述主流程执行过程中生成的主流程结果数据和所述主流程执行过程中所有任务节点的任务节点数据;
回滚服务端监听所述kafka平台,根据所述主流程结果数据,判断所述主流程是否需要回滚;
当所述回滚服务端判断所述主流程需要回滚时,获取所述流程执行数据,并根据所述任务节点数据获取所述主流程中已执行完成的任务节点,将所有已执行完成的任务节点放入回滚链表中,利用所述回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程的回滚。
第二方面,本发明提供一种异常流程逆向回滚系统,所述系统包括:
kafka平台,用于接收conductor服务执行主流程处理完成后所生成的流程执行数据,所述流程执行数据包括所述主流程执行过程中生成的主流程结果数据和所述主流程执行过程中所有任务节点的任务节点数据;
回滚服务端,用于监听所述kafka平台,根据所述主流程结果数据,判断所述主流程是否需要回滚;
所述回滚服务端还用于当判断出所述主流程需要回滚时,获取所述流程执行数据,并根据所述任务节点数据获取所述主流程中已执行完成的任务节点,将所有已执行完成的任务节点放入回滚链表中,利用所述回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程的回滚。
本发明的有益效果至少包括:提出了一种异常流程逆向回滚方法,包括kafka平台接收conductor服务执行主流程处理完成后所生成的流程执行数据,所述流程执行数据包括所述主流程执行过程中生成的主流程结果数据和所述主流程执行过程中所有任务节点的任务节点数据;回滚服务端监听所述kafka平台,根据所述主流程结果数据,判断所述主流程是否需要回滚;所述回滚服务端判断所述主流程需要回滚时,获取所述流程执行数据,并根据所述任务节点数据获取所述主流程中已执行完成的任务节点,将所有已执行完成的任务节点放入回滚链表中,利用所述回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程的回滚。本发明实现了无需通过发送指令进行触发回滚,回滚前不需要备份数据,回滚过程中不需要查询日志信息,从而提高了异常流程的回滚效率,且本发明将conductor作为流程执行结束数据的生产者把数据发送到kafka平台,而回滚服务端作为流程执行结束数据的消费者来监听kafka,当回滚服务端监听到kafka平台数据时,会消费此数据。kafka平台不仅仅是数据生产和提供者,而且还是通知回滚服务流程执行结束的通知者。
本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简要介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例的一种异常流程逆向回滚方法的流程示意图。
图2为根据本发明另一实施例的一种异常流程逆向回滚系统的模块示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
如图1所示,本发明实施例的一种异常流程逆向回滚方法,包括以下步骤:
110、kafka平台接收conductor服务执行主流程完成后所生成的流程执行数据,所述流程执行数据包括所述主流程执行过程中生成的主流程结果数据和所述主流程执行过程中所有任务节点的任务节点数据。
120、回滚服务端监听所述kafka平台,根据所述主流程结果数据,判断所述主流程是否需要回滚。
130、所述回滚服务端判断所述主流程需要回滚时,获取所述流程执行数据,并根据所述任务节点数据获取所述主流程中已执行完成的任务节点,将所有已执行完成的任务节点放入回滚链表中。
140、利用所述回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程的回滚。
基于上述实施例,进一步地,步骤110中,所述主流程结果数据包括流程名、流程所属应用、流程状态、流程是否需要回滚标识、失败回单接口URL和失败回单请求方式;所述任务节点数据包括任务节点名称、任务类型、任务状态、任务执行时间、http请求信息、任务是否需要回滚标识和回滚请求信息。
基于上述实施例,进一步地,步骤120具体包括:所述回滚服务端监听到所述主流程结果数据中的流程状态是第一预设值,且所述主流程结果数据中的流程是否需要回滚标识是第二预设值时,确定所述主流程需要回滚。
基于上述实施例,进一步地,步骤130中,根据所述任务节点数据获取所述主流程中已执行完成的任务节点,将所有已执行完成的任务节点放入回滚链表中,其具体包括:
若所述任务节点的任务类型是http类型,将已执行完成的所述任务节点放入第一回滚链表中,并根据所述任务节点的任务执行时间,对所述第一回滚链表中的所有任务节点进行排序;
若所述任务节点的任务类型是子流程类型,将已执行完成的所述任务节点放入第二回滚链表中,并根据所述任务节点的任务执行时间,对所述第二回滚链表中的所有任务节点进行排序。
基于上述实施例,进一步地,步骤140中,利用所述回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程的回滚,其具体包括:
利用所述第一回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程中任务类型是http类型的任务节点的回滚;
利用所述第二回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程中任务类型是子流程类型的任务节点的回滚。
基于上述实施例,进一步地,步骤140中,利用所述第一回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程中任务类型是http类型的任务节点的回滚,其具体包括:
依次提取所述第一回滚链表中的任务节点;
所述任务节点的任务节点数据中的任务是否需要回滚标识是需要时,根据所述任务节点名称查询任务节点定义表,获取所述任务节点所属服务的服务名称、回滚路径和回滚请求方式;
通过所述服务名称和所述回滚路径,得到http请求路径,并通过所述回滚请求方式确定http请求服务,利用所述http请求路径发起所述http请求服务,以实现所述任务节点的回滚。
基于上述实施例,步骤140中,利用所述第二回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程中任务类型是子流程类型的任务节点的回滚,其具体包括:
依次提取所述第二回滚链表中的任务节点,通过所述kafka平台调用所述conductor服务的流程查询接口查询所述任务节点的任务处理数据;
所述任务节点的任务状态是执行成功时,将所述任务节点的任务处理数据转成工作流数据后,通过所述工作流数据进行回滚。
具体地,主流程回滚进行此节点时,首先判断此子流程节点需要回滚,若需要回滚,则依据实例Id通过接口查询获取此子流程数据后和主流程一样进行流程回滚。
应理解的是,第一回滚链表中回滚的任务节点的任务类型是http类型,根据任务节点查询任务定义表查询任务回滚的服务名称、回滚路径以及回滚方法。通过http请求的方式实现http任务节点的回滚。
第二回滚链表中的回滚的任务节点类型为subWorkflow子流程类型,从发送到kafka主流程数据中提取子流程实例Id,通过子流程实例Id调用conductor的流程查询接口
具体地,每一个任务节点的回滚具体实现都需要一个相对应的回滚接口,如一个任务节点的功能是创建一条数据,其回滚接口的具体操作是把任务节点创建的这条数据置为删除状态或者是直接删除这条数据。因每一个任务节点的具体操作不一样,其回滚接口具体操作也不相同。
依据http类型的任务节点的具体操作提前预置此任务节点的回滚接口,若此任务节点需要回滚,则把预置的回滚接口请求路径和回滚接口的请求方法作为定义此节点的部分参数来定义此节点并保存到数据库。在此任务节点进行回滚时通过查询数据库获取此节点定义的回滚路径和回滚方法,从而以http请求的形式实现此节点的回滚。
依据任务节点名称查询任务节点定义表,获取服务名称,其中服务名称是此节点所在的服务注册到注册中心consul上的名称、回滚路径和回滚请求方法,在定义此任务节点时若服务名称为不为空,则回滚路径定义为相对路径,若服务名称为空,其回滚路径为绝对路径。回滚的最终路径在服务名称不为空的情况下是:http://+服务名称+回滚路径,在服务名称不为空的情况下就是定义的绝对路径。最终任务节点回滚是以查询到的回滚请求方法请求http服务,其http服务路径为最终路径。
基于上述实施例,进一步地,还包括步骤150:
150、当每一个所述任务节点完成回滚后,将回滚结果保存到数据库中。
具体地,上述实施例在实际应用中具体包括:
软件环境部署,包括但不限于部署conductor、MySQL以及Elasticsearch;
流程任务设置,设计并生成流程定义表、任务定义表;
执行所述流程表、任务表,并调用conductor异常流程启动接口来启动流程;
数据封装,所述流程执行结束后将数据封装生成json格式的流程数据;发送kafka,将所述流程数据发送kafka;
数据监听,监听所述kafka数据;获取实例对象,将监听到的所述流程数据转换为workflow;获取流程状态,获取所述workflow的流程状态status;
判断回滚,根据所述workflow的流程状态判断是否需要回滚;若需要回滚:获取回滚流程的已完成任务,包括从workflow中获取执行成功的任务节点存放到链表,并按节点的执行时间对所述链表进行排序并生成任务链表,并遍历所述任务链表进行回滚;若不需要回滚:结束流程。
应理解的是,当前回滚存在问题是绝大部分回滚都是针对事务,事务具有原子性,要么不执行,要么全执行,一旦成功执行则永久保存。事务回滚是只要数据库更改过的数据都要恢复。而本发明针对的是流程,且节点是否需要回滚是由定义的节点数据决定,不需要全部数据进行回滚。
目前一些回滚的实现的前提条件需要备份数据,存储大量的日志,这样需要消耗大量的内存。并且涉及到网络设备需要对设备操作进行计数,依据操作次数来决定是否回滚。在回滚过程中需要查询日志文件获取历史数据,导致每一次回滚都需要查询大量日志,导致回滚效率特别低。
本发明则不需要这样冗余的操作。
本发明提前定义好流程并把流程数据存到数据库,conductor服务执行流程后会把执行的流程数据发送到kafka平台,回滚服务端监听流程数据的topic,当监听到消息时回滚服务端会消费此条数据,回滚服务端把消费到的数据转换成实体对象workflow,workflow主要包括流程执行的实例Id、节点数据和执行结果、流程状态(成功、失败、终止),流程执行状态是流程执行的第一条件,流程执行时无需回滚,流程执行失败后进行对应的回滚操作。
本发明实施例的适用对象为业务流程,回滚触发是依据数据定义和流程执行状态,不需要发送任何指令,通过监听kafka数据获取流程执行数据,不需要备份任何数据,不需要存储大量日志,回滚实现是通过http请求实现,不需要查询日志信息和记录操作次数等操作。
本发明实施例的应用场景包括但不限于虚拟网络中网络资源编排、网络业务开通,迁移、云网资源协同、基础网络业务部署等;并且包括用通用工业化标准的硬件和软件来重构网络,减少硬件设备使用;用软件实现网络装机拆机等功能,减少人力施工。
本发明实施例还包括调用conductor创建流程接口创建流程,调用conductor流程启动接口,启动流程。
流程执行成功或失败后发送kafka数据。
监听kafka和消费kafka数据,把消费到kafka数据转化成workflow对象。
kafka设置一个workflowStatus的topic,当conductor流程执行完成后把流程执行数据转换成json数据向workflowStatus的该topic发送数据,定义一个消费组RollBack用来消费workflowStaus的数据,当回滚服务监听到kafka数据时,把监听到数据进行消费,并把消费到的主流程结果数据转换成workflow实例对象,例如使用google提供的Gson工具类。
依据workflow定义和workflow执行结果判断流程是否回滚,若流程回滚,从workflow中获取执行成功的任务节点存放到链表并按节点的执行时间对链表进行排序。遍历任务节点链表调用任务回滚接口实现流程回滚。
在本实施例中,根据所述workflow的状态判断是否需要回滚的具体步骤包括:根据所述流程状态status的参数判断,若参数为FAILD、TERMINAL则进行回滚,若参数为COMPLETE则不回滚。
在本实施例中,从workflow中获取执行成功的任务节点存放到链表的具体步骤包括:定义所述workflow的任务类,并获取workflow的所有任务,将任务的状态为COMPLETE的放入链表中。
在本实施例中,按节点的执行时间对所述链表进行排序并生成任务链表的具体步骤包括:将所述链表按照任务执行时间进行排序,链表节点为i的任务执行时间为createDate(i),链表节点为i+1的任务执行时间为createDate(i+1),若createDate(i)大于createDate(i+1)则不进行交换,反之则交换。
在本实施例中,遍历所述任务链表进行回滚的具体步骤包括:任务数据查询,根据任务名字查询所述任务定义表,并根据所述任务定义表判断是否进行回滚;选择回滚方式,若任务类型为http类型,则从实例对象任务中获取回滚请求方法、URL,以http请求完成此任务的回滚;若任务类型为subworkflow类型,则将该任务以一个独立流程进行回滚。
在本实施例中,还包括:保存回滚日志,在回滚完成后,生成回滚结果,将回滚结果保存至回滚日志中。
具体地,实际应用中的处理步骤如下:
步骤S1:环境部署,部署conductor2.31.1、mysql5.7、elasticsearch5.1.1。
步骤S2:流程定义表和任务定义表。
步骤S3:流程启动执行,调用conductor流程启动接口启动流程。
步骤S4:封装数据,流程执行结束,把流程数据封装成json格式。
步骤S5:发送kafka,将步骤S4封装的流程执行数据发送kafka。
步骤S6:kafka数据监听,监听步骤S5的kafka数据。
步骤S7:获取实例对象,回滚服务端消费步骤S6监听到json数据转换成流程实例对象workflow。
步骤S8:获取流程状态,获取步骤S7的流程实例对象workflow的状态status。
步骤S9:判断流程是否需要回滚,依据步骤S8的状态和流程定义表中need_rollback字段决定流程是否进行回滚,若need_rollback为1且流程状态status为FAILD、TERMINAL则进行回滚,若为COMPLETE则不回滚。
步骤S10:获取回滚流程的已完成任务,从步骤S7转换的实例对象中获取所有完成任务存放在链表中,步骤S7实例对象workflow,任务类定义Task,获取workflow的所有task,把状态为COMPLETE的task放入List<Task>tasks链表中。
步骤S11:链表数据排序,将步骤S10获取tasks链表按任务执行时间进行排序,链表节点为i的Task的执行时间createDate(i),链表节点为i+1的Task的执行时间createDate(i+1),若createDate(i)大于createDate(i+1)则不进行交换,反之则交换。
步骤S12:遍历任务链表进行回滚,将步骤S11的任务链表遍历进行任务回滚,任务回滚具体实现如步骤S12-1到S12-3所示。
步骤S12-1:任务数据查询,根据任务名字查询任务定义表中的need_rollback字段,若need_rollback为1则任务进行回滚,若need_rollback为0任务不需要回滚。
步骤S12-2:依据任务实例对象task的类型决定回滚方式,若任务类型type为http,则从实例对象task中获取回滚请求方法,回滚的URL,以http请求完成此任务的回滚。若任务类型type为subworkflow类型,则把此任务以一个独立流程进行回滚。
步骤S12-3:保存回滚日志,任务回滚完成后,回滚结果保存到数据库回滚日志表中。
如图2所示,本发明实施例的一种异常流程逆向回滚系统包括:
kafka平台,用于接收conductor服务执行主流程处理完成后所生成的流程执行数据,所述流程执行数据包括所述主流程执行过程中生成的主流程结果数据和所述主流程执行过程中所有任务节点的任务节点数据。
回滚服务端,用于监听所述kafka平台,根据所述主流程结果数据,判断所述主流程是否需要回滚。
所述回滚服务端还用于在判断所述主流程需要回滚时,获取所述流程执行数据,并根据所述任务节点数据获取所述主流程中已执行完成的任务节点,将所有已执行完成的任务节点放入回滚链表中,利用所述回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程的回滚。
基于上述实施例,进一步地,所述主流程结果数据包括流程名、流程所属应用、流程状态、流程是否需要回滚标识、失败回单接口URL和失败回单请求方式;
所述任务节点数据包括任务节点名称、任务类型、任务状态、任务执行时间、http请求信息、任务是否需要回滚标识和回滚请求信息。
基于上述实施例,进一步地,所述回滚服务端,具体用于在监听到所述主流程结果数据中的流程状态是第一预设值,且所述主流程结果数据中的流程是否需要回滚标识是第二预设值时,确定所述主流程需要回滚。
基于上述实施例,进一步地,所述回滚服务端,具体用于若所述任务节点的任务类型是http类型,将已执行完成的所述任务节点放入第一回滚链表中;若所述任务节点的任务类型是子流程类型,将已执行完成的所述任务节点放入第二回滚链表中。
根据所述任务节点的任务执行时间,对所述第一回滚链表中的所有任务节点进行排序,并根据所述任务节点的任务执行时间,对所述第二回滚链表中的所有任务节点进行排序。
基于上述实施例提出的一种异常流程逆向回滚系统,包括kafka平台来接收conductor服务执行主流程处理完成后所生成的流程执行数据,所述流程执行数据包括所述主流程执行过程中生成的主流程结果数据和所述主流程执行过程中所有任务节点的任务节点数据;回滚服务端用于监听所述kafka平台,根据所述主流程结果数据,判断所述主流程是否需要回滚;所述回滚服务端在判断所述主流程需要回滚时,获取所述流程执行数据,并根据所述任务节点数据获取所述主流程中已执行完成的任务节点,将所有已执行完成的任务节点放入回滚链表中,利用所述回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程的回滚。本发明的异常流程逆向回滚系统实现了无需通过发送指令进行触发回滚,回滚前不需要备份数据,回滚过程中不需要查询日志信息,提高了异常流程的回滚效率。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,还可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种异常流程逆向回滚方法,其特征在于,所述方法包括:
kafka平台接收conductor服务执行主流程完成后所生成的流程执行数据,所述流程执行数据包括所述主流程执行过程中生成的主流程结果数据和所述主流程执行过程中所有任务节点的任务节点数据;
回滚服务端监听所述kafka平台,并根据所述主流程结果数据,判断所述主流程是否需要回滚;
所述回滚服务端判断所述主流程需要回滚时,获取所述流程执行数据,并根据所述任务节点数据获取所述主流程中已执行完成的任务节点,将所有所述已执行完成的任务节点放入回滚链表中,利用所述回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程的回滚。
2.根据权利要求1所述的异常流程逆向回滚方法,其特征在于,
所述主流程结果数据包括流程名、流程所属应用、流程状态和流程是否需要回滚标识;
所述任务节点数据包括任务节点名称、任务类型、任务状态、任务执行时间、http请求信息、任务是否需要回滚标识和回滚请求信息。
3.根据权利要求2所述的异常流程逆向回滚方法,其特征在于,所述回滚服务端监听所述kafka平台,根据所述主流程结果数据判断所述主流程是否需要回滚,具体包括:
所述回滚服务端在监听到所述主流程结果数据中的流程状态是第一预设值,且所述主流程结果数据中的流程是否需要回滚标识是第二预设值时,确定所述主流程需要回滚。
4.根据权利要求2所述的异常流程逆向回滚方法,其特征在于,所述根据所述任务节点数据获取所述主流程中已执行完成的任务节点,将所有已执行完成的任务节点放入回滚链表,具体包括:
若所述任务节点的任务类型是http类型,将已执行完成的所述任务节点放入第一回滚链表中,并根据所述任务节点的任务执行时间,对所述第一回滚链表中的所有任务节点进行排序;
若所述任务节点的任务类型是子流程类型,将已执行完成的所述任务节点放入第二回滚链表中,并根据所述任务节点的任务执行时间,对所述第二回滚链表中的所有任务节点进行排序。
5.根据权利要求4所述的异常流程逆向回滚方法,其特征在于,所述利用所述回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程的回滚,具体包括:
利用所述第一回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程中任务类型是http类型的任务节点的回滚;
利用所述第二回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程中任务类型是子流程类型的任务节点的回滚。
6.根据权利要求5所述的异常流程逆向回滚方法,其特征在于,所述利用所述第一回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程中任务类型是http类型的任务节点的回滚,具体包括:
依次提取所述第一回滚链表中的任务节点;
所述任务节点的任务节点数据中的任务是否需要回滚标识是需要时,根据所述任务节点名称查询任务节点定义表,获取所述任务节点所属服务的服务名称、回滚路径和回滚请求方式;
通过所述服务名称和所述回滚路径得到http请求路径,并通过所述回滚请求方式确定http请求服务,利用所述http请求路径发起所述http请求服务,以实现所述任务节点的回滚。
7.根据权利要求5所述的异常流程逆向回滚方法,其特征在于,所述利用所述第二回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程中任务类型是子流程类型的任务节点的回滚,具体包括:
依次提取所述第二回滚链表中的任务节点,通过所述kafka平台调用所述conductor服务的流程查询接口查询所述任务节点的任务处理数据;
所述任务节点的任务状态是执行成功时,将所述任务节点的任务处理数据转成工作流数据后,通过所述工作流数据进行回滚。
8.一种异常流程逆向回滚系统,其特征在于,所述系统包括:
kafka平台,用于接收conductor服务执行主流程完成后所生成的流程执行数据,所述流程执行数据包括所述主流程执行过程中生成的主流程结果数据和所述主流程执行过程中所有任务节点的任务节点数据;
回滚服务端,用于监听所述kafka平台,根据所述主流程结果数据,判断所述主流程是否需要回滚;
所述回滚服务端,还用于判断所述主流程需要回滚时,获取所述流程执行数据,并根据所述任务节点数据获取所述主流程中已执行完成的任务节点,将所有已执行完成的任务节点放入回滚链表中,利用所述回滚链表、所述主流程结果数据和所述任务节点数据,进行所述主流程的回滚。
9.根据权利要求8所述的异常流程逆向回滚系统,其特征在于,
所述主流程结果数据包括流程名、流程所属应用、流程状态和流程是否需要回滚标识;
所述任务节点数据包括任务节点名称、任务类型、任务状态、任务执行时间、http请求信息、任务是否需要回滚标识和回滚请求信息。
10.根据权利要求8所述的异常流程逆向回滚系统,其特征在于,
所述回滚服务端,具体用于监听到所述主流程结果数据中的流程状态是第一预设值,且所述主流程结果数据中的流程是否需要回滚标识是第二预设值时,确定所述主流程需要回滚。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211213027.XA CN115269161B (zh) | 2022-09-30 | 2022-09-30 | 一种异常流程逆向回滚方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211213027.XA CN115269161B (zh) | 2022-09-30 | 2022-09-30 | 一种异常流程逆向回滚方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115269161A true CN115269161A (zh) | 2022-11-01 |
CN115269161B CN115269161B (zh) | 2022-12-20 |
Family
ID=83757831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211213027.XA Active CN115269161B (zh) | 2022-09-30 | 2022-09-30 | 一种异常流程逆向回滚方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115269161B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109741030A (zh) * | 2018-12-28 | 2019-05-10 | 杭州当虹科技股份有限公司 | 一种可自定义配置的简单工作流引擎及工作流执行方法 |
CN111225012A (zh) * | 2018-11-27 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 事务处理方法、装置和设备 |
CN112540771A (zh) * | 2019-12-02 | 2021-03-23 | 北京首都在线科技股份有限公司 | 自动化运维方法、系统、设备和计算机可读存储介质 |
CN113537715A (zh) * | 2021-06-13 | 2021-10-22 | 苏州浪潮智能科技有限公司 | 一种保障微服务数据一致性的方法、系统、设备以及介质 |
US20220012091A1 (en) * | 2020-07-09 | 2022-01-13 | Vmware, Inc. | System and method for executing multi-stage distributed computing operations with independent rollback workflow |
CN114595074A (zh) * | 2020-12-04 | 2022-06-07 | 中盈优创资讯科技有限公司 | 一种基于分布式调度的编排中事务失败回滚方法及装置 |
-
2022
- 2022-09-30 CN CN202211213027.XA patent/CN115269161B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111225012A (zh) * | 2018-11-27 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 事务处理方法、装置和设备 |
CN109741030A (zh) * | 2018-12-28 | 2019-05-10 | 杭州当虹科技股份有限公司 | 一种可自定义配置的简单工作流引擎及工作流执行方法 |
CN112540771A (zh) * | 2019-12-02 | 2021-03-23 | 北京首都在线科技股份有限公司 | 自动化运维方法、系统、设备和计算机可读存储介质 |
US20220012091A1 (en) * | 2020-07-09 | 2022-01-13 | Vmware, Inc. | System and method for executing multi-stage distributed computing operations with independent rollback workflow |
CN114595074A (zh) * | 2020-12-04 | 2022-06-07 | 中盈优创资讯科技有限公司 | 一种基于分布式调度的编排中事务失败回滚方法及装置 |
CN113537715A (zh) * | 2021-06-13 | 2021-10-22 | 苏州浪潮智能科技有限公司 | 一种保障微服务数据一致性的方法、系统、设备以及介质 |
Non-Patent Citations (2)
Title |
---|
SHAOFEI WU: "A Dependence-Based Transaction Model in workflow", 《2009 INTERNATIONAL CONFERENCE ON INDUSTRIAL AND INFORMATION SYSTEM》 * |
崔磊: "基于事务的工作流异常处理优化的研究与设计", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN115269161B (zh) | 2022-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108388479A (zh) | 延迟消息推送方法、装置、计算机设备及存储介质 | |
EP3489825A1 (en) | Method, apparatus and computer readable storage medium for processing service | |
CN111274052A (zh) | 数据分发方法、服务器及计算机可读存储介质 | |
CN108076098A (zh) | 一种业务处理方法及系统 | |
CN110471746B (zh) | 一种分布式事务回调方法、装置及系统 | |
CN111897633A (zh) | 一种任务处理的方法和装置 | |
CN111784329B (zh) | 业务数据的处理方法和装置、存储介质、电子装置 | |
CN111210340B (zh) | 一种自动任务处理方法、装置、服务器及存储介质 | |
CN111835809B (zh) | 工单消息分配方法、装置、服务器及存储介质 | |
CN115269161B (zh) | 一种异常流程逆向回滚方法和系统 | |
CN114741162A (zh) | 服务编排方法、装置、存储介质和设备 | |
CN113965563B (zh) | 基于模型的业务处理方法及装置、服务器 | |
CN111679899B (zh) | 任务调度方法、装置、平台设备及存储介质 | |
CN115131067A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111061576B (zh) | 一种实体对象的创建方法及系统 | |
CN113886368A (zh) | 一种补录数据检核方法、装置、设备及存储介质 | |
CN110768855B (zh) | 链路化性能测试的方法和装置 | |
CN107704557B (zh) | 操作互斥数据的处理方法、装置、计算机设备和存储介质 | |
CN111885206A (zh) | 一种支持多电商平台并向指定环境推送数据的云平台 | |
CN111401837A (zh) | 事件处理方法和系统、计算机可读存储介质 | |
CN110740151A (zh) | 一种微服务调整方法、装置、服务器及计算机存储介质 | |
CN116010126B (zh) | 一种服务聚合方法、装置及系统 | |
CN112732413B (zh) | 异常处理方法、装置、计算机设备和计算机可读存储介质 | |
CN112988842B (zh) | 关联用户id的方法及装置 | |
CN115391291A (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 |