利用可执行逻辑来处理结构化数据项的基于键的日志记录的制作方法

文档序号:22688557发布日期:2020-10-28 12:58阅读:107来源:国知局
利用可执行逻辑来处理结构化数据项的基于键的日志记录的制作方法

本说明书涉及用于从可执行逻辑的执行中生成键特定的日志的计算机实施的方法、数据处理系统以及机器可读硬件存储设备,该可执行逻辑当前应用于数据项流中的一个或多个带键数据项,例如,通过网络连接从联网应用输入的数据项。



背景技术:

日志记录在操作系统或其他软件运行时发生的事件、或通信软件的不同用户之间的消息。



技术实现要素:

在总体方面1中,描述了由数据处理系统实施的用于识别可执行逻辑的在处理每个都与键的给定值相关联的一个或多个数据项时执行的一个或多个部分,其中,规范表示该可执行逻辑,其中,规范与键相关联,并且其中,针对键的相应值维持规范的状态,该方法包括:访问表示该可执行逻辑的规范,其中,该规范的针对该键的特定值的状态指定了可执行逻辑的在该状态下可执行的一个或多个部分;通过输入设备或端口间歇地接收数据流的数据项,其中,这些数据项中的一个或多个数据项每个都与该键的给定值相关联;以及生成针对该键的给定值的日志记录,其中,该日志记录指定该可执行逻辑的在处理每个都与该键的给定值相关联的这些数据项中的该一个或多个数据项时执行的该一个或多个部分,该生成包括:针对与该键的给定值相关联的该一个或多个数据项中的每一个:识别该规范的针对与该数据项相关联的该键的给定值维持的给定状态;由该数据处理系统处理该数据项,包括对该数据项执行该可执行逻辑的在该规范的所识别的给定状态下指定的一个或多个部分;以及生成针对该键的该给定值指定该可执行逻辑的这一个或多个部分的执行的该日志记录。

在根据方面1的方面2中,该方法进一步包括:按照键将日志记录分组在一起,其中,与第一键相关联的第一日志记录被分组为第一组,并且其中,与第二键相关联的第二日志记录被分组为第二组。

在根据方面1至2中任一项的方面3中,在存储器中对这些日志记录进行分组。

在根据方面1至3中任一项的方面4中,每个日志记录包括指示处理数据项的一个或多个属性的一个或多个字段,其中,针对至少一个日志记录,字段是指定与该数据项相关联的键的值的键字段。

在根据方面1至4中任一项的方面5中,与特定键相关联的日志记录的子集不包括该键字段。

在根据方面1至5中任一项的方面6中,只有一个与特定键相关联的日志记录包括该键字段。

在根据方面1至6中任一项的方面7中,该方法进一步包括:在预定义的时间间隔结束时,将特定组中与特定键相关联的日志记录写入文件。

在根据方面1至7中任一项的方面8中,该方法进一步包括:重新格式化该文件;将经重新格式化的文件写入索引压缩平面文件(icff);以及按照键将该icff编制在索引中。

在根据方面1至8中任一项的方面9中,该规范包括具有多个节点的图表,其中,每个节点表示该可执行逻辑的一个或多个部分,其中,该图表是可执行的,其中,该图表的执行导致该可执行逻辑的部分的执行,并且该方法进一步包括:基于这些日志记录,在处理该一个或多个数据项时追溯对该图表的一个或多个节点的遍历。

在根据方面1至9中任一项的方面10中,该方法包括:解析这些日志记录以识别该图表的哪些节点被遍历以及该图表的哪些节点未被遍历。

在根据方面1至10中任一项的方面11中,这些日志记录指定该图表的哪些节点被遍历以及该图表的哪些节点未被遍历。

在根据方面1至11中任一项的方面12中,该方法包括:接收用户发起的对这些节点之一的选择;响应于接收到该选择,使图形用户界面显示配置区域,从而为用户提供用于配置该可执行逻辑的由所选节点表示的该一个或多个部分的配置工具,其中,该配置工具包括用于打开和关闭审核的工具;以及接收该用户通过该配置工具发起的对该审核的打开,从而导致生成与所选节点相关联的日志记录。

在根据方面1至12中任一项的方面13中,生成针对该键的给定值指定该可执行逻辑的这一个或多个部分的执行的该日志记录包括:在所生成的日志记录中指定执行该可执行逻辑的这一个或多个部分的结果,指定在执行该可执行逻辑的这一个或多个部分时读取或设置的变量,或识别该可执行逻辑的被执行的这一个或多个部分。

在根据方面1至13中任一项的方面14中,该方法进一步包括:响应于执行该可执行逻辑的该一个或多个部分而发起要由计算系统执行的动作。

在根据方面1至14中任一项的方面15中,该动作包括基于可执行逻辑的该一个或多个部分的执行的执行特性来请求用于执行可执行逻辑的该一个或多个部分的附加计算资源。

在根据方面1至15中任一项的方面16中,该方法进一步包括:通过在数据存储库或在存储器中数据网格中存储指示当前正针对每个状态执行该可执行逻辑的哪个部分的状态数据来维持这些状态。

在根据方面1至16中任一项的方面17中,该方法进一步包括:响应于完成对每个都与该键的给定值相关联的这些数据项中的该一个或多个数据项的处理而更新指定针对该键的值的当前状态的状态数据。

在根据方面1至17中任一项的方面18中,该方法进一步包括:动态地确定指示该图表的哪些节点被遍历以及被遍历节点被这些数据项遍历了多少次的度量。

在根据方面1至18中任一项的方面19中,该方法进一步包括:生成记载流经该图表所采取的路径的日志记录的流;变换所生成的日志记录;以及将经变换的日志记录存储在关系数据库或索引压缩平面文件中,包括以指定的粒度一起批处理日志记录。

在根据方面1至19中任一项的方面20中,该方法进一步包括:经由用户界面动态地输出所确定的度量,其中,响应于对所确定的度量的改变而更新所输出的度量。

在根据方面1至20中任一项的方面21中,该方法进一步包括:接收对该流的数据项中的第一数据项的用户选择;以及使显示该可执行逻辑的当前对这些数据项中的所选第一数据项执行的一个或多个部分的指示。

在根据方面1至21中任一项的方面22中,该方法进一步包括:将该流的数据项中的当前正被处理的所选第一数据项与预定参考数据项进行比较;确定该流的这些数据项中的当前正被处理的第一数据项与该预定参考数据项之间是否存在偏差或者是否不存在这种偏差;以及基于确定该流的这些数据项中的当前正被处理的第一数据项与该预定参考数据项之间是否存在偏差或者是否不存在这种偏差,输出该流的这些数据项中的当前正被处理的第一数据项与该预定参考数据项是否一致的指示。

在根据方面1至22中任一项的方面23中,该方法进一步包括:将该可执行逻辑的当前正在对这些数据项中的第一数据项执行的该一个或多个部分与预定参考可执行逻辑进行比较;确定该可执行逻辑的当前正在对这些数据项中的第一数据项执行的该一个或多个部分与该预定参考可执行逻辑之间是否存在偏差或者是否不存在这种偏差;以及基于确定该可执行逻辑的当前正在对这些数据项中的第一数据项执行的该一个或多个部分与该预定参考可执行逻辑之间是否存在偏差或者是否不存在这种偏差,输出该可执行逻辑的当前正在对这些数据项中的第一数据项执行的该一个或多个部分与该预定参考可执行逻辑是否一致的指示。

在根据方面1至23中任一项的方面24中,日志记录是具有第一字段和第二字段的结构化数据记录,该第一字段用于存储表示该规范的针对该键的特定值的状态的数据,并且该第二字段用于存储指定从开始执行该可执行逻辑的时间到当前时间、针对该键的特定值已执行了该可执行逻辑的由该规范表示的哪些部分的数据。

在根据方面1至24中任一项的方面25中,日志记录是具有这样的字段的结构化数据记录,该字段用于存储指定在当前时间针对该键的特定值已执行了该可执行逻辑的由该规范表示的哪个部分的数据。

在根据方面1至25中任一项的方面26中,该规范是图表,并且其中,一个或多个日志记录指定流经该图表的路径,该路径表示该可执行逻辑的哪些部分在处理与该键的特定值相关联的一个或多个数据记录时被执行。

在根据方面1至26中任一项的方面27中,该方法进一步包括:基于对一个或多个数据项的处理来生成一个或多个输出记录;其中,该一个或多个输出记录中的每一个包括在该日志记录中不包括的数据。

在总体方面28中,描述了一种用于识别可执行逻辑的在处理每个都与键的给定值相关联的一个或多个数据项时执行的一个或多个部分的数据处理系统,其中,规范表示该可执行逻辑,其中,该规范与该键相关联,并且其中,针对该键的相应值维持该规范的状态,该数据处理系统包括:一个或多个处理设备;以及一个或多个机器可读硬件存储设备,该一个或多个机器可读硬件存储设备存储可由该一个或多个处理设备执行以执行包括以下各项的操作的指令:访问表示该可执行逻辑的规范,其中,该规范的针对该键的特定值的状态指定了可执行逻辑的在该状态下可执行的一个或多个部分;通过输入设备或端口间歇地接收数据流的数据项,其中,这些数据项中的一个或多个数据项每个都与该键的给定值相关联;以及生成针对该键的给定值的日志记录,其中,该日志记录指定该可执行逻辑的在处理每个都与该键的给定值相关联的这些数据项中的该一个或多个数据项时执行的该一个或多个部分,该生成包括:针对与该键的给定值相关联的该一个或多个数据项中的每一个:识别该规范的针对与该数据项相关联的该键的给定值维持的给定状态;由该数据处理系统处理该数据项,包括对该数据项执行该可执行逻辑的在该规范的所识别的给定状态下指定的一个或多个部分;以及生成针对该键的该给定值指定该可执行逻辑的这一个或多个部分的执行的该日志记录。

在根据方面28的方面29中,这些操作进一步包括:按照键将日志记录分组在一起,其中,与第一键相关联的第一日志记录被分组为第一组,并且其中,与第二键相关联的第二日志记录被分组为第二组。

在根据方面28至29中任一项的方面30中,在存储器中对这些日志记录进行分组。

在根据方面28至30中任一项的方面31中,每个日志记录包括指示处理数据项的一个或多个属性的一个或多个字段,其中,针对至少一个日志记录,字段是指定与该数据项相关联的键的值的键字段。

在根据方面28至31中任一项的方面32中,与特定键相关联的日志记录的子集不包括该键字段。

在根据方面28至32中任一项的方面33中,只有一个与特定键相关联的日志记录包括该键字段。

在根据方面28至33中任一项的方面34中,这些操作进一步包括:在预定义的时间间隔结束时,将特定组中与特定键相关联的日志记录写入文件。

