CN117056116B - 一种流程管理方法和电子设备 - Google Patents

一种流程管理方法和电子设备 Download PDF

Info

Publication number
CN117056116B
CN117056116B CN202311314450.3A CN202311314450A CN117056116B CN 117056116 B CN117056116 B CN 117056116B CN 202311314450 A CN202311314450 A CN 202311314450A CN 117056116 B CN117056116 B CN 117056116B
Authority
CN
China
Prior art keywords
node
rollback
business process
flow
inventory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311314450.3A
Other languages
English (en)
Other versions
CN117056116A (zh
Inventor
刘晓虎
刘康鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202311314450.3A priority Critical patent/CN117056116B/zh
Publication of CN117056116A publication Critical patent/CN117056116A/zh
Application granted granted Critical
Publication of CN117056116B publication Critical patent/CN117056116B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本申请公开了一种流程管理方法和电子设备,涉及计算机领域,包括:电子设备响应于启动流程请求,启动执行启动流程请求对应的业务流程。在执行业务流程的过程中,若业务流程中的节点执行异常,电子设备获取执行该节点的前序节点的预设配置信息。根据前序节点的预设配置信息中的回滚接口,执行业务流程的回滚操作。本方案中,流程回滚可以使得已经进行资源变更的节点实现资源变更恢复,从而实现在节点执行异常时,及时恢复节点资源变更状态,使得业务流程中所有节点的资源变更状态始终保持一致。

Description

一种流程管理方法和电子设备
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种流程管理方法和电子设备。
背景技术
一个完整的业务流程可能涉及到多个节点,每一个节点在正常执行流程后,会执行资源变更。在完整的一个业务流程中,多个或所有节点的资源均变更成功,业务流程才算执行成功。若业务流程中某个节点的资源变更失败,也即,某个节点执行流程出现异常,那么整个业务流程也会失败。
现有的技术对于上述节点在执行流程中出现异常的情况,采取的操作往往是终止本次业务流程,等待异常的节点恢复正常。在异常的节点恢复正常后,重新执行业务流程。
然而,对于资源变更时效性要求比较高的业务流程,这种等待异常的节点恢复正常的方法,节点恢复正常的时间不可控,如果异常的节点长时间不能恢复,则会使得各个节点的资源变更状态长时间处于不一致状态,可能导致整个业务流程瘫痪或崩溃。
发明内容
本申请实施例提供一种流程管理方法和电子设备,本方案中,流程中涉及到的节点可配置相应的回滚接口,在节点异常时触发执行流程回滚。流程回滚可以使得已经进行资源变更的节点实现资源变更恢复,从而实现在节点执行异常时,及时恢复节点资源变更状态,使得业务流程中所有节点的资源变更状态始终保持一致,对业务流程起到了维护的作用,对于对时效性需求较高的业务更加安全可靠。其中,回滚路径包括多条回滚路径,使得业务流程实现的功能更加灵活。
为达到上述目的,本申请的实施例采用如下技术方案。
第一方面,提供了一种流程管理方法,该方法包括:
电子设备响应于启动流程请求,启动执行启动流程请求对应的业务流程。其中,业务流程中包括多个节点。
在执行业务流程的过程中,若业务流程中的节点执行异常,电子设备获取节点的前序节点的预设配置信息。其中,节点的前序节点为业务流程的正向次序中与节点相邻的上一节点,前序节点的预设配置信息用于指示前序节点配置有回滚接口。
电子设备根据前序节点的回滚接口,执行业务流程的回滚操作。
本申请中,电子设备响应于启动流程请求启动执行业务流程。在执行业务流程过程中,若业务流程中的节点执行异常,电子设备根据该节点的前序节点的预设配置信息指示的回滚接口,执行业务流程的回滚操作。本方案中,流程回滚可以使得已经进行资源变更的节点实现资源变更恢复,从而实现在节点执行异常时,及时恢复节点资源变更状态,使得业务流程中所有节点的资源变更状态始终保持一致,对业务流程起到了维护的作用,对于对时效性需求较高的业务更加安全可靠。
在第一方面的一种可能的实现方式中,若前序节点为普通节点,电子设备根据前序节点的回滚接口,执行业务流程的回滚操作,包括:
若普通节点的回滚接口的配置信息不为空,电子设备访问前序节点的回滚接口,若回滚接口响应正常,电子设备回滚至前序节点的前序节点执行回滚操作,直至完成回滚操作。
若普通节点的回滚接口的配置信息为空,电子设备跳过前序节点,回滚至前序节点的前序节点执行回滚操作,直至完成回滚操作。
其中,普通节点为执行节点的一种,普通节点指的是存在一个输入和一个输出的节点,通过普通接口的执行路径为一条。
本申请中,业务流程中涉及到的节点可配置相应的回滚接口,在节点异常时触发执行流程回滚。若未配置相应的回滚接口,电子设备在执行回滚操作时也直接跳过该节点继续执行回滚操作,从而实现在节点执行异常时,及时恢复节点资源变更状态,使得业务流程中所有节点的资源变更状态始终保持一致,对业务流程起到了维护的作用,对于对时效性需求较高的业务更加安全可靠。
在第一方面的另一种可能的实现方式中,若前序节点为分支节点,分支节点的回滚接口配置有回滚判断逻辑。
电子设备根据前序节点的回滚接口,执行业务流程的回滚操作,包括:
若分支节点的回滚判断逻辑的回滚返回值为第一值,电子设备按照业务流程的正向执行路径返回,执行业务流程的回滚操作。
若分支节点的回滚判断逻辑的回滚返回值为第二值,电子设备根据分支节点的其他分支路径,执行业务流程的回滚操作。
其中,分支节点为执行节点的一种,分支节点指的是存在一个输入和多个输出的节点,通过该分支节点的执行路径可以为多条。
第一值可以为真(true),第二值可以为否(false)。
若获取到指定值不为空且预设字段为否(false),则回滚返回值(rollback)为否(false)。在这种情况下,电子设备确定不按照正向执行路径原路回滚,基于分支节点的另一个分支路径回滚。
若获取到指定值为空或者预设字段为真(true),那么回滚返回值(rollback)为真(true),在这种情况下,电子设备按照正向执行路径的原路返回,执行业务流程的回滚操作。
本申请中,在业务流程中的分支节点配置回滚判断逻辑,为流程回滚提供按照业务流程的正向执行路径原路返回的回滚路径以及按照分支节点的其他分支路径进行回滚的路径,使得业务流程实现的功能更加灵活。
在第一方面的另一种可能的实现方式中,在启动执行启动流程请求对应的业务流程之前,方法还包括:
初始化业务流程对应的拓扑结构;拓扑结构用于表征业务流程中相邻节点之间的连通状态、流程路径的执行状态以及业务流程的上下文信息。
其中,节点的流程路径的执行状态包括已执行正向路径、已执行回滚路径以及未执行。
本申请中,电子设备以拓扑结构存储业务流程的执行状况,使得电子设备能够完整地还原任意时刻业务流程的运行状态,快速地找到回滚的路径。
在第一方面的另一种可能的实现方式中,在执行业务流程的过程中,该方法还包括:
若业务流程的节点执行正常,基于节点的执行路径更新拓扑结构。
本申请中,电子设备执行业务流程的过程中,实时更新拓扑结构中各个节点的执行路径、执行状态等信息,使得拓扑结构随时可以准确地还原任意时刻业务流程的运行状态,为电子设备执行回滚操作提供有效的数据支撑。
在第一方面的另一种可能的实现方式中,该方法还包括:
若业务流程的节点均执行正常,且,业务流程不存在未执行节点,电子设备标记业务流程执行成功;
电子设备基于业务流程的拓扑结构,获取业务流程的正向执行路径。
本申请中,电子设备可以根据业务流程的扑结构,在可视化界面展示流程的正向执行路径,用户可以清晰地查看业务流程的运行过程。
在第一方面的另一种可能的实现方式中,电子设备获取节点的前序节点的预设配置信息,包括:
电子设备基于业务流程对应的拓扑结构,确定执行业务流程的正向次序中节点的前序节点,获取前序节点的预设配置信息。
本申请中,拓扑结构随时可以准确地还原任意时刻业务流程的运行状态,电子设备可以直接从拓扑结构中获取业务流程中各个节点的预设配置信息,提高回滚操作的效率。
在第一方面的另一种可能的实现方式中,在执行业务流程的回滚操作之后,该方法还包括:
电子设备基于回滚操作,更新业务流程对应的拓扑结构。
本申请中,电子设备执行业务流程的回滚操作中,实时更新拓扑结构中各个节点的执行路径、执行状态等信息,使得拓扑结构随时可以准确地还原任意时刻业务流程的回滚状态。
在第一方面的另一种可能的实现方式中,该方法还包括:
若业务流程的回滚操作回滚至业务流程的开始节点或结束节点,电子设备标记业务流程已回滚;电子设备基于业务流程的拓扑结构,获取业务流程的回滚执行路径。
本申请中,电子设备可以根据业务流程的拓扑结构,在可视化界面展示业务流程的回滚路径,用户可以清晰地查看业务流程的运行过程。
在第一方面的另一种可能的实现方式中,业务流程对应的拓扑结构存储于分布式数据库中。
其中,分布式数据库可以为 Redis。可选地,拓扑结构在Redis中被缓存在键为“TOPO$FLOW001”的键值对中,缓存的值为一个二维数组,为了方便表示,可以将此二维数组转换为矩阵模式。
本申请中,在 Redis中缓存业务流程运行路径的拓扑结构,使得电子设备能够完整地还原任意时刻业务流程的运行状态,快速地找到回滚的路径。
在第一方面的另一种可能的实现方式中,若业务流程中的节点执行异常,电子设备获取节点的前序节点的预设配置信息,包括:
若节点执行超时异常,电子设备重新执行节点;
若节点执行超时依然异常,电子设备将业务流程的上下文信息存储至预设存储空间;
若节点执行超时恢复正常,节点存在其他异常,电子设备获取节点的前序节点的预设配置信息;其他异常包括节点的接口访问异常。
本申请中,业务流程的每个节点在流程编排阶段可进行超时时间和重试次数的配置。比如,节点的超时时间可配置为30000ms,重试次数可配置为5次。若节点的超时时间大于30000ms,则可认为节点超时异常,流程引擎可重试该节点。若重试次数小于5次,节点的超时时间恢复为小于或等于30000m,认为节点超时恢复正常。
本申请中,对于节点出现的超时异常或其他异常问题,电子设备均可触发执行业务流程的回滚操作,此外,为了避免回滚操作的冗余,电子设备可尝试重新执行节点,若仍存在超时异常,则将业务流程的上下文信息存储至预设存储空间,以便人工进行干预恢复。
在第一方面的另一种可能的实现方式中,电子设备根据前序节点的回滚接口,执行业务流程的回滚操作,包括:
若在执行回滚操作的过程中,业务流程中存在回滚异常节点,电子设备重新执行节点;
若回滚异常节点恢复正常,电子设备继续执行回滚操作,直至回滚至业务流程的开始节点或结束节点;
若回滚异常节点依然异常,电子设备将业务流程的上下文信息存储至预设存储空间。
本申请中,对于回滚异常的节点,电子设备可将业务流程的上下文信息存储至预设存储空间,以便人工进行干预恢复。对于回滚正常的节点,则可以继续执行回滚操作,直到回滚路径中不存在未执行回滚的节点,结束本次回滚操作。
第二方面,提供一种流程管理方法,管理方法应用于库存调拨场景,库存调拨场景包括上游系统、库存管理系统、库存中心系统以及电子设备,方法包括:
电子设备响应于上游系统的启动流程请求,启动开始节点,执行启动流程请求对应的库存调拨业务流程;库存调拨业务流程包括开始节点、普通节点、审批节点以及结束节点;
在执行库存调拨业务流程的过程中,若库存调拨业务流程中的节点执行异常,电子设备获取节点的前序节点的预设配置信息;节点的前序节点为库存调拨业务流程的正向次序中与节点相邻的上一节点,前序节点的预设配置信息用于指示前序节点配置有回滚接口;
电子设备根据前序节点的回滚接口,执行库存调拨业务流程的回滚操作。
在本申请中,在库存调拨业务流程的执行过程中,电子设备在遇到节点出现异常时,可根据异常节点的前序节点的回滚接口执行库存调拨业务流程的回滚操作,恢复已执行资源变更的各个节点的资源变更状态,使得库存调拨业务流程中所有节点的资源变更状态始终可以保持一致,对库存调拨业务流程起到了维护的作用,对于库存调拨业务更加安全可靠。
在第二方面的一种可能的实现方式中,若前序节点为普通节点,根据前序节点的回滚接口,执行库存调拨业务流程的回滚操作,包括:
若前序节点的回滚接口的配置信息不为空,电子设备访问前序节点的回滚接口,若回滚接口响应正常,电子设备回滚至前序节点的前序节点执行回滚操作,直至完成回滚操作;
若前序节点的回滚接口的配置信息为空,电子设备跳过前序节点,回滚至前序节点的前序节点执行回滚操作,直至完成回滚操作。
本申请中,库存调拨业务流程中涉及到的节点可配置相应的回滚接口,在节点异常时触发执行流程回滚。若未配置相应的回滚接口,电子设备在执行回滚操作时也直接跳过该节点继续执行回滚操作,从而实现在节点执行异常时,及时恢复节点资源变更状态,使得库存调拨业务流程中所有节点的资源变更状态始终保持一致,对库存调拨业务流程起到了维护的作用,对于库存调拨业务更加安全可靠。
在第二方面的另一种可能的实现方式中,若前序节点为审批节点,审批节点的回滚接口配置有回滚判断逻辑;
电子设备根据前序节点的回滚接口,执行库存调拨业务流程的回滚操作,包括:
若审批节点的回滚判断逻辑的回滚返回值为第一值,电子设备按照库存调拨业务流程的正向执行路径返回,执行业务流程的回滚操作;
若审批节点的回滚判断逻辑的回滚返回值为第二值,电子设备根据审批节点的其他分支路径,执行库存调拨业务流程的回滚操作。
在本申请中,在库存调拨业务流程的执行过程中,电子设备在遇到节点出现异常时,可根据异常节点的前序节点的回滚接口执行库存调拨业务流程的回滚操作,在回滚至分支节点时(审批节点),可按照分支节点配置的回滚逻辑,按照库存调拨业务流程的正向执行路径原路回滚至起始起点结束流程。或者,回滚至结束节点结束流程,多种回滚逻辑的配置,使得业务流程的执行更加灵活。
在第二方面的另一种可能的实现方式中,若前序节点为审批节点的后序节点,后序节点为库存调拨业务流程的正向次序中处于审批节点之后的节点,
电子设备根据前序节点的回滚接口,执行库存调拨业务流程的回滚操作,包括:
根据审批节点的后序节点的回滚接口,按照库存调拨业务流程的正向执行路径返回,执行业务流程的回滚操作。
在本申请中,在库存调拨业务流程的执行过程中,电子设备在遇到审批节点的后序节点出现异常时,可直接按照库存调拨业务流程的正向执行路径返回,执行业务流程的回滚操作,减少回滚操作的判断耗时,提高库存调拨业务流程的执行的效率。
在第二方面的另一种可能的实现方式中,若前序节点为审批节点,
电子设备根据前序节点的回滚接口,执行库存调拨业务流程的回滚操作,包括:
根据审批节点的回滚接口,根据审批节点的其他分支路径,执行库存调拨业务流程的回滚操作。
在本申请中,在库存调拨业务流程的执行过程中,电子设备在遇到审批节点出现异常时,可直接根据审批节点的其他分支路径,执行库存调拨业务流程的回滚操作,减少回滚操作的判断耗时,提高库存调拨业务流程的执行的效率。
在第二方面的另一种可能的实现方式中,库存调拨业务流程包括库存调拨提交任务、库存锁定任务、库存出库任务、库存入库任务;
库存调拨业务流程中的节点执行异常包括以下任意一种情况:
执行库存调拨提交任务的节点提交失败;
执行库存锁定任务的节点锁定失败;
执行库存出库任务的节点出库失败;
执行库存入库任务的节点入库失败。
在本申请中,在库存调拨业务流程的执行过程中,出现执行库存调拨提交任务的节点提交失败,或者,执行库存锁定任务的节点锁定失败或者,执行库存出库任务的节点出库失败,或者,执行库存入库任务的节点入库失败等有异常时,也即,出现上述任务对应的节点异常时,可根据各个节点的回滚逻辑执行库存调拨业务流程的回滚操作,恢复已执行资源变更的各个节点的资源变更状态。在回滚至分支节点时(审批节点),可按照分支节点配置的回滚逻辑,按照库存调拨业务流程的正向执行路径原路回滚至起始起点结束流程。或者,回滚至库存调拨业务流程的结束节点结束流程。使得库存调拨业务流程中所有节点的资源变更状态始终可以保持一致,同时,多种回滚逻辑的配置,使得业务流程的执行更加灵活。
可触发电子设备执行回滚操作。多种回滚逻辑的配置,使得业务流程的执行更加灵活。
第三方面,提供了一种电子设备,电子设备包括流程引擎,流程引擎执行如第一方面中任一项、第二方面任一项所述的流程管理方法。
第四方面,提供了一种电子设备,该电子设备包括存储器、通信模块和一个或多个处理器;所述存储器、所述通信模块与所述处理器耦合;所述存储器中存储有计算机程序代码,所述计算机程序代码包括计算机指令,当所述计算机指令被所述处理器执行时,使得所述电子设备执行如上述第一方面中任一项、第二方面中任一项所述的方法。
第五方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在电子设备上运行时,使得电子设备可以执行上述第一方面中任一项、第二方面中任一项所述的方法。
第六方面,提供了一种包含指令的计算机程序产品,当其在电子设备上运行时,使得电子设备可以执行上述第一方面中任一项、第二方面中任一项所述的方法。
第七方面,本申请实施例提供了一种芯片,芯片包括处理器,处理器用于调用存储器中的计算机程序,以执行如第一方面中任一项、第二方面中任一项的方法。
可以理解地,上述提供的第三方面所述的电子设备,第四方面所述的电子设备,第五方面所述的计算机可读存储介质,第六方面所述的计算机程序产品,第七方面所述的芯片所能达到的有益效果,可参考第一方面及其任一种可能的设计方式、第二方面及其任一种可能的设计方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种电子设备的结构示意图;
图2为本申请实施例提供的一种流程示例图;
图3为本申请实施例提供的一种节点配置界面的示例图;
图4为本申请实施例提供的一种“提交/取消库存调拨申请”的功能节点的节点配置界面的示例图;
图5为本申请实施例提供的一种执行节点的回滚接口配置详情界面的示例图;
图6为本申请实施例提供的一种分支节点的配置界面的示例图;
图7为本申请实施例提供的一种某一个流程对应的拓扑结构示例图;
图8为本申请实施例提供的一种图7所示流程的拓扑结构对应的矩阵示例图;
图9为本申请实施例提供的一种标记正向流程的示意图;
图10为本申请实施例提供的一种标记回滚流程的示意图;
图11为本申请实施例提供的另一种标记回滚流程的示意图;
图12为本申请实施例提供的一种流程管理方法的流程示意图;
图13为本申请实施例提供的另一种流程管理方法的流程示意图;
图14为本申请实施例提供的一种在指定目录下创建临时设备节点的示例图;
图15为本申请实施例提供的一种基于哈希环的设备节点异常的处理示意图;
图16为本申请实施例提供的一种流程管理方法的正向流程中,上/下游系统、流程引擎以及数据库的交互示例图;
图17为本申请实施例提供的一种流程管理方法的回滚流程中,下游系统、流程引擎的以及数据库的交互示例图;
图18为本申请实施例提供的一种应用在库存调拨业务流程中的流程管理方法的流程示意图;
图19为本申请实施例提供的一种电子设备的一种可能的结构示意图;
图20为本申请实施例提供的一种芯片系统的结构示意图。
具体实施方式
在本申请实施例的描述中,以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请以下各实施例中,“至少一个”、“一个或多个”是指一个或两个以上(包含两个)。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。术语“连接”包括直接连接和间接连接,除非另外说明。“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在使用流程引擎进行业务流程的功能配置时,一个完整的业务流程可能涉及到多个节点。每一个节点在正常执行后,会执行资源变更。节点的资源变更指的是节点所实现功能的状态的变更。比如,节点所实现的功能为提交查询请求,在该节点正常执行后,该节点的资源变更包括由未执行更新为提交查询请求成功。在完整的一个业务流程中,多个或所有节点的资源均变更成功,业务流程才算执行成功。若业务流程中某个节点的资源变更失败,也即,某个节点执行流程出现异常,那么整个业务流程也会失败。
在业务流程失败时,资源变更失败的节点的资源变更状态(失败/未执行)与已执行成功的资源变更成功的节点的资源变更状态(成功/已执行)不一致。这种情况下,需要将业务流程中资源变更成功的节点的资源变更状态恢复至未执行状态,来达到业务流程中所有节点的资源变更状态始终一致,避免业务流程崩溃的问题。其中,这种将业务流程中资源变更成功的节点的资源变更状态恢复至未执行状态的操作可称为变更回滚。
现有技术对于上述在执行中出现异常节点的情况,采取的操作包括终止当前业务流程,等待异常的节点恢复正常。在异常的节点恢复正常后,重新进行该节点的资源变更,在该节点资源变更成功,继续执行业务流程,达到各个节点的资源变更的最终一致性。
然而,这种方法需要保证各个节点资源变更的幂等性,即同一个业务流程允许多次重试,这提高了业务流程的编排技术要求。且,这种等待异常的节点恢复正常的方法,节点恢复正常的时间不可控,如果异常的节点长时间不能恢复,则会使得各个节点的资源变更状态长时间处于不一致状态,可能导致整个业务流程瘫痪或崩溃。
或者,现有技术对于在执行中出现异常节点的情况,采取的操作还包括两阶段提交方案。在资源变更准备(PREPARE)阶段,逐个询问业务流程中的各个节点,是否可以进行资源变更。如果可以,则预锁资源,并且进入资源变更提交(COMMIT)阶段,完成所有节点的资源变更。如果PREPARE阶段中,存在一个或多个的节点关于是否可以进行资源变更的询问结果为否,则确认业务流程执行失败。此时业务流程中的各节点资源未发生变化,仍然处于一致状态。
但是,这种两阶段提交方案较为复杂,在技术实现上有很大的难度。并且,该方案只能在系统正常的情况下保证业务流程中各个节点的资源变更的一致性,但是无法在系统超时、系统崩溃等情况下保证各个节点的资源变更的一致性。
本实施例提供一种流程管理方法,电子设备的流程引擎响应于第一设备发送的流程启动请求启动执行流程。在执行流程过程中,若流程中的节点执行异常,流程引擎根据该节点的前序节点(前序节点为流程正向执行过程中已执行的节点)的回滚逻辑,执行流程的回滚操作。若节点配置了回滚接口,基于回滚接口执行回滚操作;若回滚至分支节点,流程引擎根据分支节点配置的回滚逻辑,确定回滚路径。其中,回滚路径包括流程正向执行路径原路返回路径和分支节点的另一条分支路径。流程引擎按照回滚路径,将流程回滚至开始节点或结束节点,结束本次流程执行操作。
本方案中,流程中涉及到的节点可配置相应的回滚接口,在节点异常时触发执行流程回滚。流程回滚可以使得已经进行资源变更的节点实现资源变更恢复,从而实现在节点执行异常时,及时恢复节点资源变更状态,使得业务流程中所有节点的资源变更状态始终保持一致,对业务流程起到了维护的作用,对于对时效性需求较高的业务更加安全可靠。其中,回滚路径包括多条回滚路径,流程引擎可以从多条回滚路径中选择合适的回滚路径,使得业务流程实现的功能更加灵活。
本实施例提供的流程管理方法可以应用于多种业务流程场景,比如可以应用于库存调拨的业务流程场景,还可应用在其他业务流程场景中,比如,支付场景等流程资源变更时效性较高的场景,或者,办公审批场景等普通业务流程场景。本实施例对流程管理方法的应用场景不做限定。下面以本申请实施例所提供的流程管理方法可应用于库存调拨业务流程场景中为例,对本申请实施例提供的流程管理方法进行描述。应理解,其他业务流程场景下的流程管理方法可以参照库存调拨场景下的业务流程管理方法,不予赘述。
示例性地,库存调拨的业务流程场景可以包括多个系统,比如可以包括库存中心系统,订单系统(或者称为上游系统),库存管理系统(或者称为下游系统),这些不同的系统需要配置相同功能的接口进行信息的交互,且不同系统之间需要中间件实现信息的交互。示例性地,中间件可以为流程引擎。例如,库存中心系统通过流程引擎与上游系统、下游系统等系统进行信息交互,实现库存调拨的业务流程的执行。其中,流程引擎可部署在电子设备中。
库存中心系统可配置有标准的库存变更或库存查询接口,以便其他系统通过库存变更或库存查询接口访问库存中心系统。
流程引擎可根据库存调拨业务流程场景为业务流程中各个节点配置相应的接口,以便各个系统通过配置的接口访问相应的节点。应理解,本申请中,业务流程中的各个节点与各个系统存在对应关系,比如库存调拨的业务流程中的提交/取消库存调拨申请的节点与库存中心系统是对应的,库存中心系统可以通过提交/取消库存调拨申请的节点的接口访问流程引擎;库存调拨的业务流程中的库存锁定/解锁的节点与库存管理系统是对应的,库存管理系统可以通过库存锁定/解锁的节点的接口访问流程引擎。流程引擎还可以对业务流程中的节点的接口进行编排、组织等操作,形成完整的业务流程;流程引擎还可以提供事务能力,保证库存中心系统的库存数据准确。
在库存调拨业务流程中,流程引擎可根据执行节点的执行逻辑以及对应接口,向库存中心系统、订单系统、库存管理系统发送相应的请求,并接收各系统返回的结果响应。比如,请求可以包括执行至库存出库的节点时,流程引擎通过库存出库的节点的接口向库存管理系统发送库存出库请求;执行至库存入库的节点时,流程引擎通过库存入库的节点的接口向库存管理系统发送库存入库请求等等。流程引擎基于各个请求对应的结果响应,基于当前节点以及正向执行路径,继续执行库存调拨业务流程。若库存调拨业务流程的某一节点资源变更执行失败,比如,某一个节点的接口响应失败、或者锁定库存失败、或者出库失败、或者入库失败等,均可以触发流程引擎执行回滚操作。其中,流程引擎可以基于库存调拨业务流程中各节点配置的回滚逻辑确定回滚路径,基于回滚路径执行库存调拨业务流程的回滚操作。
其中,流程引擎可根据已执行的各个节点配置的回滚逻辑确定回滚路径。回滚路径包括按照库存调拨业务流程中正向流程中已执行的节点的路径原路返回的路径,以及,库存调拨业务流程中分支节点的其他分支路径。流程引擎按照回滚路径执行回滚操作,直至将库存调拨业务流程回滚至开始节点或者结束节点,恢复库存调拨业务流程中所有节点的库存变更状态,使得库存调拨业务流程中所有节点的库存变更状态保持一致。比如,库存调拨请求为库存出库,库存调拨业务流程中已执行的节点的库存变更状态均为执行成功,库存出库执行失败时,库存出库的变更状态执行失败,与已执行的节点的库存变更状态不一致。此时,流程引擎执行回滚操作,恢复库存调拨业务流程中已执行的节点的库存变更状态,比如将库存调拨业务流程中已执行的节点的库存变更状态恢复成未执行,直至将库存调拨业务流程回滚至开始节点或者结束节点,库存调拨业务流程所有节点的库存变更状态均为未执行状态,始终保持一致。
本申请实施例所提供的流程管理方法可应用于包含流程引擎的计算机设备,或者称为电子设备中。示例性地,电子设备可以为独立服务器、服务器集群等,电子设备也可以为笔记本电脑、个人计算机(personal computer,PC)等等,以下实施例对该电子设备的具体形式不做特殊限制。
示例性的,请参考图1,其示出本申请实施例提供一种电子设备(如电子设备100)的结构框图。图1所示的电子设备可以包括:处理器101、存储器102、通信模块103以及总线104。处理器101、存储器102以及通信模块103之间可以通过总线104连接。
处理器101是该电子设备的控制中心,可以是一个通用中央处理单元(centralprocessing unit,CPU),也可以是其他通用处理器等。其中,通用处理器可以是微处理器或者是任何常规的处理器等。
作为示例,处理器101可以包括一个或多个CPU,例如图1中所示的CPU 0和CPU 1。
存储器102可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
在一种可能的实现方式中,存储器102可以独立于处理器101存在。存储器102可以通过总线104与处理器101相连接,用于存储数据、指令或者程序代码。处理器101调用并执行存储器102中存储的指令或程序代码时,能够实现本申请实施例提供的流程管理方法。
在另一种可能的实现方式中,存储器102也可以和处理器101集成在一起。
通信模块103,用于该电子设备与其他设备通过通信网络连接,该通信网络可以是以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。通信模块103可以包括用于接收数据的接收单元,以及用于发送数据的发送单元。其他设备可以为终端,比如,手机、平板电脑、可穿戴电子设别、增强现实(augment reality,AR)/虚拟现实(virtual reality,VR)设备等。
总线104,可以是工业标准体系结构(industry standard architecture,ISA)总线、外部设备互连(peripheral component interconnect,PCI)总线或扩展工业标准体系结构(extended industry standard architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图1中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本实施例中,电子设备100的通信模块103可通过通信网络与其他设备通信。其他设备包括电子设备的上游设备和下游设备。其中,上游设备通过预设的流程接口向电子设备发送流程启动请求。电子设备通过预设的流程接口,根据流程中各节点的功能从下游设备获取业务流程请求的结果响应。具体的,电子设备100的通信模块103可通过通信网络接收上游设备发送的流程启动请求,通信模块103可将流程启动请求转发至处理器101。处理器101响应于流程启动请求,执行流程中每一个节点。在执行到需要获取下游系统的结果响应的节点时,处理器101可通过通信模块103向下游设备发送请求,并接收下游设备返回的结果响应,通信模块103将结果响应转发至处理器101。处理器101根据下游设备返回的结果响应继续执行流程。若在执行流程过程中,节点出现执行资源变更状态异常,处理器101可根据已执行节点的回滚逻辑,执行流程的回滚操作,直至回滚至流程中的结束节点或开始节点。
在一些实施例中,电子设备的处理器101(其中,处理器101中可部署流程引擎)在执行每一个节点的资源变更时,处理器101可将每一个节点的资源变更状态同步存储至电子设备的数据库中。
可选地,电子设备的数据库可以包括Redis、Mongo、MySql等数据库,电子设备可以调用不同类型数据库对应的接口,将节点的资源变更状态同步存储至数据库中。
其中,示例性地,处理器101可将流程的初始化拓扑结构存储至Redis数据库中。其中,流程的拓扑结构可用于表征流程中各个节点的连通状态、执行状态(已正向执行、已回滚执行、未执行等)、流程的上下文信息等等信息。基于Redis数据库基于其分布式存储特性,在执行流程的过程中,处理器101可实时更新Redis数据库中流程对应的拓扑结构的信息,实现流程的拓扑结构中的各节点的资源变更状态、上下文信息的同步更新。MySql数据库可以存储节点的资源变更失败时,流程异常的上下文信息、回滚失败的流程异常的上下文信息等等。可选地,处理器101可以事务表的形式在MySql数据库存储流程异常的上下文信息。
需要指出的是,图1中示出的结构并不构成对该电子设备100的限定,除图1所示部件之外,该电子设备100还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本实施例提供的流程管理方法包括流程编排部分和流程执行部分。其中,流程编排部分包括流程定义,流程定义指的是对流程中的节点进行接口配置、属性信息配置以及上下文信息配置等等。比如:对流程中涉及到的每一个节点进行接口配置、属性信息配置等。
流程执行部分可以指流程引擎在接收到其他设备的启动流程请求时所触发的,从相应地的流程的开始节点启动执行流程的操作。
示例性的,流程编排过程可以包括:电子设备可显示流程配置界面,接收用户在流程配置界面中对于不同类型节点的选择操作和配置操作,从而构建一个完整的库存调拨业务流程。其中,节点的类型包括开始节点/结束节点以及执行节点。业务流程中除了开始节点和结束节点,其它节点都是执行节点,每个执行节点可以配置正向流程逻辑和回滚流程逻辑。其中,回滚流程逻辑可以不配置,表示当前节点可以不回滚。
下面以库存调拨业务流程为例来说明流程编排。
其中,库存调拨业务流程包括从开始节点执行,经过提交/取消库存调拨申请至库存审批节点审批,在审批通过时进行第二目标的库存锁定/解锁、第二目标的库存出库/取消以及第一目标的库存入库/取消,直到执行到结束节点。其中,库存可以为某类对象的库存,对象可以为实体物品或者虚拟物品。第一目标和第二目标均为具有对象管理权限的实体。在第一目标的库存不足的情况下,可向流程引擎发起库存调拨申请进行库存的调拨操作。如果第二目标的对象库存充足,则可以完成从第二目标进行库存出库,入库至第一目标的库存调拨操作。如果第二目标的对象库存也不足,则会导致第一目标的库存调拨失败。
示例性地,图2给出了一种流程示例。电子设备接收用户对于开始节点、结束节点以及执行节点的选择操作以及配置操作,形成一个包含提交/取消库存调拨申请、审批、库存锁定/解锁、库存出库/取消、库存入库/取消的业务流程。
其中,对于执行节点中的分支节点,用户还可以进行分支节点的判断逻辑配置等。所有节点通过有向线段组织起来构成完整的 流程。
示例性地,图2所示的正向流程中除了开始节点与结束节点之外的所有节点均为执行节点。执行节点的属性信息配置指的是对于执行节点进行所实现功能以及涉及到的参数进行配置。比如,按照开始节点到结束节点的执行顺序,开始节点后的第二个节点为执行节点,配置该第二个节点的功能为提交/取消库存调拨申请;第三个节点为执行节点,配置该第三个节点的功能为库存审批节点审批;在第三个节点之后的一个节点为分支节点,分支节点为执行节点中的一种类型的节点,可根据其定义的功能提供多条分支路径。比如,其定义的功能为审批,审批包括审批通过与审批不通过两个分支路径。在审批通过的分支路径中,其后序节点为执行节点,配置该节点的功能为第二目标库存锁定/解锁;第二目标库存锁定/解锁对应的节点之后的节点仍然为执行节点,配置该节点的功能为第二目标库存出库/取消;第二目标库存出库/取消对应的节点之后的节点也为执行节点,配置该节点的功能为第一目标库存入库/取消。在审批不通过的分支路径中,其后序节点为执行节点,配置该节点的功能为驳回库存调拨申请。驳回库存调拨申请的节点的后序节点为结束节点。
示例性地,图3给出了一种基于库存调拨业务流程的节点配置界面的示例。用户可基于节点配置界面中提供的系统参数和客户端调用接口所传入的参数,进行节点属性信息配置。图3左侧区域包括系统参数和客户端调用接口所传入的参数;图3右侧区域是json渲染组件,用户可以自定义json的结构,灵活配置数据模型,参数值既可以手动输入,也可以通过拖拽左侧系统提供的参数来对其赋值。用户可通过选择右下方的编译按钮控件,预览json的渲染结果,检查数据模型是否有误,从而完成节点的属性信息配置。
对于流程中涉及到的执行节点的接口配置可以包括正向流程逻辑对应的正向接口和/或回滚流程逻辑对应的回滚接口。接口的类型可以包括超文本传输协议(hypertexttransfer protocol,HTTP)、远程过程调用(remote procedure call,RPC)、Redis接口、Mongo接口、MySql接口等类型的接口。流程引擎可通过各个节点的接口与其他系统进行信息交互;以及,通过各个节点的接口将指令/数据/响应传输至执行顺序的下一个节点。如果节点配置了回滚接口,在流程中某一个节点资源变更失败时,将会调用节点的回滚接口来进行流程的回滚。应理解,本申请所述的正向流程可以指从业务流程的开始节点执行至业务流程的结束节点对应的流程,正向接口可以指用于被调用执行正向流程逻辑的接口。回滚流程可以指从异常的节点沿正向路径返回执行至开始节点的流程,或者,从异常的节点沿其他轮径返回执行至结束节点的流程,回滚接口可以指用于被调用执行回滚流程逻辑的接口。此外,本申请不限定各个接口的命名,正向接口还可以称为第一接口,回滚接口可以称为第二接口或其他命名等,不予限制。
示例性地,执行节点的回滚接口的配置界面可参考图4所示。图4给出了一种“提交/取消库存调拨申请”的功能节点的节点配置界面的示例。其中,配置界面中包括节点标题、节点描述等控件,节点标题、节点描述等控件用于配置节点的属性信息。配置界面中还包括节点的接口具体配置区域。接口具体配置区域中包括接口的类型、超时时间、重试次数、描述等控件,用于配置节点的接口信息。以及,配置界面中还包括对接口的操作选项控件(比如编辑控件或者删除控件)。电子设备可接收用户基于配置界面对于接口的配置操作,获取对于执行节点的接口信息。比如,如图4所示,接口1的类型为POST,描述为“提交库存调拨申请”,该接口1为该执行节点的正向接口。接口2的类型为POST,描述为“【回滚】取消库存调拨申请”,该接口2为该执行节点的回滚接口。其中,POST接口类型为HTTP接口中的一种接口。
电子设备可以响应于用户对于某一接口的操作选项控件中“编辑”的操作,进入接口的配置详情界面。比如可以响应于用户对接口2的编辑控件的点击操作,进入执行节点的回滚接口配置详情界面禁行编辑。具体的,可参考图5。图5给出了一种执行节点的回滚接口配置详情界面的示例。其中,执行节点的回滚接口配置详情界面包括接口的地址(url)、接口的类型、接口参数等配置控件。用户可基于这些配置控件实现对执行节点的回滚接口的配置。其中,接口参数包括超时时间、重试次数、是否异步调用、是否通过接口文档生成工具(swagger)以及接口具体的请求代码等等。
本申请中,执行节点可以根据该节点本身的属性,将执行节点划分为普通接口和分支节点。其中普通节点可以指存在一个输入和一个输出的节点,通过普通接口的执行路径为一条。分支节点可以指存在一个输入和多个输出的节点,通过该分支节点的执行路径可以为多条。
对于流程中涉及到的分支节点,可配置其正向流程逻辑对应的正向路由条件和回滚流程逻辑对应的回滚路由条件。本实施例中,正向路由条件也可理解为分支节点的功能判断逻辑,根据分支节点所实现的判断功能,分为“是” 和“否”两个分支,按照条件走不同的逻辑分支。回滚路由条件也即回滚判断逻辑。参考图6给出了一种分支节点的配置界面的示例。分支节点的配置界面包括节点标题、节点描述、自增变量等配置控件。分支节点的配置界面还包括分支节点的判断条件配置区域和分支节点的回滚路由条件配置区域。判断条件配置区域可配置分支节点的功能判断逻辑。回滚路由条件配置区域可配置分支节点的回滚判断逻辑。示例性地,对于库存调拨业务流程中的审批节点,可配置其功能判断逻辑和回滚判断逻辑。审批节点的功能判断逻辑可配置为若审批通过,则执行至库存锁定节点;若审批不通过,执行至驳回库存调拨申请节点。审批节点的回滚判断逻辑可配置为若回滚返回值为是,则按照正向执行路径原路进行回滚;若回滚返回值为否,按照审批节点的另一条分支路径进行回滚。
示例性地,回滚路由条件中如果获取到指定值不为空且预设字段为否(false),则回滚返回值(rollback)为否(false)。在这种情况下,电子设备确定不按照正向执行路径原路回滚,基于分支节点的另一个分支路径回滚。若rollback为真(true),则按照正向执行路径的原路回滚。
在一些实施例中,电子设备可以在流程编排过程中初始化流程对应的拓扑图,比如编排完各个节点的接口之后初始化流程对应的拓扑图。其中,拓扑图可以表征流程中各个节点的连通状态、各个节点的执行状态、节点的上下文信息等。本申请所述的节点的连通状态可以用于指示该节点是否与其他节点连通,连通状态可以包括但不限于连通或不连通。本申请所述的执行状态可以包括但不限于已执行正向流程、已执行回滚流程、未执行中至少一项。节点的上下文信息包括上游系统携带的输入参数、流程引擎的环境参数、当前流程中各个节点的配置信息等等,同时,在电子设备的流程引擎执行流程的过程中,还可以实时更新记录流程对应的拓扑图中每一个节点的信息。
在一些实施例中,电子设备可将流程对应的拓扑图存储至Redis中,基于Redis分布式存储的特性,可及时地实现所有节点的资源变更状态的更新的一致性。具体到,可以以二维数组的方式将流程对应的拓扑图存储至Redis中。可选地,拓扑结构在Redis中被缓存在键为“TOPO$FLOW001”的键值对中,缓存的值为一个二维数组,为了方便表示,可以将此二维数组转换为矩阵模式。
图7所示的例子是某一个流程对应的拓扑结构,其中,图7中包括4个节点,图7中实线线段表示正向流程,虚线线段表示回滚流程,点线线段表示两个节点之间连通但未执行流程。从图7来看,节点0与节点1连通,且正向流程经过;节点1与节点2连通,且正向流程和回滚流程经过;节点2与节点3之间连通但未执行流程。
基于图7所示的拓扑结构,图8给出了一种图7所示流程的拓扑结构对应的矩阵示例。其中,矩阵中的src表征一段有向线段中的开始节点,矩阵中的tar表征一段有向线段中的结束节点。两个节点之间的路径可用约定的字符来表示。比如,以三位二进制数(000)来表示两个节点之间的路径。示例性地,二进制数000的右起第一位表示两个节点间是否连通,右起第二位表示正向流程是否经过该路径,右起第三位表示回滚流程是否经过该路径。或者,二进制数000的右起第一位表示两个节点间是否连通,右起第二位表示回滚流程是否经过该路径,右起第三位表示正向流程是否经过该路径等等。
可选地,二进制数也可以为四位、五位等,考虑到减少位数冗余,两个节点之间的路径只包括三种情况,这里采用三位二进制数。可选地,在记录至矩阵中时,可将二进制数转换为十进制数,以一个整数存储两个节点之间的路径。
示例性地,以二进制数000的右起第一位表示两个节点间是否连通,右起第二位表示正向流程是否经过该路径,右起第三位表示回滚流程是否经过该路径为例。参考图8,在电子设备执行业务流程的过程中,开始节点 0 和结束节点 1 之间连通并且被正向流程经过,其对应的二进制数为011,对应地记录在矩阵中的十进制数为3。开始节点1和结束节点2之间连通并且被正向流程经过和回滚流程都经过,其对应的二进制数为111,对应地记录在矩阵中的十进制数为7。开始节点2和结束节点3之间连通,但无正向流程或回滚流程经过,其对应的二进制数为 001,对应地记录在矩阵中的十进制数为1。
若两个节点之间不连通,其对应的二进制数为 000 表示,对应地记录在矩阵中的十进制数为0。
因此,图7与图8所示的流程的拓扑结构在Redis中的缓存形式为 [[0, 3, 0, 0],[0, 0, 7, 0], [0, 0, 0, 1], [0, 0, 0, 0]]。
相应地,在触发流程回滚操作时,电子设备可以根据Redis中的流程的拓扑结构确定执行路径的拓扑,迅速地找到回滚路径;或者,在回滚执行至流程的分支节点时,电子设备可以根据Redis中的流程的拓扑结构确定区别于原路径的另外一条分支路径进行回滚。
电子设备的流程引擎在Redis中以二维数组的形式缓存流程执行路径的拓扑结构,使得流程引擎能够完整地还原任意时刻流程的运行状态,快速地找到回滚的路径。
需要说明的是,在执行流程的过程中,对于流程中的每个节点,将基于该节点对应的接口进行与其他系统的信息交互或者功能调用,若接收到成功响应后,对应更新Redis中该流程的节点的上下文信息以及流程对应的拓扑结构。若该节点接口响应异常,也即,节点出现执行失败等异常,则触发进入流程回滚操作;同时更新回滚操作中该流程的节点的上下文信息以及流程对应的拓扑结构。
可选地,在一些实施例中,电子设备还可以根据流程的拓扑结构,在可视化界面展示流程的正向执行路径或者回滚路径。
示例性地,以图2所示的库存调拨业务流程为例。电子设备在可视化界面展示流程的执行路径,图9给出了一种标记正向流程的示意图。图9中实线线段表示已执行的路径。图9中,电子设备基于该流程对应的拓扑结构,标记从开始节点执行库存调拨业务流程,经过提交库存调拨申请、库存审批节点审批、审批通过后第二目标的库存锁定、第二目标的库存出库以及第一目标的库存入库,执行至结束节点的正向执行路径。
在一些实施例中,示例性地,图10给出了一种标记回滚流程的示意图。图10中实线线段表示已执行的路径。图10中,第一目标库存入库或取消节点执行失败,触发回滚流程。电子设备基于该流程对应的拓扑结构,标记经过第二目标库存出库取消、第二目标库存解锁的路径,回滚执行至审批节点时,基于审批节点的回滚判断逻辑,确定按照正向执行的原路径回滚,标记回滚至库存审批节点审批、取消库存调拨申请、开始节点的回滚执行路径。
在一些实施例中,示例性地,图11给出了另一种标记回滚流程的示意图。图11中实线线段表示已执行的路径。图11中,第一目标库存入库或取消节点执行失败,触发回滚流程。电子设备基于该流程对应的拓扑结构,标记经过第二目标库存出库取消、第二目标库存解锁的路径,回滚执行至审批节点时,基于审批节点的回滚判断逻辑,确定按照其他路径执行回滚操作,标记回滚至驳回库存调拨申请、结束节点的回滚执行路径。
可选地,在一些实施例中,若在分支节点的正向流程的后序节点存在异常,则按照正向执行的原路径回滚;若分支节点异常,则按照分支节点的另一条分支路径执行回滚操作。
上述实施例中对业务流程所涉及到的节点进行配置的方法可应用于其他业务流程场景中,以上实施例只是通过库存调拨业务流程举例,对此不构成限定。
在一些实施例中,电子设备还可配置业务流程对外进行信息交互的接口。示例性地,上游系统可通过访问该接口来触发启动流程。电子设备的流程引擎执行对应的流程,并初始化流程中各节点的上下文信息。流程引擎启动执行流程后,执行到流程的某个节点,根据该节点的配置信息,访问该节点所配置的接口,接口响应正常,基于接口接收到成功响应后,将此节点在流程的上下文信息更新到 Redis中。若执行到分支节点,则根据该分支节点的功能判断逻辑,执行到对应的分支路径。若本次流程未出现节点执行异常,则流程正常结束。若本次流程出现了节点执行异常,则触发流程回滚。
上文对业务节点的配置信息(包括属性信息、接口信息等)进行编排进行了介绍,在完成业务流程中各个节点的配置信息编排之后,可以基于节点的接口信息执行相应的业务流程,下面结合图12-图13、图16-图18对执行业务流程的过程进行介绍:
在一些实施例中,示例性地,图12给出了一种流程管理方法的流程示意图,在执行业务流程的过程中遇到执行异常时触发电子设备执行回滚操作。具体包括:
S1101、电子设备响应于启动流程请求,触发子设备正向执行启动流程请求对应的业务流程。
其中,启动流程请求可为上游系统向电子设备发送的。
可选地,S1102、电子设备在执行每一个节点时,均会记录当前节点的执行路径。
S1103、在正向执行业务流程的过程中,对于业务流程中的每一个节点,若所有节点均正常执行,不存在任何问题的异常,执行S1104;若当前节点执行异常,执行S1105。
S1104、电子设备确定业务流程执行成功,结束业务流程的执行操作。
当前节点执行异常时,电子设备获取执行业务流程的正向次序中,执行异常的节点的前序节点的预设配置信息,其中,预设配置信息包括节点的回滚接口的配置,回滚接口用于指示按照业务流程的正向执行路径回滚或按照业务流程中的其他路径回滚。
S1105、电子设备根据节点的前序节点的预设配置信息,执行业务流程的回滚操作。
若电子设备确定已回滚至业务流程的开始节点或结束节点,回滚路径中不存在未执行回滚的节点,确定回滚操作完成,执行S1106:
S1106、电子设备确定回滚操作完成,结束业务流程的执行操作。
具体地,节点执行异常又包括多种情况。
具体,参考图13给出的流程管理方法的流程示意图。
业务流程的每个节点在流程编排阶段可进行超时时间和重试次数的配置。比如,节点的超时时间可配置为30000ms,重试次数可配置为5次。若节点的超时时间大于30000ms,则可认为节点超时异常,流程引擎可重试该节点。若重试次数小于5次,节点的超时时间恢复为小于或等于30000m,认为节点超时恢复正常。
基于各个业务流程中各个节点的超时时长与重试次数的配置,若业务流程的某个节点存在超时异常,流程引擎重试该节点N次,若重试N次每一次该节点依然超时异常,则将业务流程的上下文信息记录至异常日志中,等待人工干预,结束业务流程的执行操作(参考图13中路径1的流程)。
若在重试节点N次的过程中,该节点超时恢复正常,且,该节点无其他异常,则流程引擎执行业务流程成功,结束业务流程的执行操作,(参考图13中路径2的流程)。若重试该节点N次的过程中,该节点超时恢复正常,但是,该节点还存在其他异常,则根据业务流程中已执行的路径,执行回滚操作,(参考图13中路径3的流程)。
在执行回滚的过程中,若回滚正常,且,回滚至业务流程的开始节点或结束节点(也即,回滚流程中不存在未执行回滚的节点),则流程引擎确定回滚操作完成,结束业务流程的执行操作(参考图13中路径4的流程)。
若回滚异常,重试该节点M次,(参考图13中路径5的流程)。若重试正常,则业务流程引擎确定回滚操作完成,结束业务流程的执行操作,(参考图13中路径4的流程)。
若重试异常,将回滚的上下文信息记录至指定的存储空间,(参考图13中路径6的流程)。其中,指定的存储空间可以为预设在数据库中的事务表。
若记录正常,则流程引擎确定回滚操作完成,结束业务流程的执行操作,(参考图13中路径7的流程)。
若记录异常,则将业务流程的上下文信息记录至异常日志中,等待人工干预,(参考图13中路径8的流程),结束业务流程的执行操作。
其中,业务流程中的节点可以会通过 HTTP 访问后端服务,节点所实现的功能越多,与其他设备交互越多,超时现象越频繁。如果超时,允许重试 N次。如果回滚异常,可重试 M次。重试N次、重试M次可根据实际情况进行配置,N、M为大于0 的自然数。
可选地,在一些实施例中,除了上述业务流程中各节点产生超时异常或其他异常外,流程引擎所在的电子设备也可以产生异常,导致流程执行异常产生中断的问题。对于这种问题,本实施例给出了一种对于电子设备执行业务流程过程中进行监听的方法,在电子设备执行业务流程中断时,可及时通过调用其他电子设备继续执行业务流程。在其他电子设备继续执行业务流程过程中,未出现节点超时异常、重试异常或其他异常时,按照业务流程的正向执行流程执行至结束节点;若出现节点超时异常、重试异常或其他异常时,可基于业务流程中节点的回滚接口执行相应的回滚操作,执行至业务流程的开始节点或结束节点。
具体地,在通过设备集群执行业务流程。设备集群中包括可执行业务流程的多个设备节点server。在每一个设备节点启动执行业务流程时可在指定目录下创建与其对应的临时设备节点,调用分布式协调服务监听该指定目录下的临时设备节点的变化,并且将临时设备节点的变化通知到该业务流程中包含的每个设备节点。示例性地,分布式协调服务可以为zookeeper。
示例性地,图14给出了一种在指定目录下创建临时设备节点的示例。其中,设备集群中可执行业务流程的设备节点包括设备节点001,设备节点002,...,设备节点N,指定目录为 /跟踪目录(flow-engine)/设备节点集(servers),其中,设备节点集(servers)中包括临时设备节点001(/server001),临时设备节点002(/server002),...,临时设备节点N(/serverN)。
基于图15,设备集群中的所有设备节点可排布于一个哈希环上,可以调用zookeeper监听该指定目录下的临时设备节点的变化。如果设备节点server002 在执行流程中出现设备异常,zookeeper 可以将设备节点server002设备异常的消息通知给其他的设备节点,并将因设备节点server002异常而中断执行的业务流程对应的流程标识散列到哈希环上,基于流程标识的散列位置,确定一个目标设备节点来执行设备节点server002所中断的业务流程。其中,可以通过对流程标识(比如流程ID)取余的方式确定其在哈希环上的散列位置。比如,设定哈希环上每两两设备节点之间的区域为一个取值范围,若对流程标识(比如流程ID)取余的结果落入某一个取值范围,则基于该取值范围的顺时针方向,确定下一个设备节点为接管中断流程的节点。参考图15,对流程标识(比如流程ID)取余的结果落在图中黑色圆圈所在位置,基于该位置的顺时针方向,确定下一个设备节点(设备节点server005)为接管中断流程的节点。该方案为现有技术,本实施例不做赘述。
示例性地,若如图15所示,设备节点server005接管了设备节点server002所中断的业务流程,那么就由设备节点server005继续执行该业务流程。若执行业务流程中未出现节点超时异常、重试异常或其他异常时,按照业务流程的正向执行流程执行至结束节点;若出现节点超时异常、重试异常或其他异常时,可基于业务流程中节点的回滚接口执行相应的回滚操作,执行至业务流程的开始节点或结束节点。以此,可在执行业务流程的设备出现异常时,保证业务流程仍可以继续执行,维护了业务流程的执行过程。
上述图12和图13以回滚流程为例对业务流程过程进行了描述,下面结合图16对业务流程正向执行过程进行描述。示例性地,图16给出了一种流程管理方法的正向流程中,上/下游系统、流程引擎以及数据库的交互示例。电子设备的流程引擎在接收到上游系统发送的流程启动请求时,可相应地触发启动执行对应的业务流程;流程引擎基于流程中各个节点的接口信息、属性信息以及Redis中存储的流程对应的拓扑结构执行该业务流程。流程引擎具体执行到业务流程的某个节点,根据该节点的配置信息,访问该节点所配置的接口,待接口成功响应后,将业务流程的上下文信息刷新到 Redis缓存中。如果是分支节点,则根据节点的执行结果,执行到不同的分支。具体地,包括:
S201、上游系统调用业务流程对应的接口,向流程引擎发送业务流程启动请求。
S202、流程引擎响应于业务流程启动请求启动执行业务流程,初始化业务流程的上下文信息。
其中,流程引擎在启动业务流程的过程中,为业务流程中涉及到的各个节点初始化上下文信息。可选地,流程中各个节点的上下文信息可存储至Redis中。
S203、流程引擎判断本业务流程是否存在未执行节点。若存在未执行节点,执行S204;若不存在未执行节点,执行S210。
S204、流程引擎获取下一个未执行节点的配置信息。
其中,配置信息包括接口信息和属性信息等。
S205、流程引擎根据下一个未执行节点的接口,向下游系统发送处理请求。
S206、下游系统响应于处理请求执行相应操作,并返回结果响应。
若流程引擎调用接口响应正常,且接收下游系统返回的结果响应,执行S207。若流程引擎调用接口响应异常,或,接收下游系统返回的结果响应异常,执行S209。
S207、流程引擎获取进行当前节点的数据处理,并更新业务流程中该节点的资源变更状态。
S208、流程引擎更新第一数据库中的业务流程的上下文信息,并返回执行S203。
第一数据库可以为Redis。
S209、流程引擎触发执行业务流程的回滚操作,结束当前业务流程的正向执行操作。
S210、流程引擎将本次业务流程的上下文信息标记为已成功。
S211、流程引擎将第一数据库中本次业务流程的上下文信息标记为已成功,结束当前业务流程的正向执行操作。
在本实施例中,电子设备的流程引擎响应于第一设备发送的业务流程启动请求启动执行业务流程。在执行业务流程过程中,循环遍历未执行的节点,根据每个节点的配置信息执行相应的操作。若业务流程中的节点执行异常,触发流程引擎执行业务流程的回滚操作。回滚操作可以使得已经进行资源变更的节点实现资源变更恢复,从而实现在节点执行异常时,及时恢复节点资源变更状态,使得业务流程中所有节点的资源变更状态始终保持一致,对业务流程起到了维护的作用,对于对时效性需求较高的业务更加安全可靠。
在一些实施例中,图16中流程引擎执行S209的回滚操作,具体可参考图17所示,图17给出了一种流程管理方法的回滚流程中,下游系统、流程引擎的以及数据库的交互示例。其中,包括:
S301、业务流程正向执行异常,触发执行业务流程的回滚操作。
S302、流程引擎向第一数据库发送获取当前业务流程的拓扑结构的请求。
其中,拓扑结构包括了当前业务流程中各个节点的已执行的路径和未执行的路径等等信息。第一数据库为Redis。
S303、第一数据库根据该请求查询业务流程的拓扑结构,向流程引擎返回业务流程的拓扑结构。
S304、流程引擎基于业务流程的拓扑结构,从产生异常节点的上一个节点开始执行回滚操作。
产生异常节点的上一个节点指的是,在流程的正向执行次序中产生异常节点的前序一个节点。
S305、流程引擎判断回滚流程是否存在未执行节点。若存在执行S306;若不存在执行S314。
S306、流程引擎判断下一个未执行节点是否为分支节点。若是,执行S307;若不是,执行S308。
下一个未执行节点为回滚执行次序中的后一个节点。
S307、流程引擎判断分支节点回滚路由条件执行为是否为是。若是,返回执行S305;若不是,返回执行S316。
S308、流程引擎基于业务流程的上下文信息,获取当前节点的回滚接口的配置信息。若当前节点的回滚接口的配置信息不为空,执行S309;若当前节点的回滚接口配置信息为空,则返回执行S305。
回滚接口的配置信息不为空也就是当前节点配置了回滚接口;回滚接口的配置信息为空指的是当前节点未进行具体地回滚接口的配置。
S309、流程引擎调用回滚接口向下游系统的发送回滚请求。
S310、下游系统响应于该回滚请求执行回滚处理,并向流程引擎返回结果响应。
若流程引擎调用接口响应正常,且接收下游系统返回的结果响应正常,执行S311。若流程引擎调用接口响应异常,或者接收下游系统返回的结果响应异常,执行S313。
S311、流程引擎执行当前节点的业务处理。
S312、流程引擎更新第一数据库中的回滚流程的上下文信息,并返回执行S305。
S313、流程引擎将业务流程的上下文信息记录至异常日志中,等待人工干预,结束当前回滚操作。
S314、流程引擎将本次业务流程标记为已回滚。
S315、流程引擎将第一数据库中的本次业务流程标记为已回滚,结束当前回滚操作。
S316、流程引擎改变回滚路径,执行与原业务流程不同的回滚路径,结束当前回滚操作。
在本实施例中,电子设备的流程引擎响应于第一设备发送的业务流程启动请求启动执行业务流程。在执行业务流程过程中,若业务流程中的节点执行异常,流程引擎根据该节点的前序节点的回滚逻辑(前序节点为流程正向执行过程中已执行的节点),执行流程的回滚操作。若节点的回滚接口配置信息不为空,基于回滚接口执行回滚操作;若回滚至分支节点,流程引擎根据分支节点配置的回滚逻辑,确定回滚路径。
其中,回滚路径包括流程正向执行路径原路返回路径和分支节点的另一条分支路径。流程引擎基于按照回滚路径,将业务流程回滚至开始节点或结束节点,结束本次业务流程执行操作。
本方案中,流程回滚可以使得已经进行资源变更的节点实现资源变更恢复,从而实现在节点执行异常时,及时恢复节点资源变更状态,使得业务流程中所有节点的资源变更状态始终保持一致,对业务流程起到了维护的作用,对于对时效性需求较高的业务更加安全可靠。其中,回滚路径包括多条回滚路径,使得业务流程实现的功能更加灵活。
本实施例提供的流程管理方法应用在库存调拨的业务流程场景中,下面结合库存调拨业务流程,以第一目标库存不足,从第二目标调拨库存为例,对本申请提供的业务流程过程进行描述。在一些实施例中,图18给出了应用在库存调拨业务流程中的流程管理方法。示例性地,其中,库存调拨业务流程中涉及到的交互系统/平台/设备包括库存中心系统、上游系统(比如订单系统)、下游系统(比如库存管理系统)、流程引擎以及数据库。数据库包括第一数据库和第二数据库,其中,示例性地,第一数据库可以为Redis,第二数据库可以为MySql。如图18所示,该库存调拨业务流程中可以包括开始节点、审批节点、节点1、节点2、节点3、节点4、节点5以及结束节点。如图18所示,该流程管理方法包括:
S101、上游系统调用库存调拨业务流程对应的接口向流程引擎发送库存调拨请求。
上游系统为第一目标对应的上游系统,在第一目标库存不足需要进行库存调拨的情况下,第一目标通过上游系统向流程引擎发送库存调拨请求。
S102、流程引擎接收上游系统发送的库存调拨请求触发执行库存调拨业务流程。
其中,流程引擎在启动库存调拨业务流程的过程中,还可以为库存调拨业务流程中涉及到的各个节点准备上下文信息。
S103、流程引擎执行库存调拨业务流程至节点1,通过对应的接口向库存管理系统(下游系统)提交库存调拨请求。
S104、流程引擎接收库存管理系统通过对应接口返回的成功响应。
流程引擎在接收到库存管理系统通过对应接口返回的成功响应后,可实时将节点1的资源变更状态以及上下文信息更新至第一数据库Redis中,也即,流程引擎执行:
S105、记录库存调拨业务流程中节点1的上下文信息。
S106、流程引擎将库存调拨请求提交至审批节点。
其中,审批节点作为具有判断逻辑的分支节点,包括多条输出路径。
在本实施例中,若审批节点的审批结果为审批通过,则执行库存调拨业务流程至节点2;否则,流程引擎执行库存调拨业务流程至节点5,确定驳回本次库存调拨请求,执行至库存调拨业务流程的结束节点,结束本次流程。
S107、流程引擎执行库存调拨业务流程至节点2,调用相应的接口向库存中心系统发送第二目标的锁定库存请求。
若从第二目标中调拨库存,在进行库存调拨之前,可以先对第二目标的库存进行锁定操作。
库存中心系统响应于第二目标的锁定库存请求,可执行锁定第二目标的库存的操作。在完成锁定第二目标的库存的操作时,可向流程引擎返回成功响应。
S108、库存中心系统向流程引擎返回成功响应。
流程引擎基于成功响应,可刷新Redis中的节点2的资源变更状态以及上下文信息。
S109、流程引擎执行库存调拨业务流程至节点3,提交第二目标的出库请求。
流程引擎可调用相应的接口向库存中心系统发送第二目标的出库请求。
其中,若第二目标的库存充足,可满足第一目标的库存调拨请求,则库存中心系统可向流程引擎返回对于第二目标的出库请求的成功响应。
流程引擎在接收到第二目标的出库请求的成功响应之后,可执行:
S110、流程引擎执行库存调拨业务流程至节点4,提交第一目标的入库请求。
流程引擎可调用相应的接口向库存中心系统发送第一目标的入库请求。
若流程引擎接收到库存中心系统对于第一目标的入库请求的成功响应,则可完成第一目标的入库操作,以此实现第一目标的库存调拨操作。
若第一目标库存可用空间不足或者库存中心系统存在其他异常,无法完成第一目标的入库,库存中心系统会向流程引擎返回入库请求的失败响应。
流程引擎接收到库存中心系统对于第一目标的入库请求的失败响应,确定节点产生了资源(库存)变更失败的问题,此时,流程引擎需要根据各个节点配置的回滚逻辑,执行库存调拨业务流程的回滚操作,包括:
S111、流程引擎从Redis中获取库存调拨业务流程对应的拓扑结构。
其中,库存调拨业务流程对应的拓扑结构中包括了库存调拨业务流程中涉及到的各个节点的配置信息、执行状态和上下文信息。
其中,节点的配置信息包括节点的接口配置、正向执行逻辑配置、回滚逻辑配置等。若节点为分支节点,分支节点的配置信息还包括基本执行逻辑配置以及回滚判断逻辑配置。其中,基本执行逻辑配置指的是该分支节点所处流程中的业务判断逻辑配置;回滚判断逻辑配置包括按流程正向路径原路回滚或按其他路径回滚的判断逻辑配置。节点的执行状态包括已执行正向流程、已执行回滚流程、未执行等状态。节点的上下文信息包括节点的前序节点、后续节点、节点之间的连通状态等等。
流程引擎可通过库存调拨业务流程对应的拓扑结构获取库存调拨业务流程中各个节点的执行情况,在节点产生了资源(库存)变更失败的问题时,基于库存调拨业务流程对应的拓扑结构,可执行库存调拨业务流程的回滚操作,包括:
S112、流程引擎执行回滚操作,基于节点4的前序节点,回滚至节点3,并提交取消出库指令。
节点4的前序节点指的是在正向执行库存调拨业务流程中的节点4的前序节点。
流程引擎提交取消出库指令,可使得已更新库存出库的节点(节点3)恢复库存未出库的状态。
S113、流程引擎执行回滚操作,基于节点3的前序节点,回滚至节点2,并提交取消库存锁定指令。
节点3的前序节点指的是在正向执行库存调拨业务流程中的节点4的前序节点。
流程引擎提交取消库存锁定指令,可使得已更新库存锁定的节点(节点2)恢复库存未锁定的状态。
S114、流程引擎执行回滚操作,基于节点2的前序节点,回滚至审批节点;若审批节点的回滚逻辑为不做处理,则按照库存调拨业务流程的正向执行路径原路回滚。
可选地,审批节点作为分支节点,还配置多种回滚判断逻辑。
其中,包括按照库存调拨业务流程的正向执行路径原路回滚或者按其他路径回滚。
在按照库存调拨业务流程的正向执行路径原路回滚,包括:
S115、基于审批节点的不做处理的回滚逻辑,回滚至节点1,并提交库存调拨取消指令。
S116、流程引擎执行回滚操作,基于节点1的前序节点,回滚至开始节点,库存调拨业务流程结束。
可选地,若S116中提交库存调拨取消指令失败,流程引擎无法从审批节点回滚至节点1,此时,流程引擎执行:
S117、流程引擎将库存调拨业务流程的信息存储至第二数据库。
其中,库存调拨业务流程的信息包括库存调拨业务流程中涉及到的所有节点执行状态和上下文信息。可选地,第二数据库(MySql)可以包括库存调拨业务流程的事务表,事务表用于库存调拨业务流程的信息。流程引擎将库存调拨业务流程的信息存储至MySql的事务表中,等待人工处理。
在上述库存调拨业务流程的执行过程中,流程引擎在遇到节点出现资源变更失败的异常时,可根据各个节点的回滚逻辑执行库存调拨业务流程的回滚操作,恢复已执行资源变更的各个节点的资源变更状态。在回滚至分支节点时(审批节点),可按照分支节点配置的回滚逻辑,按照库存调拨业务流程的正向执行路径原路回滚至起始起点结束流程。或者,回滚至节点5,直至执行至库存调拨业务流程的结束节点结束流程。使得库存调拨业务流程中所有节点的资源变更状态始终可以保持一致,同时,多种回滚逻辑的配置,使得业务流程的执行更加灵活。
图19示出了上述实施例中所涉及的电子设备的一种可能的结构示意图。图19所示的电子设备1000包括处理模块1001、通信模块1002以及存储模块1003。
其中,处理模块1001可以是中央处理器(central processing unit,CPU),数字信号处理器(digital signal processor,DSP),专用集成电路(application-specificintegrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。处理器可以包括应用处理器和基带处理器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。存储模块1003可以是存储器。
例如,处理模块1001可以为如图1所示的处理器101;通信模块1002可以为如图1所示的通信模块103;存储模块1003可以为如图1所示的存储器102。本申请实施例所提供的电子设备可以为图1所示的电子设备100。
本申请实施例还提供一种芯片系统(例如,片上系统(system on a chip,SoC)),如图20所示,该芯片系统包括至少一个处理器701和至少一个接口电路702。处理器701和接口电路702可通过线路互联。例如,接口电路702可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路702可用于向其它装置(例如处理器701或者电子设备的摄像头)发送信号。示例性的,接口电路702可读取存储器中存储的指令,并将该指令发送给处理器701。当所述指令被处理器701执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中电子设备100执行的各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述方法实施例中电子设备100执行的各个功能或者步骤。例如,该计算机可以是上述电子设备100。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (19)

1.一种流程管理方法,其特征在于,包括:
电子设备响应于启动流程请求,启动执行所述启动流程请求对应的业务流程;所述业务流程包括多个节点;
在执行所述业务流程的过程中,若所述业务流程中的节点执行异常,所述电子设备获取所述节点的前序节点的预设配置信息;所述节点的前序节点为所述业务流程的正向次序中与所述节点相邻的上一节点,所述前序节点的预设配置信息用于指示所述前序节点配置有回滚接口;若所述前序节点为分支节点,所述分支节点的回滚接口配置有回滚判断逻辑;所述回滚判断逻辑用于基于回滚返回值进行回滚路由,若所述回滚返回值为第一值,所述回滚判断逻辑用于指示按照所述业务流程的正向执行路径返回,若所述回滚返回值为第二值,所述回滚判断逻辑用于指示根据所述分支节点的其他分支路径执行所述业务流程的回滚操作;所述分支节点的预设配置信息还包括功能判断逻辑,所述功能判断逻辑用于基于所述分支节点的业务逻辑进行正向路由;
所述电子设备根据所述前序节点的回滚接口,执行所述业务流程的回滚操作。
2.根据权利要求1所述的方法,其特征在于,若所述前序节点为普通节点,所述电子设备根据所述前序节点的回滚接口,执行所述业务流程的回滚操作,包括:
若所述普通节点的回滚接口的配置信息不为空,所述电子设备访问所述前序节点的回滚接口,若所述回滚接口响应正常,所述电子设备回滚至所述前序节点的前序节点执行回滚操作,直至完成回滚操作;
若所述普通节点的回滚接口的配置信息为空,所述电子设备跳过所述前序节点,回滚至所述前序节点的前序节点执行回滚操作,直至完成回滚操作。
3.根据权利要求1或2所述的方法,其特征在于,在所述启动执行所述启动流程请求对应的业务流程之前,所述方法还包括:
初始化所述业务流程对应的拓扑结构;所述拓扑结构用于表征所述业务流程中相邻节点之间的连通状态、流程路径的执行状态以及所述业务流程的上下文信息;
所述节点的流程路径的执行状态包括已执行正向路径、已执行回滚路径以及未执行。
4.根据权利要求3所述的方法,其特征在于,在执行所述业务流程的过程中,所述方法还包括:
若所述业务流程的节点执行正常,基于所述节点的执行路径更新所述拓扑结构。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述业务流程的节点均执行正常,且,所述业务流程不存在未执行节点,所述电子设备标记所述业务流程执行成功;
所述电子设备基于所述业务流程的拓扑结构,获取所述业务流程的正向执行路径。
6.根据权利要求3所述的方法,其特征在于,所述获取所述节点的前序节点的预设配置信息,包括:
所述电子设备基于所述业务流程对应的拓扑结构,确定执行所述业务流程的正向次序中所述节点的前序节点;
获取所述前序节点的预设配置信息。
7.根据权利要求3所述的方法,其特征在于,在所述执行所述业务流程的回滚操作之后,所述方法还包括:
所述电子设备基于所述回滚操作,更新所述业务流程对应的拓扑结构。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
若所述业务流程的回滚操作回滚至所述业务流程的开始节点或结束节点,所述电子设备标记所述业务流程已回滚;
所述电子设备基于所述业务流程的拓扑结构,获取所述业务流程的回滚执行路径。
9.根据权利要求4-8中任一项所述的方法,其特征在于,所述业务流程对应的拓扑结构存储于分布式数据库中。
10.根据权利要求1所述的方法,其特征在于,若所述业务流程中的节点执行异常,所述电子设备获取所述节点的前序节点的预设配置信息,包括:
若所述节点执行超时异常,所述电子设备重新执行所述节点;
若所述节点执行超时依然异常,所述电子设备将所述业务流程的上下文信息存储至预设存储空间;
若所述节点执行超时恢复正常,所述节点存在其他异常,所述电子设备获取所述节点的前序节点的预设配置信息;所述其他异常包括所述节点的接口访问异常。
11.根据权利要求1所述的方法,其特征在于,所述电子设备根据所述前序节点的回滚接口,执行所述业务流程的回滚操作,包括:
若在执行所述回滚操作的过程中,所述业务流程中存在回滚异常节点,所述电子设备重新执行所述节点;
若所述回滚异常节点恢复正常,所述电子设备继续执行所述回滚操作,直至回滚至所述业务流程的开始节点或结束节点;
若所述回滚异常节点依然异常,所述电子设备将所述业务流程的上下文信息存储至预设存储空间。
12.一种流程管理方法,其特征在于,所述管理方法应用于库存调拨场景,所述库存调拨场景包括上游系统、库存管理系统、库存中心系统以及电子设备,所述方法包括:
电子设备响应于所述上游系统的启动流程请求,启动开始节点,执行所述启动流程请求对应的库存调拨业务流程;所述库存调拨业务流程包括开始节点、普通节点、审批节点以及结束节点;
在执行所述库存调拨业务流程的过程中,若所述库存调拨业务流程中的节点执行异常,所述电子设备获取所述节点的前序节点的预设配置信息;所述节点的前序节点为所述库存调拨业务流程的正向次序中与所述节点相邻的上一节点,所述前序节点的预设配置信息用于指示所述前序节点配置有回滚接口,若所述前序节点为所述审批节点,所述审批节点的回滚接口配置有回滚判断逻辑,所述回滚判断逻辑用于基于回滚返回值进行回滚路由,若所述回滚返回值为第一值,所述回滚判断逻辑用于指示按照所述库存调拨业务流程的正向执行路径返回,若所述回滚返回值为第二值,所述回滚判断逻辑用于指示根据所述审批节点的其他分支路径执行所述业务流程的回滚操作;所述审批节点的预设配置信息还包括功能判断逻辑,所述功能判断逻辑用于基于所述审批节点的业务逻辑进行正向路由;
所述电子设备根据所述前序节点的回滚接口,执行所述库存调拨业务流程的回滚操作。
13.根据权利要求12所述的方法,其特征在于,若所述前序节点为所述普通节点,根据所述前序节点的回滚接口,执行所述库存调拨业务流程的回滚操作,包括:
若所述前序节点的回滚接口的配置信息不为空,所述电子设备访问所述前序节点的回滚接口,若所述回滚接口响应正常,所述电子设备回滚至所述前序节点的前序节点执行回滚操作,直至完成回滚操作;
若所述前序节点的回滚接口的配置信息为空,所述电子设备跳过所述前序节点,回滚至所述前序节点的前序节点执行回滚操作,直至完成回滚操作。
14.根据权利要求12所述的方法,其特征在于,若所述前序节点为所述审批节点的后序节点,所述后序节点为所述库存调拨业务流程的正向次序中处于所述审批节点之后的节点,
所述电子设备根据所述前序节点的回滚接口,执行所述库存调拨业务流程的回滚操作,包括:
根据所述审批节点的后序节点的回滚接口,按照所述库存调拨业务流程的正向执行路径返回,执行所述业务流程的回滚操作。
15.根据权利要求12所述的方法,其特征在于,若所述前序节点为所述审批节点,
所述电子设备根据所述前序节点的回滚接口,执行所述库存调拨业务流程的回滚操作,包括:
根据所述审批节点的回滚接口,根据所述审批节点的其他分支路径,执行所述库存调拨业务流程的回滚操作。
16.根据权利要求12-15中任一项所述的方法,其特征在于,所述库存调拨业务流程包括库存调拨提交任务、库存锁定任务、库存出库任务、库存入库任务;
所述库存调拨业务流程中的节点执行异常包括以下任意一种情况:
执行所述库存调拨提交任务的节点提交失败;
执行所述库存锁定任务的节点锁定失败;
执行所述库存出库任务的节点出库失败;
执行所述库存入库任务的节点入库失败。
17.一种电子设备,其特征在于,所述电子设备包括流程引擎,所述流程引擎执行如权利要求1-16中任一项所述的流程管理方法。
18.一种电子设备,其特征在于,所述电子设备包括存储器、通信模块和一个或多个处理器;所述存储器、所述通信模块与所述处理器耦合;所述存储器中存储有计算机程序代码,所述计算机程序代码包括计算机指令,当所述计算机指令被所述处理器执行时,使得所述电子设备执行如权利要求1-16中任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-16中任一项所述的方法。
CN202311314450.3A 2023-10-11 2023-10-11 一种流程管理方法和电子设备 Active CN117056116B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311314450.3A CN117056116B (zh) 2023-10-11 2023-10-11 一种流程管理方法和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311314450.3A CN117056116B (zh) 2023-10-11 2023-10-11 一种流程管理方法和电子设备

Publications (2)

Publication Number Publication Date
CN117056116A CN117056116A (zh) 2023-11-14
CN117056116B true CN117056116B (zh) 2024-04-02

Family

ID=88664825

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311314450.3A Active CN117056116B (zh) 2023-10-11 2023-10-11 一种流程管理方法和电子设备

Country Status (1)

Country Link
CN (1) CN117056116B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117474312B (zh) * 2023-12-28 2024-04-05 图快数字科技(杭州)有限公司 可视化业务流编排方法、系统、电子设备及存储介质
CN117632443B (zh) * 2024-01-25 2024-04-26 腾讯科技(深圳)有限公司 业务流程的流转控制方法及装置、设备、介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104881759A (zh) * 2015-06-23 2015-09-02 四川久远银海软件股份有限公司 一种基于工作流的业务回退集成系统及其实现方法
CN105094758A (zh) * 2014-04-29 2015-11-25 国际商业机器公司 用于避免事务回滚的方法和装置
CN112433702A (zh) * 2020-12-19 2021-03-02 合肥汉腾信息技术有限公司 一种轻量级流程设计系统及方法
CN112631795A (zh) * 2020-12-15 2021-04-09 平安普惠企业管理有限公司 业务申请信息自动同步方法、装置、设备及存储介质
CN112700310A (zh) * 2021-01-19 2021-04-23 汇通数科智能科技有限公司 一种基于电商平台的交易订单数据优化处理方法
CN113190334A (zh) * 2021-04-21 2021-07-30 北京字跳网络技术有限公司 流程引擎的控制方法、装置、终端和存储介质
CN116192594A (zh) * 2023-04-21 2023-05-30 北京炎黄新星网络科技有限公司 业务流程编排组件的管理方法及系统
CN116302702A (zh) * 2023-03-20 2023-06-23 阿里云计算有限公司 分布式事务回滚方法、电子设备及存储介质
CN116595017A (zh) * 2023-04-07 2023-08-15 金蝶蝶金云计算有限公司 数据处理方法、装置、计算机设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020161840A1 (en) * 2001-02-20 2002-10-31 Willcox William J. Adapter for interfacing with a workflow engine

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105094758A (zh) * 2014-04-29 2015-11-25 国际商业机器公司 用于避免事务回滚的方法和装置
CN104881759A (zh) * 2015-06-23 2015-09-02 四川久远银海软件股份有限公司 一种基于工作流的业务回退集成系统及其实现方法
CN112631795A (zh) * 2020-12-15 2021-04-09 平安普惠企业管理有限公司 业务申请信息自动同步方法、装置、设备及存储介质
CN112433702A (zh) * 2020-12-19 2021-03-02 合肥汉腾信息技术有限公司 一种轻量级流程设计系统及方法
CN112700310A (zh) * 2021-01-19 2021-04-23 汇通数科智能科技有限公司 一种基于电商平台的交易订单数据优化处理方法
CN113190334A (zh) * 2021-04-21 2021-07-30 北京字跳网络技术有限公司 流程引擎的控制方法、装置、终端和存储介质
CN116302702A (zh) * 2023-03-20 2023-06-23 阿里云计算有限公司 分布式事务回滚方法、电子设备及存储介质
CN116595017A (zh) * 2023-04-07 2023-08-15 金蝶蝶金云计算有限公司 数据处理方法、装置、计算机设备和存储介质
CN116192594A (zh) * 2023-04-21 2023-05-30 北京炎黄新星网络科技有限公司 业务流程编排组件的管理方法及系统

Also Published As

Publication number Publication date
CN117056116A (zh) 2023-11-14

Similar Documents

Publication Publication Date Title
CN117056116B (zh) 一种流程管理方法和电子设备
CN101243445B (zh) 数据变更通告
US20030079093A1 (en) Server system operation control method
US6381617B1 (en) Multiple database client transparency system and method therefor
EP3816912B1 (en) Blockchain-based transaction processing method and apparatus, and electronic device
CN114925084B (zh) 分布式事务处理方法、系统、设备及可读存储介质
CN106991002B (zh) 用于实现任务调度管理的方法及设备
US20210326359A1 (en) Compare processing using replication log-injected compare records in a replication environment
CN112579620A (zh) 一种基于消息队列的分布式系统数据最终一致性方法
AU771514B2 (en) Preserving consistency of passively-replicated non-deterministic objects
CN112148436A (zh) 去中心化的tcc事务管理方法、装置、设备及系统
CN107797849B (zh) 分布式事务处理的方法、装置与系统
CN113239098B (zh) 一种数据管理方法、计算机及可读存储介质
CN112015595B (zh) 主从数据库的切换方法、计算设备及存储介质
CN110347659B (zh) 数据处理方法和装置、交易数据处理方法和装置
CN109901933B (zh) 业务系统的操作方法及装置、存储介质、电子装置
CN115484303A (zh) 工厂微服务系统、方法、设备和存储介质
CN111061576A (zh) 一种实体对象的创建方法及系统
CN116301758B (zh) 基于事件时机点的规则编辑方法、装置、设备及介质
CN111651243B (zh) 一种面向内存数据网格的分布式事务保障方法
CN112860780A (zh) 数据导出方法、装置和终端设备
CN117216104A (zh) 条件单调用方法、装置、设备及存储介质
CN117632984A (zh) 一种分布式事务回滚方法、装置、设备及介质
CN117112124A (zh) Kubernetes对象的参数校验方法、服务器及终端
CN115269742A (zh) 一种MySQL数据库的管理方法、装置、设备及介质

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