应用事件跟踪的制作方法

文档序号:11333683阅读:212来源:国知局
应用事件跟踪的制造方法与工艺



背景技术:

典型的基于web和/或移动的应用提供了许多与用户交互的方式。例如,用户可以在网页上选择各种元素,例如搜索框、列表项、链接、图像等。在一些情况下,应用的创建者希望响应于用户操作来测量应用的性能,例如通过确定完成给定的操作花费多长时间来测量应用的性能。用户采取的操作可能会生成由不同的应用以不同的方式处理的事件,并且开发人员可以向复合事件序列的不同事件添加操作处理器。例如,用户在触摸屏上的显示器上滑动手指可以生成包括诸如“触摸开始”、“触摸移动”和“触摸结束”之类的事件的复合事件序列,而用鼠标做同样的操作产生诸如“鼠标按下”、“鼠标移动”和“鼠标松开”之类的事件。在这种情况下,尽管存在不同的基础事件,但是每个操作的性能度量可能会被合并。

附图说明

在附图中,相同的附图标记表示相同的部件或块。以下的详细描述参考附图,其中:

图1是与所公开的实施方式一致的应用的示例;

图2是与所公开的实施方式一致的用于应用事件跟踪的系统的框图;

图3是与公开的实施方式一致的示例应用事件跟踪设备的框图;

图4是与所公开的实施方式一致的用于应用事件跟踪的方法的实施例的流程图。

具体实施方式

如上所述,用于web应用的典型界面包括许多元素,诸如图像、链接、菜单、文本描述等。这些元素通常与可以在响应诸如通过输入设备的选择、敲击触摸屏、鼠标移动、键盘命令等操作时由应用程序所调用的事件监听器相关联。因此,如下文详细描述,各种示例实施方式涉及跟踪在与各种元素相关联的操作上发生的事件,评估与这些操作相关联的度量,以及记录用于性能评估和分析的度量。

在以下的描述中,引用了术语“机器可读存储介质”。如本文所使用的,术语“机器可读存储介质”是指存储可执行指令或其他数据的任何电子、磁、光或其它物理存储设备(例如,硬盘驱动器、随机存取存储器、闪速存储器等)。

现在参考附图,图1是与所公开的实施方式一致的应用100的实施例的框图。应用100可以包括例如基于web和/或移动的应用,譬如可以从诸如笔记本电脑、台式计算机、平板电脑、移动电话、智能电话、游戏机等用户设备访问。应用100可以由诸如通用和/或专用计算机、服务器、大型机、台式机、笔记本电脑、平板电脑、智能电话、游戏机和/或任何能够提供与本文中所描述的实施方式一致的计算能力的其它系统。

应用100可以包括多个元素120(a)-(c),例如文本、图像、超链接、视频、菜单按钮、表单等。元素120(a)-(c)可以包括用户界面元素,应用100的用户可以与该用户界面元素交互以在应用100上执行任务和/或命令。例如,元素120(a)-(c)可以包括与网页上的表单相关联的复选框元素。

用户操作(例如,应用100中的操作140)可以被转换成可以通过诸如asp、java、objectivec和各种其他编程语言的代码和/或脚本来操纵的事件。每当用户在用户客户端上发起操作(例如触摸,滑动)时,可以触发一个事件序列(例如,触摸开始、点击、触摸结束),使得应用100中的事件监听器可以处理该操作。

元素120(a)-(c)中的每一个可以包括多个事件监听器。例如,元素120(a)可以包括第一事件监听器125(a)、第二事件监听器125(b)和第三事件监听器125(c)。事件监听器可以包括程序化挂钩,以允许诸如操作140的用户输入从操作环境传递到应用100。

可以响应于不同的操作来调用每个事件监听器125(a)、125(b)、125(c)。例如,事件监听器125(a)可以与对应于触摸元素120(a)的用户操作的“触摸开始”事件相关联。事件监听器125(b)可以与对应于在元素120(a)上拖动、滚动和/或滑动的用户操作的“触摸移动”事件相关联。事件监听器125(c)可以与对应于从元素120(a)提起的用户操作(例如,提起他们的手指、指示笔、鼠标指针等)的“触摸结束”事件相关联。