在根据方面28至34中任一项的方面35中,这些操作进一步包括:重新格式化该文件;将经重新格式化的文件写入索引压缩平面文件(icff);以及按照键将该icff编制在索引中。

在根据方面28至35中任一项的方面36中,该规范包括具有多个节点的图表,其中,每个节点表示该可执行逻辑的一个或多个部分,其中,该图表是可执行的,其中,该图表的执行导致该可执行逻辑的部分的执行,并且这些操作进一步包括:基于这些日志记录,在处理该一个或多个数据项时追溯对该图表的一个或多个节点的遍历。

在根据方面28至36中任一项的方面37中,这些操作进一步包括:解析这些日志记录以识别该图表的哪些节点被遍历以及该图表的哪些节点未被遍历。

在根据方面28至37中任一项的方面38中,这些日志记录指定该图表的哪些节点被遍历以及该图表的哪些节点未被遍历。

在根据方面28至38中任一项的方面39中,这些操作进一步包括:接收用户发起的对这些节点之一的选择;响应于接收到该选择,使图形用户界面显示配置区域,从而为用户提供用于配置该可执行逻辑的由所选节点表示的该一个或多个部分的配置工具,其中,该配置工具包括用于打开和关闭审核的工具;以及接收该用户通过该配置工具发起的对该审核的打开,从而导致生成与所选节点相关联的日志记录。

在根据方面28至39中任一项的方面40中,生成针对该键的给定值指定该可执行逻辑的这一个或多个部分的执行的该日志记录包括:在所生成的日志记录中指定执行该可执行逻辑的这一个或多个部分的结果,指定在执行该可执行逻辑的这一个或多个部分时读取或设置的变量,或识别该可执行逻辑的被执行的这一个或多个部分。

在根据方面28至40中任一项的方面41中,这些操作进一步包括:响应于执行该可执行逻辑的该一个或多个部分而发起要由计算系统执行的动作。

在根据方面28至41中任一项的方面42中,该动作包括基于可执行逻辑的该一个或多个部分的执行的执行特性来请求用于执行可执行逻辑的该一个或多个部分的附加计算资源。

在根据方面28至42中任一项的方面43中,这些操作进一步包括:通过在数据存储库或在存储器中数据网格中存储指示当前正针对每个状态执行该可执行逻辑的哪个部分的状态数据来维持这些状态。

在根据方面28至43中任一项的方面44中,这些操作进一步包括:响应于完成对每个都与该键的给定值相关联的这些数据项中的该一个或多个数据项的处理而更新指定针对该键的值的当前状态的状态数据。

在根据方面28至44中任一项的方面45中,这些操作进一步包括:动态地确定指示该图表的哪些节点被遍历以及被遍历节点被这些数据项遍历了多少次的度量。

在根据方面28至45中任一项的方面46中,这些操作进一步包括:生成记载流经该图表所采取的路径的日志记录的流;变换所生成的日志记录;以及将经变换的日志记录存储在关系数据库或索引压缩平面文件中,包括以指定的粒度一起批处理日志记录。

在根据方面28至46中任一项的方面47中,这些操作进一步包括:经由用户界面动态地输出所确定的度量,其中,响应于对所确定的度量的改变而更新所输出的度量。

在根据方面28至47中任一项的方面48中,这些操作进一步包括:接收对该流的数据项中的第一数据项的用户选择;以及使显示该可执行逻辑的当前对这些数据项中的所选第一数据项执行的一个或多个部分的指示。

在根据方面28至48中任一项的方面49中,这些操作进一步包括:将该流的数据项中的当前正被处理的所选第一数据项与预定参考数据项进行比较;确定该流的这些数据项中的当前正被处理的第一数据项与该预定参考数据项之间是否存在偏差或者是否不存在这种偏差;以及基于确定该流的这些数据项中的当前正被处理的第一数据项与该预定参考数据项之间是否存在偏差或者是否不存在这种偏差,输出该流的这些数据项中的当前正被处理的第一数据项与该预定参考数据项是否一致的指示。

在根据方面28至49中任一项的方面50中,这些操作进一步包括:将该可执行逻辑的当前正在对这些数据项中的第一数据项执行的该一个或多个部分与预定参考可执行逻辑进行比较;确定该可执行逻辑的当前正在对这些数据项中的第一数据项执行的该一个或多个部分与该预定参考可执行逻辑之间是否存在偏差或者是否不存在这种偏差;以及基于确定该可执行逻辑的当前正在对这些数据项中的第一数据项执行的该一个或多个部分与该预定参考可执行逻辑之间是否存在偏差或者是否不存在这种偏差,输出该可执行逻辑的当前正在对这些数据项中的第一数据项执行的该一个或多个部分与该预定参考可执行逻辑是否一致的指示。

在根据方面28至50中任一项的方面51中,日志记录是具有第一字段和第二字段的结构化数据记录,该第一字段用于存储表示该规范的针对该键的特定值的状态的数据,并且该第二字段用于存储指定从开始执行该可执行逻辑的时间到当前时间、针对该键的特定值已执行了该可执行逻辑的由该规范表示的哪些部分的数据。

在根据方面28至51中任一项的方面52中,日志记录是具有这样的字段的结构化数据记录,该字段用于存储指定在当前时间针对该键的特定值已执行了该可执行逻辑的由该规范表示的哪个部分的数据。

在根据方面28至52中任一项的方面53中,该规范是图表,并且其中,一个或多个日志记录指定流经该图表的路径,该路径表示该可执行逻辑的哪些部分在处理与该键的特定值相关联的一个或多个数据记录时被执行。

在根据方面28至53中任一项的方面54中,这些操作进一步包括:基于对一个或多个数据项的处理来生成一个或多个输出记录;其中,该一个或多个输出记录中的每一个包括在该日志记录中不包括的数据。

在总体方面55中,描述了一个或多个用于识别可执行逻辑的在处理每个都与键的给定值相关联的一个或多个数据项时执行的一个或多个部分的机器可读硬件存储设备,其中,规范表示该可执行逻辑,其中,该规范与该键相关联,并且其中,针对该键的相应值维持该规范的状态,该一个或多个机器可读硬件存储设备存储可由一个或多个处理器执行以执行包括以下各项的操作的指令:访问表示该可执行逻辑的规范,其中,该规范的针对该键的特定值的状态指定了可执行逻辑的在该状态下可执行的一个或多个部分;通过输入设备或端口间歇地接收数据流的数据项,其中,这些数据项中的一个或多个数据项每个都与该键的给定值相关联;以及生成针对该键的给定值的日志记录,其中,该日志记录指定该可执行逻辑的在处理每个都与该键的给定值相关联的这些数据项中的该一个或多个数据项时执行的该一个或多个部分,该生成包括:针对与该键的给定值相关联的该一个或多个数据项中的每一个:识别该规范的针对与该数据项相关联的该键的给定值维持的给定状态;由该数据处理系统处理该数据项,包括对该数据项执行该可执行逻辑的在该规范的所识别的给定状态下指定的一个或多个部分;以及生成针对该键的该给定值指定该可执行逻辑的这一个或多个部分的执行的该日志记录。

在根据方面55的方面56中,这些操作进一步包括:按照键将日志记录分组在一起,其中,与第一键相关联的第一日志记录被分组为第一组,并且其中,与第二键相关联的第二日志记录被分组为第二组。

在根据方面55至56中任一项的方面57中,在存储器中对这些日志记录进行分组。

在根据方面55至57中任一项的方面58中,每个日志记录包括指示处理数据项的一个或多个属性的一个或多个字段,其中,针对至少一个日志记录,字段是指定与该数据项相关联的键的值的键字段。

在根据方面55至58中任一项的方面59中,与特定键相关联的日志记录的子集不包括该键字段。

在根据方面55至59中任一项的方面60中,只有一个与特定键相关联的日志记录包括该键字段。

在根据方面55至60中任一项的方面61中,这些操作进一步包括:在预定义的时间间隔结束时,将特定组中与特定键相关联的日志记录写入文件。

在根据方面55至61中任一项的方面62中,这些操作进一步包括:重新格式化该文件;将经重新格式化的文件写入索引压缩平面文件(icff);以及按照键将该icff编制在索引中。

在根据方面55至62中任一项的方面63中,该规范包括具有多个节点的图表,其中,每个节点表示该可执行逻辑的一个或多个部分,其中,该图表是可执行的,其中,该图表的执行导致该可执行逻辑的部分的执行,并且这些操作进一步包括:基于这些日志记录,在处理该一个或多个数据项时追溯对该图表的一个或多个节点的遍历。

在根据方面55至63中任一项的方面64中,这些操作进一步包括:解析这些日志记录以识别该图表的哪些节点被遍历以及该图表的哪些节点未被遍历。

在根据方面55至64中任一项的方面65中,这些日志记录指定该图表的哪些节点被遍历以及该图表的哪些节点未被遍历。

在根据方面55至65中任一项的方面66中,这些操作进一步包括:接收用户发起的对这些节点之一的选择;响应于接收到该选择,使图形用户界面显示配置区域,从而为用户提供用于配置该可执行逻辑的由所选节点表示的该一个或多个部分的配置工具,其中,该配置工具包括用于打开和关闭审核的工具;以及接收该用户通过该配置工具发起的对该审核的打开,从而导致生成与所选节点相关联的日志记录。

在根据方面55至66中任一项的方面67中,生成针对该键的给定值指定该可执行逻辑的这一个或多个部分的执行的该日志记录包括:在所生成的日志记录中指定执行该可执行逻辑的这一个或多个部分的结果,指定在执行该可执行逻辑的这一个或多个部分时读取或设置的变量,或识别该可执行逻辑的被执行的这一个或多个部分。

在根据方面55至67中任一项的方面68中,这些操作进一步包括:响应于执行该可执行逻辑的该一个或多个部分而发起要由计算系统执行的动作。

在根据方面55至68中任一项的方面69中,该动作包括基于可执行逻辑的该一个或多个部分的执行的执行特性来请求用于执行可执行逻辑的该一个或多个部分的附加计算资源。

在根据方面55至69中任一项的方面70中,这些操作进一步包括:通过在数据存储库或在存储器中数据网格中存储指示当前正针对每个状态执行该可执行逻辑的哪个部分的状态数据来维持这些状态。

在根据方面55至70中任一项的方面71中,这些操作进一步包括:响应于完成对每个都与该键的给定值相关联的这些数据项中的该一个或多个数据项的处理而更新指定针对该键的值的当前状态的状态数据。

在根据方面55至71中任一项的方面72中,这些操作进一步包括:动态地确定指示该图表的哪些节点被遍历以及被遍历节点被这些数据项遍历了多少次的度量。

