首页> 中国专利> 一种基于状态机的事件状态控制方法和装置

一种基于状态机的事件状态控制方法和装置

摘要

本发明涉及状态机技术领域,具体涉及一种基于状态机的事件状态控制方法和装置。该方法包括:接收客户端针对目标对象的事件处理请求;解析事件处理请求,获取目标对象的当前状态和目标状态;根据目标对象的当前状态和目标状态,获取目标事件动作端标签;从事件动作端数据库中获取目标事件动作端标签对应的目标事件动作端;将事件处理请求发送给目标事件动作端,以使目标事件动作端处理事件处理请求对应的状态管理任务;接收并向客户端转发目标事件动作端返回的处理结果。本发明简化了事件处理的过程,只将目标事件动作端与目标对象的当前状态和目标状态建立联系,降低了事件控制的耦合性,提高了基于状态机的事件状态控制管理的效率。

著录项

  • 公开/公告号CN112540809A

    专利类型发明专利

  • 公开/公告日2021-03-23

    原文格式PDF

  • 申请/专利权人 北京首钢自动化信息技术有限公司;

    申请/专利号CN202011447400.9

  • 发明设计人 刘鹏;白璐;章红春;李进利;史婷;

    申请日2020-12-09

  • 分类号G06F9/448(20180101);G07F9/00(20060101);

  • 代理机构11302 北京华沛德权律师事务所;

  • 代理人修雪静

  • 地址 100041 北京市石景山区石门路一号

  • 入库时间 2023-06-19 10:22:47

说明书

技术领域

本发明涉及状态机技术领域,具体涉及一种基于状态机的事件状态控制方法和装置。

背景技术

为实现业务目标,需要在多个参与者之间利用计算机实现通讯连接,并按某种预定规则自动进行事件处理(例如传递文档、信息、审批、或任务等),从而形成了状态机技术。

针对日常工作中具有固定程序、固定状态,状态到状态之间有具体多元化操作的活动,状态机通过将工作分解成定义良好的任务或角色,从而按照一定规则和过程来执行这些任务并对其进行监控管理。

但实际应用中,事件管理往往和业务绑定,而业务变化比较频繁。现有技术中事件是高耦合的,这样就意味着业务变动的时候系统维护成本高,也限制了业务拓展能力。

因此,如何提高基于状态机的事件状态控制管理的效率,是目前亟需解决的技术问题。

发明内容

本发明的目的是提供一种基于状态机的事件状态控制方法和装置,以提高基于状态机的事件状态控制管理的效率。

本发明实施例提供了以下方案:

第一方面,本发明实施例提供一种基于状态机的事件状态控制方法,所述方法包括:

接收客户端针对目标对象的事件处理请求;

解析所述事件处理请求,获取所述目标对象的当前状态和目标状态;

根据所述目标对象的当前状态和目标状态,获取目标事件动作端标签;

从事件动作端数据库中获取所述目标事件动作端标签对应的目标事件动作端;

将所述事件处理请求发送给所述目标事件动作端,以使所述目标事件动作端处理所述事件处理请求对应的状态管理任务;

接收并向所述客户端转发所述目标事件动作端返回的处理结果。

在一种可能的实施例中,所述接收客户端针对目标对象的事件处理请求之前,所述方法还包括:

将第一事件处理端标签和所述第一事件处理端标签对应的第一事件处理端映射进所述事件动作端数据库,更新所述事件动作端数据库。

在一种可能的实施例中,所述接收客户端针对目标对象的事件处理请求之后,所述方法还包括:

根据所述事件处理请求,获取合法性验证参数;

判断所述合法性验证参数是否合法;

若不合法,则认定所述事件处理请求验证失败,并终止处理所述事件处理请求。

在一种可能的实施例中,所述终止处理所述事件处理请求之后,所述方法还包括:

获取设定时长内所述客户端发送的事件处理请求的验证失败次数;

判断所述验证失败次数是否超过设定数值;

若超过,则将所述客户端对应的IP地址加入黑名单。

第二方面,本发明实施例提供一种基于状态机的事件状态控制装置,所述装置包括:

第一接收模块,用于接收客户端针对目标对象的事件处理请求;

第一获取模块,用于解析所述事件处理请求,获取所述目标对象的当前状态和目标状态;

第二获取模块,用于根据所述目标对象的当前状态和目标状态,获取目标事件动作端标签;

第三获取模块,用于从事件动作端数据库中获取所述目标事件动作端标签对应的目标事件动作端;