每个事件监听器125(a)、125(b)、125(c)可以包括一个处理器。例如,事件监听器125(a)可以包括第一默认操作处理器130,事件监听器125(b)可以包括第二默认操作处理器132,并且事件监听器125(c)可以包括非默认操作处理器134。默认操作处理器可以由应用100的操作环境提供。在一些实施方式中,当应用100的开发者没有重写那些操作处理器时,将应用100作为基于web的应用进行托管的web浏览器可以为各种用户操作提供默认操作处理器(例如,web浏览器的默认行为)。例如,默认操作处理器132可以通过突出显示文本来处理用户的滑动操作。在一些实施方式中,事件监听器可以与多个操作处理器相关联。例如,事件监听器可以与默认操作处理器(例如,由用于基于web的应用的web浏览器提供的默认行为)、有助于应用事件跟踪的所添加的虚拟处理器、以及为应用提供功能的开发人员所添加的操作处理器相关联。

操作处理器134可以包括与由应用100的开发者定义的功能相关联的非默认操作处理器。例如,元素120(a)可以包括应用100中的菜单命令;与元素120(a)相关联的“触摸结束”事件可以导致事件监听器125(c)调用操作处理器134而不是该事件的默认操作处理器。例如,操作处理器134可以包括响应于与元素120(a)相关联的菜单命令的用户选择而执行的功能,而不是与“触摸结束”事件相关联的默认功能。

在一些实施方式中,基于与诸如操作处理器134之类的非默认操作处理器的关联,事件监听器125(c)可以包括重要事件。基于与默认操作处理器的关联,事件监听器125(a)-(b)可以包括非重要事件。事件监听器125(a)-(c)可以在应用100中注册,以响应于与其事件相关联的操作被调用。

在一些实施方式中,事件监听器可能不与任何处理器(默认或非默认)关联。例如,元素120(b)可以包括第二多个事件监听器145(a)-(c)。当由于应用100的实施而发生相应的事件时,因为没有功能需要执行,所以事件监听器145(a)-(b)可能不与操作处理器相关联。然而,操作处理器150可以包括用于事件监听器145(c)的非默认操作处理器,因此事件监听器145(c)可以在应用100中注册,以响应于与其事件(例如,“触摸结束”)相关联的操作。

如上所述,可以在应用100内以不同的方式实现不同的元素。这可能导致不同的事件监听器被调用用于不同的操作,即使操作相似。例如,用户在元素120(a)上的滑动操作可以导致事件监听器“触摸开始”、“触摸移动”、“触摸取消”、“触摸结束”被应用100调用,而在元素120(b)上的相同操作仅导致用于“触摸结束”的事件监听器被调用。

在一些实施方式中,在与元素相关联的每个事件监听器中添加虚拟操作处理器可能会导致对某些和/或所有操作调用相同的事件监听器序列。例如,元素120(c)可以包括第三多个事件监听器160(a)-(c)。与元素120(a)-(b)一样,只有一个事件监听器包括非默认操作处理器,在该示例中,为事件监听器160(c)的操作处理器170。第一虚拟操作处理器172和第二虚拟操作处理器174可以分别与事件监听器160(a)和事件监听器160(b)相关联。虚拟操作处理器172、174可以导致当在元素120(c)上执行诸如操作140的用户操作时调用事件监听器160(a)-(b)。因此,与元素120(c)相关联的每个用户操作可能导致相同的事件序列,而不管哪个事件监听器实际上与用户操作相关联。例如,滑动和点击操作都可能导致为所述操作生成事件序列“触摸开始”、“触摸移动”、“触摸取消”、“触摸结束”,即使滑动操作通常可以被引导到用于“触摸移动”事件的事件监听器,并且点击操作通常可以被引导到用于“触摸结束”事件的事件监听器。

虚拟事件处理器172、174的插入可以通过在应用100中注入代码(例如,javascript、.net等)而在加载应用100期间被执行。所述注入可以确保虚拟操作处理器代码可以在应用100的逻辑之前执行,使得由应用100定义的任何事件处理器都可以检查注入的代码。

可以为预定义的事件(例如,“点击”、“鼠标按下”、“触摸开始”、“触摸移动”、“触摸结束”、“触摸取消”、“鼠标松开”、“加载”、“键盘按下”、“键盘松开”)添加虚拟操作处理器。然后,每个用户操作可以导致相同的完整的事件序列,一些包括虚拟操作处理器,并且一些包括重要的(例如应用和/或业务逻辑)操作处理器。

