CN115729642B - 基于状态机处理用户行为的方法、系统、设备及存储介质 - Google Patents

基于状态机处理用户行为的方法、系统、设备及存储介质 Download PDF

Info

Publication number
CN115729642B
CN115729642B CN202211460808.9A CN202211460808A CN115729642B CN 115729642 B CN115729642 B CN 115729642B CN 202211460808 A CN202211460808 A CN 202211460808A CN 115729642 B CN115729642 B CN 115729642B
Authority
CN
China
Prior art keywords
event
node
current
events
state
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
CN202211460808.9A
Other languages
English (en)
Other versions
CN115729642A (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.)
SmartX Inc
Original Assignee
SmartX Inc
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 SmartX Inc filed Critical SmartX Inc
Priority to CN202211460808.9A priority Critical patent/CN115729642B/zh
Publication of CN115729642A publication Critical patent/CN115729642A/zh
Application granted granted Critical
Publication of CN115729642B publication Critical patent/CN115729642B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种基于状态机处理用户行为的方法、系统、设备及存储介质。该种基于状态机处理用户行为的方法可以包括:在状态机的根节点注册预设起始事件,在状态机的每个状态节点注册每个预设起始事件对应的相关事件,监听当前用户行为对应的预设起始事件,根据预设起始事件和初始守卫条件将状态机的根节点转移至当前状态节点,在当前状态节点依次接收事件流的中间事件根据与相关事件的匹配情况执行当前状态节点的保持或当前状态节点的转移。本申请中,当前状态节点只会关注当前用户行为对应的事件模型的相关事件,大大减少了事件匹配数量,同时根据对应的守卫条件进一步确认事件触发及状态机转移状态,提高了事件模型匹配效率。

Description