第一发送模块,用于将所述事件处理请求发送给所述目标事件动作端,以使所述目标事件动作端处理所述事件处理请求对应的状态管理任务;

第二接收模块,用于接收并向所述客户端转发所述目标事件动作端返回的处理结果。

在一种可能的实施例中,所述装置还包括:

第一更新模块,用于在所述第一接收模块工作之前,将第一事件处理端标签和所述第一事件处理端标签对应的第一事件处理端映射进所述事件动作端数据库,更新所述事件动作端数据库。

在一种可能的实施例中,所述装置还包括:

第四获取模块,用于在所述第一接收模块工作之后,根据所述事件处理请求,获取合法性验证参数;

第一判断模块,用于判断所述合法性验证参数是否合法;

第一控制模块,用于在所述合法性验证参数不合法时,认定所述事件处理请求验证失败,并终止处理所述事件处理请求。

在一种可能的实施例中,所述装置还包括:

第五获取模块,用于在第一控制模块工作之后,获取设定时长内所述客户端发送的事件处理请求的验证失败次数;

第二判断模块,用于判断所述验证失败次数是否超过设定数值;

第二控制模块,用于在所述验证失败次数超过设定数值时,将所述客户端对应的IP地址加入黑名单。

第三方面,本发明实施例提供一种基于状态机的事件状态控制设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现第一方面中所述的基于状态机的事件状态控制方法的步骤。

第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时以实现第一方面中所述的基于状态机的事件状态控制方法的步骤。

本发明与现有技术相比,具有如下的优点和有益效果:

本发明预先构建的事件动作端数据库中保存有事件处理端标签与事件处理端的对应关系,当获得目标对象的当前状态和目标状态后,通过目标事件动作端标签就可以获得对应的目标事件动作端,简化了事件处理的过程,只将目标事件动作端与目标对象的当前状态和目标状态建立联系,降低了事件控制的耦合性,提高了基于状态机的事件状态控制管理的效率。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种基于状态机的事件状态控制方法的流程图;

图2是本发明实施例提供的一种基于状态机的事件状态控制装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,基于本发明实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明实施例保护的范围。

请参阅图1,图1为本发明实施例提供的一种基于状态机的事件状态控制方法的流程图,具体包括步骤11至步骤17。

步骤11,接收客户端针对目标对象的事件处理请求。

具体的,针对目标对象的事件处理请求属于状态机中的一个事件,用于请求状态机将目标对象从前置状态对象(当前状态)更改为后置状态对象(目标状态),之后状态机在接收到该事件后,需要将该事件转发给对应的动作端进行处理。

具体的,客户端可以是网页端,也可以是APP应用程序,当然动作端也可以转换为客户端来向状态机发送事件处理请求。

具体的,若该状态机的应用场景为基于饮料贩卖机的贩卖行为,那么目标对象就可以是饮料贩卖机中的各款饮料商品售卖过程中的投币金额,事件处理请求具体就可以是“请求将当前投币金额由1元更新为2元”,当前状态可以是当前累计投币金额,目标状态可以是本次目标投币金额,事件动作端可以是饮料贩卖机的处理器芯片。

步骤12,解析所述事件处理请求,获取所述目标对象的当前状态和目标状态。

具体的,通过解析事件处理请求,就可以获得事件处理请求中所包含的事件内容信息。

具体的,在基于饮料贩卖机的贩卖行为中,对于事件处理请求“请求将当前投币金额由1元更新为2元”,通过解析事件信息,即可获得该事件中“投币金额”作为目标对象,其当前状态为“1元”,其目标状态为“2元”。

步骤13,根据所述目标对象的当前状态和目标状态,获取目标事件动作端标签。

具体的,本实施例为目标对象的事件均设置了对应的事件动作端,来处理目标对象的相应事件,由于直接根据事件去确定对应的事件动作端,使得状态机的控制过程耦合性太高,当目标对象的事件发生变化更新时,需要自上而下进行全局更新,非常繁琐。本步骤将目标对象的当前状态和目标状态结合为一个唯一的目标事件动作端标签,与目标事件动作端建立联系,减少了目标对象的每一个事件与状态机全局的联系,减少了整个状态机的耦合性。

具体的,目标对象的每一个状态可以对应有字符代码,通过对当前状态对应的字符代码和目标状态对应的字符代码的拼合处理,从而获得唯一的字符代码,该唯一的字符代码就是本步骤中的目标事件动作端标签。

具体的,在基于饮料贩卖机的贩卖行为中,对于事件处理请求“请求将当前投币金额由1元更新为2元”,当前状态“1元”对应的字符代码可以为“TB01”,目标状态“2元”对应的字符代码可以为“TB02”,目标事件动作端标签可以为“TB0102”。