在根据方面55至72中任一项的方面73中,这些操作进一步包括:生成记载流经该图表所采取的路径的日志记录的流;变换所生成的日志记录;以及将经变换的日志记录存储在关系数据库或索引压缩平面文件中,包括以指定的粒度一起批处理日志记录。

在根据方面55至73中任一项的方面74中,这些操作进一步包括:经由用户界面动态地输出所确定的度量,其中,响应于对所确定的度量的改变而更新所输出的度量。

在根据方面55至74中任一项的方面75中,这些操作进一步包括:接收对该流的数据项中的第一数据项的用户选择;以及使显示该可执行逻辑的当前对这些数据项中的所选第一数据项执行的一个或多个部分的指示。

在根据方面55至75中任一项的方面76中,这些操作进一步包括:将该流的数据项中的当前正被处理的所选第一数据项与预定参考数据项进行比较;确定该流的这些数据项中的当前正被处理的第一数据项与该预定参考数据项之间是否存在偏差或者是否不存在这种偏差;以及基于确定该流的这些数据项中的当前正被处理的第一数据项与该预定参考数据项之间是否存在偏差或者是否不存在这种偏差,输出该流的这些数据项中的当前正被处理的第一数据项与该预定参考数据项是否一致的指示。

在根据方面55至76中任一项的方面77中,这些操作进一步包括:将该可执行逻辑的当前正在对这些数据项中的第一数据项执行的该一个或多个部分与预定参考可执行逻辑进行比较;确定该可执行逻辑的当前正在对这些数据项中的第一数据项执行的该一个或多个部分与该预定参考可执行逻辑之间是否存在偏差或者是否不存在这种偏差;以及基于确定该可执行逻辑的当前正在对这些数据项中的第一数据项执行的该一个或多个部分与该预定参考可执行逻辑之间是否存在偏差或者是否不存在这种偏差,输出该可执行逻辑的当前正在对这些数据项中的第一数据项执行的该一个或多个部分与该预定参考可执行逻辑是否一致的指示。

在根据方面55至77中任一项的方面78中,日志记录是具有第一字段和第二字段的结构化数据记录,该第一字段用于存储表示该规范的针对该键的特定值的状态的数据,并且该第二字段用于存储指定从开始执行该可执行逻辑的时间到当前时间、针对该键的特定值已执行了该可执行逻辑的由该规范表示的哪些部分的数据。

在根据方面55至78中任一项的方面79中,日志记录是具有这样的字段的结构化数据记录,该字段用于存储指定在当前时间针对该键的特定值已执行了该可执行逻辑的由该规范表示的哪个部分的数据。

在根据方面55至79中任一项的方面80中,该规范是图表,并且其中,一个或多个日志记录指定流经该图表的路径,该路径表示该可执行逻辑的哪些部分在处理与该键的特定值相关联的一个或多个数据记录时被执行。

在根据方面55至80中任一项的方面81中,这些操作进一步包括:基于对一个或多个数据项的处理来生成一个或多个输出记录;其中,该一个或多个输出记录中的每一个包括在该日志记录中不包括的数据。

上述方面可以包括以下优点中的一项或多项。

本文所描述的日志记录系统能够以对系统资源(例如存储器和处理能力)的影响最小的方式处理日志记录。另外,本文所描述的系统以减少的时延处理这些日志记录。可执行逻辑的执行的度量被动态地确定和输出,以使得用户可以实时跟踪这些度量。此外,使用户能够控制要生成哪些可执行逻辑的日志记录,以将日志记录集中在感兴趣的部分上,同时减少多余数据量的生成。这有助于用户理解、跟踪和正确地操作底层数据处理系统。

通过以下描述、以及通过权利要求书,本发明的其他特征和优点将变得清楚。

附图说明

图1是数据库管理系统的示意图。

图2a至图2g和图5各自是流程图的图示。

图3是流程图实例的图示。

图4是用于利用可执行逻辑来处理结构化数据项的基于键的日志记录的系统的图示。

图6是用于利用可执行逻辑来处理结构化数据项的基于键的日志记录的示例过程的图示。

图7a至图7h是展示了icff记录和相关联的数据块的生成和索引编制的图示。

具体实施方式

参考图1,用于日志记录的系统10包括数据源12,该数据源可以包括一个或多个数据源(诸如存储设备或到在线数据流的连接),每个数据源可以以各种存储格式(例如,数据库表、电子表格文件、平面文本文件或主机使用的本机格式)中的任一种存储数据。执行环境14(例如,数据处理系统)包括执行模块16和用户界面模块22。执行环境14可以在诸如unix操作系统等合适的操作系统的控制下被托管在一个或多个计算机上。例如,执行环境14可以包括多节点并行计算环境,该多节点并行计算环境包括使用多个中央处理单元(cpu)的计算机系统的配置,这些中央处理单元可以是本地的(例如,诸如smp计算机之类的多处理器系统)、或本地分布式的(例如,作为集群或mpp耦接的多个处理器)、或远程的、或远程分布式的(例如,经由lan或wan网络耦接的多个处理器)、或其任意组合。

执行模块16实施日志记录(例如,图表日志记录),该日志记录针对每个唯一键(例如,标识符(id))提供关于数据的状态和数据采取的穿过计算机程序(例如,诸如名称为“executingcomputationsexpressedasgraphs[执行表达为图的计算]”的美国专利号美国专利5,966,072中所描述的数据流图的图表,该美国专利的全部内容通过引用并入本文)的路径的详细信息,计算机程序针对每个唯一键处理数据记录(在本文中也称为“数据项”)。在一些示例中,执行模块16在如在美国专利公开2009/0327196中所描述的基于图的计算中实施数据日志记录,该美国专利的全部内容通过引用并入本文。在本申请中,术语“数据流图”或“图表”用作“计算机程序”的示例或替代词。在一些示例中,出于方便的目的,术语“数据流图”和“图表”在本文中可互换且没有区别地使用。在一些示例中,唯一键表示每个客户的客户id,其记录通过图表来处理。用户界面模块22显示日志记录信息(例如,指示遍历图表的哪些部分的度量、以及指示一组记录遍历图表的特定部分多少次的汇总度量)。贯穿本说明书描述的度量可以动态地(即,在可执行逻辑的执行期间)确定。在此示例中,图表(例如,数据流图)可以存储在数据存储26中。提供数据源12的存储设备可以在执行环境14本地,例如,存储在连接到运行执行环境14(例如,硬盘驱动器18)的计算机的存储介质上,或者可以远离执行环境14,例如,被托管在通过局域网或广域网与运行执行环境14的计算机通信的远程系统(例如,主机20)上。

执行环境14与数据存储26通信,该数据存储存储由用户界面模块22用来显示一个或多个用户界面的数据。数据存储26也可由开发环境28(例如,这可以是可选的)访问,该开发环境用于开发用户界面和存储在数据存储26中的、由执行模块16(在执行图表时)访问并由用户界面模块22用来显示用户界面的图表(具有日志记录功能)。

在一些示例中,图表或数据流图是在数据流图执行环境中执行的计算机程序,该计算机程序处理来自一个或多个数据源的数据。来自数据源的数据根据计算机程序进行操作和处理,并导出到一个或多个数据接收器。例如,数据源和接收器可以包括文件、数据库、数据流、或队列。数据流图被表示为有向图,这些有向图包括:表示数据处理组件的节点,每个节点包括用于处理来自至少一个数据输入的数据并将数据提供给至少一个数据输出的程序代码(例如,可执行逻辑);以及表示用于访问数据源和/或接收器的数据集对象的节点。这些节点通过有向链路进行连接,该有向链路表示组件之间的数据流,始于数据源,并终止于数据接收器。上游组件的数据输出端口连接到下游组件的数据输入端口。可以将数据流图重新用于由数据集对象表示的不同数据源和不同数据接收器。例如,用于实施数据流图的数据结构和程序代码可以通过参数化来支持多种不同的配置,例如以使不同的源和接收器易于替换。此外,在一些布置中,可以通过使用参数来更改数据流图中数据的流动,使得可以绕过一个组件或一系列组件。通常,参数表示数据流图的组件的属性,该属性可以被配置有值并且其值可以被改变。例如,可以在数据流图的使用之间改变这种属性,并且由于该改变,数据流图可以不同的方式执行操作。

在一些情况下,数据流图的构造本质上可以是高度技术性的。为达到特定的业务目的而编写时,图的基础结构和构造是基于技术考虑来确定的。例如,可以选择图组件以最大化可再使用性,或支持并行处理。另一方面,如何使用图以及在何处使用图可能在很大程度上是业务决策。与这种参数化的数据流图相关联的一些参数可用于使业务用户能够自定义数据流图,而不要求用户理解其实施背后的技术复杂性。参数化的数据流图简化了自定义化并有助于再使用。

换言之,图1中展示的计算机系统10可以包括:耦接到数据存储26的可选开发环境28,其中,开发环境28被配置用于构建与图表或数据流图相关联的、实施计算的计算机程序,该计算对从一个或多个输入数据集流过数据处理组件的图表或图到达一个或多个输出数据集的数据执行,其中,该图表或数据流图由数据存储26中的数据结构指定,该图表或数据流图具有由数据结构指定并表示由一个或多个链路连接的数据处理组件的多个节点,这些链路由数据结构指定并表示数据处理组件之间的数据流;耦接到数据存储26并托管在一个或多个计算机上的执行环境14,执行环境14包括执行模块16,该执行模块被配置用于读取指定图表或数据流图的已存储数据结构并用于分配和配置计算资源,以用于执行对由执行模块16分派给图表或数据流图的数据处理组件的计算,其中,执行模块16被配置用于调度和控制对数据处理组件的所分派计算的执行,以使得能够执行本文所描述的方法或过程中的任一种。

如以下进一步详细描述的,图2a至图2d示出了流程图的逐步发展并且展示了在流程图的各种状态下执行各种节点。图2e至图2g展示了在各种状态下生成的各种审核记录。

参考图2a,图示29a示出了规范30,该规范包括具有表示数据处理组件的节点32a至32g的流程图32。通常,规范表示可执行逻辑,并且指定各种状态,其中,基于对先前数据项执行可执行逻辑所达到的状态,该规范的状态指定在该状态下可执行的可执行逻辑的一个或多个部分。通常,可执行逻辑包括源代码和其他计算机指令。在此示例中,数据处理组件中的一个或多个是指可执行逻辑的特定分组或部分。通常,图表包括用于处理数据记录的模板。此模板包括逻辑图单元,用于对输入数据记录做出反应并产生输出数据记录,例如,基于规范中包含的逻辑生成的数据记录。图表是规范的示例。通常,逻辑图单元包括至少部分以图的方式生成的逻辑,例如,通过将各种节点从模板(未示出)拖放到用于构建图表的窗口。在示例中,节点包括指定以下各项的逻辑(未示出):如何处理输入数据记录、如何设置可执行逻辑使用的变量值、例如在满足逻辑指定的条件时生成哪些输出数据记录等。在示例中,节点可由输入节点的逻辑中使用的参数值和/或变量值的用户编程。