基于状态机处理用户行为的方法、系统、设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其地涉及一种基于状态机处理用户行为的方法、系统、设备及存储介质。
背景技术
一般情况下,于前端技术的用户行为或者事件模型的匹配中,用户行为执行时包括的若干事件可能会对应多个事件模型,当若干事件组成的用户行为满足同时多个事件模型的情况下,仅仅依靠若干事件去匹配当前用户行为是一个完整的用户行为还是一个完整的行为的一部分,用户行为可能根据事件流的流转进行实时修改,整个用户行为的确定和处理比较复杂。例如地,针对点击事件,当接收到一组mousedown,mouseup,c l ick的事件组合的时候,用户无法分辨完整的用户行为是单击行为还是双击行为;为了实现依靠若干事件准确匹配当前用户行为是单击还是双击行为,基于现有的事件模型匹配用户行为的机制,用户根据mousedown需要匹配所有相关的mousedown事件的事件模型,会先将mousedown事件简单记录为单击行为,并且在接收到新mousedown事件的时候会去检查该事件是否会影响上一个行为,从而将记录的上一个单击行为修改为双击行为,使得事件的匹配时,需要修改已经保存的用户行为,整个用户行为的处理较为复杂。
进一步地,根据若干事件匹配事件模型时,当事件流已经存在一部分的匹配成功的事件时,绝大部分的事件模型已经不可能被匹配,但是当前用户行为的为了寻找合适的事件模型确认用户行为,仍然需要匹配所有的事件模型,此时对于用户行为确认执行的大部分事件模型的匹配行为成为一个无状态的行为,浪费系统的大量资源。事件模型包括所有的事件时,事件模型本身的更新相对麻烦,如果需要匹配更多的动作,提供更多的模型则需要额外考虑和现有模型之间的影响,使得新的用户行为引入时更为复杂。
发明内容
基于现有技术中事件模型匹配用户行为的机制,需要根据若干事件对应的当前用户行为与下一事件的关联关系,通过匹配所有的事件模型确定当前用户行为为完整用户行为或完整的用户行为的一部分等技术缺陷,本申请提出来一种基于状态机处理用户行为的方法、系统、设备及存储介质。
本申请的第一方面提供了一种基于状态机处理用户行为的方法,该种基于状态机处理用户行为的方法包括:
在状态机的根节点注册预设事件,预设事件包括预设起始事件和通用事件;
预设用户行为对应的事件模型,根据事件模型在状态机的每个状态节点注册每个预设起始事件对应的相关事件,用户行为与状态节点唯一映射;
获取当前用户行为的事件类型,事件类型可以匹配关联预设起始事件的中间事件;
在监听到当前用户行为对应的预设起始事件的情况下,根据预设起始事件和初始守卫条件将状态机的根节点转移至对应当前事件模型的当前状态节点;
依次接收事件流中的中间事件,根据中间事件及事件类型执行当前状态节点的保持或当前状态节点的转移。
本申请的第一方面的一种可能实现方式中,在状态机的根节点注册预设事件包括:
获取待处理的用户行为,将用户行为发生时对应的事件模型中的预设起始事件注册至状态机的根节点;
以及,
将无法匹配至事件模型的通用事件注册至状态机的根节点。
本申请的第一方面的一种可能实现方式中,在监听到当前用户行为对应的预设起始事件的情况下,根据预设起始事件和初始守卫条件将状态机的根节点转移至对应当前事件模型的当前状态节点包括:
获取转移至当前事件模型的当前状态节点的初始守卫条件;
在预设起始事件满足初始守卫条件的情况下,将根节点转移至至初始守卫条件守卫的当前事件模型对应的当前状态节点。
本申请的第一方面的一种可能实现方式中,获取转移至当前事件模型的当前状态节点的守卫条件包括:
在预设起始事件对应的事件模型不少于一个的情况下,设置转移至各个事件模型对应的各个状态节点的初始守卫条件,初始守卫条件包括保留当前状态节点预设条件和/或转移当前状态节点预设条件。
本申请的第一方面的一种可能实现方式中,依次接收事件流中的中间事件,根据中间事件及事件类型执行当前状态节点的保持或当前状态节点的转移包括:
依次获取事件流中的中间事件及事件模型触发相应的动作;
在接收的中间事件与当前状态节点的相关事件匹配不成功的情况下,根据中间事件对应的下一事件模型,将当前状态转移至下一事件模型对应下一状态节点,记录当前用户行为;
在接收的中间事件与当前状态节点的相关事件匹配成功的情况下,执行状态机的当前状态节点的保留。
本申请的第一方面的一种可能实现方式中,在中间事件不满足任一节点状态的事件模型的情况下,标记为通用事件;
根据注册在根节点的通用事件将状态机的根节点转移至对应的状态节点。
本申请的第一方面的一种可能实现方式中,该种基于状态机处理用户行为的方法还包括:在需要引入或更新预设用户行为对应的事件模型的情况下,创建对应的新状态节点,并在新状态节点重新添加相关事件和守卫条件。
本申请的第二方面提供了一种基于状态机处理用户行为的系统,用于执行如前述的一种基于状态机处理用户行为的方法,该系统包括:
注册单元,用于在状态机的根节点注册预设事件,预设事件包括预设起始事件和通用事件;
预设单元,用于预设用户行为对应的事件模型,根据事件模型在状态机的每个状态节点注册每个预设起始事件对应的相关事件,用户行为与状态节点唯一映射;
获取单元,用于获取当前用户行为的事件类型,事件类型可以匹配关联预设起始事件的中间事件;
初始转移单元,在监听到当前用户行为对应的预设起始事件的情况下,根据预设起始事件和初始守卫条件将状态机的根节点转移至对应当前事件模型的当前状态节点;
状态执行单元,用于依次接收事件流中的中间事件,根据中间事件及事件类型执行当前状态节点的保持或当前状态节点的转移。
本申请的第三方面提供了一种电子设备,包括:
存储器,存储器用于存储处理程序;
处理器,处理器执行处理程序时实现如前述的基于状态机处理用户行为的方法。
本申请的第四方面提供了一种可读存储介质,可读存储介质上存储有处理程序,处理程序被处理器执行时实现如前述的基于状态机处理用户行为的方法。
与现有技术相比,本发明具有如下的有益效果:
本申请基于有限状态机的节点状态保存某一事件模型对应的所有相关事件以对应当前用户行为,保证在状态机状态节点注册一个用户行为,只有符合用户行为对应的当前事件模型的相关事件会被注册在对应的当前状态节点上,当状态机处于任一当前状态节点上时,通过状态机的状态节点匹配用户行为对应的事件时,可以忽略其他节点的事件模型匹配,只需要匹配注册在节点上的相关事件,当前状态节点只会关注当前用户行为对应的事件模型的相关事件,同时根据对应的守卫条件进一步确认事件触发及状态机状态的转移,进一步的缩限用户行为的范围,极大的提高了事件模型匹配效率。
通过有限状态机的各个状态节点使得当引入新的用户行为或者事件模型时,只需要增加相应新的状态节点、守卫条件,而不需要对状态节点已经保存的任一用户行为进行更改,易于增加新事件模型,通过每个状态节点与用户行为关系的唯一映射关系使得记录了任一个用户行为后,如果用户完成行为为实际该用户行为的一部分时,通过状态机的状态节点转移至另一对应完整行为的实际该用户行为状态节点即可,无需对状态节点的当前用户行为进行修改。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1根据本申请的实施例,示出了一种基于状态机处理用户行为的方法的流程示意图;
图2根据本申请的实施例,示出了一种状态机匹配用户行为的示意图;
图3根据本申请的实施例,基于状态机处理用户行为的系统。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
为了解决现有技术中存在事件模型匹配用户行为的机制,需要根据若干事件对应的当前用户行为与下一事件的关联关系,通过匹配所有的事件模型确定当前用户行为为完整用户行为或完整的用户行为的一部分等技术缺陷,本申请提出了一种基于状态机处理用户行为的方法、系统、设备及存储介质。通过本申请提供的状态机处理用户行为的方法,当状态机处于任一当前状态节点上时,符合当前事件模型的可能的事件都已经被注册在当前用户行为对应的节点,通过状态机忽略其他节点的事件模型匹配,只需要匹配注册在节点上的相关事件,同时根据对应的守卫条件进一步确认事件触发及状态机状态,进一步的缩限用户行为的范围,极大的提高了事件模型匹配效率。
javascript中的事件,可以理解就是在HTML文档或者浏览器中发生的一种交互操作,使得网页具备互动性,常见的有加载事件、鼠标事件、自定义事件等,针对该种交互操作,W3C制定的标准模型,W3C制定的事件模型中,一次事件的发生包括事件捕获(capturing):当某个元素触发某个初始事件时,顶层对象document就会发出一个事件流,随着DOM树的节点向目标元素节点流去,该一组事件的对应的事件流可能会同时满足多个事件模型,对应事件流中的事件通过匹配事件模型直至事件真正发生的目标元素,事件流匹配至最终真正目标元素过程中,需要进行事件模型匹配,通过有限状态机将某一事件模型相关所有事件都注册在有限状态机的状态节点上,使得状态机的每一个状态节点都与某一用户行为形成唯一的映射关系,当状态机的根节点接收到某一预设初始事件的情况下,根据该初始事件所在的事件流转移至可匹配的事件模型中,即进入状态机的状态节点,然后该状态机的状态节点会执行该事件流中初始事件之后中间事件的匹配。
通过将当前用户行为映射为一个有限状态机的节点包括的相关事件都注册在对应的状态节点上,使得事件流在执行目标行为匹配时,当前状态节点仅仅会匹配当前状态节点的对应的当前用户行为的事件模型,其余与事件模型无关的事件不会被匹配。
具体地,图1根据本申请的一些实施例,示出了一种基于状态机处理用户行为的方法的流程示意图,具体包括:
步骤100:在状态机的根节点注册预设事件,预设事件包括预设起始事件和通用事件。可以理解的是,Javascript中包括了一系列的事件可以视为一个状态机的事件,基于Javascript需要实现加载事件、鼠标事件、自定义事件等一系列用户行为时,可以对应为一个事件流,该事件流中事件执行可以按照W3C制定的标准模型的顺序进行执行,任一用户行为的最终实现都基于事件流中预设起始事件起始执行,状态机的根节点中注册作为触发事件流顺序执行的预设初始事件以及可以被作为预设起始事件的通用事件,使得当状态机接收到注册的预设事件时,以使得可以根据根节点注册的预设事件触发相应地状态转移。
步骤200:预设用户行为对应的事件模型,根据事件模型在状态机的每个状态节点注册每个预设起始事件对应的相关事件,用户行为与状态节点唯一映射。可以理解的是,用户行为在具体实现时,每个用户行为均可以包括若干个事件流组成的事件组合,该用户行为对应的事件模型,其事件模型中的相关事件在对应的状态节点已经注册完成,以便相应地事件发生时,根据预设起始事件对应的事件模型中所有的相关事件响应事件流中的各个中间事件及其他事件。
步骤300:获取当前用户行为的事件类型,事件类型可以匹配关联预设起始事件的中间事件。可以理解的是,在触发根节点的预设事件后,当前用户行为通过预设事件进行触发,此时需要获取当前用户行为对应的事件类型,事件类型中可以与当前用户行为需要完成的事件流执行匹配,即可以被匹配的事件模型会响应预设起始事件及中间事件,以使得状态机从根节点转移至对应事件类型的状态节点。
步骤400:在监听到当前用户行为对应的预设起始事件的情况下,根据预设起始事件和初始守卫条件将状态机的根节点转移至对应当前事件模型的当前状态节点。可以理解的是,在监听到当前用户行为对应的预设起始事件时,意味着当前用户行为被触发,状态机将从根节点转移至对应的状态节点时,需要根据预设起始事件对应的事件类型以及初始守卫条件确定最终状态机转移的状态节点;该当前用户行可能为一个新的用户行为,也可能为上一个用户行为未完成的部分,因此状态机的转移需要根据守卫条件进行确定。
步骤500:依次接收事件流中的中间事件,根据中间事件及事件类型执行当前状态节点的保持或当前状态节点的转移。可以理解的是,当触发预设起始事件后转移至相应的状态节点后,该当前状态节点的当前事件类型将会与事件流中的中间事件进行匹配,可以匹配至当前状态节点的中间事件则会使得当前状态节点不会发生转移,在中间事件不能匹配至当前事件模型的情况下,根据触发状态机迁移至另外一个状态节点。
于上述步骤100中,在状态机的根节点注册预设事件包括:获取待处理的用户行为,将用户行为发生时对应的事件模型中的预设起始事件注册至状态机的根节点;以及,将无法匹配至事件模型的通用事件注册至状态机的根节点。可以理解的是,在用户行为确定的情况下,根据用户行为可以确定对应的事件模型,触发任何一个用户行为都存在一个预设起始事件,将待处理用户行为确认的所有预设起始事件注册在状态机的根节点上,使得用户行为发生时,可以根据用户行为发生时的起始事件将状态机从根节点转移至对应的状态节点;进一步地,为了防止当前事件的组合不满足任何事件模型时,出现无法执行成功执行状态机转移时,在状态机的根节点可以将无法匹配至事件模型的通用事件提前注册,保证状态机的迁移在必要时刻可以成功执行。
于上述步骤400中,在监听到当前用户行为对应的预设起始事件的情况下,根据预设起始事件和初始守卫条件将状态机的根节点转移至对应当前事件模型的当前状态节点包括:
获取转移至当前事件模型的当前状态节点的初始守卫条件;
在预设起始事件满足初始守卫条件的情况下,将根节点转移至初始守卫条件守卫的当前事件模型对应的当前状态节点。可以理解的是,同一预设初始事件可能对应多个满足状态迁移的事件模型,在确认转移的状态节点前,需要判断前一用户行为是否为一个完整的用户行为,如果前一用户行为执行后,再次触发的预设起始事件满足初始守卫条件的情况下,此时再次触发的预设初始事件与前一用户行为本质上是一个整体行为,因此需要按照初始守卫条件转移至对应的状态节点。
进一步地,在预设起始事件对应的事件模型不少于一个的情况下,设置转移至各个事件模型对应的各个状态节点的初始守卫条件,初始守卫条件包括保留当前状态节点预设条件和/或转移当前状态节点预设条件。可以理解的是,在预设起始事件对应的事件模型不少于一个的情况下,根据初始守卫条件的守卫判断需要转移状态节点,预设初始事件还对应有前一用户行为的情况下,前一用户行为是否真的结束,此时需要根据初始守卫条件进行守卫确定状态机的迁移,前一用户行为作为一个完整行为的情况下,转移当前状态节点进入新的状态节点,前一用户行为并没有真的结束即没有指向最终目标事件的情况下,保留当前状态节点。
于本申请的一些实施例中,初始守卫条件的守卫条件设定可以根据实际事件及用户行为进行设定,本领域技术人员可以根据实际的用户行为及事件类型进行设定,在此不做限定。
于上述步骤500中,依次接收事件流中的中间事件,根据中间事件及事件类型执行当前状态节点的保持或当前状态节点的转移包括:
依次获取事件流中的中间事件及事件模型触发相应的动作;
在接收的中间事件与当前状态节点的相关事件匹配不成功的情况下,根据中间事件对应的下一事件模型,将当前状态转移至下一事件模型对应下一状态节点,记录当前用户行为;
在接收的中间事件与当前状态节点的相关事件匹配成功的情况下,执行状态机的当前状态节点的保留。
可以理解的是,当前用户行为发生后,事件流中的中间事件随之触发,预设起始事件进入的当前状态节点后,中间事件与当前状态节点的当前事件模型进行匹配,同时状态机的状态在中间事件触发后可能会发生改变,中间事件是否能够与当前事件模型匹配,决定了状态机是保留在当前状态节点还是转移至对应的其他状态节点,确认当前状态节点的用户行为是否结束。
进一步地,在中间事件不满足任一节点状态的事件模型的情况下,标记为通用事件;根据注册在根节点的通用事件将状态机的根节点转移至对应的状态节点。可以理解的是,当中间事件与任意一个事件模型进行匹配都不成功的情况时,该中间事件可以与注册在根节点的通用事件匹配,可以认为该中间事件认定为预设初始事件,从而转移到对应的状态节点上。
于本申请的一些实施例中,基于状态机处理用户行为的方法还包括:在需要引入或更新预设用户行为对应的事件模型的情况下,创建对应的新状态节点,并在新状态节点重新添加相关事件和守卫条件。可以理解的是,需要引入新的用户行为时或者新的事件模型需要建立时,无需对已经预设的用户行为、事件模型进行修改,只需要直接地在状态机上按照新的事件模型建立新状态节点,在新状态节点重新添加相关事件和守卫条件,新状态节点直接参与节点状态转移即可,在后续用户行为确定时,无需对之前的状态节点或者用户行为进行修改。
于本申请的一些实施例中,比如引入输入和按键两个和键盘相关的用户行为,为状态机注册输入,按键两个状态节点,输入、按键发生时均可以通过根节点上注册第一keydown事件和第二keydown事件,其中利用第一keydown事件判断事件的target是否为一个input的守卫,结合第二keydown事件判断key是否为可输入字符的守卫,通过守卫条件的keydown事件让状态机转移到输入状态节点上,另一个则会作为一个fallback,使不满足上述守卫的keydown事件使得状态机转移到按键行为对应的状态节点上。
下述将基于一个具体实施例,基于状态机匹配用户行为的方法进行详述:
如图2所示,根据本申请的一些实施例,示出了一种状态机匹配用户行为的示意图。以鼠标事件为例,比如当接收到一组包括mousedown,mouseup,click的事件组合的时候,当前用户行为最终的执行目的可能为了实现一个单击行为或者是一个双击行为(包含两次单击动作):根节点上注册了包括mousedown事件,在第一次鼠标点击行为发生时,mousedown作为初始预设事件,根节点上注册的mousedown事件将有限状态机的状态进行相应转移;满足mousedown事件在内的事件模型可以包括单击行为、双击行为,单击双击与双击行为的实现包括的事件流均包括:第一次的mousedown事件、mouseup事件、click事件,单击行为在此结束;双击行为的完成还包括单击行为结束后,继续执行满足守卫条件的第二次mousedown事件、mouseup事件、click事件,双击行为产生;单击行为和双击行为对应地与状态机的两个状态节点对应。
在根节点接收到预设初始事件为mousedown事件的情况下,有限状态机的状态转移至单击行为对应的状态节点上,整个事件流如果为mouseup事件,click事件顺序出现,则与单击行为对应的状态节点匹配,不会执行状态机的状态转移,当前单击行为对应的状态节点不会对单击行为以外或者mousedown事件、mouseup事件,click事件之外的任何事件做出回应或者执行匹配。
而当单击行为对应的click事件之后,再次出现“mousedown事件”时,此时除了需要mousedown事件不会也直接转移至对应单击行为的状态节点上,而是需要根据确认双击行为的守卫条件,判断第二次mousedown事件是否满足双击行为对应的守卫条件,如果满足双击行为对应的守卫条件,则第二次mousedown事件会转移至双击行为对应的状态节点,第二次mousedown事件之后的中间事件,会跟双击行为所在的状态节点执行匹配,双击行为对应的状态节点会进一步地会对为mouseup事件,click事件做出回应,保持在状态机双击行为对应的状态节点上。
前述中的双击行为的守卫条件被满足的条件可以包括:第一次mousedown事件和第二mousedown事件发生在同一个target上,且第一次mousedown事件和第二mousedown事件发生的时间间隔处于预设阈值内,在满足的双击行为的守卫条件时,状态机会转移到双击行为对应的状态节点上,若不满足双击行为的守卫条件,第一次mousedown事件、mouseup事件、click事件被认定为该完整的用户行为为单击行为,第二mousedown事件会转移至单击行为对应的状态节点,认定为新的用户行为的开始。
双击行为的判断最终由一系列守卫条件进行守护,结合一个双击事件的守卫,对于而保存的单击行为不一定是完整的用户行为进行确认,判断当前的mousedown发生在同一个target上,且发生的时间间隔在双击的阈值内,此时状态机将会转移到双击的状态节点上,对用户行为的执行目标按照双击行为进行进一步确定;此时如果不满足双击事件的守卫,状态机此时会将会输出当前的用户行为为单击,离开并重新进入单击状态节点,以代表开始记录一个新的用户行为的开始。
在本申请的一些实施例中,如图3所示,还提供了一种基于状态机处理用户行为的系统,该种基于状态机处理用户行为的系统应用于前述实施例中所提及的基于状态机处理用户行为的方法中,具体包括:
注册单元001,用于在状态机的根节点注册预设事件,预设事件包括预设起始事件和通用事件;
预设单元002,用于预设用户行为对应的事件模型,根据事件模型在状态机的每个状态节点注册每个预设起始事件对应的相关事件,用户行为与状态节点唯一映射;
获取单元003,用于获取当前用户行为的事件类型,事件类型可以匹配关联预设起始事件的中间事件;
初始转移单元004,在监听到当前用户行为对应的预设起始事件的情况下,根据预设起始事件和初始守卫条件将状态机的根节点转移至对应当前事件模型的当前状态节点;
状态执行单元005,用于依次接收事件流中的中间事件,根据中间事件及事件类型执行当前状态节点的保持或当前状态节点的转移。
在本申请的一些实施例中,提供了一种电子设备,包括:
存储器,存储器用于存储处理程序;
处理器,处理器执行处理程序时实现如前述的基于状态机处理用户行为的方法。
在本申请的一些实施例中,提供了一种可读存储介质,可读存储介质上存储有处理程序,处理程序被处理器执行时实现如前述的基于状态机处理用户行为的方法。
本申请提出的技术方案涉及方法、装置、系统、电子设备、计算机可读存储介质和/或计算机程序产品。计算机程序产品可以包括用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (10)

