一种状态机引擎编排方法、装置及计算机设备与流程

文档序号:33385847发布日期:2023-03-08 08:09阅读:31来源:国知局
一种状态机引擎编排方法、装置及计算机设备与流程

1.本发明涉及状态机编排领域,具体涉及一种状态机引擎编排方法、装置及计算机设备。


背景技术:

2.订单状态流转是交易系统最核心的工作,订单系统往往会存在状态多、链路长以及逻辑复杂的特点,还存在多场景、多类型、多业务维度等业务特性。在保证订单状态流转稳定性的前提下、可扩展性和可维护性是我们需要重点关注和解决的问题;传统做法采用硬编码的方式通过组合if else判断订单状态流转。
3.上述传统做法存在以下两个问题:1.可扩展性、可维护性差,当面对多状态+多类型+多场景+多维度复杂业务逻辑状态流转处理时硬编码方式写的逻辑复杂、可读性极差;2.代码耦合严重、开发效率低,不同链路之间需求开发需兼顾各方业务处理,涉及通用链路变更需要各方测试协同验证。


技术实现要素:

4.因此,为解决现有技术的不足,本发明实施例提供了一种状态机引擎编排方法、装置及计算机设备。
5.根据第一方面,本发明实施例公开了状态机引擎编排方法,获取待执行的事件信息,事件信息包括标识信息;
6.根据标识信息从预设数据库中获取与标识信息对应的插件集;
7.根据标识信息,从预配置的配置文件中获取插件集中每一个插件的上下文属性;
8.根据上下文属性和插件集中每一个插件,构建与标识信息对应的事件模板。
9.可选地,事件信息还包括至少两个状态信息以及每一个状态信息之间的连接关系,当预设数据库中不存在与标识信息对应的插件集,方法还包括:
10.根据至少两个状态信息构建每一个状态信息对应的插件;
11.根据连接关系,确定状态信息对应的插件的上下文属性,以便状态机引擎根据每一个状态信息对应的插件和上下文属性构建事件模板。
12.可选地,方法还包括:事件模板存储于预设位置;当获取到与事件模板的标识信息相对应的事件信息时,从预设位置获取事件模板用于执行完成事件信息。
13.可选地,根据标识信息从预设数据库中获取与标识信息对应的插件集,具体包括:根据倒排索引从预设数据库中获取与标识信息对应的插件集。
14.可选地,方法包括:所有的插件通过map集合存储于预设数据库。
15.可选地,当存在多个事件信息时,方法还包括:利用多个线程分别确定每一个事件信息对应的事件模板。
16.根据第二方面,本发明实施例公开了状态机引擎编排装置,事件获取模块,用于获取待执行的事件信息,事件信息包括标识信息;
17.插件获取模块,用于根据标识信息从预设数据库中获取与标识信息对应的插件集;
18.确定属性模块,用于根据标识信息,从预配置的配置文件中获取插件集中每一个插件的上下文属性;
19.构建模板模块,用于根据上下文属性和插件集中每一个插件,构建与标识信息对应的事件模板。
20.可选地,事件信息还包括至少两个状态信息以及每一个状态信息之间的连接关系,当预设数据库中不存在与标识信息对应的插件集,装置还包括:
21.构建插件模块,用于根据至少两个状态信息构建每一个状态信息对应的插件;
22.确定模块,用于根据连接关系,确定状态信息对应的插件的上下文属性,以便状态机引擎根据每一个状态信息对应的插件和上下文属性构建事件模板。
23.根据第三方面,本发明实施例还公开了一种计算机设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器执行如第一方面或第一方面任一可选实施方式的状态机引擎编排方法的步骤。
24.根据第四方面,本发明实施方式还公开了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如第一方面或第一方面任一可选实施方式的状态机引擎编排方法的步骤。
25.本发明技术方案,具有如下优点:
26.本发明提供的状态机引擎编排方法,该方法包括,获取待执行的事件信息,其中事件信息包括标识信息,根据标识信息从预设数据库中获取与标识信息对应的插件集,可以根据实际的需求获取与标识信息对应的插件集,不需要对已有的事件信息的事件模板进行修改,从而减少了由于修改事件模板而造成的系统不稳定的问题,进一步地,根据标识信息确定插件集,实现了系统在多维度多场景下的复杂业务逻辑状态的设定,在获取到插件集之后,需要根据标识信息从预配置的配置文件中的获取插件集中每一个插件之间的上下文属性,通过配置文件来规定插件之间的上下文属性,降低了代码之间的耦合性,从而提高了开发效率,最后根据上下文属性和插件集构建与标识信息对应的事件模板。
附图说明
27.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
28.图1为本发明实施例中状态机引擎编排方法的一个具体示例的流程图;
29.图2为本发明实施例中状态机引擎编排方法的一个具体示例的流程图;
30.图3为本发明实施例中状态机引擎编排方法的一个具体示例的示意图;
31.图4为本发明实施例中状态机引擎编排装置的一个具体示例的原理框图;
32.图5为本发明实施例中计算机设备的一个具体示例图。
具体实施方式
33.下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
34.在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
35.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,还可以是两个元件内部的连通,可以是无线连接,也可以是有线连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
36.此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
37.针对背景技术中所提及的技术问题,本技术实施例提供了一种状态机引擎编排方法,具体参见图1所示,为本发明实施例提供的一种状态机引擎编排方法流程示意图。在介绍该方法实施步骤之前,首先说明该方法适用的一种状态机引擎系统,执行此方法是首先需要配置与之对应的状态机引擎,具体的,状态机引擎的构建方法如下。
38.1、定义状态机元素,主要包括定义状态枚举、事件枚举以及可编码维度等,其中状态枚举也就是与标识信息对应的插件集中的插件类型,例如,可以是下单插件、支付插件等;事件枚举可以是插件集中插件的名称或者标识等信息,可编码维度为可以支持的事件信息的标识信息的类型,比如规定标识信息的数据格式等信息。在使用时需要将状态机的各元素进行初始化。
39.2、设置状态机的上下文属性,在上下文中设置可编排维度的属性值、属性名以及状态之间的属性等信息,例如可以是开始状态、结束状态等属性,上下文属性可以设置在配置文件中,在对状态机引擎进行编排的时候可以直接从配置文件中根据标识信息获取与之对应的上下文属性。
40.3、定义插件,其中插件的类型与数量与设置的可编码维度以及状态类型和数量对应,插件之间的传递和流转实现了事件的完成,当然插件的配置也可以支持后续根据需求进行定义添加,用以在所有的插件都不满足需求时进行设定。
41.4、在上述内容都设置好之后,可以预先将所有的事件通过事件+状态+编排维度进行构建,并注册到登记簿中,以便后续在获取到与相同的事件信息时可以直接调用,从而提高了反应速度。
42.具体的,参见图1所示,状态机引擎编排方法包括如下步骤:
43.步骤101,获取待执行的事件信息,事件信息包括标识信息。
44.示例性地,待执行的事件信息可以是购物事件、充电事件以及加油事件等,其中标识信息即是可以唯一识别上述事件信息的信息,例如标识信息可以包括事件信息产生的时
间信息、用户的id信息等,这些信息用于区别事件信息的唯一性。获取事件信息的方法可以通过用户的请求数据或者是输入的其他数据等,本发明实施例对获取事件信息的具体方法不作限定,本领域技术人员可以根据实际需要确定。
45.步骤102,根据标识信息从预设数据库中获取与标识信息对应的插件集。
46.示例性地,在获取到标识信息后,可以根据标识信息获取与标识信息对应的插件集。具体的插件存取时,可以将对应的标识信息和插件以键值对的形式存储至预设数据库,这样在获取插件时,只需要在数据库中获取与标识信息相对应的key值对应的插件即可,完成一个时间需要至少两个插件,由此获取的插件为一个插件集。
47.步骤103,根据标识信息,从预配置的配置文件中获取插件集中每一个插件的上下文属性。
48.示例性地,在获取到插件集之后,为执行完成事件信息,还需要得知每一个插件之间的连接关系和每一个插件之间的状态是如何流转的,也就是需要得知插件之间的上下文属性。在本实施例中,可以从状态机预配置的配置文件中获取每一个插件之间的上下文属性,即通过标识信息在配置文件中获取与标识信息对应的上下文属性。
49.步骤104,根据上下文属性和插件集中每一个插件,构建与标识信息对应的事件模板。
50.示例性地,在获取到插件集以及插件集对应的上下文属性之后,根据插件集以及上下文属性构建与事件信息对应的事件模板,其中事件模板可以直接用于执行,以完成获取到的事件信息。
51.当构建完成事件模板之后用以执行对应的事件信息,当事件信息不是立即执行时,可以将事件模板存储于预设位置,当达到执行时刻时,从预设位置中获取与标识信息相对应的事件模板已完成上述事件信息。
52.上述事件模板以及预设数据库中的所有的插件的存储以及获取都是通过倒排索引来操作,在获取插件集时,可以根据插件属性的标识来获取插件,这样达到减少了搜索插件时的时间,提高了工作效率。
53.当存在多个事件信息需要执行时,利用多个线程分别确定每一个事件信息对应的事件模板。每一个事件信息的执行过程均是独立的,相互之间并不影响。
54.根据上述实施例的介绍,如图2所示,还可以根据业务需求提前构建事件模板,并在启动状态机时,将事件模板进行加载,由此在后续获取到与事件模板相对应的事件信息之后,直接通过倒排索引获取事件模板以完成事件信息的执行。
55.可选地,在另一个具体的实施例中,当获取到的事件信息的标识信息在预设数据库中并没有与之匹配的插件集时,说明此事件信息在之前并没有设置或执行过,在这种情况下,需要根据事件信息中的状态信息以及每一个状态信息之间的连接关系,来构建事件模板来执行,因此事件信息还包括至少两个状态信息以及每一个状态信息之间的连接关系,当预设数据库中不存在与标识信息对应的插件集,方法还包括:
56.根据至少两个状态信息构建每一个状态信息对应的插件;
57.根据连接关系,确定状态信息对应的插件的上下文属性,以便状态机引擎根据每一个状态信息对应的插件和上下文属性构建事件模板。
58.示例性地,如图3所示,为上述实施例中的一个具体实例的示意图,获取事件信息
之后,状态机引擎根据事件信息的状态信息构建与状态信息对应的插件,随后根据事件信息中的连接关系确定所构建的插件的上下文属性,随后根据插件以及上下文属性构建事件模板,事件模板可以存储至预设容器(预设位置)中,以便后续对事件模板进行多次利用。
59.本发明提供的状态机引擎编排方法,获取待执行的事件信息,其中事件信息包括标识信息,根据标识信息从预设数据库中获取与标识信息对应的插件集,可以根据实际的需求获取与标识信息对应的插件集,不需要对已有的事件信息的事件模板进行修改,从而减少了由于修改事件模板而造成的系统不稳定的问题,进一步地,根据标识信息确定插件集,实现了系统在多维度多场景下的复杂业务逻辑状态的设定,在获取到插件集之后,需要根据标识信息从预配置的配置文件中的获取插件集中每一个插件之间的上下文属性,通过配置文件来规定插件之间的上下文属性,降低了代码之间的耦合性,从而提高了开发效率,最后根据上下文属性和插件集构建与标识信息对应的事件模板。
60.以上,为本技术所提供的状态机引擎编排几个方法实施例,下文中则介绍说明本技术所提供的状态机引擎编排其他实施例,具体参见如下。
61.本发明实施例还公开了一种状态机引擎编排装置,如图4所示,该装置包括:
62.事件获取模块401,用于获取待执行的事件信息,事件信息包括标识信息;
63.插件获取模块402,用于根据标识信息从预设数据库中获取与标识信息对应的插件集;
64.确定属性模块403,用于根据标识信息,从预配置的配置文件中获取插件集中每一个插件的上下文属性;
65.构建模板模块404,用于根据上下文属性和插件集中每一个插件,构建与标识信息对应的事件模板。
66.可选地,事件信息还包括至少两个状态信息以及每一个状态信息之间的连接关系,当预设数据库中不存在与标识信息对应的插件集,装置还包括:
67.构建插件模块,用于根据至少两个状态信息构建每一个状态信息对应的插件;
68.确定模块,用于根据连接关系,确定状态信息对应的插件的上下文属性,以便状态机引擎根据每一个状态信息对应的插件和上下文属性构建事件模板。
69.作为本发明一个可选地实施方式,装置还用于:事件模板存储于预设位置;当获取到与事件模板的标识信息相对应的事件信息时,从预设位置获取事件模板用于执行完成事件信息。
70.作为本发明一个可选地实施方式,插件获取模块,具体用于:根据倒排索引从预设数据库中获取与标识信息对应的插件集。
71.作为本发明一个可选地实施方式,装置还用于:所有的插件通过map集合存储于预设数据库。
72.作为本发明一个可选地实施方式,其特征在于,当存在多个事件信息时,装置还用于:利用多个线程分别确定每一个事件信息对应的事件模板。
73.本发明实施例提供的状态机引擎编排装置中各部件所执行的功能均已在上述任一方法实施例中做了详细的描述,因此这里不再赘述。
74.通过执行该装置,获取待执行的事件信息,其中事件信息包括标识信息,根据标识信息从预设数据库中获取与标识信息对应的插件集,可以根据实际的需求获取与标识信息
对应的插件集,不需要对已有的事件信息的事件模板进行修改,从而减少了由于修改事件模板而造成的系统不稳定的问题,进一步地,根据标识信息确定插件集,实现了系统在多维度多场景下的复杂业务逻辑状态的设定,在获取到插件集之后,需要根据标识信息从预配置的配置文件中的获取插件集中每一个插件之间的上下文属性,通过配置文件来规定插件之间的上下文属性,降低了代码之间的耦合性,从而提高了开发效率,最后根据上下文属性和插件集构建与标识信息对应的事件模板。
75.本发明实施例还提供了一种计算机设备,如图5所示,该计算端可以包括处理器501和存储器502,其中处理器501和存储器502可以通过总线或者其他方式连接,图5中以通过总线连接为例。
76.处理器501可以为中央处理器(central processing unit,cpu)。处理器501还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
77.存储器502作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的状态机引擎编排方法对应的程序指令/模块。处理器501通过运行存储在存储器502中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的状态机引擎编排方法。
78.存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器501所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至处理器501。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
79.一个或者多个模块存储在存储器502中,当被处理器501执行时,执行如图1所示实施例中的状态机引擎编排方法。
80.上述计算机设备具体细节可以对应参阅图1所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
81.本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;存储介质还可以包括上述种类的存储器的组合。
82.虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1