掌桥专利:专业的专利平台
掌桥专利
首页

业务状态流转维护方法、装置及电子设备

文献发布时间:2023-06-19 11:14:36


业务状态流转维护方法、装置及电子设备

技术领域

本申请涉及计算机技术领域,尤其涉及一种业务状态流转维护方法、装置及电子设备。

背景技术

在现有的业务开发过程中,通常会涉及多种业务状态,这些业务状态的流转逻辑通常散落在代码中,不仅影响业务开发过程,还使得后续业务人员很难快速接手开发项目。因此,如何维护业务状态的流转成为亟需解决的问题。

目前,对于业务状态的流转维护,主要基于状态机实现,即在业务流程中,针对每一个业务请求都创建一个状态机实例,通过调用所创建的状态机实例来维护业务状态。但是,在业务流程复杂以及业务请求高并发的情况下,通过上述方式进行业务状态的维护,则需要创建大量较为复杂的状态机实例,从而将会影响整个业务系统的吞吐量等,导致频繁的GC问题。

发明内容

本申请实施例提供一种业务状态流转维护方法、装置及电子设备,以至少解决现有的业务状态流转维护方式影响整个业务系统的吞吐量等的问题。

为了解决上述技术问题,本申请实施例采用下述技术方案:

根据本申请实施例的第一方面,提供一种业务状态流转维护方法,包括:

响应于对指定业务的目标业务操作,获取所述指定业务的当前业务状态及业务数据;

从为所述指定业务预先建立的状态机实例中,查找与所述目标业务操作对应的转换策略,所述状态机实例包括所述指定业务的业务流程中涉及的业务状态及业务状态之间的转换策略,所述转换策略用于指示业务状态之间的转换关系、转换条件以及触发业务状态转换的业务操作之间的对应关系;

基于查找到的转换策略以及所述指定业务的当前业务状态及业务数据,对所述指定业务的业务状态进行状态流转维护。

可选地,基于查找到的转换策略以及所述指定业务的当前业务状态及业务数据,对所述指定业务的业务状态进行状态转换维护,包括:

从查找到的转换策略中,确定所指示的转换关系对应的源状态与所述指定业务的当前业务状态一致的转换策略,确定为目标转换策略;

若所述业务数据满足所述目标转换策略指示的转换条件,或者,所述目标转换策略中不存在与所指示的转换关系对应的转换条件,则基于所述目标转换策略所指示的转换关系对应的目标状态,对所述指定业务的当前业务状态进行更新。

可选地,所述状态机实例还包括与所述转换策略对应的业务处理策略,所述业务处理策略用于实现所述转换策略所指示的转换关系;

在基于所述目标转换策略所指示的转换关系对应的目标状态,对所述指定业务的当前业务状态进行更新之前,所述方法还包括:

基于所述指定业务的当前业务状态和所述业务数据,确定执行所述目标转换策略对应的目标业务处理策略之后所述指定业务的终止业务状态;

基于所述目标转换策略所指示的转换关系对应的目标状态,对所述指定业务的当前业务状态进行更新,包括:

在所述终止业务状态与所述目标转换策略所指示的转换关系对应的目标状态一致的情况下,基于所述目标转换策略所指示的转换关系对应的目标状态,对所述指定业务的当前业务状态进行更新。

可选地,在从为所述指定业务预先建立的状态机实例,查找与所述目标业务操作对应的转换策略之前,所述方法还包括:

获取所述指定业务的预设业务流程信息,所述预设业务流程信息包括所述指定业务的初始状态、所述指定业务的业务流程所涉及的各项业务操作的执行顺序及触发条件;

基于所述指定业务的初始状态及所述指定业务所涉及的各项业务操作的执行顺序,确定各项业务操作对应的起始业务状态和终止业务状态,其中,所述业务操作对应的起始业务状态是指对所述指定业务执行所述业务操作之前所述指定业务的业务状态,所述业务操作对应的终止业务状态是指对所述指定业务执行所述业务操作之后所述指定业务的业务状态;