1.一种基于状态机处理用户行为的方法,其特征在于,所述的方法包括:
在状态机的根节点注册预设事件,所述预设事件包括预设起始事件和通用事件;
预设用户行为对应的事件模型,根据所述事件模型在所述状态机的每个状态节点注册每个所述预设起始事件对应的相关事件,所述用户行为与所述状态节点唯一映射;
获取当前用户行为的事件类型,所述事件类型可以匹配关联所述预设起始事件的中间事件;
在监听到当前用户行为对应的所述预设起始事件的情况下,根据所述预设起始事件和初始守卫条件将所述状态机的所述根节点转移至对应当前事件模型的当前状态节点;
依次接收事件流中的所述中间事件,根据所述中间事件及所述事件类型执行当前状态节点的保持或当前状态节点的转移;
其中,所述初始守卫条件包括保留当前状态节点预设条件和/或转移当前状态节点预设条件;
根据所述初始守卫条件确定状态机的迁移,前一用户行为作为一个完整行为的情况下,转移当前状态节点进入新的状态节点,前一用户行为并没有真的结束即没有指向最终目标事件的情况下,保留当前状态节点。
2.根据权利要求1所述的一种基于状态机处理用户行为的方法,其特征在于,在状态机的根节点注册预设事件包括:
获取待处理的用户行为,将所述用户行为发生时对应的事件模型中的所述预设起始事件注册至所述状态机的根节点;
以及,
将无法匹配至所述事件模型的所述通用事件注册至所述状态机的根节点。
3.根据权利要求1所述的一种基于状态机处理用户行为的方法,其特征在于,在监听到当前用户行为对应的所述预设起始事件的情况下,根据所述预设起始事件和初始守卫条件将所述状态机的所述根节点转移至对应当前事件模型的当前状态节点包括:
获取转移至所述当前事件模型的所述当前状态节点的所述初始守卫条件;
在所述预设起始事件满足所述初始守卫条件的情况下,将所述根节点转移至初始守卫条件守卫的所述当前事件模型对应的所述当前状态节点。
4.根据权利要求3所述的一种基于状态机处理用户行为的方法,其特征在于,获取转移至所述当前事件模型的所述当前状态节点的所述守卫条件包括:
在所述预设起始事件对应的所述事件模型不少于一个的情况下,设置转移至各个所述事件模型对应的各个所述状态节点的初始守卫条件。
5.根据权利要求1所述的一种基于状态机处理用户行为的方法,其特征在于,依次接收事件流中的所述中间事件,根据所述中间事件及所述事件类型执行当前状态节点的保持或当前状态节点的转移包括:
依次获取所述事件流中的所述中间事件及所述事件模型触发相应的动作;
在接收的所述中间事件与所述当前状态节点的所述相关事件匹配不成功的情况下,根据所述中间事件对应的下一事件模型,将所述当前状态转移至所述下一事件模型对应下一状态节点,记录所述当前用户行为;
在接收的所述中间事件与所述当前状态节点的所述相关事件匹配成功的情况下,执行所述状态机的当前状态节点的保留。
6.根据权利要求5所述的一种基于状态机处理用户行为的方法,其特征在于,在所述中间事件不满足任一节点状态的事件模型的情况下,标记为所述通用事件;
根据注册在所述根节点的所述通用事件将所述状态机的根节点转移至对应的状态节点。
7.根据权利要求1所述的一种基于状态机处理用户行为的方法,其特征在于,所述的方法还包括:
在需要引入或更新所述预设用户行为对应的所述事件模型的情况下,创建对应的新状态节点,并在所述新状态节点重新添加相关事件和守卫条件。
8.一种基于状态机处理用户行为的系统,用于执行如权利要求1-7任意一项所述的一种基于状态机处理用户行为的方法,其特征在于,所述的系统包括:
注册单元,用于在状态机的根节点注册预设事件,所述预设事件包括预设起始事件和通用事件;
预设单元,用于预设用户行为对应的事件模型,根据所述事件模型在所述状态机的每个状态节点注册每个所述预设起始事件对应的相关事件,所述用户行为与所述状态节点唯一映射;
获取单元,用于获取当前用户行为的事件类型,所述事件类型可以匹配关联所述预设起始事件的中间事件;
初始转移单元,在监听到当前用户行为对应的所述预设起始事件的情况下,根据所述预设起始事件和初始守卫条件将所述状态机的所述根节点转移至对应当前事件模型的当前状态节点;
状态执行单元,用于依次接收事件流中的所述中间事件,根据所述中间事件及所述事件类型执行当前状态节点的保持或当前状态节点的转移。
9.一种电子设备,其特征在于,包括:
存储器,所述存储器用于存储处理程序;
处理器,所述处理器执行所述处理程序时实现如权利要求1至7中任意一项所述的基于状态机处理用户行为的方法。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如权利要求1至7中任意一项所述的基于状态机处理用户行为的方法。
CN202211460808.9A 2022-11-16 2022-11-16 基于状态机处理用户行为的方法、系统、设备及存储介质 Active CN115729642B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211460808.9A CN115729642B (zh) 2022-11-16 2022-11-16 基于状态机处理用户行为的方法、系统、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211460808.9A CN115729642B (zh) 2022-11-16 2022-11-16 基于状态机处理用户行为的方法、系统、设备及存储介质