每个用户操作(例如操作140)可以导致每次触发初始事件(例如,“触摸开始”和/或“鼠标按下”)时创建复合事件序列对象。随后的事件可以与当前事件序列相关联,直到事件序列关闭为止。事件序列可以通过空闲定时器的到期(例如,在可配置的时间量(例如500ms)内未接收到新事件)和/或当新的事件序列事件类型(例如,“触摸开始”和/或“鼠标按下”)被触发时而被关闭。

在一些实施方式中,应用100可以通过测量与操作140的执行相关联的性能度量来监视用户体验。性能度量可以包括诸如完成操作所花费的时间量、用于执行操作的资源量、操作产生的错误和/或异常的数量(如果有的话)等数据。然后,性能度量可以与复合事件序列相关联以用于记录目的。

图2是与所公开的实施方式一致的用于应用事件跟踪的系统200的框图。系统200可以包括计算设备205和显示设备210。计算设备205可以包括例如通用和/或专用计算机、服务器、大型机、台式机、笔记本电脑、平板电脑、智能电话、游戏机和/或能够提供与本文中描述的实施方式一致的计算能力的任何其它系统。显示设备210可以包括例如阴极射线管(crt)监视器、液晶显示器(lcd)屏幕、触摸屏或使用另一种显示技术实现的屏幕。然而,应当显而易见的是,可以使用任何合适的显示器。取决于系统200的配置,显示设备可以在计算设备205内部或外部。

计算设备205可以包括应用引擎220和度量引擎225。应用引擎220和度量引擎225可以各自包括例如存储在机器可读介质中的可由处理器、逻辑电路或它们的组合执行的指令。

显示设备210可以显示包括多个事件监听器270的应用260。在一些实施方式中,操作280可以由与用户和显示设备210上的应用260的界面之间的交互相关联的应用260接收。这样的界面可以包括多个元素,诸如以上关于图1描述的那些。

应用引擎220可以识别与应用210中的重要事件相关联的事件监听器270中的至少一个,接收与应用210的元素相关联的操作280,生成包括与该操作相关联的多个事件监听器270的复合事件序列,并且确定该复合事件序列是否与至少一个重要事件相关联。

在一些实施方式中,基于web的应用可以通过显示设备210向用户呈现若干可选元素。用户可以使用鼠标、触控笔、手指、键盘和/或其他输入与这些元素交互。例如,用户可以滑动跨越其中一个元素,触发“触摸开始”、“触摸移动”和“触摸结束”事件,每个事件可以与事件监听器270相关联。操作引擎220可以确定任何被触发的事件是否包括重要事件,其中可能包括确定非默认操作处理器是否已被添加到该事件的事件监听器。

度量引擎225可以响应于应用引擎220确定该复合事件序列与至少一个重要事件相关联,测量与接收到的操作相关联的性能度量,并根据复合事件序列来创建包括性能度量的日志记录。例如,度量引擎225可以测量完成所述操作所花费的时间量并将结果输出到显示设备210。

在一些实施方式中,应用引擎220可以基于初始事件生成复合事件序列。例如,“触摸开始”和/或“鼠标按下”事件可以被配置作为序列中的初始事件。可能在不同的应用和实施方式中有所不同的其他事件也可以包括初始事件。初始事件的每个实例可以以信号通知应用引擎220开始新的复合事件序列。

在一些实施方式中,应用引擎220可以基于结束事件生成复合事件序列。例如,“触摸结束”和/或“鼠标松开”事件可以被配置作为序列中的结束事件。这样的事件可以包括与用户操作的典型事件序列相关联的最后事件,因此可以用于以信号通知复合事件序列的关闭。

在一些实施方式中,应用引擎220可以基于空闲定时器的到期来生成复合事件序列。例如,如果一段时间(例如,500ms)过后而没有触发任何新事件,则应用引擎220可以关闭事件序列,使得随后被触发的事件可以与新的复合事件序列相关联。