基于得到的各项业务操作对应的起始业务状态和终止业务状态,确定各项业务操作对应的转换关系;

基于各项业务操作的触发条件,确定各业务操作对应的转换关系的转换条件;

基于所述业务流程所涉及的各项业务操作对应的转换关系和转换关系的转换条件,创建所述指定业务对应的状态机实例。

可选地,一项所述业务操作对应至少一种转换关系和/或至少一种转换条件,所述业务操作、所述转换关系以及所述转换条件之间的对应关系基于ListMultimap数据结构创建。

可选地,在创建所述指定业务对应的状态机实例之后,所述方法还包括:

基于所述指定业务对应的状态机实例,生成所述指定业务的业务流程对应的状态转换图。

可选地,所述指定业务包括订单业务。

根据本申请实施例的第二方面,提供一种业务状态流转维护装置,包括:

第一获取模块,用于响应于对指定业务的目标业务操作,获取所述指定业务的当前业务状态及业务数据;

查找模块,用于从为所述指定业务预先建立的状态机实例中,查找与所述目标业务操作对应的转换策略,所述状态机实例包括所述指定业务的业务流程中涉及的业务状态及业务状态之间的转换策略,所述转换策略用于指示业务状态之间的转换关系、转换条件以及触发业务状态转换的业务操作之间的对应关系;

维护模块,用于基于查找到的转换策略以及所述指定业务的当前业务状态及业务数据,对所述指定业务的业务状态进行状态流转维护。

可选地,所述维护模块包括:

转换策略确定子模块,用于从查找到的转换策略中,确定所指示的转换关系对应的源状态与所述指定业务的当前业务状态一致的转换策略,确定为目标转换策略;

更新子模块,用于在所述业务数据满足所述目标转换策略指示的转换条件,或者,所述目标转换策略中不存在与所指示的转换关系对应的转换条件的情况下,基于所述目标转换策略所指示的转换关系对应的目标状态,对所述指定业务的当前业务状态进行更新。

可选地,所述状态机实例还包括与所述转换策略对应的业务处理策略,所述业务处理策略用于实现所述转换策略所指示的转换关系;

所述装置还包括:

第一确定模块,用于基于所述指定业务的当前业务状态和所述业务数据,确定执行所述目标转换策略对应的目标业务处理策略之后所述指定业务的终止业务状态;

更新子模块,具体用于在所述终止业务状态与所述目标转换策略所指示的转换关系对应的目标状态一致的情况下,基于所述目标转换策略所指示的转换关系对应的目标状态,对所述指定业务的当前业务状态进行更新。

可选地,所述装置还包括:

第二获取模块,用于获取所述指定业务的预设业务流程信息,所述预设业务流程信息包括所述指定业务的初始状态、所述指定业务的业务流程所涉及的各项业务操作的执行顺序及触发条件;

第二确定模块,用于基于所述指定业务的初始状态及所述指定业务所涉及的各项业务操作的执行顺序,确定各项业务操作对应的起始业务状态和终止业务状态,其中,所述业务操作对应的起始业务状态是指对所述指定业务执行所述业务操作之前所述指定业务的业务状态,所述业务操作对应的终止业务状态是指对所述指定业务执行所述业务操作之后所述指定业务的业务状态;

第三确定模块,用于基于得到的各项业务操作对应的起始业务状态和终止业务状态,确定各项业务操作对应的转换关系;

第四确定模块,用于基于各项业务操作的触发条件,确定各业务操作对应的转换关系的转换条件;

创建模块,用于基于所述业务流程所涉及的各项业务操作对应的转换关系和转换关系的转换条件,创建所述指定业务对应的状态机实例。

可选地,一项所述业务操作对应至少一种转换关系和/或至少一种转换条件,所述业务操作、所述转换关系以及所述转换条件之间的对应关系基于ListMultimap数据结构创建。