Publications (2)

Publication Number Publication Date
CN115729642A CN115729642A (zh) 2023-03-03
CN115729642B true CN115729642B (zh) 2023-09-19

Family

ID=85297078

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211460808.9A Active CN115729642B (zh) 2022-11-16 2022-11-16 基于状态机处理用户行为的方法、系统、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115729642B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116500366B (zh) * 2023-06-25 2023-09-29 国电南瑞科技股份有限公司 一种电力二次设备的自动测试系统及其测试方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112712125A (zh) * 2020-12-31 2021-04-27 山石网科通信技术股份有限公司 事件流的模式匹配方法、装置、存储介质及处理器
CN112950302A (zh) * 2019-12-10 2021-06-11 国网电子商务有限公司 订单的处理方法及装置
CN113127618A (zh) * 2021-04-16 2021-07-16 北京奇艺世纪科技有限公司 一种数据处理方法、装置、电子设备及存储介质
CN114168601A (zh) * 2022-02-10 2022-03-11 浙江大学 一种面向移动端的数据流处理方法及设备
CN114881739A (zh) * 2022-05-25 2022-08-09 北京京东振世信息技术有限公司 订单事件处理方法及装置、电子设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9082073B2 (en) * 2011-11-30 2015-07-14 Metaswitch Networks Ltd. Method and apparatus for operating a finite state machine

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112950302A (zh) * 2019-12-10 2021-06-11 国网电子商务有限公司 订单的处理方法及装置
CN112712125A (zh) * 2020-12-31 2021-04-27 山石网科通信技术股份有限公司 事件流的模式匹配方法、装置、存储介质及处理器
CN113127618A (zh) * 2021-04-16 2021-07-16 北京奇艺世纪科技有限公司 一种数据处理方法、装置、电子设备及存储介质
CN114168601A (zh) * 2022-02-10 2022-03-11 浙江大学 一种面向移动端的数据流处理方法及设备
CN114881739A (zh) * 2022-05-25 2022-08-09 北京京东振世信息技术有限公司 订单事件处理方法及装置、电子设备和存储介质