步骤14,从事件动作端数据库中获取所述目标事件动作端标签对应的目标事件动作端。

具体的,本实施例中采用数据库的形式来存储目标事件动作端标签与其对应的目标事件动作端的关系,通过查询事件动作端数据库,即可使状态机快速获得目标事件动作端标签对应的目标事件动作端。

具体的,在基于饮料贩卖机的贩卖行为中,目标事件动作端标签“TB0102”对应的目标事件动作端为贩卖机处理器“投币控制”端口。

步骤15,将所述事件处理请求发送给所述目标事件动作端,以使所述目标事件动作端处理所述事件处理请求对应的状态管理任务。

具体的,当状态机通过事件动作端数据库获得目标事件动作端,就将客户端生成的事件处理请求发送给目标事件动作端进行处理。

目标事件动作端再通过状态机获知相关的判断信息,从而完成相应的事件处理,生成处理结果。

具体的,在基于饮料贩卖机的贩卖行为中,当贩卖机处理器“投币控制”端口接收到事件处理请求“请求将当前投币金额由1元更新为2元”的事件内容后,就会通过投币执行总成获取“当前投币总额”相关的返回信息。

若投币执行总成返回的信息为“已投币,且当前投币总额为2元”,贩卖机处理器“投币控制”端口即将“投币金额”的状态更新为“2元”,并生成“已经将投币金额更新为2元”的处理结果。

若投币执行总成返回的信息为“已投币,硬币为假币,当前投币金额为1元”,贩卖机处理器“投币控制”端口则不更新“投币金额”的状态,并生成“投币为假币,更改状态失败”的处理结果。

若投币执行总成返回的信息为“未投币,当前投币金额为1元”,贩卖机处理器“投币控制”端口则不更新“投币金额”的状态,并生成“未投币或投币失败,更改状态失败”的处理结果。

步骤16,接收并向所述客户端转发所述目标事件动作端返回的处理结果。

具体的,状态机在接收到目标事件动作端返回的处理结果后,会将处理结果转发给客户端,以告知其处理结果。

具体的,在基于饮料贩卖机的贩卖行为中,状态机会将处理结果展示在饮料贩卖机的显示屏上,告知顾客相应的结果。

在一种可能的实施例中,本实施例还提供了对事件动作端数据库的更新功能,以通过该功能,更改原有的事件处理端标签和事件处理端标签的对应关系,以及增加新的事件处理端标签和事件处理端标签的对应关系,具体包括:

步骤21,将第一事件处理端标签和所述第一事件处理端标签对应的第一事件处理端映射进所述事件动作端数据库,更新所述事件动作端数据库。

本实施例将事件与动作端的耦合关系存储在事件动作端数据库中,因而需要在更新事件与动作端对应关系时,不用从全局来更改,只需要简单更新事件动作端数据库中的映射关系,即可完成所有的更新动作,提高了状态机的控制管理效率。

在一种可能的实施例中,为了提高状态机的安全性,本实施例在接收到客户端针对目标对象的事件处理请求之后,还配置了身份验证功能,具体包括:

步骤31,根据所述事件处理请求,获取合法性验证参数。

具体的,该合法性验证参数可以是包含有客户端身份的token,可以是一串基于设备序列号的加密数据,还可以是基于具体事件内容的匹配数据,用来指代请求方的合法身份。

步骤32,判断所述合法性验证参数是否合法。

具体的,合法性验证参数合法是指该合法性验证参数符合预设的参数规则,该参数规则可以是token对应身份具有请求权限,解密数据为设备序列号,匹配数据与存储的对应数据相一致等。

具体的,对于加密数据,通过解密以及数据比对,即可验证合法性验证参数是否合法。对于匹配数据,通过对比其内部存储的相应数据,即可验证合法性验证参数是否合法。

步骤33,若不合法,则认定所述事件处理请求验证失败,并终止处理所述事件处理请求。

具体的,当合法性验证参数不合法时,则认为客户端不具备相应的请求权限,并终止之后的处理过程。

之后,本实施例还提供了黑名单机制,来应对潜在的DDos(Distributed Denialof service,分布式拒绝服务)攻击,提高方案的安全性,具体包括:

步骤41,获取设定时长内所述客户端发送的事件处理请求的验证失败次数。

具体的,设定时长可以自行设置,例如1分钟,30分钟,1天等。

步骤42,判断所述验证失败次数是否超过设定数值。