可选地,所述装置还包括:

生成模块,用于基于所述指定业务对应的状态机实例,生成所述指定业务的业务流程对应的状态转换图。

可选地,所述指定业务包括订单业务。

根据本申请实施例的第三方面,提供一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现第一方面所述的方法的步骤。

根据本申请实施例的第四方面,提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法的步骤。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:

预先为指定业务创建状态机实例且状态机实例中包含有指定业务的业务流程中涉及的业务状态及业务状态之间的转换策略,在对指定业务的业务流程中,在接收到的对指定业务的目标业务操作的情况下,从相应的状态机实例中获取与目标业务操作对应的转换策略,并基于获取的转换策略和指定业务的当前业务状态及业务数据,对指定业务的业务状态进行状态流转维护。可见,业务的所有业务状态之间的流转均配置在为该业务创建的状态机实例中,只需在该状态机实例中维护业务状态之间的转换关系、转换条件以及业务操作等,而不需要在状态机实例中维护业务的当前业务状态,因而该状态机实例是“无状态”的,进而在业务的业务流程中,通过在该状态机实例中查找与针对业务执行的业务操作对应的转换策略,即可实现对业务的业务状态流转的维护,整个业务流程只需创建了一个状态机实例便可响应针对业务的所有业务操作,实现在不同业务状态之间流转的维护,不仅可以提高状态机实例线程的安全性,还有效提高了业务系统的性能,避免出现频繁的GC问题。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请实施例提供的一种业务状态流转维护方法的流程示意图;

图2为本申请实施例提供的另一种业务状态流转维护方法的流程示意图;

图3为本申请实施例提供的一种创建状态机实例的方法的流程示意图;

图4为本申请实施例提供的一种状态机实现类的示意图;

图5为本申请实施例提供的一种指定业务的业务流程对应的状态转换图;

图6为本申请实施例提供的一种电子设备的结构示意图;

图7为本申请实施例提供的一种业务状态流转维护装置的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为解决现有的业务状态流转维护方法存在的影响业务系统的吞吐量等性能的问题,本申请实施例提供一种业务状态流转维护方法、装置及电子设备。本申请实施例提供的业务状态流转维护方法可以由电子设备执行,例如服务器。

应理解,本申请实施例中,状态机是指有限状态机(Finite-state Machine,FSM),又称为有限状态自动机(Finite-state Automation,FSA),是一种表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。其中,事件、守卫条件或者动作会触发状态的转换,在出现状态转换时,转换前的状态称为源状态,转换后的状态称为目标状态。

另外,本申请实施例提供的技术方案能够应用于各种不同的业务场景下的业务状态流转维护。不同的业务,其业务状态枚举及表示可能会有非常大的差异,所以在进行状态流转维护时,事先能够确定的只有“状态”这个抽象,具体的状态表示只能在具体的业务开发阶段去分别独立定义。

以下结合附图,详细说明本申请各实施例提供的技术方案。

请参考图1,为本申请实施例提供的一种业务状态流转维护方法的流程示意图,该方法可以包括以下步骤:

S102,响应于对指定业务的目标业务操作,获取指定业务的当前业务状态及业务数据。

其中,指定业务是指需要进行业务状态流转维护的任一业务,具体可以包括但不限于订单业务、票据业务等。目标业务操作是指用于对指定业务进行业务处理的操作。例如,以指定业务为订单业务为例,目标业务操作可以例如包括但不限于创建订单、修改订单、拒绝订单、支付订单等。

指定业务的业务数据是指与指定业务的业务流程相关的数据。例如,以指定业务为订单业务为例,指定业务的业务数据可以例如包括但不限于订单流水号、创建时间、创建者、订单内容等。

具体来说,业务系统中存储有大量业务的业务数据及当前业务状态并在各业务的业务流程中不断更新。指定业务的当前业务状态和业务数据可通过指定业务的业务标识从业务系统中获取。