图表本身是可执行的,因为节点中的逻辑被编译成可执行逻辑,并且每个节点对应于该可执行逻辑的一个或多个部分。例如,系统通过将节点中的逻辑编译成可执行逻辑来变换规范(和/或规范中的图表)。因为图表本身是可执行的,所以图表本身能够处理数据记录,并且能够被停止、开始和暂停。系统还维持流程图32的状态,例如,通过跟踪节点32a至32g中的哪一个当前正在被执行。流程图32的状态对应于由流程图32表示的可执行逻辑的状态。例如,流程图32中的每个节点表示可执行逻辑的特定状态(其中可执行逻辑的一个或多个部分在该状态下是可执行的)。当正在针对键的多个值执行流程图32时,系统针对键的每个值维持流程图32的状态,例如,通过维持如以下进一步详细描述的每个实例的状态。通常,规范的实例包括规范针对键的唯一值的特定实现,例如,通过执行在规范中表示的可执行逻辑并针对键的每个唯一值维持可执行逻辑的状态。在此示例中,流程图32包括状态转换图,其中每个传入数据记录驱动节点之间的转换,并且基于处理先前数据记录所达到的状态来评估数据记录。流程图32中的节点之间的链路表示逻辑的时间流。

规范30还包括标识流程图32处理包括键32h或与键32h相关联的数据记录的键32h。在此示例中,自定义标识符(id)用作键。键32h可以对应于数据记录的字段之一,例如,诸如订户_id字段、客户_id字段、会话_id字段等。在此示例中,客户_id字段是键字段。对于特定的数据记录,系统通过标识该数据记录的键字段的值来确定该数据记录的键的值。

在此示例中,流程图32订阅指定类型的数据记录(例如,当配置流程图32时指定)。在此示例中,流程图32订阅包括键32h的数据记录。在此示例中,流程图32和数据记录共享键。通常,流程图通过包括用于处理包括流程图的键的那些数据记录的逻辑来订阅数据记录的类型。当数据记录处理开始时,系统为该流程图的键的每个新值开始新的流程图实例,例如,通过维持键的每个新值的可执行逻辑的状态(在流程图中表示)。通常,流程图实例包括流程图针对键的唯一值的特定实现,例如,通过执行在规范中表示的可执行逻辑并针对键的每个唯一值维持可执行逻辑的状态。系统通过配置流程图实例(以及因此底层可执行逻辑)来响应特定键值的数据记录,从而执行数据记录处理。在示例中,流程图订阅客户短消息服务(sms)数据记录。特定客户id的流程图实例管理该客户的数据记录。流程图实例的数量可以与传入数据记录中遇到的客户id的数量一样多。

参考图2b,图示29b展示了流程图32的执行的开始。在此示例中,节点32a表示可执行逻辑的开始并且正在被执行(例如,如围绕节点32a的黑线所指示的)。在此示例中,流程图32处于正在执行节点32a的状态。参考图2c,图示29c展示了在完成节点32a之后流程图32的状态。在此示例中,流程图32的状态转换到表示可执行逻辑的一个或多个其他部分的节点32b。节点32b包括等待节点(在下文中被称为等待节点32b)。等待节点32b表示可执行逻辑的一部分(对应于等待节点32b)等待满足一个或多个条件的输入数据记录的等待状态。在示例中,等待状态可以是流程图32的另一状态的一部分,例如,系统执行等待节点(以实施等待状态)并且然后执行一个或多个其他节点的状态。在完成可执行逻辑的由等待节点32b表示的部分之后,系统退出等待状态并执行表示用于实施决策的可执行逻辑的节点32c。在此示例中,节点32c包括决策节点。在下文中,节点32c被称为决策节点32c。通常,决策节点包括包含用于执行决策的逻辑(例如,求布尔值的逻辑)的节点。‘

参考图2d,图示29d展示了流程图32的基于由节点32c表示的决策的结果的状态。特别地,基于由节点32c表示的决策的结果,流程图32的状态转换到节点32d,该节点是另一个等待节点。(在变体中,流程图32的状态可以转换到节点32g(这导致状态转换回到节点32a))。在完成可执行逻辑的由等待节点32d表示的部分之后,流程图32的状态转换到包括发送节点的节点32e。通常,发送节点包括表示用于使数据传输至另一个系统的可执行逻辑的节点。在完成执行可执行逻辑的由节点32e表示的部分之后,流程图32的状态转换到包括完成节点的节点32f。通常,完成节点表示可执行逻辑的执行完成。

在此示例中,流程图32包括两种状态,由节点32b、32c、32g表示的第一状态,和由节点32d、32e、32f表示的第二状态。在此第一状态下,系统等待特定数据记录(如节点32b所表示的),并且然后执行节点32c,该节点进而使得转换(规范30和/或图表32的)到第二状态(其开始由节点32d表示),或者使得执行节点32g。一旦在第二状态下,系统就再次等待特定数据记录(如节点32d所表示的),并且然后执行节点32e和节点32f。通过包括除等待节点之外的节点,流程图32包括数据记录的时间处理的逻辑图。

参考图2e,图示29e展示了流程图32的开始状态,其中,在执行开始节点32a时生成审核记录。特别地,开始节点32a表示数据处理组件,该数据处理组件被配置用于例如在流程图32处于正在执行开始节点32a的状态(如在此示例中所示出的)时生成审核记录32i。通常,审核记录(或也称为“日志记录”)包括指定在处理数据记录或事件时遍历的节点(和/或执行的数据处理组件)以及处理数据记录或事件的一个或多个属性的数据项(例如,结构化数据项)。在一些示例中,日志记录是具有第一字段和第二字段的结构化数据记录,该第一字段用于存储表示该规范的针对该键的特定值的状态的数据,并且该第二字段用于存储指定从开始执行该可执行逻辑的时间到当前时间、针对该键的特定值已执行了该可执行逻辑的由该规范表示的哪些部分的数据。在此示例中,在处理针对特定键的数据记录时,系统会生成审核记录(或一个或多个审核记录),并且会在第一字段中存储表示针对键的特定值的规范的状态的数据,并在第二字段中存储指定从开始执行可执行逻辑的时间到当前时间针对该键的特定值已执行了由规范表示的可执行逻辑的哪些部分的数据。在另一些示例中,日志记录是具有这样的字段的结构化数据记录,该字段用于存储指定在当前时间针对该键的特定值已执行了该可执行逻辑的由该规范表示的哪个部分的数据。在此示例中,在生成审核记录时,系统利用指定在当前时间针对键的特定值已执行了由规范表示的可执行逻辑的哪个部分的数据来填充该审核记录的字段。在又另一些示例中,规范是图表,并且一个或多个日志记录指定流过该图表的路径,该路径表示可执行逻辑的哪些部分在处理与键的特定值相关联的一个或多个数据记录时被执行。在此示例中,系统生成指定流过图表的路径的日志记录,该路径表示在处理与键的特定值相关联的一个或多个数据记录时执行可执行逻辑的哪些部分。在又另一些示例中,系统基于对一个或多个数据项的处理来生成一个或多个输出记录。在此示例中,该一个或多个输出记录中的每一个都包括在日志记录中不包括的数据。

如以下进一步详细描述的,各种类型的审核记录是利用各种字段来预定义的,每种字段类型都指定处理数据记录或事件的一个或多个属性。通常,事件包括表示该事件的特定发生或未发生的数据记录(例如,呈预定义格式)。在此示例中,节点32a是可编辑的,例如通过点击节点32a可进行编辑,这使得显示配置屏幕,该配置屏幕可以用于配置节点并且因此还可以用于配置由节点表示的数据处理组件。该配置的一部分可以包括打开审核(或也称为“日志记录”)并指定在遍历该节点时要生成的一种或多种类型的审核记录。在另一个示例中,本文所描述的系统生成用于用户界面的数据,该用户界面显示各种类型的审核记录的视觉表示并且提供用于打开/关闭各种类型的审核记录的控件。在此示例中,系统然后生成一种类型的审核记录(例如,当启用对该类型的审核记录的日志记录时),该类型的审核记录与特定类型的节点或数据处理组件相对应或相关联。例如,审核记录32i是用于对指定图表的开始的数据进行日志记录的图表开始审核记录。这样,如果用户指定启用图表开始审核记录,则本文所描述的系统基于开始节点开始图表以及图表开始审核记录对图表的开始进行日志记录的事实来识别该图表开始审核记录与该开始节点(例如,节点32a)之间的对应关系,并将生成图表开始审核记录。在此示例中,审核记录32i包括键字段(用于指定针对其实例化或执行图表的键)、用于指定唯一地标识图表32的标识符的图表_id以及用于指定图表已开始的“开始”值。