步骤43,若超过,则将所述客户端对应的IP地址加入黑名单。

当某一客户端连续多次验证失败,本实施例直接将该客户端对应的IP地址加入黑名单,忽略其生成的事件。

这里,本发明还给出一种具有上述功能的状态机架构,来说明上述实施例的具体应用方式。

状态机使用gradle压缩为jar包,并上传maven仓库来记录仓库坐标,以通过仓库坐标的方式来引入具体的项目。

状态机内部设有适配器、容器对象和流程对象。适配器为状态机在启动状态机时根据事件流程配置分析计算,生成事件对象(事件)和处理器(动作端)的映射矩阵;流程对象包含事件对象、通用处理器;事件对象包含事件编码、前置状态对象(当前状态)、后置状态对象(目标状态)、事件处理器(事件动作端);通用处理器主要功能为日志记录和请求拦截认证。具体的,事件处理器之间使用类隔离的方式去除事件之间的耦合性。

具体的状态对象包含状态名称和状态编码属性;事件对象包含事件编码属性、起始状态对象、结束状态对象、事件处理器;通用处理器包含请求合法性验证方法和日志记录方法;事件处理器包含事件处理算法;事件流程包括事件对象、通用处理器。

具体的,状态机接收拦截终端事件管理请求后,交送通用处理器记录操作日志,通过token验证的方式验证是否为合法用户请求。

之后,调用适配器,通过请求中的事件编码找到对应的处理器,对每种事件做定制化处理。若处理成功,则改变事件状态为后置状态,并反馈终端;若合法性验证失败则记录终端ip,一小时内同一ip非法请求达到五条则认为是恶意请求,将此ip加入黑名单待管理员手动解除;若事件处理器处理失败则告知终端失败原因。提供事件统计功能,可以在图形化展示各种事件处理时效,便于发现并提高业务效率。

最后,反馈终端处理结果,具体可以发送短信通知和邮件到用户跟进事件进度。

基于与方法同样的发明构思,本发明实施例还提供了一种基于状态机的事件状态控制装置,如图2所示为该装置实施例的结构示意图,所述装置包括:

第一接收模块51,用于接收客户端针对目标对象的事件处理请求;

第一获取模块52,用于解析所述事件处理请求,获取所述目标对象的当前状态和目标状态;

第二获取模块53,用于根据所述目标对象的当前状态和目标状态,获取目标事件动作端标签;

第三获取模块54,用于从事件动作端数据库中获取所述目标事件动作端标签对应的目标事件动作端;

第一发送模块55,用于将所述事件处理请求发送给所述目标事件动作端,以使所述目标事件动作端处理所述事件处理请求对应的状态管理任务;

第二接收模块56,用于接收并向所述客户端转发所述目标事件动作端返回的处理结果。

在一种可能的实施例中,所述装置还包括:

第一更新模块,用于在所述第一接收模块工作之前,将第一事件处理端标签和所述第一事件处理端标签对应的第一事件处理端映射进所述事件动作端数据库,更新所述事件动作端数据库。

在一种可能的实施例中,所述装置还包括:

第四获取模块,用于在所述第一接收模块工作之后,根据所述事件处理请求,获取合法性验证参数;

第一判断模块,用于判断所述合法性验证参数是否合法;

第一控制模块,用于在所述合法性验证参数不合法时,认定所述事件处理请求验证失败,并终止处理所述事件处理请求。

在一种可能的实施例中,所述装置还包括:

第五获取模块,用于在第一控制模块工作之后,获取设定时长内所述客户端发送的事件处理请求的验证失败次数;

第二判断模块,用于判断所述验证失败次数是否超过设定数值;

第二控制模块,用于在所述验证失败次数超过设定数值时,将所述客户端对应的IP地址加入黑名单。

基于与前述实施例中同样的发明构思,本发明实施例还提供一种基于状态机的事件状态控制设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前文任一所述基于状态机的事件状态控制方法的步骤。

基于与前述实施例中同样的发明构思,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文任一所述基于状态机的事件状态控制方法的步骤。

本发明实施例中提供的技术方案,至少具有如下技术效果或优点:

本发明实施例预先构建的事件动作端数据库中保存有事件处理端标签与事件处理端的对应关系,当获得目标对象的当前状态和目标状态后,通过目标事件动作端标签就可以获得对应的目标事件动作端,简化了事件处理的过程,只将目标事件动作端与目标对象的当前状态和目标状态建立联系,降低了事件控制的耦合性,提高了基于状态机的事件状态控制管理的效率。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、装置(模块、系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号