S104,从为指定业务预先创建的状态机实例中,查找与目标业务操作对应的转换策略,指定业务的状态机实例包括指定业务的业务流程中涉及的业务状态及业务状态之间的转换策略。

其中,所述转换策略用于指示业务状态之间的转换关系、转换条件以及触发业务状态转换的业务操作之间的对应关系。

业务状态之间的转换关系用于指示从一个状态转换到另一个状态之间的关系,其中,转换前的状态称为源状态,转换后的状态称为目标状态。

业务操作可以看作状态机实例中的事件,是用于触发业务状态发生转换的事件。业务状态之间的转换关系对应的业务操作,即为触发业务按照该业务关系进行业务状态转换的事件,使得业务在该事件的触发下,从该转换关系指示的源状态转换到该转换关系指示的目标状态。

业务状态的转换可以在一定条件下进行,业务状态之间的转换条件即用于判定是否进行业务状态转换的条件,在业务的业务数据满足业务状态之间的转换条件的情况下,可进行业务状态的转换。当然,实际应用中,两业务状态之间发生转换也不一定需要转换条件的限制,也就是说,转换关系与转换条件之间可以存在对应关系,也可以不存在对应关系,具体可根据实际业务需求自定义设置。

具体实施时,可以根据指定业务的业务标识,从存储有大量不同状态机实例的状态机工厂中获取为指定业务创建的状态机实例,进一步通过遍历该状态机实例以获取与目标业务操作对应的转换策略。

S106,基于查找到的转换策略以及指定业务的当前业务状态及业务数据,对指定业务的业务状态进行状态流转维护。

在查找到的转换策略后,可根据指定业务的当前业务状态及业务数据,并结合转换策略指示的转换关系及转换条件,对指定业务的业务状态进行状态流转维护。

考虑到一项业务操作可能触发指定业务按照多种转换关系进行业务状态的转换,并且部分业务状态转换还需在满足转换条件的情况下才能进行。对此,在一种可选的实施方式中,如图2所示,上述步骤S106可以包括:

S161,从查找到的转换策略中,确定所指示的转换关系对应的源状态与指定业务的当前业务状态一致的转换策略,确定为目标转换策略。

转换关系的源状态指示了转换发生之前的业务状态,转换关系的目标状态指示了转换发生之后的业务状态。若某一转换关系的源状态与指定业务的当前业务状态一致,则可将该转换关系所属的转换策略确定为目标转换策略。

S162,若指定业务的业务数据满足目标转换策略指示的转换条件,或者,目标转换策略中不存在与所指示的转换关系对应的转换条件,则基于目标转换策略所指示的转换关系对应的目标状态,对指定业务的当前业务状态进行更新。

具体来说,在确定出目标转换策略后,对于每一目标转换策略,可先判断目标转换策略中是否存在与所指示的转换关系对应的转换条件,若判断结果为否,则可确定目标业务操作可直接触发所对应的转换关系指示的状态转换,进而可以将指定业务的当前业务状态更新为该转换关系对应的目标状态,由此完成该目标业务操作对应的业务状态流转维护;若判断结果为否,紧接着,可判断指定业务的业务数据是否满足目标转换策略指示的转换条件,若判断结果为满足,则确定可以进行业务状态转换,进而可将指定业务的当前业务状态更新为该转换关系对应的目标状态。

可以理解的是,通过从与目标业务操作对应的转换策略中,将所指示的转换关系对应的源状态与指定业务的当前业务状态一致的转换策略作为目标转换策略,然后根据目标转换策略指示的转换条件和转换关系,对指定业务的当前业务状态进行更新,使得指定业务的业务状态的流转基于状态机实例中的转换关系及转换条件即可实现,不需要在状态机实例中维护业务的当前业务状态,因而该状态机实例是“无状态”的。

