CN111338609B - 信息获取方法、装置、存储介质及终端 - Google Patents

信息获取方法、装置、存储介质及终端 Download PDF

Info

Publication number
CN111338609B
CN111338609B CN202010135821.1A CN202010135821A CN111338609B CN 111338609 B CN111338609 B CN 111338609B CN 202010135821 A CN202010135821 A CN 202010135821A CN 111338609 B CN111338609 B CN 111338609B
Authority
CN
China
Prior art keywords
state machine
state
machine model
information
preset
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
CN202010135821.1A
Other languages
English (en)
Other versions
CN111338609A (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.)
Guangzhou Baiguoyuan Information Technology Co Ltd
Original Assignee
Guangzhou Baiguoyuan Information Technology 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 Guangzhou Baiguoyuan Information Technology Co Ltd filed Critical Guangzhou Baiguoyuan Information Technology Co Ltd
Priority to CN202010135821.1A priority Critical patent/CN111338609B/zh
Publication of CN111338609A publication Critical patent/CN111338609A/zh
Application granted granted Critical
Publication of CN111338609B publication Critical patent/CN111338609B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4435Detection or removal of dead or redundant code

Abstract

本发明实施例公开了信息获取方法、装置、存储介质及终端。其中,该方法包括:监听预设应用程序对应的预设事件,在监听到第一预设事件时,将第一预设事件通知到对应的第一状态机模型,以使第一状态机模型根据第一预设事件进行状态迁移处理,获取第一状态机模型输出的目标信息,其中,目标信息包括第一状态机模型从开始状态迁移至接受状态过程中的统计信息。本发明实施例提供的技术方案,可以基于状态机对应用程序信息进行统计,实现埋点统计代码与业务逻辑代码的解耦,保护业务逻辑代码的完整性。

Description