参考图2f,图示29f展示了流程图32的第二状态,其中,生成了审核记录32j。特别地,由决策节点32c表示的数据处理组件被配置用于例如在流程图32处于正在执行决策节点32c的状态(如在此示例中所示出的)时生成审核记录32j。(在此示例中,在此状态下也正在执行等待节点32b。然而,等待节点32b未被配置用于生成审核记录。在此示例中,审核记录32j之一例如通过指定是遍历是链路32还是否链路32m来指定决策节点32c的结果。其他审核记录32j可以指定例如在执行由决策节点32c表示的数据处理组件时读取或设置的变量。在此示例中,审核记录32j不需要包括键字段,因为审核记录以指定的脉冲(例如,时间或预定义的时间间隔)被传输到处理系统(例如,处理审核记录的内部或外部计算系统),从而导致这些审核记录在组、块中或作为文件的一部分而被传输。

例如,系统按照键将审核记录分组在一起,其中,与第一键相关联的第一审核记录被分组为第一组,并且其中,与第二键相关联的第二审核记录被分组为第二组。在此示例中,审核记录在系统(例如,系统10)的存储器中被分组。为了提高空间效率,系统在存储器中对审核记录进行分组,使得系统不必例如通过在每个审核记录中包括键来在顺序相关的审核数据上复制数据。每个审核记录包括一个或多个字段,这些字段指示处理数据项的一个或多个属性。针对至少一个审核记录,字段是指定与数据项相关联的键的值的键字段。因为审核记录按照键分组在一起,所以与特定键相关联的审核记录的子集不包括键字段。在一些示例中,在特定键的组中包括的审核记录中仅一个审核记录包括键字段。在此示例中,系统在预定义的时间间隔(例如脉冲)结束时,将特定组中与特定键相关联的审核记录写入文件。

例如,系统通过解析第一审核记录或图表开始审核记录的内容来识别针对该组(其可以表示为块或文件)中的审核记录的键。因为并非每个审核记录都需要包括键字段(以及诸如图表_id字段等其他字段,与审核记录32i相同的脉冲中包括的其他审核记录可以在图表开始审核记录中查找这些字段),所以相对于在每个审核记录都需要包括键字段以启用事件的带键日志记录的情况下对系统资源(例如存储器和处理能力)的影响,本文所描述的系统能够以对系统资源的影响最小的方式来处理审核记录。另外,相对于处理每个审核记录都具有键字段的审核记录的时延,本文所描述的系统处理这些审核记录的时延减少,因为由于不需要每个审核记录都包括键字段,因此减小了审核记录的大小。另外,系统被配置用于将审核记录存储在分派给特定键的(存储器中的)分区中,从而进一步减少了对每个审核记录都包括键字段的需要。在新脉冲开始时,本文所描述的系统被配置用于在该脉冲的第一审核记录中包括键字段。

参考图2g,图示29g展示了流程图32的第三状态,其中,生成了审核记录32k。特别地,发送节点32e也被配置用于生成审核记录32k。在此示例中,审核记录32k中的至少一个指定由发送节点32e表示的数据处理组件实施的动作。与审核记录32j一样,审核记录32k也不需要包括键字段,因为审核记录32k作为包括审核记录32i的同一脉冲的一部分进行传输。其他审核记录32k可以指定发送动作的时间、读取的变量的值、设置的变量的值等。

在此示例中,系统分析审核记录的内容以在处理一个或多个数据项时追溯对图表32的一个或多个节点的遍历。另外,系统解析审核记录以识别遍历了图表32的哪些节点、未遍历图表32的哪些节点以及为什么未遍历这些节点(例如,这些节点的哪些链路或路径未被遍历)。

参考图3,图示37展示了例如系统根据流程图32(图2a)生成的流程图实例33、34以及数据记录36a、36b的数据项。也就是说,针对在数据记录36a、36b中检测到的每个新键创建流程图32的新副本或实例。

流程图实例33、34中的每一个都与“客户_id”键相关联。流程图实例33处理在其“客户_id”字段中包括值“vbn3419”的数据记录,该字段在此示例中是键字段。流程图实例34处理在其“客户_id”字段中包括值“cnd8954”的数据记录。在此示例中,系统不会为每个流程图实例重新执行可执行逻辑。相反,系统执行可执行逻辑,并且然后通过维持键的对应值的状态来实施流程图实例。因此,“处理数据记录的流程图实例”的示例是执行可执行逻辑(由流程图表示)、维持键的每个值的状态以及处理与键的特定值相关联的数据记录(基于键的特定值的状态机的状态)的系统。

在此示例中,流程图实例33包括分别与图2a中的节点32a至32g相对应的节点33a至33g以及链路33l、33m。流程图实例34包括分别与图2a中的节点32a至32g相对应分节点34a至34g以及链路34l、34m。

流程图实例本身是可执行的。在系统接收与键的特定值相关联的输入数据记录之后,针对键的特定值的流程图实例处理输入数据记录,例如,通过系统对该数据记录执行与流程图实例(或流程图实例的一个或多个节点)相对应的可执行逻辑的一个或多个部分。流程图实例继续处理输入数据记录,直到输入数据记录到达完成节点或等待节点。在此示例中,流程图实例继续处理输入数据记录,例如,通过系统继续处理输入数据记录,直到到达可执行逻辑的对应于完成节点或等待节点的部分。如果输入数据记录到达等待节点,则流程图实例将暂停,直到经过一定量的时间或适当的新输入数据记录到达。通常,适当的数据记录包括满足一个或多个指定条件或标准(例如,包括在节点的逻辑中)的数据记录。如果输入数据记录到达完成节点,则流程图实例的执行完成。

流程图实例具有自己的生命周期。当数据记录到达时,流程图实例的一个或多个当前状态发生变化:数据记录触发决策,或者返回流程图实例的开始,或者向客户发送消息。当数据记录到达完成节点时,客户的流程图实例结束。

在此示例中,系统开始针对键字段的“vbn3419”值(例如,客户_id=vbn3419)的流程图实例33。流程图实例33处理包括客户_idvbn3419的数据记录36a、36b的子集。在此示例中,流程图实例33处理在客户_id键字段中具有值“vbn3419”的数据记录36a。流程图实例33的节点33a、33b、33c、33d处理数据记录36a。在此示例中,在执行由节点33a表示的处理组件时,系统生成审核记录33i,该审核记录指定该图表32(其被分派了图表_id:3454)以及已针对键vbn3419开始。在执行对应于节点33c的数据处理组件时,系统生成审核记录33j,该审核记录中的至少一个指定遍历实例33的链路33l。流程图实例33的当前状态是发送或执行动作的状态,如节点33e的虚线所表示的。在此示例中,由节点33e表示的数据处理组件生成审核记录33k,该审核记录中的至少一个指定该动作。该动作可以包括发送要发送的sms消息(例如,该消息包括优惠或促销)。本文所描述的其他此类“动作”可以是以下各项中的一项或多项:发起执行另一计算机程序以进一步处理已处理的数据记录,发起将已处理的数据记录存储在存储器中,发起将已处理的数据记录经由网络传输到另一计算机系统,或者为由流程图32、33、34中的一个或多个流程图中的节点表示的一个或多个数据处理组件请求附加的计算资源。例如,流程图实例33的结果可以是基于流程图实例33的一个或多个执行特性为由流程图实例33中的节点表示的数据处理组件之一(诸如节点32b、32c、32d、32e、32f、33b、33c、33d、33e之一)来执行请求附加的计算资源的动作。这种执行特性的示例可以是一个或多个等待节点32b、32d、33a或33d的等待时间。对附加的计算资源的请求可能被批准,从而导致接收对所请求的附加计算资源的分配。本文中使用的术语“计算资源”包括以下各项中的一项或多项:对可由执行环境14访问的存储器部分(诸如主存储器)的访问权、对可由执行环境14访问的数据存储(例如数据源12或数据存储26)的访问权、以及对执行环境14所需的处理能力的访问权(诸如对可由执行环境14访问的cpu或虚拟核的访问权)。

在此示例中,系统维持实例33的状态,该实例针对特定键值(即,vbn3419)执行。这样,该系统能够对针对该特定键值遍历实例33的哪些节点进行日志记录——在处理与该键值相关联的事件或数据记录时。另外,通过将审核记录一起分组到脉冲中,审核记录33j、33k确实需要包括键字段,并且当审核记录33i、33j、33k包括在同一脉冲中时,这些审核记录仍可以被识别为是针对审核记录33i中指定的键的审核记录。

系统开始针对键的“cnd8954”值(例如,客户_id=cnd8954)的流程图实例34。流程图实例34处理包括客户_idcnd8954的数据记录36a、36b的子集。在此示例中,流程图实例34包括等待节点34b和34d。每个数据记录仅可以满足每个流程图实例的一个等待节点的条件。因此,流程图实例34通过节点34a、34b到节点34d处理具有客户_id=cnd8954的数据记录36b,并且然后在前进到节点34e之前(例如当决策节点34c的输出为“是”时)等待具有相同键的第二数据记录。在利用节点34a处理数据记录36b时,本文所描述的系统生成审核记录34i,该审核记录指定针对键:cnd8954开始图表32(由图表_id:3454标识)。然而,在此示例中,决策节点34c的输出为“否”,如围绕节点34g的虚线所表示的。这样,由节点34c表示的数据处理组件生成审核记录34j,其中之一基于由决策节点34c表示的决策的结果指定遍历链路34m。在此示例中,发送节点34e未被遍历。这样,由发送节点34e表示的数据处理组件不生成审核记录。在前述示例中,对处理数据记录的节点的提及是指表示处理数据记录的节点的数据处理组件。另外,在这些示例中,图表本身是可执行的——执行图表会导致执行与图表的节点相对应的可执行逻辑、或者执行封装执行逻辑的部分的数据处理组件。

在图3的变型中,系统为单个键值生成多于一个流程图实例。例如,对于相同的客户,可能存在具有不同开始和结束日期的多个流程图实例,或者对于相同的用户,可能存在用于不同目的(诸如不同工业过程或不同营销活动)的多个流程图实例。

在此示例中,系统通过在数据存储库或存储器中数据网格中存储状态数据(例如,指示当前正为每个实例执行哪个节点的数据)来维持实例的状态。通常,状态数据包括指示状态的数据。在此示例中,实例与键的值相关联。数据存储库或存储器中数据网格存储键的值。系统通过存储针对键的每个值的状态数据来维持实例的状态。在完成对键的特定值的数据记录的处理后,系统更新数据存储库中的状态数据,以指定(在图2a中的流程图32中的)下一个节点表示针对键的该值的当前状态。然后,当另一数据记录到达时,系统在数据存储库中查找针对键的值的当前状态,并执行可执行逻辑的与表示针对键的值的可执行逻辑的当前状态的节点相对应的部分。

参考图4,环境100展示了用于审核日志记录的架构。环境100包括具有事件引擎102的系统101(例如,数据处理系统),该系统被配置用于处理数据记录(和/或其他结构化数据项)。在此示例中,事件引擎102包括规则集日志104、图表执行模块106和图表108。环境100还包括数据库110、112。在此示例中,规则集日志104包括日志(例如,日志记录指示哪些规则被执行、何时执行、在执行期间设置的参数值和/或值等的数据或规则用例追溯信息(在本文中也称为追溯信息)),这些日志在如美国专利号7,877,350中所描述的业务规则环境(bre)中执行规则期间生成,该美国专利的全部内容通过引用并入本文。在此示例中,事件引擎102从业务规则环境中收集规则用例追溯信息以可选地将该信息包括在审核记录中(例如,以解释通过规则集而不是在图表决策块中处理的业务逻辑)。在示例中,bre通过将其日志写入图组件上的端口,并且然后将日志从端口写入文件来实施日志记录数据流。在此示例中,当事件引擎102正在采集当前事件的审核记录(和其他审核信息)时,事件引擎102通过用在事件引擎的内部数据结构中存储追溯信息的函数调用替换在bre中写出追溯信息的函数调用来截取日志记录数据流。在一些示例中,事件引擎102通过提供bre正在使用的日志记录功能的替代实施方式(例如,写_到_日志)来截取日志记录数据流。在其他示例中,bre支持使用不同的功能的选项。

在此示例中,图表执行模块106被配置用于执行一个或多个数据流图(例如,图表108之一)。在此示例中,图表108之一是事件引擎图,该事件引擎图生成集群度量并将其直接写入数据库110中的文件中。通常,事件引擎图是用于监测事件引擎102的性能的图。通常,集群度量是指系统和/或事件引擎102的汇总级别下的详细信息,诸如执行详细信息,例如,指示遍历数据流图的哪些部分的度量、以及指示一组记录遍历数据流图的特定部分多少次的汇总度量。在一些示例中,在每个脉冲(例如,数据推送)上附加(例如,附加到其他先前存储的文件、或者更新)此文件,并且每天打开新文件。

在此示例中,另一数据路径来自事件引擎业务逻辑(例如,基于执行图表的图表执行模块106的执行)。当图表执行时,图表执行模块106生成记载流经图表所采取的路径(例如,退出等待块、遍历流和发送动作)的审核记录111的流。在此示例中,审核记录包括进行了日志记录的活动,该活动存储在审核文件中(即,数据库112中)、或存储在数据库116中所存储的索引压缩平面文件(icff)中。通常,审核文件包括用于存储各种审核记录的文件。在此示例中,审核记录111在每个脉冲结束时写入文件中。在此示例中,数据库112每个脉冲接收一个新文件。

环境100包括审核文件处理器模块114,该审核文件处理器模块包括处理原始信息(即,存储在数据库112中的审核文件)并且将原始信息重新格式化为用于icff的格式的图。在此示例中,数据库112将审核文件传输到审核文件处理器模块114以进行重新格式化。进而,审核文件处理器模块114将经重新格式化的文件传输到数据库116,该数据库将经重新格式化的文件写入icff记录116a,该icff记录按一个或多个键字段(例如对象id)编制索引(在索引116中),并且按时间(例如每小时或每天)进行合并。在此示例中,icff记录116a引用(例如,经由指针或另一引用数据结构)数据块116c。在此示例中,虽然原始信息的部分被重新格式化以获得icff记录116a(该记录然后被编制在索引116b中),但是原始信息的其他部分被存储在数据块116c中,该数据块被icff记录116a引用,并且从而可被识别并可经由icff记录116a访问。

在一些示例中,通过以指定的粒度(例如,一个图表的一个订户的一个事件)将审核记录一起批处理,计算将在icff记录上存储的键字段(例如,事件类型、订户id、时间戳、图表实例id等的字段),并且然后将其余审核记录分组到集合中来对审核记录和/或审核文件进行重新格式化,如下所示:

在示例中,事件引擎102生成针对空间效率进行了优化的审核记录(例如,而非针对查询效率进行了优化的审核记录)。在此示例中,例如通过不使每个审核记录都包括时间戳、订户_id等来针对空间效率对审核记录进行优化。为了将这些审核记录放入icff,本文所描述的系统需要使用更完整的记录(例如,这些更完整的记录在每个审核记录上都包括时间戳和对象id),使得本文所描述的系统可以高效地搜索各个记录(例如,基于审核记录的内容的各个记录)。

在一些示例中,数据库116包括关系数据库而不是icff,因为数据库116的实施目标是能够查询事件序列。为此,系统将审核记录的流变换为一个或多个记录(例如icff记录)。每个记录包括一个或多个可索引/可搜索的键字段以及表示其余审核事件的数据集合。

在一些示例中,记录的粒度级别是一个图表的一个订户(例如用户)的一个事件。这样,本文所描述的系统(例如,从数据库112中的审核文件中)提取与一个图表的一个订户的一个事件相对应的审核记录序列。在此示例中,事件顺序地发生。另外,每个事件的审核记录顺序地存储在数据库112中(例如,在数据库112中的文件中)。使用所提取的审核记录,系统生成具有多个键字段(例如,包括事件类型字段、订户id字段、时间戳字段、图表实例id字段等)的记录。在一些示例中,序列中的第一审核记录包括该多个键字段的值。系统在生成新记录时使用这些所包括的值。另外,系统构造与该序列的其余审核记录相对应的数据块。系统将该数据块在数据库116中存储为数据集合(例如,为二进制大对象(blob)),作为所生成的新记录的一部分或与所生成的新记录相关联(例如,通过使所生成的新记录引用数据集合或blob)。

使用所生成的记录和/或数据集合,系统可以向icff(或数据库116)查询各种信息,例如诸如“当订户12345在6月8日遇到事件7时发生了什么?”,并且然后显示事件引擎内部的决策序列以及与该事件相关联的规则集。在另一个示例中,系统用以下疑问查询icfff(或数据库116):“当订户12345在6月8日发送消息时发生了什么?”在此示例中,为答复此查询,所生成的新记录包括另一个键字段以标识消息动作已触发(或未触发)。这样,系统基于要支持的查询的范围来选择要在记录中包括哪些键字段。

在此示例中,数据库116将原始度量存储在icff中。在此示例中,环境100还包括度量数据库120以及用于访问度量的界面。因此,环境100包括批处理图模块118,该批处理图模块运行批处理图(例如,每10分钟)以汇总原始度量并将其写入度量数据库120。环境100还包括批处理图模块122,该批处理图模块“按需”运行以计算度量(诸如系统100中普遍存在的一个或多个状态),从而例如在用户界面124中进行显示。在此示例中,批处理图模块122从度量数据库120和/或数据库116访问度量,并且处理这些访问的度量以在用户界面124中进行显示。在此示例中,由批处理图模块118生成或执行的图不具有持久性状态,而度量状态被持久保存在度量数据库120中。这样,匹配图模块120查询度量数据库120以获得度量,从而在用户界面122中进行显示。在示例中,显示各种类型的用户界面,包括例如度量的动态显示、关于度量的报告和调查界面,这些用户界面中的每一种分别如下所述:

在度量的动态显示中,控制台显示度量(例如,汇总计数),并在显示中近实时地更新这些度量。系统查询度量数据库120以获得此数据和度量。在此示例中,控制台是web用户界面(ui),其包括只能从服务器(例如,按计时器或在指定的时间)提取数据的轮询界面。这样,由批处理图模块118生成的图不能将数据推送到ui。相反,ui(例如网页)间歇地查询服务器以获得要显示的经更新的计数。经更新的计数将被存储在度量数据库120中。在此示例中,存在服务器端逻辑以在ui(网页)与度量数据库120之间进行接口连接,包括例如位于浏览器与数据库之间的java应用服务器。

在另一个示例中,用户界面124显示从度量数据库120查询的关于度量的报告。在此示例中,用户将能够查看报告和看板中的度量。度量指定有多少人进入每个活动、有多少人遍历(例如图表的)每个分支、有多少人获得了优惠、有多少人接受了优惠等。用户界面包括用于“向下搜索”此报告中的更多详细信息的控件。为了进行向下搜索(例如,以答复对“看到触发事件但未获得优惠的这10个对象发生了什么”的查询),系统访问数据库116中的icff中的记录。为了实现这些报告,系统实施服务端模块(在此示例中为批处理图模块122),当进行向下搜索时,该服务端模块可以访问度量数据库122和数据库116。

在又另一个示例中,用户界面124包括调查界面,用户可以在该调查界面中询问问题,诸如“当订户12345在6月8日遇到事件7时发生了什么?”为了答复这些问题,系统使用用户界面124与数据库116中icff之间的服务器端模块(例如,java、图等)来查询(例如,在数据库116中的)icff。

事件引擎102创建多种不同类型的审核记录,以存储在数据库116中的icff中。以下表1指定了不同类型的审核记录及其相应的字段。取决于日志记录的级别,以下审核记录类型中的一些是可选的。在此示例中,icff存储与以下表1中所示的字段相对应的字段列表,例如以用于生成icff记录的键字段(如上所述)。以下表1中斜体的字段的值不是由事件引擎102生成的,而是由本文所描述的系统通过在向icff中写入数据时向后查看审核流来推断的。这意味着事件引擎102需要产生明显更少的数据。在以下表1中,“?”列指示该审核记录是否是可选的。“+”符号表示审核记录是由事件引擎107生成的。字母表示审核记录是可选地生成的,并由一组相关的控制点进行控制,并且星号表示默认启用该记录类型。

表1

在示例中,数据库112(例如,按照键)(例如,连续地或间歇地)对每个对象的审核记录进行分组。也就是说,自动按照对象或键对审核进行分组。结果是,事件引擎102不需要(例如,每个脉冲)将时间戳、对象_id或实例_id复制到审核文件中的每个审核记录中。相反,数据库112可以基于组中的这些字段先前出现的值来从这些字段获得值。在此示例中,不需要在脉冲之间保留任何状态。这意味着例如块退出审核记录需要具有块_名称,因为块进入审核记录可能出现在许多脉冲之前。在数据库112中,将利用上述表1中所示的相关字段来完成审核记录。

在示例中,系统检测图表的对象(例如用户或订户)的事件的发生。这样,事件引擎102生成“事件看见”审核记录,然后生成“事件调度”审核记录,并且然后生成“块退出-事件”审核记录。从这些审核记录中,系统(例如,审核文件处理器模块114)获得以下字段的值:事件_类型、时间戳和实例_i。在此示例中,系统将这些审核记录一起采集到一个blob中,并且系统根据所看见的数据(例如,根据这些审核记录)来设置另一个记录(例如icff记录)中的键字段(例如事件_类型、时间戳和实例_id的键字段)。

在另一个示例中,图表的对象发生超时。在此示例中,事件引擎102生成以下审核记录:警报类型的“事件看见”审核记录,然后是“警报调度”审核记录,并且再然后是“块退出-警报”审核记录。系统从这些审核记录中确定以下键字段的值:事件_类型、时间戳和实例_id。在此示例中,系统例如从块退出-警报审核记录确定实例_id字段的值,而不是推断出该字段的值。在此示例中,系统将这些审核记录采集到blob中,并且系统根据所看见的数据(例如,审核记录)来设置键字段(例如事件_类型、时间戳、实例_id等)。

在又另一个示例中,开始图表的对象发生事件。在此示例中,事件引擎102生成“事件看见”审核记录(其可以是开始图的类型或可以是另一类型)、然后是“事件调度”审核记录、并且再然后是“图表开始”审核记录。系统从这些审核记录中获得以下键字段的值:事件_类型、时间戳和实例_id。系统将审核记录采集到blob中,并且根据所看见的数据(例如,审核记录)来设置键字段(事件_类型、时间戳、实例_id等)。

因为审核记录按照键分组在一起,所以与特定键相关联的审核记录的子集不包括键字段。例如,数据库112或审核文件处理器模块114可以接收以下审核记录序列:事件看见审核记录、事件调度审核记录、块退出-事件审核记录。在此示例中,数据库112或审核文件处理器模块114从事件看见审核记录中获得对象id(例如键)。这样,事件引擎102不需要将该键复制到事件调度审核记录和块退出审核记录中,因为这些审核记录将是在存储器中(例如,在数据库112或其他系统存储器中)在事件看见审核记录之后顺序的。类似地,事件调度审核记录包括实例id字段。这样,事件引擎不需要将此字段的副本包括在块退出审核记录中。由于系统在存储器中(和在磁盘上)对审核记录进行分组,因此系统不需要将键复制到组中的所有审核记录上,并且从而节省了系统资源并减少了存储器消耗的量。

为了避免生成过量的数据,用户控制事件引擎何时生成审核记录以及生成哪些审核记录。尽管可以完全关闭审核(并因此关闭度量),但是如果打开审核,则核心审核记录(在前面的表中标有加号)集不会被禁用。核心审核记录集跟踪事件引擎的输入(事件和警报)、输出(动作)、错误以及图表和等待块活动。通常,警报包括预定义类型的数据记录(例如,图表发送其自身的数据记录),该数据记录将在将来的预先计算的时间到达。其他审核记录类型可以被选择性地启用和禁用。启用可选审核记录涉及两个方面——应该启用什么以及应该何时启用。对于启用什么,可以选择性地启用/禁用多个不同的审核记录组。这些审核记录组包括:

·a:警报设置(默认打开)

·d:决策做出(默认打开)

·p:监测点(默认打开)

·r:规则集调用和规则集事件

·s:变量设置

·v:变量读取

·l:查找访问和查找变量

对于何时启用,对这些审核事件的日志记录可以全部启用或者基于以下各项中的一项或多项限制启用:

·仅针对指定的对象id(例如键)集合

·仅针对指定的图表名称和/或监测名称集合

·仅针对指定的事件类型(例如记录类型)集合

在示例中,事件引擎102通过控制点配置这些审核记录的日志记录。通常,控制点包括由(生成图表的)用户定义的运行时参数,并且用于改变一个或多个图表(或图表实例)运行时的行为。在此示例中,(例如,由事件引擎)通过一组四个相互关联的控制点来控制审核记录。这五个控制点是:

·审核类型——这是要打开的审核记录类型(使用上面表1中列出的字母)的列表。

·审核实体——这是对象id的列表。如果不为空,则事件引擎将仅针对包括在此列表中的对象id生成审核类型列表中的审核记录类型。(否则,将审核所有对象id)。

·审核事件——这是事件类型(例如,对应于或表示事件类型的数字)的列表。如果不为空,则事件引擎将仅针对包括在此列表中的事件类型生成审核类型列表中的审核记录类型。(否则,将审核所有事件)。存在各种类型的事件,例如,包括指定发送了sms消息的事件、指定用户续订了移动计划的事件等。

·审核图表——这是图表名称和监测名称的列表。如果不为空,则事件引擎将针对其图表名称或监测名称包括在此列表中的图表生成审核类型中的审核记录类型。

(否则,将审核所有图表)。

·审核变量——这包括逗号分隔的变量名称的列表。如果不为空并且事件引擎被配置用于生成针对变量的审核记录类型(例如,变量设置或变量读取),则事件引擎将仅在变量名称在此列表中时生成审核记录。

在一些示例中,事件引擎102将不同的规则应用于不同的审核记录组。在此示例中,存在具有第一规则集(例如,审核类型1、审核实体1、审核事件1、审核图表1和审核变量1)的第一审核记录组(例如,第一审核组)、以及具有第二规则集(例如,审核类型2、审核实体2、审核事件2、审核图表2和审核变量2)的第二审核记录组(例如,第二审核组),等等。

在此示例中,审核类型、审核实体、审核事件、审核图表和审核变量中的每一个都包括一种类型的过滤器。如果设置了这些过滤器中的任何一个或全部,则仅这些事件的子集将包括额外的审核(例如,包括可选审核形式的审核)。

在一个示例中,系统被配置为通过实施第一审核组来进行最少审核,如下所示:

审核类型1=“”(不启用任何可选内容)

审核实体1=“”(所有对象id)

审核事件1=“”(所有事件类型)

审核图表1=“”(所有图表)

审核变量1=“”(所有变量,尽管由于系统被配置为关闭对可选变量的日志记录因此这项被忽略)。

现在,在另一个示例中,系统被配置用于评估为何尽管对象_id12345满足针对发送优惠的所有准则,但是给该对象编号的优惠一直未发送。实施此优惠的图表为“我的优惠图表”,并且触发事件为数字6。为了获取针对此特定对象id的关于为何优惠未发送的所有更多详细信息,系统被配置为具有如下所示的第二审核组:

审核类型2=“adprsvl”(启用所有审核类型)

审核实体2=“12345”(仅此对象id)

审核事件2=“6”(仅此事件类型)

审核图表2=“我的优惠图表”(仅此图表)

审核变量2=“”(所有变量)。

在此示例中,当事件发生时,系统首先检查以查看该对象id是否在审核事件2的列表中,以及该事件类型是否在审核事件2的列表中,以及该图表是否在审核图表2的列表中。如果所有这些属性(例如,过滤器)均评估为真,则系统将实施如“审核类型2”中指定的所有审核记录类型,这将在该事件的持续时间内开始进行可选日志记录。如果不是,则系统实施审核类型1,其仅对默认项进行日志记录。在此示例中,系统被配置用于首先检查编号最高的组,并且然后向后运行直到找到匹配组。如果找不到匹配组,则系统实施并使用默认项。在变体中,系统可以被配置用于采用所有匹配组的并集,使得增加更多可选的日志记录。

在此示例中,事件引擎102实施条件审核日志记录(例如,通过实施监测点审核记录)并优化其执行性能。为了优化此性能,事件引擎102预先计算(例如,预先生成)用于做出条件审核决策的数据结构。通常,条件审核决策指定在条件评估为指定值(例如,真或假)的情况下生成审核记录。在此示例中,事件引擎在开始进行对事件或警报的事件处理时进行条件审核计算。例如,每当事件引擎检测到事件或警报时,事件引擎执行计算(例如,以上述审核组)——但仅在开始对每个事件或警报的进行处理时(例如,而不是对每个审核记录都执行)。事件引擎将条件审核计算保存在全局变量的包中,并在可以作为条件的每个审核函数内部进行查询。

对于每种审核记录类型,事件引擎102实施单一的标志,该标志指定是否生成该审核记录类型的审核记录。事件引擎102在实施该单一标志时分析审核实体列表和审核事件列表的内容,因为这两个列表都是在事件处理开始时指定或生成的。因为一个事件可以由许多图表进行处理,所以事件引擎针对每个图表确定是否实施审核函数(例如,审核记录类型)。如果审核图表不为空,则事件引擎会将审核图表的内容转换到实例id的列表(每个id标识一个图表)中,以简化所实施的图表的id与指定哪些图表生成审核记录(以及生成哪些类型的审核记录)的实例id之间的比较。

在示例中,事件引擎102采集存储器的阵列(例如,其在事件引擎102中或包括事件引擎102的系统中)中的审核记录,并且然后在对事件或事件流的处理结束时将审核记录以一个块写出到审核文件中。在此示例中,来自不同事件(即,与不同键或用户id相关联的事件)的审核记录在存储器中不会混合在一起。相反,对存储器进行了分区,并且每个分区都有其自己的审核文件。这样,事件引擎102被配置为按照键自动将审核记录分组在一起。

在此示例中,审核文件是有版本的。每个脉冲将存在一个审核文件实例。审核文件将在磁盘上累积,并且审核文件处理图(由审核文件处理器模块114执行)将在脉冲结束时(从每个分区中)提取每个审核文件并对审核记录进行后处理,以将其写入icff。

在此示例中,系统例如通过对来自icff(在数据库116中)的审核记录进行后处理而不是从事件引擎102中的存储器中读取审核记录来生成度量数据库120。在此示例中,不清除icff。这样,可以在任何时间、包括使用不同的汇总时段来重新创建度量数据库120。在此示例中,度量数据库120中的表具有集群_名称列,使得一个数据库可以用于多个集群。通常,集群包括事件引擎实例。通常,事件引擎实例包括一个或多个规范针对键的唯一值的特定实现(事件引擎102为其执行一个或多个图表)。也就是说,每个对象id恰好通过一个事件引擎实例处理。因此,针对每个唯一键(例如对象id),将仅正好存在一个具有所有其图表的事件引擎实例。同一群集的审核记录将具有相同的集群_名称值。

在此示例中,可以查询度量数据库120以获得指示事件引擎102的状态的度量,诸如事件引擎102处理的事件的总数(例如,基于事件看见审核记录)、导致错误的事件的数量(例如,基于错误调度审核记录)、触发活动的事件的数量(例如,基于动作发送审核记录)、哪些订户从特定活动的一个阶段转变到另一个阶段(例如,基于块进入审核记录)、特定日在事件引擎中被删除或添加的订户的数量(例如,基于图表开始和图表完成的审核记录)、在事件引擎中运行并且随着事件引擎处理事件而跟踪事件引擎102的状态的全部图表的数量(例如,基于图表开始审核记录)。

另外,可以查询度量数据库120(例如,通过客户端设备或本文所描述的系统)来检索指定未向特定键(例如,每个订户)发送消息的原因的数据。为此,事件引擎被配置用于对经由事件引擎102采取的链路(和/或在图表内执行的组件)以及访问和实施的规则集用例进行日志记录(例如,通过产生指定哪些组件和/或链路被执行的审核记录)。然后,系统可被配置用于将所采取的(例如,由审核记录指定的)流经图表的路径与所有流经图表的可能路径进行比较,以确定为何特定消息未被发送(例如,因为由于遍历了替代性的路径(如审核记录所指定的),因此与发送消息相对应的路径从未被遍历)。

参考图5,图表250包括节点252至266。在此示例中,节点252至264中的每一个都表示数据处理组件,这些数据处理组件包括用于自动生成一个或多个审核记录的代码。例如,节点252表示被配置用于生成图表开始审核记录252a的数据处理组件。节点254表示被配置用于生成变量设置审核记录254a和变量读取审核记录254b的数据处理组件。在此示例中,变量设置审核记录254a指定设置的变量的名称。在此示例中,变量的名称为“下一消息日期”。变量读取审核记录254b指定读取的变量的名称。在此示例中,读取的变量的名称为“开始日期”。由节点256表示的数据处理组件生成审核记录256a至256i。由节点258表示的数据处理组件生成审核记录258a至258c。由节点260表示的数据处理组件生成审核记录260a至260g。由节点262表示的数据处理组件生成审核记录262a至262c。由节点264表示的数据处理组件生成审核记录264a至264g。在此示例中,“下一消息日期”是事件引擎将处理消息的下一个日期。在此示例中,“下一消息日期”被设置为活动的第一日期。在此示例中,图表250一开始(这可能在活动开始之前),事件引擎就发送分别由节点256、260、264表示的开始、优惠和ivr动作。在此示例中,开始、优惠和ivr动作是图表发送的三个动作。当对象触发了活动时,系统发送“开始”动作。系统发送“优惠”动作来配置针对优惠的外部子系统(例如,进行账户充值时免费获得10分钟),并且发送“ivr”动作来配置处理电话呼入(例如“告诉我什么优惠可供我使用。”)的外部子系统。在此示例中,如果对应的元数据为空或者订户(由键表示)在控制组中(如节点258所表示的),则图表250不前进到节点260(并且因此不发送优惠动作),并且替代地前进到节点262。在此示例中,如果ivr的对应的元数据为空或者订户(由键表示)在控制组中(如节点262所表示的),则图表250不前进到节点264(并且因此不发送ivr动作),并且替代地前进到节点266,以检查来查看事件引擎是否需要每日执行消息处理(如节点266所表示的)。

参考图6,过程280由数据处理系统实施,用于识别可执行逻辑的在处理每个都与键的给定值相关联的一个或多个数据项时执行的一个或多个部分,其中,规范表示该可执行逻辑,其中,规范与键相关联,并且其中,针对键的相应值维持规范的状态。

在操作中,数据处理系统访问(282)表示可执行逻辑的规范,其中,规范的针对该键的特定值的状态指定了可执行逻辑的在该状态下可执行的一个或多个部分。数据处理系统还例如通过输入设备或端口间歇地接收(284)数据流的数据项,其中,这些数据项中的一个或多个数据项每个都与该键的给定值相关联。数据处理系统生成(286)针对键的该给定值的日志记录,其中,该日志记录指定可执行逻辑的在处理每个都与该键的给定值相关联的这些数据项中的一个或多个数据项时执行的一个或多个部分。在此示例中,该生成包括针对与该键的给定值相关联的该一个或多个数据项中的每一个的以下操作:数据处理系统识别(288)规范的针对与数据项相关联的该键的给定值的给定状态。数据处理系统根据可执行逻辑的在规范中表示为与该给定状态相关联的一个或多个部分的执行来处理(290)该数据项。数据处理系统生成(292)针对该键的给定值指定可执行逻辑的这一个或多个部分的执行的日志记录。

图7a至图7h展示了根据在图表执行期间生成的审核记录的icff记录和数据块的生成。现在参考图7a,图示300包括具有组件304至316的图表301。在现实世界示例中,图表301被配置为例如由想要补偿经历多次呼叫掉线的客户的电信公司执行。具体地,如果客户在最近两个小时内经历了两次呼叫掉线(如组件308所指定的),或者一整天内发生4次呼叫掉线(如组件318所指定的),则电信公司将向该客户的账户添加5分钟(如组件310、314所指定的)。公司每24小时将只会支出一次(如组件306和312所指定的)。图表301在没有到期日期的情况下运行。在此示例中,本文所描述的系统执行图表301。

参考图7b,图示303展示了图表301的状态,在该状态下,图表301已经开始执行。在图表301开始时,图表301处于正在执行组件304的第一状态(如围绕组件304的黑线所展示的),这导致系统生成审核记录324。参考图7c,图示305展示了图表301前进到第二状态,在该第二状态下,系统等待指定事件并且然后在检测到事件时做出各种决策并执行各种动作。在此示例状态下,系统执行组件306(如围绕组件306的黑线所指定的),并且系统生成审核记录326。在组件306处,系统被配置用于等待指定事件,例如,指定上次呼叫掉线的事件(即,事件类型为“上次呼叫掉线”)。在此示例中,系统接收事件302(例如,结构化数据项或数据记录),该事件包括指定此事件的事件类型为“上次呼叫掉线”的数据。在检测到事件302时,系统生成审核记录322,并且组件306(或执行由组件306表示的可执行逻辑的系统)确定最近24小时内是否已经发生过一次支出(即,当前时间-上次掉线呼叫的支付时间>=24小时)。为此,系统生成审核记录328、330,这两个审核记录每个都指定读取的变量的值。在检测到事件302并且最近24小时内未发生支付时,系统生成审核记录332并前进到组件308,同时保持处于第二状态。

参考图7d,图示307展示了图表301的状态,在该状态下,系统执行组件308,如围绕组件308的黑线所指示的。在此示例中,组件308(或执行由组件308表示的可执行逻辑的系统)在读取变量的值时生成审核记录334、336。在此示例中,由组件308表示的逻辑基于读取的变量的值评估为值“否”。

参考图7e,图示309展示了图表301的另一状态,在该状态下,执行组件318(如围绕组件318的黑线所展示的),在此期间仍然处于第二状态。在组件318处,系统生成审核记录362,该审核记录指定“每小时呼叫掉线”变量的读取值。在此示例中,系统确定由组件318表示的逻辑评估为值“是”,并生成审核记录364,该审核记录的内容指定组件318评估为值“是”(称为“决策2”)。

参考图7f,图示311展示了图表301已经前进到组件310,该组件生成审核记录340。参考图7g,图示313展示了图表301然后前进到组件312,该组件生成审核记录342。

参考图7h,图示315展示了图表301然后前进到组件314,该组件生成审核记录344。图表301然后前进到组件316。在此示例中,系统将审核记录322、324、326、328、330、332、334、336、338、340、342、344、362、364一起批处理,识别将存储在icff记录中的键字段(例如,事件类型、对象id、时间戳、实例id的字段),并且然后将其余审核记录分组到集合中。在此示例中,系统生成包括例如来自审核记录322、324的键字段的icff记录348。数据块350中包括审核记录326、328、330、332、334、336、338、340、342、344、362、364的内容以及审核记录322、324的未包括在icff记录348中的内容。系统将icff记录348和数据块350存储在数据库346中。在此示例中,数据库346存储索引352,并且icff记录348按照以下字段编制在索引352中:时间戳、对象_id和事件类型,如索引352的第354行所示。在此示例中,索引352还包括例如为其他图表和/或其他对象id的其他icff记录编制索引的行356、358、360。在此示例中,icff记录348经由参考数据结构366(例如,指针)引用数据块350。在变体中,icff记录348和数据块350被组合成编制了索引的icff数据块(或数据块)。

上述技术可以使用软件实施以便在计算机上执行。例如,软件形成一个或多个计算机程序中的在一个或多个编程或可编程计算机系统(可以是诸如分布式、客户端/服务器或网格等各种架构)上执行的程序,该计算机系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备或端口以及至少一个输出设备或端口。该软件可以形成较大程序的一个或多个模块,例如,提供与图表和流程图的设计和配置相关的其他服务。图表的节点、链路和元素可以被实施为存储在计算机可读介质中的数据结构或者符合存储在数据存储库中的数据模型的其他有组织的数据。

本文所描述的技术可以在数字电子电路系统中实施,或者在计算机硬件、固件、软件或其组合中实现。装置可以在有形地呈现或存储在机器可读存储设备(例如,非暂态机器可读存储设备、机器可读硬件存储设备等)中的计算机程序产品中实施,以供可编程处理器执行;并且方法动作可以由执行指令程序的可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行功能。本文所描述的实施例和权利要求的其他实施例以及本文所描述的技术可以有利地在可编程系统上可执行的一个或多个计算机程序中实施,该可编程系统包括至少一个可编程处理器,该可编程处理器被耦接以从数据存储系统、至少一个输入设备以及至少一个输出设备中接收数据和指令并向数据存储系统、至少一个输入设备以及至少一个输出设备传输数据和指令。每个计算机程序可以用高级程序或面向对象的编程语言,或者如果需要的话用汇编或机器语言实施;并且在任何情况下,语言可以是汇编或解释语言。

适合于执行计算机程序的处理器举例来讲包括通用微处理器和专用微处理器两者、以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机必不可少的元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或者光盘),或者被可操作地耦接以从大容量存储设备中接收数据或者向大容量存储设备传递数据,或者既接收又传递数据。用于体现计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器,举例来说,包括半导体存储设备,例如,eprom、eeprom和闪存设备;磁盘,例如,内部硬盘或可移动磁盘;磁光盘;以及cd-rom和dvd-rom磁盘。处理器和存储器可以由专用逻辑电路系统来补充或并入专用逻辑电路系统。上述任何一项都可以由asic(专用集成电路)补充或并入asic。