Also Published As

Publication number Publication date
CN115729642A (zh) 2023-03-03

Similar Documents

Publication Publication Date Title
US10613971B1 (en) Autonomous testing of web-based applications
US9536050B2 (en) Influence filtering in graphical models
CN109829096B (zh) 一种数据采集方法、装置、电子设备及存储介质
CN115729642B (zh) 基于状态机处理用户行为的方法、系统、设备及存储介质
CN111125598A (zh) 数据智能查询方法、装置、设备及存储介质
EP3113020A1 (en) Data processing device and method for processing serial tasks
CN111582477B (zh) 神经网络模型的训练方法和装置
CN112738640A (zh) 一种视频流的字幕的确定方法、装置及可读存储介质
CN108241676A (zh) 实现数据同步的方法及设备
CN112395880A (zh) 结构化三元组的纠错方法、装置、计算机设备及存储介质
US11681873B2 (en) Creating an executable process from a text description written in a natural language
CN112231517A (zh) 一种数据查询方法及装置
CN113626483B (zh) 一种填写表单的前端缓存方法、系统、设备及存储介质
Schluter Restarting automata with auxiliary symbols restricted by lookahead size
CN111178065B (zh) 分词识别词库构建方法、中文分词方法和装置
CN115437621A (zh) 基于机器人流程自动化的流程编辑方法、装置
CN112685253A (zh) 前端报错日志采集方法、装置、设备及存储介质
CN107506299B (zh) 一种代码分析方法及终端设备
US8775528B2 (en) Computer readable recording medium storing linking keyword automatically extracting program, linking keyword automatically extracting method and apparatus
CN111596828A (zh) cookie同步方法、装置及计算机可读存储介质
CN115292205B (zh) 接口的关系拓扑图生成方法、装置、电子设备及存储介质
CN113220307B (zh) 一种代码覆盖分析的优化方法、装置及电子设备
CN111522737B (zh) 一种前端界面的自动化测试校验方法、装置及存储介质
CN113722236B (zh) 游戏调试方法、装置、设备、存储介质
CN112835853B (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