在一些实施方式中,应用引擎220可以向与至少一个非重要事件相关联的事件监听器添加虚拟操作处理器。例如,一些事件监听器270可以与默认操作处理器相关联和/或根本与操作处理器不相关联。这样的事件监听器可以包括非重要的事件监听器,而已经被应用260的开发者用功能逻辑重写了操作处理器的事件监听器可以与重要的事件监听器相关联。重要的事件监听器可以包括开发者感兴趣的用于测量性能度量的那些事件监听器。

复合事件序列可以包括重要事件监听器和至少一个非重要事件监听器。添加到每个非重要事件监听器的虚拟处理器可以在每次接收用户操作(例如操作280的)时,使得这些事件监听器被应用260调用。如果没有虚拟操作处理器,事件监听器可以被跳过,导致每次都有不同的事件序列。

虽然在图2中描绘了一个计算设备205和一个显示设备210,系统200的某些实施方式可以包括多于一个的计算设备205和一个显示设备210。计算设备中的至少一个可以被使用并且被配置在例如至少一个服务器库、计算机库、数据中心和/或其他装置中。例如,计算设备在一起可以包括云计算资源、网格计算资源和/或任何其他分布式计算装置。这样的计算设备可以位于单个设备中和/或可以分布在许多不同的地理位置之间。

图3是与公开的实施方式一致的示例应用事件跟踪设备300的框图。应用事件跟踪设备300可以包括处理器310和非暂时性机器可读存储介质320。应用事件跟踪设备300可以包括计算设备,例如台式计算机、笔记本电脑、手持式计算设备、移动电话等。处理器310可以是中央处理单元(cpu)、基于半导体的微处理器、或适用于检索和执行存储在机器可读存储介质320中的指令的任何其它硬件设备。特别地,处理器310可以获取、解码和执行多个识别事件监听器指令330、添加虚拟操作处理器指令332、接收操作指令334、生成复合事件序列指令336、测量性能度量指令338和日志创建指令340,以实现以下详细描述的功能。

可执行指令(例如,诸如识别事件监听器指令330、添加虚拟操作处理器指令332、接收操作指令334、生成复合事件序列指令336、测量性能度量指令338和日志创建指令340)可以存储在机器可读存储介质320的任何部分和/或组件中。机器可读存储介质320可以包括易失性和/或非易失性存储器和数据存储组件。易失性组件是在电源中断时不保留数据值的组件。非易失性组件是在电源中断时保留数据的组件。

机器可读存储介质320可以包括例如随机存取存储器(ram)、只读存储器(rom)、硬盘驱动器、固态驱动器、usb闪存驱动器、通过存储卡读卡器访问的存储卡、通过相关的软盘驱动器访问的软盘、通过光盘驱动器访问的光盘、通过适当磁带驱动器访问的磁带和/或其他存储器组件,和/或这些存储器组件中任何两个和/或多个的组合。此外,ram可以包括例如静态随机存取存储器(sram)、动态随机存取存储器(dram)和/或磁随机存取存储器(mram)以及其他类似的设备。rom可以包括例如可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)和/或其他类似的存储器设备。

机器可读存储介质320可以用可执行指令进行编码,用于显示使用户能够与诸如应用100之类的应用交互的用户界面。可执行指令可以包括例如应用事件跟踪设备300的操作系统(os)的至少一部分、或者在操作系统的顶部上运行以呈现用户界面的单独的应用。作为另一示例,可执行指令可以被包括在web浏览器中,使得web浏览器实现在本文中详细描述的界面。在一些实施例中,可执行指令可以在由web浏览器解释的基于web的脚本(例如javascript)中实现。

更具体地,机器可读存储介质320可以用识别事件监听器指令330进行编码,以将多个事件监听器中的第一事件监听器识别为与应用相关联的重要事件监听器。例如,应用100可以包括多个元素,事件监听器可用于其中,但是仅一些元素已经注册了操作处理器。事件监听器(例如“触摸开始”、“触摸移动”和“触摸结束”)可用于应用100的指定元素,但是只有“触摸开始”可能已经被注册有非默认(即应用开发者定义的)操作处理器。因为操作处理器可以包括默认应用功能的重写,所以用于该元素的“触摸开始”事件的事件监听器可以被识别为重要的事件监听器。