进一步地,为了保证业务状态流转的准确性和有效性,为指定业务创建的状态机实例还包括与转换策略对应的业务处理策略,其中,业务处理策略可以看作是状态机实例中用于实现两个业务状态之间的转移的“动作”(Action),通过执行业务处理策略可以实现所对应的转换策略指示的转换关系,即将指定业务的业务状态从该转换关系指示的源状态转换到该转换关系指示的目标状态。相应地,如图2所示,基于目标转换策略所指示的转换关系对应的目标状态,对指定业务的当前业务状态进行更新之前,本申请实施例提供的业务状态流转维护方法还可以包括:对转换关系的正确性进行校验。

例如,作为一种可实现的方案,在通过上述步骤S162对所述指定业务的当前业务状态进行更新之前,可基于指定业务的当前业务状态和业务数据,确定执行目标转换策略对应的目标业务处理策略之后指定业务的终止业务状态。若得到的指定业务的终止业务状态与目标转换策略所指示的转换关系对应的目标状态一致,则可确定目标转换策略指示的转换关系正确且有效,进而可按照该转换关系对指定业务的业务状态流转进行维护,即在上述步骤S162中,在得到的指定业务的终止业务状态与目标转换策略所指示的转换关系对应的目标状态一致的情况下,基于目标转换策略所指示的转换关系对应的目标状态,对指定业务的当前业务状态进行更新。

可以理解的是,通过在按照目标转换策略指示的转换关系对指定业务的当前业务状态进行更新之前,先基于与目标转换策略对应的目标业务处理策略校验转换关系的有效性,可以确保指定业务的业务状态流转是正确且有效的,从而确保指定业务的业务流程正常进行。

进一步地,为进一步保证指定业务的业务状态流转的正确性,在确定执行目标转换策略对应的目标业务处理策略后指定业务的终止业务状态之后,可直接输出该指定业务的终止业务状态,进而以便再后续业务流程中,从该终止业务状态开始进行指定业务的业务状态流转。

进一步地,为进一步保证指定业务的业务状态流转的正确性,本申请实施例提供的业务状态流转维护方法还可以包括:若指定业务的业务数据不满足目标转换策略指示的转换条件且目标转换策略中不存在与所指示的转换关系对应的转换条件,则输出目标转换策略所指示的转换关系对应的源状态,进而以便再后续业务流程中,从该源状态开始进行指定业务的业务状态流转。

通过本申请实施例提供的业务状态流转维护方法,预先为指定业务创建状态机实例且状态机实例中包含有指定业务的业务流程中涉及的业务状态及业务状态之间的转换策略,在对指定业务的业务流程中,在接收到的对指定业务的目标业务操作的情况下,从相应的状态机实例中获取与目标业务操作对应的转换策略,并基于获取的转换策略和指定业务的当前业务状态及业务数据,对指定业务的业务状态进行状态流转维护。可见,业务的所有业务状态之间的流转均配置在为该业务创建的状态机实例中,只需在该状态机实例中维护业务状态之间的转换关系、转换条件以及业务操作等,而不需要在状态机实例中维护业务的当前业务状态,因而该状态机实例是“无状态”的,进而在业务的业务流程中,通过在该状态机实例中查找与针对业务执行的业务操作对应的转换策略,即可实现对业务的业务状态流转的维护,整个业务流程只需创建了一个状态机实例便可响应针对业务的所有业务操作,实现在不同业务状态之间流转的维护,不仅可以提高状态机实例线程的安全性,还有效提高了业务系统的性能,避免出现频繁的GC问题。

针对上述实施例所述的状态机实例,本申请实施例还包括对状态机实例的创建方法,值得说明的是,对状态机实例的创建方法是根据所对应业务的业务流程信息预先进行的,例如在上述步骤S102或S104之前进行,后续在业务的业务流程中可直接调用该状态机实例对业务的业务状态进行状态流转维护。

具体地,为指定业务创建状态机实例的方法如图3所示,该方法包括:

S302,获取指定业务的预设业务流程信息,预设业务流程信息包括指定业务的初始状态、指定业务的业务流程所涉及的各项业务操作的执行顺序及触发条件。

其中,预设业务流程信息可以是根据指定业务的实际业务处理需求自定义设置的。

S304,基于指定业务的初始状态及指定业务所涉及的各项业务操作的执行顺序,确定各项业务操作对应的起始业务状态和终止业务状态。

其中,业务操作对应的起始业务状态是指对指定业务执行该业务操作之前,指定业务的业务状态。业务操作对应的终止业务状态是指对指定业务执行该业务操作之后,指定业务的业务状态。

具体来说,可从指定业务的初始状态起,根据各项业务操作的执行顺序依次对指定业务执行各项业务操作,并基于各业务操作的执行结果确定各业务操作对应的起始业务状态和终止业务状态。

S306,基于各项业务操作的触发条件,确定各业务操作对应的转换关系的转换条件。

例如,业务操作1对应的起始业务状态为STATE1且对应的终止业务状态为STATE2,触发条件为EVENT1,则可确定业务状态STATE1与STATE2之间的转换条件为EVENT1。

S308,基于所述业务流程所涉及的各项业务操作对应的转换关系和转换关系的转换条件,创建指定业务对应的状态机实例。

具体来说,首先,可创建一个状态机实现类StateMachineImpl,并在该状态机实现类中定义状态机实例的标识machineId、指定业务的业务流程涉及的所有业务操作对应的转换策略stateMap;接着,可定义一个状态类StateImpl并在该状态类中定义事件与转换策略之间的对应关系,也即业务操作、转换关系以及转换条件之间的对应关系;最后,定义一个转换类TransitionImpl,以实现转换策略的调用接口,并在该转换类中定义转换策略,具体包括源状态sourceState、目标状态targetState、触发从源状态转换到目标状态的业务操作Event、转换条件condition以及用于从源状态到目标状态这一转换的业务处理策略Action等。由此,指定业务的状态机实例创建完成,在后续对指定业务的业务状态流转进行维护时,可直接调用相应的类来使用状态机实例。

进一步地,业务操作与转换关系及转换条件可以是一一对应关系,也可以是一对多的关系,即一项业务操作对应至少一种转换关系和/或至少一种转换条件。在此情况下,为了在状态机实例中更为方便地实现该对应关系的定义,在一种可实现的方案中,业务操作、转换关系以及转换条件之间的对应关系可基于ListMultimap数据结构创建。

需要说明的是,实际应用中,状态机实例中还可根据实际需要定义更多的参数。例如,图4示出了一种状态机实现类StateMachineImpl的示意图,其中,该状态机实现类除了包括状态机实例的标识machineId和转换策略stateMap,还可以包括指定业务的初始业务状态initialState、用于表示状态机实例是否可用的布尔值ready、在不存在与业务操作对应的转换策略时调用的处理逻辑接口noMatchStrategy等。其中,指定业务的初始业务状态initialState用于便于描述状态机实例以及绘制指定业务的业务流程对应的状态转换图。

由此,该状态机实现类中实现了接口StateMachine,fireEvent相关方法用于触发业务操作,并且采用了重载的方式,有返回和不返回处理结果的实现。generateStateDiagram()方法则用于生成指定业务的业务流程对应的状态转换图。

进一步地,本申请实施提供的上述创建方法中,在创建指定业务对应的状态机实例后,还可基于指定业务对应的状态机实例,生成指定业务的业务流程对应的状态转换图,以便相关业务人员能够基于该状态转换图方便快速地获知指定业务的业务流程。具体来说,上述状态转换图可通过注解@StateConfig和@EventConfig来创建,该方式为本领域的常用手段,在此不再详细展开。

另外,对于上述状态转换图的创建,还可通过以下两种方式实现,一种是借助graphviz-java直接升生成状态转换图并保存在执行上述业务状态流转维护方法的电子设备本地,另一种是生成plantUML语句文件(如IDEA)并将其复制到plantUML的软件或者网页中,以得到状态转换图。