信息获取方法、装置、存储介质及终端
技术领域
本发明实施例涉及计算机技术领域,尤其涉及信息获取方法、装置、存储介质及终端。
背景技术
对于终端中的应用程序来说,基于优化应用程序或提供运营的数据支撑等原因,通常需要收集并统计应用程序的相关信息来有针对性地对产品作出对应的调整,相关信息例如可包括用户与应用程序的交互行为信息等,可统称为应用程序信息。
目前,一般采用在应用程序中进行埋点的方式来获取应用程序信息,以代码埋点为例,要求应用开发者根据数据分析人员的要求,向业务逻辑代码中植入相应的应用程序信息统计代码,并在适当的时机将统计到的数据上报到统计后台。然而,代码埋点通常不和需求开发一同进行,而是在需求开发完成后,根据需要添加统计代码,因此容易导致开发者在添加统计代码的时候破坏了原先代码设计的完整性,侵入性强,大部分统计代码和业务逻辑代码结合较为紧密,耦合度高。因此,现有的应用程序信息获取方案并不完善,需要改进。
发明内容
本发明实施例提供了信息获取方法、装置、终端和存储介质,可以基于状态机对应用程序信息进行统计,实现埋点统计代码与业务逻辑代码的解耦,保护业务逻辑代码的完整性。
第一方面,本发明实施例提供了一种信息获取方法,该方法包括:
监听预设应用程序对应的预设事件,其中,所述预设事件与状态机模型的输入相对应;
在监听到第一预设事件时,将所述第一预设事件通知到对应的第一状态机模型,以使所述第一状态机模型根据所述第一预设事件进行状态迁移处理,其中,所述第一预设事件包含于所述预设事件中;
获取所述第一状态机模型输出的目标信息,其中,所述目标信息包括所述第一状态机模型从开始状态迁移至接受状态过程中的统计信息。
第二方面,本发明实施例提供了一种信息获取装置,该装置包括:
事件监听模块,用于监听预设应用程序对应的预设事件,其中,所述预设事件与状态机模型的输入相对应;
事件通知模块,用于在监听到第一预设事件时,将所述第一预设事件通知到对应的第一状态机模型,以使所述第一状态机模型根据所述第一预设事件进行状态迁移处理,其中,所述第一预设事件包含于所述预设事件中;
目标信息获取模块,用于获取所述第一状态机模型输出的目标信息,其中,所述目标信息包括所述第一状态机模型从开始状态迁移至接受状态过程中的统计信息。
第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的信息获取方法。
第四方面,本发明实施例提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的信息获取方法。
本发明实施例中提供的信息获取方案,监听预设应用程序对应的预设事件,在监听到第一预设事件时,将第一预设事件通知到对应的第一状态机模型,以使第一状态机模型根据第一预设事件进行状态迁移处理,获取第一状态机模型输出的目标信息,其中,目标信息包括第一状态机模型从开始状态迁移至接受状态过程中的统计信息。通过采用上述技术方案,可以基于状态机对应用程序信息进行统计,实现埋点统计代码与业务逻辑代码的解耦,保护业务逻辑代码的完整性。
附图说明
图1为本发明实施例提供的一种信息获取方法的流程示意图;
图2为本发明实施例提供的一种状态机模型示意图;
图3为本发明实施例提供的又一种信息获取方法的流程示意图;
图4为本发明实施例提供的另一种信息获取方法的流程示意图;
图5为本发明实施例提供的一种信息获取方法工作过程示意图;
图6为本发明实施例提供的一种信息获取装置的结构框图;
图7为本发明实施例提供的一种终端的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
为了便于理解本发明实施例的技术方案,先对状态机进行介绍。状态机可理解为一个有向图形,由一组节点和一组相应的转移函数组成,状态机通过响应一系列事件而运行。以常见的确定有限状态自动机(Deterministic Finite Automaton,DFA)为例,DFA是用于表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。状态机的状态反映了系统从开始到当前时刻的输入变化,当系统达到状态转移条件时,发生状态变更,即系统状态从某一状态转移到另一种状态。状态机动作包括进入动作,退出动作,转移动作和输入动作等。特别地,确定有限状态自动机从当前状态转移到下一个状态的关系是明确的。一个确定有限状态自动机A由一个非空有限的状态集合Q,一个输入集合Σ,一个转移函数δ,一个开始状态s和一个接受状态集合F组成,即A=(Q,Σ,δ,s,F),上述五个项目可称为确定有限状态自动机的五元组。
图1为本发明实施例提供的一种信息获取方法的流程示意图,该方法可以由信息获取装置执行,其中该装置可由软件和/或硬件实现,一般可集成在终端中。如图1所示,该方法包括:
步骤101、监听预设应用程序对应的预设事件,其中,所述预设事件与状态机模型的输入相对应。
示例性的,本发明实施例中的终端可以包括如手机、平板电脑、笔记本电脑以及个人计算机等终端,在终端中可以安装应用程序,预设应用程序可以是终端中安装的任意一个应用程序,也可以是预先设定的应用程序。本发明实施例的信息获取方案可应用于应用程序开发测试阶段,也可应用于应用程序发布后线上运行阶段,本发明实施例不做限定。
示例性的,预设事件可以包括预设应用程序在运行过程中所涉及的各种事件。例如,可以包括用户作用于预设应用程序的行为事件,还可以包括预设应用程序的运行情况变更事件等。其中,用户作用于预设应用程序的行为事件例如可包括按钮点击、页面跳转或页面刷新等,预设应用程序的运行情况变更事件可包括一些应用程序底层事件,例如网络切换、前后台切换、输入输出变化、内存消耗情况变化或堆栈信息变化等。
示例性的,应用程序信息统计的逻辑一般为在应用程序到达某一条件(比如进入某一个指定页面)时开始记录应用程序当前的状态,包括用户的行为如按钮点击或页面跳转等,应用程序底层事件如网络切换或内存消耗情况等,在达到某一条件(比如离开某一个指定页面)时统计结束,并输出期间统计到的状态信息。发明人发现,状态机的工作机制与上述应用程序信息统计的逻辑存在相似之处,都存在开始状态和至少一个接受状态(结束状态),达到特定条件时可由事件触发状态转移,每个状态都存储了特定时刻的信息,状态是否转移关系明确。因此,本发明实施例可基于状态机建立用于统计应用程序信息的状态机模型,并利用状态机模型来进行应用程序信息的统计。具体的,状态机模型可以是确定有限状态自动机模型。
本发明实施例中,对于状态机模型,可定义如下:状态机模型中包含五元组,分别为输入集合、状态集合、开始状态、接受状态以及状态迁移函数,输入集合中的输入与预设事件对应,状态集合中的状态与能够收集到的信息情况对应,开始状态与统计开始时机对应,接受状态与统计结束时机对应,状态迁移函数与所述信息情况的改变规则对应。具体的,对应用程序信息进行统计的过程可称为统计事件,可定义统计周期(可根据实际情况进行设置)内预设应用程序中发生的能对统计数据造成影响的事件(比如点击某一个按钮),也即预设事件,为有限状态机的输入。基于预设事件,定义统计事件可能收集到的数据情况为有限状态机的状态集合。定义统计事件的开始时机(比如进入某一个特定页面)为有限状态机的开始状态。定义统计事件的结束时机(比如离开某一个特定页面)为有限状态机的接受状态。定义统计数据改变时统计事件的状态改变为有限状态机的状态迁移函数。图2为本发明实施例提供的一种状态机模型示意图,如图2所示,开始状态记为s,接受状态记为F,状态集合包括s、S1、S2和F,输入集合包括事件1(Event1)、事件2(Event2)、事件3(Event3)和事件1(Event4),状态迁移函数包含s经过Event1后到达S1,s经过Event3后到达S2,S1经过Event2后到达S2,S2经过Event4后到达F。
示例性的,可利用钩子(hook)技术或反射机制监听预设应用程序对应的预设事件。这样设置的好处在于,可以在避免破坏业务逻辑代码完整性的情况下快速准确地监听预设应用程序对应的预设事件。其中,hook可理解为在事件传送到终点前截获并监控事件的传输,像个钩子钩上事件一样,并且能够在钩上事件时,处理一些自己特定的事件;反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为反射机制。可根据实际情况选择合适的方式进行预设事件的监听。
可选的,可按照实际需求设置预设统计周期,在预设统计周期内监听预设应用程序对应的预设事件。
步骤102、在监听到第一预设事件时,将所述第一预设事件通知到对应的第一状态机模型,以使所述第一状态机模型根据所述第一预设事件进行状态迁移处理。
本步骤中,第一预设事件可以是预设应用程序对应的任意一个或多个预设事件。一般的,不同预设事件的发生时间不同,每监听到一个预设事件时,可执行一次本步骤。示例性的,当第一预设事件与状态机模型的开始状态对应时,将第一预设事件通知到对应的第一状态机模型,第一状态机模型根据第一预设事件进入开始状态,也即开始应用程序信息的统计;当第一预设事件与状态机模型的除开始状态和接受状态之外的其他状态(以下称为中间状态)对应时,将第一预设事件通知到对应的第一状态机模型,第一状态机模型根据第一预设事件以及对应的状态迁移函数从第一中间状态迁移至第二中间状态(其中,第一中间状态和第二中间状态可以是同一个状态,具体由状态迁移函数确定);当第一预设事件与状态机模型的接受状态对应时,将第一预设事件通知到对应的第一状态机模型,第一状态机模型根据第一预设事件迁移至接受状态,也即结束应用程序信息的统计。
步骤103、获取所述第一状态机模型输出的目标信息,其中,所述目标信息包括所述第一状态机模型从开始状态迁移至接受状态过程中的统计信息。
示例性的,当第一状态机模型迁移至接受状态时,结束应用程序信息的统计,也即此时满足了输出统计信息的条件,第一状态机模型会输出目标信息,目标信息包括第一状态机模型从开始状态迁移至接受状态过程中的统计信息,通过获取目标信息来得到当前统计事件所需的统计信息。
本发明实施例中提供的信息获取方法,监听预设应用程序对应的预设事件,在监听到第一预设事件时,将第一预设事件通知到对应的第一状态机模型,以使第一状态机模型根据第一预设事件进行状态迁移处理,获取第一状态机模型输出的目标信息,其中,目标信息包括第一状态机模型从开始状态迁移至接受状态过程中的统计信息。通过采用上述技术方案,可以基于状态机对应用程序信息进行统计,实现埋点统计代码与业务逻辑代码的解耦,保护业务逻辑代码的完整性。另外,相关技术中,采用代码埋点时,对部分重点关注的业务逻辑通常会有较多的埋点逻辑,众多的埋点逻辑容易出现对同一事件重复检测的情况,导致了逻辑冗余和性能消耗,而本发明实施例通过采用上述技术方案,采用对预设事件统一监听并通知到对应的状态机模型的方式,不会存在重复检测的情况。
在一些实施例中,在所述接收所述第一状态机模型发送的目标信息之后,还包括:将所述目标信息上报至对应的第二服务器。这样设置的好处在于,可以及时将获取到的目标信息上报至对应的后台,方便后台采用预设算法对目标信息进行分析处理,或方便后台工作人员及时根据目标信息进行相关处理,如针对对应的统计事件对预设应用程序进行完善或补充用户肖像等。
在一些实施例中,对于预设应用程序来说,可以设置多个统计事件。例如,可统计用户在预设应用程序进入视频页浏览视频后,是否点击了点赞按钮;又如,可统计用户在预设应用程序的首页热门列表中刷新次数;再如,可统计预设应用程序在运行过程中内存消耗超过预设内存阈值的次数等。每个统计事件可分别对应一个状态机模型,因此,不同状态机模型可能对应着不同的预设事件,可以预先设置预设事件与状态机模型的映射关系,得到预设映射信息,当监听到第一预设事件时,通过查询预设映射信息来确定需要将第一预设事件通知到哪个状态机模型。具体的,所述将所述第一预设事件通知到对应的第一状态机模型,包括:通过查询预设映射信息确定与所述第一预设事件对应的第一状态机模型,其中,所述预设映射信息包含预设事件与状态机模型的映射关系;将所述第一预设事件通知到所述第一状态机模型。这样设置的好处在于,当预设应用程序对应多个状态机模型时,可以通过查询预设映射信息快速准确地将监听到的第一预设事件通知到正确的状态机模型。另外,需要说明的是,同一个预设事件可能对应多个状态机模型,若第一预设事件同时对应多个状态机模型,则第一状态机模型可以包括多个。
示例性的,基于状态机模型进行事件统计,可以建立起对整个应用程序运行过程中用户行为和应用状态的监控,这里称事件总线。可预先对可能出现的所有预设事件通过反射或hook等手段进行监听,进而建立事件总线,在实际应用时,通过事件总线监听预设应用程序对应的预设事件,并将监听到的预设事件通知到对应的状态机模型。
在一些实施例中,所述第一状态机模型中包含扩展变量,所述目标信息包括所述扩展变量在所述第一状态机模型迁移至接受状态时的数值。相应的,所述将所述第一预设事件通知到对应的第一状态机模型,以使所述第一状态机模型根据所述第一预设事件进行状态迁移处理,包括:将所述第一预设事件通知到对应的第一状态机模型,以使所述第一状态机模型根据所述第一预设事件进行状态迁移处理以及更新所述扩展变量的数值。这样设置的好处在于,通过对状态机的扩展,能够丰富信息统计的维度。此时,第一状态机模型可以是扩展有限状态机,扩展有限状态机(Extended Finite State Machine,EFSM)模型是有限状态机模型的一个扩展,它在有限状态机模型的基础上增加了变量、操作以及状态迁移的前置条件,通过EFSM可以更加精确地刻画软件系统的动态行为。其中,扩展变量可以根据实际需求进行设置,例如可以是次数,如在需要统计用户在预设应用程序的首页热门列表中刷新次数时,对应的状态机模型中就可以包含表示次数的扩展变量。
下面结合具体实例进行说明。以统计事件为统计用户在预设应用程序的首页热门列表中刷新次数为例。对于传统的代码埋点方案来说,需要在应用首页热门列表的代码逻辑中添加相关的统计代码,具体可以是在进入首页热门列表中,初始化相应的计数器,当用户下拉刷新列表时,计数器加一,用户离开首页热门列表时,结束计数,并发送统计结果。添加实现上述功能的统计代码到原来的业务逻辑代码中后,很容易破坏原先代码设计的完整性。
而本发明实施例中,通过使用状态机模型,无需在修改首页热门列表代码即可实现统计目标。具体可以是,定义状态集合为{S0,S1,S2},其包含一个作为扩展变量的计数器i,开始状态为检测到用户进入首页S0,接受状态为检测到用户离开首页S2,可接受的状态转移事件为用户刷新列表,监听到用户首次刷新列表时通知状态机,使状态机从状态S0转移到状态S1,计数器i从0变为1,再次监听到用户刷新列表时通知状态机,使状态机从状态S1转移到状态S1,也即状态机的状态仍然为S1,计数器i加1,监听到用户离开首页时通知状态机,使状态机从状态S1转移到状态S2,该状态将自动触发统计事件对应的目标信息输出。此时,目标信息中可包含状态机模型从开始状态迁移至接受状态过程中的统计得到的刷新次数,也即计数器i的数值。
图3为本发明实施例提供的又一种信息获取方法的流程示意图,本发明实施例在上述各可选实施例基础上进行优化。在监听预设应用程序对应的预设事件之前,还可包括建立状态机模型的相关步骤。建立状态机模型的过程可以在应用开发测试阶段进行,也可以在应用程序发布后线上运行阶段进行,本发明实施例不做限定。
具体的,在所述监听预设应用程序对应的第一预设事件之前,还可包括:接收状态机模型的描述信息;从所述描述信息中提取五元组定义信息,其中,所述五元组定义信息中包括输入集合、状态集合、开始状态、接受状态以及状态迁移函数,所述输入集合中的输入与预设事件对应,所述状态集合中的状态与能够收集到的信息情况对应,所述开始状态与统计开始时机对应,所述接受状态与统计结束时机对应,所述状态迁移函数与所述信息情况的改变规则对应;根据所述五元组定义信息生成对应的第一状态机模型。这样设置的好处在于,可以利用接收到的描述信息自动创建对应的状态机模型,减少代码开发量,并将埋点工作从开发工作中剥离。
可选的,该方法包括:
步骤301、接收状态机模型的描述信息。
示例性的,描述信息可以是自然语言,这样可以方便对代码开发工作不够熟悉的数据分析人员(如产品经理等)通过输入自然语言来达到创建满足自己统计需求的状态机模型的目的。描述语言还可以是领域特定语言(Domain Specific Language,DSL),例如可以是基于json格式的字符串。
步骤302、从所述描述信息中提取五元组定义信息。
其中,所述五元组定义信息中包括输入集合、状态集合、开始状态、接受状态以及状态迁移函数,所述输入集合中的输入与预设事件对应,所述状态集合中的状态与能够收集到的信息情况对应,所述开始状态与统计开始时机对应,所述接受状态与统计结束时机对应,所述状态迁移函数与所述信息情况的改变规则对应。
可选的,当所需生成的状态机模型中包含扩展变量时,在执行本步骤的同时,还可包括:从所述描述信息中提取扩展变量信息,所述扩展变量信息包括扩展变量定义以及扩展变量迁移函数。
步骤303、根据所述五元组定义信息生成对应的第一状态机模型。
示例性的,以DSL语言为例,规定在DSL语言中需要描述有限状态机五元组,则示例通过采用json格式定义一个状态机的五元组,{s0,s1,s2,s3,s4}为状态机的状态集合,其中,s0为状态机的开始状态,s3和s4为状态机的接受状态。应用程序对应的预设事件可包括enter_video_page(进入视频页),like_button_click(点击点赞按钮)和leave_video_page(离开视频页),可以由事件总线统一监听。状态机的状态转移函数包括:当接收到指定事件enter_video_page时,状态机从状态s0进入到状态s1;当接收到指定事件like_button_click时,状态机从状态s1进入到状态s2;当接收到指定事件leave_video_page时,状态机从状态s1进入到状态s3,或者,状态机从状态s2进入到状态s4。以上描述的状态机模型描述的是统计用户在进入视频页浏览视频后,是否点击了点赞按钮。显然,若接受状态为s3,则表示用户进入视频页后未点赞,若接受状态为s4,则表示用户进入视频页后点赞了。
在应用程序开发测试阶段,可采用自动生成工具来生成状态机模型。例如,可以根据json写出程序逻辑,可以只有状态的初始值和状态迁移函数,接受状态的值会根据不同的状态机而改变,可以通过编写代码生成工具来完成从json状态机到程序逻辑的映射,该方案可称为静态方案。进一步地,为了将埋点的工作从程序员的开发工作中剥离,可以通过开发图形化界面,使得产品经理等非开发人员也可通过简单的用户界面(User Interface,UI)操作生成对应的json描述的状态机,通过代码生成工具即可完成相关统计代码的开发,程序员只需要将生成的代码放置到指定的项目中,即可完成新增统计的接入,其余工作(如建立状态机与事件之间的对应关系,推动状态机的状态转移)可以交由事件总线完成。
可选的,若描述信息中包含展变量信息时,本步骤可具体为:根据所述五元组定义信息和所述扩展变量信息生成对应的包含扩展变量的第一状态机模型。这样设置的好处在于,可以生成能够实现更多统计维度的状态机模型。
可选的,在本步骤之后,还可包括:在预设映射信息中添加所述输入集合对应的预设事件与所述第一状态机模型的映射关系。这样设置的好处在于,及时更新预设映射信息,以便在监听到第一状态机模型对应的预设事件时能够准确地通知到第一状态机模型。
步骤304、监听预设应用程序对应的预设事件。
步骤305、在监听到第一预设事件时,将所述第一预设事件通知到对应的第一状态机模型,以使所述第一状态机模型根据所述第一预设事件进行状态迁移处理,其中,所述第一预设事件包含于所述预设事件中。
步骤306、获取所述第一状态机模型输出的目标信息,其中,所述目标信息包括所述第一状态机模型从开始状态迁移至接受状态过程中的统计信息。
本发明实施例提供的信息获取方法,在监听预设应用程序对应的预设事件之前,还可接收状态机模型的描述信息,从描述信息中提取五元组定义信息,并根据五元组定义信息生成对应的第一状态机模型,从而可以利用接收到的描述信息自动创建对应的状态机模型,减少代码开发量,并将埋点工作从开发工作中剥离。
图4为本发明实施例提供的另一种信息获取方法的流程示意图,本发明实施例在上述各可选实施例基础上进行优化。状态机模型的描述信息可以由服务器动态下发。
示例性的,所述接收状态机模型的描述信息,包括:接收第一服务器下发的状态机模型的描述信息。所述根据所述五元组定义信息生成对应的第一状态机模型,包括:根据所述五元组定义信息生成对应的动态第一状态机模型。当前移动应用程序在线上运行出现问题,例如发生崩溃时,通常通过收集日志和崩溃堆栈等信息分析崩溃的原因,由于崩溃信息只包括简单的内存和堆栈信息,大部分情况下无法准确地体现出崩溃原因。崩溃的定位更加依赖于开发者在编码中添加的程序日志。当程序发生异常时,开发者只能对应用程序下发日志上传指令,应用程序将应用的运行日志上传到对应的后台供开发者分析,一旦开发者在开发程序时未写入关键日志,则需要发布新版本的程序以收集更多信息。这种问题分析反馈链极长,无法适应快速迭代的发版节奏。而本发明实施例通过采用上述技术方案,在预设应用程序发布后的线上运行阶段,可以灵活地根据实际统计需求创建新的统计事件对应的状态机模型,以实现收集并统计更多的应用程序相关信息。
进一步的,接收第一服务器下发的状态机模型的描述信息,包括:接收第一服务器下发的状态机模型的基于领域特定语言DSL语句的描述信息。所述从所述描述信息中提取五元组定义信息,包括:利用预设DSL解释器将所述描述信息解析成包含五元组定义信息的运行时结构体。所述根据所述五元组定义信息生成对应的动态第一状态机模型,包括:根据所述运行时结构体生成对应的动态第一状态机模型。这样设置的好处在于,可以使用自定义的DSL语言描述应用程序信息收集逻辑,通过在应用程序中实现预设DSL解释器以解析执行DSL语言,生成动态的状态机模型,以实现新增需求的应用信息统计。
可选的,该方法包括:
步骤401、接收第一服务器下发的状态机模型的基于领域特定语言DSL语句的描述信息。
步骤402、利用预设DSL解释器将所述描述信息解析成包含五元组定义信息的运行时结构体。
步骤403、根据所述运行时结构体生成对应的动态第一状态机模型。
相对于前述实施例所述的静态方案而言,本发明实施例提供的动态方案主要的创新点在于将上述代码生成工具从开发阶段使用迁移到了应用程序运行期间使用。可以通过将代码生成工具进行改造,实现一个能够将json语句解析成能描述一个运行时结构体(例如在iOS平台上,利用Objective-C语言的动态性在运行时构建一个类)的DSL解释器,也即预设解释器,进而完成描述语言中五元组定义信息的提取,在获取到相应的类之后,剩余工作可由事件总线完成。
可选的,当所需生成的状态机模型中包含扩展变量时,利用预设DSL解释器将所述描述信息解析成包含五元组定义信息的运行时结构体,可包括:利用预设DSL解释器将所述描述信息解析成包含五元组定义信息和扩展变量信息的运行时结构体,所述扩展变量信息包括扩展变量定义以及扩展变量迁移函数。
类似前文提及的“刷新次数”的例子,可以升级有限状态机模型为扩展有限状态机模型。例如,统计用户进入视频页面并统计用户滑动视频页上下滑的次数,需要json描述状态机,{s0,s1,s2,s3,s4}为状态机的状态集合其中,s0为状态机的开始状态,s3和s4为状态机的接受状态,在状态机中添加一个扩展变量(extend)count用于记录信息。应用程序对应的预设事件可包括enter_video_page(进入视频页),slide(滑动)和leave_video_page(离开视频页)。状态机的状态转移函数包括:当接收到指定事件enter_video_page时,状态机从状态s0进入到状态s1;当接收到指定事件slide时,状态机从状态s1进入到状态s2,或者,状态机从状态s2进入到状态s2;当接收到指定事件leave_video_page时,状态机从状态s1进入到状态s3,或者,状态机从状态s2进入到状态s4。扩展有限状态机需要添加对应的扩展变量迁移函数,当接收到指定事件slide时,count加1。
相比于前述举例,拓展部分为在状态迁移的同时对扩展变量进行相应的计算,在达到接受状态时对当前状态和扩展状态一并上报。
步骤404、在预设映射信息中添加所述输入集合对应的预设事件与所述第一状态机模型的映射关系。
步骤405、监听预设应用程序对应的预设事件。
步骤406、在监听到第一预设事件时,将所述第一预设事件通知到对应的第一状态机模型,以使所述第一状态机模型根据所述第一预设事件进行状态迁移处理,其中,所述第一预设事件包含于所述预设事件中。
步骤407、获取所述第一状态机模型输出的目标信息,其中,所述目标信息包括所述第一状态机模型从开始状态迁移至接受状态过程中的统计信息。
步骤408、将所述目标信息上报至对应的第二服务器。
其中,第一服务器和第二服务器可以是同一个服务器,也可以是不同的服务器。
本发明实施例提供的信息获取方案,接收第一服务器下发的状态机模型的描述信息,根据描述信息中的五元组定义信息生成对应的动态第一状态机模型,在预设应用程序发布后的线上运行阶段,可以灵活地根据实际统计需求创建新的统计事件对应的状态机模型,以实现收集并统计更多的应用程序相关信息。此外,本发明实施例还能够解决依靠静态的运行日志和崩溃日志分析应用程序的问题定位方法的单一性,极大地缩短了解决问题的周期,使开发者能够在线上实时全方位地获取到用户的程序使用信息,为提升产品体验提供数据支撑。
在一些实施例中,还可包括:在接收到针对所述第一状态机模型的删除指令时,对所述第一状态机模型进行删除处理。当业务趋于稳定,不再需要统计数据时,统计代码存在一定的删除成本,若不删除则导致项目中存在冗余代码,而本发明实施例中,可以在接收到针对状态机模型的删除指令时,对状态机模型进行删除处理,该过程简单快捷,且不会对原始业务代码产生影响,有效解决删除成本,减少项目中的冗余代码。
为了便于理解本发明实施例的技术方案,下面参考图5做进一步说明,图5为本发明实施例提供的一种信息获取方法工作过程示意图。如图5所示,第一服务器(DSL后台)下发DSL语句的描述信息,终端利用DSL解释器对DSL语句进行解释并生成对应的状态机模型,由事件总线在预设映射信息中添加新增的预设事件与状态机模型的映射关系。在应用程序运行过程中,由事件总线监听用户行为(如按钮点击及界面跳转等)以及应用程序状态(如网络及内存情况等)对应的预设事件,将监听到的事件通知到对应的状态机模型,推动状态机模型的状态转移,在达到接受状态时,由状态机模型输出目标信息,完成统计上报。
图6为本发明实施例提供的一种信息获取装置的结构框图,该装置可由软件和/或硬件实现,一般可集成在终端中,可通过执行信息获取方法来进行信息获取。如图6所示,该装置包括:
事件监听模块601,用于监听预设应用程序对应的预设事件,其中,所述预设事件与状态机模型的输入相对应;
事件通知模块602,用于在监听到第一预设事件时,将所述第一预设事件通知到对应的第一状态机模型,以使所述第一状态机模型根据所述第一预设事件进行状态迁移处理,其中,所述第一预设事件包含于所述预设事件中;
目标信息获取模块603,用于获取所述第一状态机模型输出的目标信息,其中,所述目标信息包括所述第一状态机模型从开始状态迁移至接受状态过程中的统计信息。
本发明实施例中提供的信息获取装置,监听预设应用程序对应的预设事件,在监听到第一预设事件时,将第一预设事件通知到对应的第一状态机模型,以使第一状态机模型根据第一预设事件进行状态迁移处理,获取第一状态机模型输出的目标信息,其中,目标信息包括第一状态机模型从开始状态迁移至接受状态过程中的统计信息。通过采用上述技术方案,可以基于状态机对应用程序信息进行统计,实现埋点统计代码与业务逻辑代码的解耦,保护业务逻辑代码的完整性。
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例提供的信息获取方法。
本发明实施例提供了一种终端,该终端中可集成本发明实施例提供的信息获取装置。图7为本发明实施例提供的一种终端的结构框图。终端700包括存储器701、处理器702及存储在存储器701上并可在处理器702上运行的计算机程序,所述处理器702执行所述计算机程序时实现本发明实施例提供的信息获取方法。
上述实施例中提供的信息获取装置、存储介质以及终端可执行本发明任意实施例所提供的信息获取方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的信息获取方法。
注意,上述仅为本发明的较佳实施例。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由权利要求范围决定。