机器可读存储介质320可以进一步用添加虚拟操作处理器指令332进行编码,以将虚拟操作处理器添加到多个事件监听器中的第二监听器,其中多个事件监听器中的第二事件监听器包含一个非重要的事件监听器。非重要的事件监听器可以包括与应用100的元素相关联的那些事件监听器,其不包括操作处理器和/或默认操作处理器。例如,虚拟操作处理器可以被添加到简单地退出而不执行功能、执行小操作并丢弃结果、和/或调用另一个事件监听器的事件监听器。将虚拟操作处理器添加到事件监听器可能会导致那些事件监听器在应用中注册。因此,当与事件监听器相关联的事件被用户操作触发时,可以对那些事件监听器进行调用。

机器可读存储介质320可以进一步用接收操作指令334进行编码,以接收与第一事件监听器相关联的操作。响应于用户与应用100的界面的交互,操作140可以被应用100接收。例如,用户可以执行跨元素120(a)-(c)中的一个的滑动操作。应用100可以将用户的滑动操作解释为“触摸开始”、“触摸移动”和“触摸结束”事件,并且调用与这些事件相关联的事件监听器,该事件监听器已经注册为具有操作处理器来处理这些事件。

机器可读存储介质320可以进一步用生成复合事件序列指令336进行编码,以生成包括第一事件监听器和第二事件监听器的复合事件序列。例如,复合事件序列可以包括数据结构,该数据结构包括响应于操作140由被触发的事件调用的每个事件监听器的有序列表。在上述示例中,与用户的滑动操作相关联的复合事件序列可以包括事件“触摸开始”、“触摸移动”和“触摸结束”。

机器可读存储介质320可以进一步用测量性能度量指令338进行编码,以测量与该操作相关联的性能度量。例如,与操作相关联的所测量的性能度量可以包括完成所述操作所花费的时间量。

机器可读存储介质320可以进一步用日志创建指令340进行编码,以创建包括性能度量的日志记录。在一些实施方式中,日志记录可以与复合事件序列相关联。例如,日志记录可以被提交到日志数据库以与其他测量度量进行聚合。在一些实施方式中,日志创建指令340可以生成与应用相关联的性能报告,其中,所述性能报告合并了各自与复合事件序列相关联的多个日志记录。

在一些实施方式中,设备300可以接收与多个事件监听器中的第二事件监听器相关联的第二操作,生成包括第一事件监听器和第二事件监听器的复合事件序列,测量与第二操作相关联的第二性能度量,创建与复合事件序列相关联的包括第二性能度量的第二日志记录,其中所述第二日志记录,并将第二日志记录关联到与复合事件序列相关联的日志记录。因为虚拟操作处理器已被添加到每个非重要事件监听器,所以这些关联事件中的每一个将被触发并被添加到复合事件序列中。这使得同一元素上的不同操作可以根据统一的复合事件序列被聚合。

图4是与所公开的实施方式一致的用于应用事件跟踪的方法400的实施例的流程图。虽然以下参照系统200的组件来描述方法400的执行,但是也可以使用用于执行方法400的其他合适的组件。方法400可以以存储在机器可读存储介质(诸如设备300的机器可读存储介质320)上的可执行指令的形式来实现。

方法400可以在框410中开始并且进行到框420,在框420,系统200可以向与应用相关联的多个事件监听器中的每一个添加虚拟操作处理器。多个事件监听器中的每一个可以包括非默认操作处理器和/或与应用的操作环境(例如,web浏览器)的默认行为相关联。例如,虚拟操作处理器可以被添加到简单地退出而不执行功能、执行小操作并丢弃结果、和/或调用另一个事件监听器的事件监听器。将虚拟操作处理器添加到事件监听器可能会导致这些事件监听器在应用中被注册。因此,当与事件监听器相关联的事件被用户操作触发时,可以对那些事件监听器进行调用。

然后,方法400可以前进到框430,在框430处,系统200可以响应于接收到与应用相关联的第一用户操作,生成包括至少一个第一事件监听器的复合事件序列。例如,响应于用户与应用100的界面的交互,操作140可以被应用100接收。例如,用户可以执行跨元素120(a)-(c)中的一个的滑动操作。应用100可以将用户的滑动操作解释为“触摸开始”、“触摸移动”和“触摸结束”事件,并且调用与这些事件相关联的事件监听器,该事件监听器已经注册为具有操作处理器来处理这些事件。这些事件中的一个可以包括可以与若干不同用户操作的开始相关联的预定义的开始事件(例如,“触摸开始”和/或“鼠标按下”)。复合事件序列可以包括数据结构,该数据结构包括响应于操作140由被触发的事件调用的每个事件监听器的有序列表。