例如,图5示出了一种指定业务的业务流程对应的状态转换图,该状态转换图反映了该指定业务的业务流程所涉及的业务状态包括STATE1至STATE4,其中,这些业务状态之间的转换关系包括:从业务状态STATE1转换至STATE2,从业务状态STATE2转换至STATE1,从业务状态STATE1转换至STATE3,从业务状态STATE1转换至STATE4,从业务状态STATE2转换至STATE3,从业务状态STATE3转换至STATE4,以及业务状态STATE2内部的流转(即发生在业务状态内部的、不引发业务状态的转换)。触发指定业务从业务状态STATE1转换至STATE2的业务操作为EVENT1,触发指定业务从业务状态STATE2转换至STATE1的业务操作为EVENT2,触发指定业务从业务状态STATE1转换至STATE3的业务操作为EVENT3,触发指定业务从业务状态STATE1转换至STATE4、从业务状态STATE2转换至STATE4以及从业务状态STATE3转换至STATE4的业务操作均为EVENT4,触发指定业务从业务状态STATE2转换至STATE2的业务操作为INTERNAL_EVENT。

本说明书实施例在此示出了上述步骤S102至S106的一种具体实现方式。当然,应理解,步骤S102至S106也可以采用其它的方式实现,本申请实施例对此不做限制。另外,本说明书实施例在此示出了上述步骤S302至S308的一种具体实现方式。当然,应理解,步骤S302至S308也可以采用其它的方式实现,本申请实施例对此不做限制。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

图6是本申请的一个实施例电子设备的结构示意图。请参考图6,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。

处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成业务状态流转维护装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:

响应于对指定业务的目标业务操作,获取所述指定业务的当前业务状态及业务数据;

从为所述指定业务预先建立的状态机实例中,查找与所述目标业务操作对应的转换策略,所述状态机实例包括所述指定业务的业务流程中涉及的业务状态及业务状态之间的转换策略,所述转换策略用于指示业务状态之间的转换关系、转换条件以及触发业务状态转换的业务操作之间的对应关系;

基于查找到的转换策略以及所述指定业务的当前业务状态及业务数据,对所述指定业务的业务状态进行状态流转维护。

上述如本申请图6所示实施例揭示的业务状态流转维护装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

该电子设备还可执行图1的方法,并实现业务状态流转维护装置在图1、图2所示实施例的功能,本申请实施例在此不再赘述。

当然,除了软件实现方式之外,本申请的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下操作:

响应于对指定业务的目标业务操作,获取所述指定业务的当前业务状态及业务数据;

从为所述指定业务预先建立的状态机实例中,查找与所述目标业务操作对应的转换策略,所述状态机实例包括所述指定业务的业务流程中涉及的业务状态及业务状态之间的转换策略,所述转换策略用于指示业务状态之间的转换关系、转换条件以及触发业务状态转换的业务操作之间的对应关系;

基于查找到的转换策略以及所述指定业务的当前业务状态及业务数据,对所述指定业务的业务状态进行状态流转维护。

图7是本申请的一个实施例业务状态流转维护装置的结构示意图。请参考图7,在一种软件实施方式中,业务状态流转维护装置可包括:

第一获取模块710,用于响应于对指定业务的目标业务操作,获取所述指定业务的当前业务状态及业务数据;

查找模块720,用于从为所述指定业务预先建立的状态机实例中,查找与所述目标业务操作对应的转换策略,所述状态机实例包括所述指定业务的业务流程中涉及的业务状态及业务状态之间的转换策略,所述转换策略用于指示业务状态之间的转换关系、转换条件以及触发业务状态转换的业务操作之间的对应关系;

维护模块730,用于基于查找到的转换策略以及所述指定业务的当前业务状态及业务数据,对所述指定业务的业务状态进行状态流转维护。