为了提供与用户的交互,实施例可以在具有用于向用户显示信息的显示设备(例如,lcd(液晶显示器)监视器)和用户可以通过其向计算机提供输入的键盘和指点设备(例如,鼠标或轨迹球)的计算机上实施。其他种类的设备也可以用于提供与用户交互;例如,提供给用户的反馈可以是任何形式的传感反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以用任何形式接收来自用户的输入,包括声音、语音、或触觉输入。

实施例可以在计算系统中实施,该计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有图形用户界面或web浏览器的客户端计算机,用户可以通过该图形用户界面或web浏览器与实施例的实现交互),或者这些后端、中间件或前端组件的任意组合。系统的组件可以通过数字数据通信(例如,通信网络)的任何形式或介质来进行互连。通信网络的示例包括局域网(lan)和广域网(wan)(例如,互联网)。

该系统和方法或其部分可以使用互联网上利用超文本传输协议(http)的服务器集合——“万维网”(web或www)。http是已知的应用协议,其为用户提供对资源的访问权,资源可以是不同格式的信息,比如文本、图形、图像、声音、视频、超文本标记语言(html)以及程序。在用户指定链路后,客户端计算机向web服务器发出tcp/ip请求并接收信息,该信息可以是根据html格式化的另一个web页。用户也可以通过遵循屏幕上的指令、输入特定数据或点击所选图标来访问相同或其他服务器上的其他页。还应当注意,本领域技术人员已知的任何类型的选择设备,例如复选框、下拉框等,可以用于使用web页来允许用户为给定组件选择选项的实施例。服务器在各种平台上运行,包括unix机器,但也可以使用其他平台,如windows2000/2003、windowsnt、sun、linux和macintosh。计算机用户可以通过使用浏览软件(比如firefox、netscapenavigator、microsoftinternetexplorer或mosaic浏览器)在web上查看服务器或网络上可用的信息。计算系统可以包括客户端和服务器。客户端和服务器通常远离彼此并且通常通过通信网络交互。客户端与服务器的关系借助于在各自的计算机上运行并且彼此具有客户端-服务器关系的计算机程序产生。

其他实施例在说明书和权利要求的范围和精神内。例如,由于软件的性质,上述功能可以使用软件、硬件、固件、硬连线或任何这些的组合来实施。实现功能的特征也可以物理地位于各种位置,包括被分布使得功能的各部分在不同的物理位置处实施。术语“一个(a)”在本文和整个申请中不是以限制的方式使用,因此并不意味着排除术语“一个(a)”的多重含义或“一个或多个”含义。另外,在要求临时专利申请的优先权的程度上,应当理解,临时专利申请不是限制性的,而是包括可以如何实施本文所描述的技术的示例。

已经描述了本发明的多个实施例。然而,本领域普通技术人员将会理解,在不脱离权利要求和本文所描述的技术的精神和范围的情况下,可以进行各种修改。

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