方法400然后可以前进到框435,在框435处,系统200可以基于至少一个第二事件监听器的虚拟操作处理器将多个事件监听器中的至少一个第二事件监听器添加到复合事件序列。例如,在框430处生成的复合事件序列可以包括预定义的开始事件“触摸开始”;然后当在框420处添加的虚拟操作处理器被应用100调用时,下一个事件监听器“触摸移动”可被添加到复合事件序列。

方法400然后可以前进到框440,在框440处,系统200可为至少一个第一事件监听器和至少一个第二事件监听器测量各自的性能度量。在一些实施例中,所述各自的性能度量可以包括完成与复合事件序列中的每个事件监听器相关联的操作处理器的时间。至少一个第一事件监听器和至少一个第二事件监听器。对于另一个示例,与事件监听器相关联的所测量的性能度量可以包括执行操作处理器所消耗的资源量(例如,处理时间、数据存储等)。

然后,方法400可以前进到框450,在框450处,系统200可以关闭复合事件序列。例如,系统200可以响应于一个没有触发新事件的空闲定时器的到期时间而关闭复合事件序列。在一些实施方式中,系统200可以响应于接收到触发至少一个预定义的起始事件的第二用户操作来关闭复合事件序列。例如,如果另一个“触摸开始”事件被触发,则系统200可以关闭复合事件序列并生成新的复合事件序列。

然后,方法400可以前进到框460,在框460处,系统200可以确定复合事件序列是否包括重要的事件监听器。例如,系统200可以通过确定事件监听器是否包括非默认和非虚拟的操作处理器(即,应用开发人员定义的操作处理器)来识别应用100的重要事件监听器。

响应于确定复合事件序列包括重要事件监听器,方法400可以前进到框465,在框465处,系统200可以计算用户操作的最终性能度量。例如,系统200可以根据复合事件序列中的每个事件监听器各自的性能度量来计算完成用户操作的总时间。

方法400然后可以前进到框470,在框470处,系统200可以创建包括最终性能度量的日志记录,其中日志记录与第一复合事件序列相关联。例如,包括操作的标识符、复合事件序列、操作时间、测量的性能度量和/或附加数据的日志记录可以被提交到日志数据库以与其他测量的度量进行聚合。因为虚拟操作处理器已经被添加到每个非重要事件监听器,所以那些关联事件中的每一个可以被触发并被添加到复合事件序列中。这使得同一元素上的不同操作可以根据统一的复合事件序列被聚合。

如果在步骤460,系统200确定复合事件序列不包括重要事件监听器,则方法400可以前进到步骤475,在步骤475,系统200可以丢弃各自的性能度量。例如,用户操作不触发重要事件监听器的复合事件序列可以与其各自的性能度量一起被丢弃,而不创建日志记录。方法400然后可以在框480处结束。

所公开的示例可以包括系统、设备、计算机可读存储介质和用于渐进缓冲器生成的方法。为便于说明,参照图1至图3所示的组件来描述某些示例。然而,所示组件的功能可能重叠,并且可以存在于更少或更多数量的元件和组件中。此外,所示元件的全部或部分功能可以共存或分布在若干地理分散的位置之间。此外,所公开的示例可以在各种环境中实现,并且不限于所示示例。

另外,如在说明书和所附权利要求中所使用的,单数形式“一”,“一个”和“该”也包括复数形式,除非上下文另有指示。另外,尽管术语第一,第二等可以用于描述各种元件,但这些元素不应该受这些术语的限制。相反,这些术语仅用于将一个元素与另一个元素区分开来

进一步,结合图1至图4描述的操作顺序是实例,而不旨在是限制性的。可以使用额外的或更少的操作或操作的组合,或者可以在不脱离所公开的示例的范围的情况下变化。因此,本公开仅提出了实施方式的可能示例,并且可以对所描述的示例进行许多变化和修改。所有这些修改和变化旨在被包括在本公开的范围内并由所附权利要求保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1