可选地,所述维护模块包括:

转换策略确定子模块,用于从查找到的转换策略中,确定所指示的转换关系对应的源状态与所述指定业务的当前业务状态一致的转换策略,确定为目标转换策略;

更新子模块,用于在所述业务数据满足所述目标转换策略指示的转换条件,或者,所述目标转换策略中不存在与所指示的转换关系对应的转换条件的情况下,基于所述目标转换策略所指示的转换关系对应的目标状态,对所述指定业务的当前业务状态进行更新。

可选地,所述状态机实例还包括与所述转换策略对应的业务处理策略,所述业务处理策略用于实现所述转换策略所指示的转换关系;

所述装置还包括:

第一确定模块,用于基于所述指定业务的当前业务状态和所述业务数据,确定执行所述目标转换策略对应的目标业务处理策略之后所述指定业务的终止业务状态;

更新子模块,具体用于在所述终止业务状态与所述目标转换策略所指示的转换关系对应的目标状态一致的情况下,基于所述目标转换策略所指示的转换关系对应的目标状态,对所述指定业务的当前业务状态进行更新。

可选地,所述装置还包括:

第二获取模块,用于获取所述指定业务的预设业务流程信息,所述预设业务流程信息包括所述指定业务的初始状态、所述指定业务的业务流程所涉及的各项业务操作的执行顺序及触发条件;

第二确定模块,用于基于所述指定业务的初始状态及所述指定业务所涉及的各项业务操作的执行顺序,确定各项业务操作对应的起始业务状态和终止业务状态,其中,所述业务操作对应的起始业务状态是指对所述指定业务执行所述业务操作之前所述指定业务的业务状态,所述业务操作对应的终止业务状态是指对所述指定业务执行所述业务操作之后所述指定业务的业务状态;

第三确定模块,用于基于得到的各项业务操作对应的起始业务状态和终止业务状态,确定各项业务操作对应的转换关系;

第四确定模块,用于基于各项业务操作的触发条件,确定各业务操作对应的转换关系的转换条件;

创建模块,用于基于所述业务流程所涉及的各项业务操作对应的转换关系和转换关系的转换条件,创建所述指定业务对应的状态机实例。

可选地,一项所述业务操作对应至少一种转换关系和/或至少一种转换条件,所述业务操作、所述转换关系以及所述转换条件之间的对应关系基于ListMultimap数据结构创建。

可选地,所述装置还包括:

生成模块,用于基于所述指定业务对应的状态机实例,生成所述指定业务的业务流程对应的状态转换图。

可选地,所述指定业务包括订单业务。

通过本申请实施例提供的业务状态流转维护装置,预先为指定业务创建状态机实例且状态机实例中包含有指定业务的业务流程中涉及的业务状态及业务状态之间的转换策略,在对指定业务的业务流程中,在接收到的对指定业务的目标业务操作的情况下,从相应的状态机实例中获取与目标业务操作对应的转换策略,并基于获取的转换策略和指定业务的当前业务状态及业务数据,对指定业务的业务状态进行状态流转维护。可见,业务的所有业务状态之间的流转均配置在为该业务创建的状态机实例中,只需在该状态机实例中维护业务状态之间的转换关系、转换条件以及业务操作等,而不需要在状态机实例中维护业务的当前业务状态,因而该状态机实例是“无状态”的,进而在业务的业务流程中,通过在该状态机实例中查找与针对业务执行的业务操作对应的转换策略,即可实现对业务的业务状态流转的维护,整个业务流程只需创建了一个状态机实例便可响应针对业务的所有业务操作,实现在不同业务状态之间流转的维护,不仅可以提高状态机实例线程的安全性,还有效提高了业务系统的性能,避免出现频繁的GC问题。

总之,以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

相关技术
  • 业务状态流转维护方法、装置及电子设备
  • 业务下载加速的方法与系统、业务状态的维护方法与装置
技术分类

06120112858112