Claims (13)

1.一种信息获取方法,其特征在于,包括:
监听预设应用程序对应的预设事件,其中,所述预设事件与状态机模型的输入相对应;所述预设事件包括用户作用于所述预设应用程序的行为事件和/或所述预设应用程序的运行情况变更事件;每个预设事件对应一个或多个状态机模型;
在监听到第一预设事件时,将所述第一预设事件通知到对应的第一状态机模型,以使所述第一状态机模型根据所述第一预设事件进行状态迁移处理,其中,所述第一预设事件包含于所述预设事件中;
获取所述第一状态机模型输出的目标信息,其中,所述目标信息包括所述第一状态机模型从开始状态迁移至接受状态过程中的统计信息;
在所述监听预设应用程序对应的第一预设事件之前,还包括:
接收状态机模型的描述信息;
从所述描述信息中提取五元组定义信息,其中,所述五元组定义信息中包括输入集合、状态集合、开始状态、接受状态以及状态迁移函数,所述输入集合中的输入与预设事件对应,所述状态集合中的状态与能够收集到的信息情况对应,所述开始状态与统计开始时机对应,所述接受状态与统计结束时机对应,所述状态迁移函数与所述信息情况的改变规则对应;
根据所述五元组定义信息生成对应的第一状态机模型。
2.根据权利要求1所述的方法,其特征在于,所述监听预设应用程序对应的预设事件,包括:
利用钩子技术或反射机制监听预设应用程序对应的预设事件。
3.根据权利要求1所述的方法,其特征在于,所述将所述第一预设事件通知到对应的第一状态机模型,包括:
通过查询预设映射信息确定与所述第一预设事件对应的第一状态机模型,其中,所述预设映射信息包含预设事件与状态机模型的映射关系;
将所述第一预设事件通知到所述第一状态机模型。
4.根据权利要求1所述的方法,其特征在于,所述第一状态机模型中包含扩展变量,所述目标信息包括所述扩展变量在所述第一状态机模型迁移至接受状态时的数值;
相应的,所述将所述第一预设事件通知到对应的第一状态机模型,以使所述第一状态机模型根据所述第一预设事件进行状态迁移处理,包括:
将所述第一预设事件通知到对应的第一状态机模型,以使所述第一状态机模型根据所述第一预设事件进行状态迁移处理以及更新所述扩展变量的数值。
5.根据权利要求1所述的方法,其特征在于,在所述根据所述五元组定义信息生成对应的第一状态机模型之后,还包括:
在预设映射信息中添加所述输入集合对应的预设事件与所述第一状态机模型的映射关系。
6.根据权利要求1所述的方法,其特征在于,在所述从所述描述信息中提取五元组定义信息的同时,还包括:
从所述描述信息中提取扩展变量信息,所述扩展变量信息包括扩展变量定义以及扩展变量迁移函数;
所述根据所述五元组定义信息生成对应的第一状态机模型,包括:
根据所述五元组定义信息和所述扩展变量信息生成对应的包含扩展变量的第一状态机模型。
7.根据权利要求1所述的方法,其特征在于,所述接收状态机模型的描述信息,包括:
接收第一服务器下发的状态机模型的描述信息;
所述根据所述五元组定义信息生成对应的第一状态机模型,包括:
根据所述五元组定义信息生成对应的动态第一状态机模型。
8.根据权利要求7所述的方法,其特征在于,接收第一服务器下发的状态机模型的描述信息,包括:
接收第一服务器下发的状态机模型的基于领域特定语言DSL语句的描述信息;
所述从所述描述信息中提取五元组定义信息,包括:
利用预设DSL解释器将所述描述信息解析成包含五元组定义信息的运行时结构体;
所述根据所述五元组定义信息生成对应的动态第一状态机模型,包括:
根据所述运行时结构体生成对应的动态第一状态机模型。
9.根据权利要求7所述的方法,其特征在于,还包括:
在接收到针对所述第一状态机模型的删除指令时,对所述第一状态机模型进行删除处理。
10.根据权利要求1-9任一所述的方法,其特征在于,在所述获取所述第一状态机模型输出的目标信息之后,还包括:
将所述目标信息上报至对应的第二服务器。
11.一种信息获取装置,其特征在于,包括:
事件监听模块,用于监听预设应用程序对应的预设事件,其中,所述预设事件与状态机模型的输入相对应;所述预设事件包括用户作用于所述预设应用程序的行为事件和/或所述预设应用程序的运行情况变更事件;每个预设事件对应一个或多个状态机模型;
事件通知模块,用于在监听到第一预设事件时,将所述第一预设事件通知到对应的第一状态机模型,以使所述第一状态机模型根据所述第一预设事件进行状态迁移处理,其中,所述第一预设事件包含于所述预设事件中;
目标信息获取模块,用于获取所述第一状态机模型输出的目标信息,其中,所述目标信息包括所述第一状态机模型从开始状态迁移至接受状态过程中的统计信息;
在所述监听预设应用程序对应的第一预设事件之前,还包括:
接收状态机模型的描述信息;
从所述描述信息中提取五元组定义信息,其中,所述五元组定义信息中包括输入集合、状态集合、开始状态、接受状态以及状态迁移函数,所述输入集合中的输入与预设事件对应,所述状态集合中的状态与能够收集到的信息情况对应,所述开始状态与统计开始时机对应,所述接受状态与统计结束时机对应,所述状态迁移函数与所述信息情况的改变规则对应;
根据所述五元组定义信息生成对应的第一状态机模型。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-10中任一所述的方法。
13.一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-10任一项所述的方法。
CN202010135821.1A 2020-03-02 2020-03-02 信息获取方法、装置、存储介质及终端 Active CN111338609B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010135821.1A CN111338609B (zh) 2020-03-02 2020-03-02 信息获取方法、装置、存储介质及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010135821.1A CN111338609B (zh) 2020-03-02 2020-03-02 信息获取方法、装置、存储介质及终端

Publications (2)

Publication Number Publication Date
CN111338609A CN111338609A (zh) 2020-06-26
CN111338609B true CN111338609B (zh) 2023-07-25

Family

ID=71182130

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010135821.1A Active CN111338609B (zh) 2020-03-02 2020-03-02 信息获取方法、装置、存储介质及终端

Country Status (1)

Country Link
CN (1) CN111338609B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860522A (zh) * 2021-03-02 2021-05-28 北京梧桐车联科技有限责任公司 程序的运行监控方法、装置及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101958897A (zh) * 2010-09-27 2011-01-26 北京系统工程研究所 一种安全事件关联分析方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7305663B1 (en) * 2002-12-18 2007-12-04 Advanced Micro Devices, Inc. System and method for state-based profiling of multiprocessor systems
CN106789277B (zh) * 2016-12-27 2020-02-07 北京五八信息技术有限公司 基于状态机模型的用户行为确定方法及装置
CN110442402A (zh) * 2019-08-08 2019-11-12 中国建设银行股份有限公司 数据处理方法、装置、设备及存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101958897A (zh) * 2010-09-27 2011-01-26 北京系统工程研究所 一种安全事件关联分析方法及系统

Also Published As

Publication number Publication date
CN111338609A (zh) 2020-06-26

Similar Documents

Publication Publication Date Title
US10303539B2 (en) Automatic troubleshooting from computer system monitoring data based on analyzing sequences of changes
CN109697066B (zh) 实现数据表拼接及自动训练机器学习模型的方法和系统
US8756593B2 (en) Map generator for representing interrelationships between app features forged by dynamic pointers
US7512954B2 (en) Method and mechanism for debugging a series of related events within a computer system
Arcelli et al. Antipattern-based model refactoring for software performance improvement
CN110944048B (zh) 业务逻辑配置方法及装置
US20160306613A1 (en) Code routine performance prediction using test results from code integration tool
JP2018045403A (ja) 異常検知システム及び異常検知方法
CN110928772A (zh) 一种测试方法及装置
Bogatinovski et al. Self-supervised anomaly detection from distributed traces
US10528456B2 (en) Determining idle testing periods
US11436133B2 (en) Comparable user interface object identifications
CN112070416A (zh) 基于ai的rpa流程的生成方法、装置、设备及介质
KR20150118963A (ko) 큐 모니터링 및 시각화
WO2020140624A1 (zh) 从日志中提取数据的方法和相关设备
CN113590454A (zh) 测试方法、装置、计算机设备和存储介质
CN111679976A (zh) 一种页面对象的查找方法及装置
CN111338609B (zh) 信息获取方法、装置、存储介质及终端
US11119899B2 (en) Determining potential test actions
CN116756021A (zh) 基于事件分析的故障定位方法、装置、电子设备及介质
CN113515715B (zh) 埋点事件编码的生成方法、处理方法及相关设备
CN111459547B (zh) 一种函数调用链路的展示方法和装置
CN114780330A (zh) 代码监控方法和装置
Kohyarnejadfard et al. Anomaly detection in microservice environments using distributed tracing data analysis and NLP
EP3671467A1 (en) Gui application testing using bots

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