CN109196482B - 用于处理网络中的关键数据的可执行逻辑 - Google Patents

用于处理网络中的关键数据的可执行逻辑 Download PDF

Info

Publication number
CN109196482B
CN109196482B CN201780032631.3A CN201780032631A CN109196482B CN 109196482 B CN109196482 B CN 109196482B CN 201780032631 A CN201780032631 A CN 201780032631A CN 109196482 B CN109196482 B CN 109196482B
Authority
CN
China
Prior art keywords
data
state
key
value
executable logic
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
CN201780032631.3A
Other languages
English (en)
Other versions
CN109196482A (zh
Inventor
乔尔·古尔德
斯科特·斯图德尔
克雷格·W·斯坦菲尔
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.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
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 Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Priority to CN202210448939.9A priority Critical patent/CN114817037B/zh
Publication of CN109196482A publication Critical patent/CN109196482A/zh
Application granted granted Critical
Publication of CN109196482B publication Critical patent/CN109196482B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Quality & Reliability (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Communication Control (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Other Investigation Or Analysis Of Materials By Electrical Means (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

一种数据处理系统所实现的方法,所述数据处理系统用于处理数据项流中的数据项,所述方法包括:访问表示可执行逻辑的规范,其中针对所述关键字的特定值的所述规范的状态指定所述可执行逻辑的、能够在该状态下执行的一个或多个部分;通过输入装置或端口来接收数据流中的数据项;针对所述流中的所述数据项中的第一数据项,识别针对与所述数据项中的该第一数据项相关联的所述关键字的值的所述规范的第一状态;利用所述数据处理系统,根据所述可执行逻辑的、在所述规范中被表示为与所述第一状态相关联的一个或多个部分来处理所述数据项中的所述第一数据项。

Description

用于处理网络中的关键数据的可执行逻辑
技术领域
本说明书涉及用于操作和调整当前应用于数据流中的一个或多个数据项(例如,经由网络连接从联网应用中进入的数据项)的可执行逻辑的计算机实现方法、数据处理系统和机器可读硬件存储装置。
优先权要求
根据美国法典第35条第119(e)款,本申请要求2016年5月24日提交的美国临时专利申请62/340,825、以及2016年12月12日提交的美国专利申请15/376,129的优先权,上述文献的全部内容通过引用而并入于此。
背景技术
一般地,系统接收记录流并使用一个或多个规则来彼此独立地处理各记录。如此,规则仅将当前记录当作用于处理该记录的输入和输出结果。当系统测试规则时,通过对记录应用一个或多个规则来进行测试,并且仅针对该记录示出测试的结果。通常,软件开发者开发应用,然后该应用被转交至测试所开发应用的人员。这可能会反复多次,直到经批准的应用被发布给最终用户为止。最终用户可以请求更改应用,并且最终用户必须将该请求提交给提供者,然后提供者将再次使软件开发者和测试人员参与进来,然后测试人员尝试找到用以并入所请求的更改的解决方案。然而,这可能需要多次来回,并且根本不允许最终用户进行任何修改。
发明内容
本说明书涉及使得能够辅助最终用户快速(例如,即时)且适当地操作和调整当前应用于数据流中的一个或多个数据项(例如,经由网络连接从联网应用中进入的数据项)的可执行逻辑的计算机实现方法、数据处理系统和机器可读硬件存储装置。以这种方式,可靠地辅助最终用户适当地操作底层技术系统,而无需使应用开发者和测试人员参与可执行逻辑的检查或调整。这还可以减少进行可执行逻辑的这种检查和调整所需的成本和时间,由此最终用户也获得灵活性和控制。
在一般方面1中,描述了一种计算机实现的方法,所述方法用于根据与关键字相关联的规范来处理数据的流中的数据项,其中,数据项与所述关键字的值相关联,针对所述关键字的各个值而保持所述规范的状态,所述规范表示数据存储系统中所存储的可执行逻辑,所述方法包括:访问表示所述可执行逻辑的规范,其中所述规范的针对所述关键字的特定值的状态指定所述可执行逻辑的、能够在该状态下执行的一个或多个部分;通过输入装置或端口来接收数据的流中的数据项;针对所述流中的所述数据项中的第一数据项,识别针对与所述数据项中的该第一数据项相关联的所述关键字的值的所述规范的第一状态;利用数据处理系统,根据所述可执行逻辑的、在所述规范中被表示为与所述第一状态相关联的一个或多个部分来处理所述数据项中的所述第一数据项,所述处理包括:使得显示所述规范的一个或多个部分;对所述数据项中的所述第一数据项应用所述可执行逻辑的所述一个或多个部分以获得结果数据;使得与所显示的所述规范的所述一个或多个部分中的至少一个部分一起显示所述结果数据的至少一部分;以及针对所述数据项中的所述第一数据项的关键字的值,使所述规范从所述第一状态转变为第二状态。
在根据方面1所述的方面2中,所述方法还包括:执行所述可执行逻辑。
在根据方面1至2中任一项所述的方面3中,所述可执行逻辑的所述一个或多个部分包括所述可执行逻辑的一个或多个第一部分,所述规范的所述一个或多个部分包括所述规范的第一部分,所述结果数据包括第一结果信息,所述方法还包括:执行所述可执行逻辑;随着所述可执行逻辑继续执行,接收所述数据项中的、在所述流中比所述数据项中的所述第一数据项靠后且也与所述关键字的值相关联的第二数据项;基于从所述第一状态向所述第二状态的转变,根据所述可执行逻辑的与所述第二状态相关联的一个或多个第二部分来处理所述数据项中的所述第二数据项,其中所述可执行逻辑的一个或多个第二部分被表达为所述规范的第二部分;基于所述处理,获得指示出处理所述数据项中的所述第二数据项的一个或多个结果的第二结果数据;以及使得与所述规范的所述第二部分一起显示所述第二结果数据的至少一部分。
在根据方面1至3中任一项所述的方面4中,所述方法还包括:访问测试数据项的集合;以及根据所述集合中的所选择的一个集合,模拟具有在第二测试数据项之前出现的第一测试数据项的近实时测试数据流。
在根据方面1至4中任一项所述的方面5中,接收所述数据的流包括接收模拟流。
在根据方面1至5中任一项所述的方面6中,所述的方法,还包括:通过对所述数据项中的所述第一数据项应用所述可执行逻辑的所述一个或多个部分来测试所述规范所表达的规则的执行的精确度。
在根据方面1至6中任一项所述的方面7中,测试规则的执行的精确度包括以下操作中的一个或多个:判断为所述数据项中的所述第一数据项的一部分不由所述数据处理系统处理、判断为所述规则的部分之间存在冲突、判断为所述规则的一部分指定了所述数据项中的所述第一数据项不可能满足的条件、以及判断为所述规则的一部分以与所旨在的处理目标不同的方式处理所述数据项中的所述第一数据项的一部分。
在根据方面1至7中任一项所述的方面8中,所述关键字的值包括第一值,以及所述方法还包括:从测试数据的集合中选择与所述关键字的第二值相关联的集合;以及对使用针对第二关键字的集合中的测试数据进行模拟的流执行所述可执行逻辑的针对所述关键字的第二值的实例。
在根据方面1至8中任一项所述的方面9中,所述方法还包括:使得显示从所述规范的表示所述可执行逻辑的所述第一状态的一部分向所述规范的表示所述第二状态的另一部分的转变的视觉表示。
在根据方面1至9中任一项所述的方面10中,所述方法还包括:接收对所述流中的所述数据项中的所述第一数据项的用户选择;使得显示对所述数据处理系统当前正处理的、所述流中的所述数据项中的所述第一数据项的指示;以及使得显示所述可执行逻辑的、当前正应用于所述数据项中的所述第一数据项以获得所述结果数据的所述一个或多个部分的指示。
在根据方面1至10中任一项所述的方面11中,所述方法还包括:将所述结果数据的一部分与预定参考数据进行比较;判断所述结果数据的该部分和所述预定参考数据之间是否存在偏差、或者是否不存在这样的偏差;以及基于判断所述结果数据的该部分和所述预定参考数据之间是否存在偏差、或者是否不存在这样的偏差,来输出所述结果数据的该部分与所述预定参考数据是否一致的指示。
在根据方面1至11中任一项所述的方面12中,所述方法还包括:将所述数据处理系统当前正处理的、所述流中的所述数据项中的所述第一数据项与预定参考数据项进行比较;判断当前正处理的所述流中的所述数据项中的所述第一数据项与所述预定参考数据项之间是否存在偏差、或者是否不存在这样的偏差;以及基于判断当前正处理的所述流中的所述数据项中的所述第一数据项与所述预定参考数据项之间是否存在偏差、或者是否不存在这样的偏差,来输出当前正处理的所述流中的所述数据项中的所述第一数据项与所述预定参考数据项是否一致的指示。
在根据方面1至12中任一项所述的方面13中,所述方法还包括:将所述可执行逻辑的、当前正应用于所述数据项中的所述第一数据项以获得所述结果数据的所述一个或多个部分与预定参考可执行逻辑进行比较;判断所述可执行逻辑的、当前正应用于所述数据项中的所述第一数据项的所述一个或多个部分与所述预定参考可执行逻辑之间是否存在偏差、或者是否不存在这样的偏差;以及基于判断所述可执行逻辑的、当前正应用于所述数据项中的所述第一数据项的所述一个或多个部分与所述预定参考可执行逻辑之间是否存在偏差、或者是否不存在这样的偏差,来输出所述可执行逻辑的、当前正应用于所述数据项中的所述第一数据项以获得所述结果数据的所述一个或多个部分与所述预定参考可执行逻辑是否一致的指示。
在一般方面14中,描述了用于根据与关键字相关联的规范来处理数据的流中的数据项的数据处理系统,其中,数据项与所述关键字的值相关联,针对所述关键字的各个值而保持所述规范的状态,所述规范表示数据存储系统中正存储的可执行逻辑,所述数据处理系统包括:一个或多个处理装置;以及一个或多个机器可读硬件存储装置,其存储所述一个或多个处理装置能够执行以进行包括以下的操作的指令:访问表示所述可执行逻辑的规范,其中针对所述关键字的特定值的所述规范的状态指定所述可执行逻辑的、能够在该状态下执行的一个或多个部分;通过输入装置或端口来接收数据流中的数据项;针对所述流中的所述数据项中的第一数据项,识别针对与所述数据项中的该第一数据项相关联的所述关键字的值的所述规范的第一状态;利用所述数据处理系统,根据所述可执行逻辑的、在所述规范中被表示为与所述第一状态相关联的一个或多个部分来处理所述数据项中的所述第一数据项,所述处理包括:使得显示所述规范的一个或多个部分;对所述数据项中的所述第一数据项应用所述可执行逻辑的所述一个或多个部分以获得结果数据;使得与所显示的所述规范的所述一个或多个部分中的至少一个部分一起显示所述结果数据的至少一部分;针对所述数据项中的所述第一数据项的关键字的值,使所述规范从所述第一状态转变为第二状态。
在一般方面15中,描述了存储用于根据与关键字相关联的规范来处理数据的流中的数据项的指令的一个或多个机器可读硬件存储装置,其中,数据项与所述关键字的值相关联,针对所述关键字的各个值而保持所述规范的状态,所述规范表示数据存储系统中正存储的可执行逻辑,所述指令能够由一个或多个处理装置执行以进行包括以下的操作:访问表示所述可执行逻辑的规范,其中所述规范的针对所述关键字的特定值的状态指定所述可执行逻辑的、能够在该状态下执行的一个或多个部分;通过输入装置或端口来接收数据的流中的数据项;针对所述流中的所述数据项中的第一数据项,识别针对与所述数据项中的该第一数据项相关联的所述关键字的值的所述规范的第一状态;利用数据处理系统,根据所述可执行逻辑的、在所述规范中被表示为与所述第一状态相关联的一个或多个部分来处理所述数据项中的所述第一数据项,所述处理包括:使得显示所述规范的一个或多个部分;对所述数据项中的所述第一数据项应用所述可执行逻辑的所述一个或多个部分以获得结果数据;以及使得与所显示的所述规范的所述一个或多个部分中的至少一个部分一起显示所述结果数据的至少一部分;针对所述数据项中的所述第一数据项的关键字的值,使所述规范从所述第一状态转变为第二状态。
在一般方面16中,一种数据处理系统所实现的方法,所述数据处理系统用于根据与关键字相关联的规范来处理数据的流中的数据项,其中,数据项与所述关键字的值相关联,针对所述关键字的各个值而保持所述规范的状态,以及所述规范表示数据存储系统中所存储的可执行逻辑,所述方法包括:访问表示所述可执行逻辑的规范,其中所述规范的针对所述关键字的特定值的状态指定所述可执行逻辑的、能够在该状态下执行的一个或多个部分;通过输入装置或端口来接收数据的流中的数据项;针对所述流中的所述数据项中的第一数据项,识别与所述数据项中的该第一数据项相关联的所述关键字的值;识别为所述规范与针对所述关键字的该值的等待状态相关联,其中,所述等待状态包括所述可执行逻辑被配置为等待一个或多个数据项的状态,所述一个或多个数据项与所述关键字的该值相关联、并且与在所述流中位于所述一个或多个数据项之前的一个或多个其它数据项时间上分离;利用至少一个处理器,根据所述可执行逻辑的、在所述规范中被表示为与所述等待状态相关联的一个或多个部分来处理所述数据项中的所述第一数据项;以及使得根据所述可执行逻辑的与所述等待状态相关联的一个或多个部分来显示指示出所述数据项中的所述第一数据项的处理的结果的数据的至少一部分。
在根据方面16所述的方面17中,所述规范包括具有多个节点的流程图,所述节点中的至少一个节点包括表示所述等待状态的等待节点,以及所述流程图包括所述节点中的第一节点和所述节点中的第二节点之间的链接,所述链接表示所述可执行逻辑的从执行所述可执行逻辑的由所述节点中的所述第一节点表示的一个或多个第一部分向执行所述可执行逻辑的由所述节点中的所述第二节点表示的一个或多个第二部分的转变。
在根据方面16至17中任一项所述的方面18中,所述方法还包括:生成图形用户界面所用的数据,其中所述图形用户界面在呈现在显示装置上的情况下,包括用于执行所述流程图的开始控件并且还包括所述流程图;接收指示出所述开始控件的选择的数据;响应于所接收到的数据,通过进行包括以下的操作来执行所述流程图:对所述数据项中的所述第一数据项执行所述可执行逻辑的由所述第一节点表示的所述一个或多个第一部分;以及使所述图形用户界面更新以显示指示出利用所述可执行逻辑的由所述第一节点表示的所述一个或多个第一部分来处理所述数据项中的所述第一数据项的结果的结果数据,其中在所述流程图中,所述结果数据与所述第一节点并列显示。
在根据方面16至18中任一项所述的方面19中,所述图形用户界面所用的数据包括用于显示停止控件的数据,所述方法包括:接收指示出所述停止控件的选择的数据;以及暂停所述流程图的执行。
在根据方面16至19中任一项所述的方面20中,所述图形用户界面所用的数据包括用于显示测试控件的数据,所述方法包括:接收指示出所述测试控件的选择的数据;以及通过进行包括以下的操作来测试所述流程图的性能:针对所述流程图中的各节点,使得在所述流程图中显示指示出该节点所表示的可执行逻辑的一个或多个部分处理所述流中的与所述关键字的值相关联的哪些数据项的数据。
在根据方面16至20中任一项所述的方面21中,所述方法还包括针对与所述关键字的所述值相关联的各数据项的接收,使得在所述流程图中近实时地显示指示出该节点所表示的可执行逻辑的一个或多个部分处理所述流中的与所述关键字的值相关联的哪些数据项的数据。
在一般方面22中,描述了用于根据与关键字相关联的规范来处理数据流中的数据项的数据处理系统,其中,数据项与所述关键字的值相关联,针对所述关键字的各个值而保持所述规范的状态,以及所述规范表示数据存储系统中正存储的可执行逻辑,所述数据处理系统包括:一个或多个处理装置;以及一个或多个机器可读硬件存储装置,其存储所述一个或多个处理装置能够执行以进行包括以下的操作的指令:访问表示所述可执行逻辑的规范,其中所述规范的针对所述关键字的特定值的状态指定所述可执行逻辑的、能够在该状态下执行的一个或多个部分;通过输入装置或端口来接收数据的流中的数据项;针对所述流中的所述数据项中的第一数据项,识别与所述数据项中的该第一数据项相关联的所述关键字的值;识别为所述规范与针对所述关键字的该值的等待状态相关联,其中,所述等待状态包括所述可执行逻辑被配置为等待一个或多个数据项的状态,所述一个或多个数据项与所述关键字的该值相关联、并且与在所述流中位于所述一个或多个数据项之前的一个或多个其它数据项时间上分离;利用至少一个处理器,根据所述可执行逻辑的、在所述规范中被表示为与所述等待状态相关联的一个或多个部分来处理所述数据项中的所述第一数据项;以及使得根据所述可执行逻辑的与所述等待状态相关联的一个或多个部分来显示指示出所述数据项中的所述第一数据项的处理的结果的数据的至少一部分。
在一般方面23中,描述了存储用于根据与关键字相关联的规范来处理数据的流中的数据项的指令的一个或多个机器可读硬件存储装置,其中,数据项与所述关键字的值相关联,针对所述关键字的各个值而保持所述规范的状态,以及所述规范表示数据存储系统中正存储的可执行逻辑,所述指令能够由一个或多个处理装置执行以进行包括以下的操作:访问表示所述可执行逻辑的规范,其中所述规范的针对所述关键字的特定值的状态指定所述可执行逻辑的、能够在该状态下执行的一个或多个部分;通过输入装置或端口来接收数据的流中的数据项;针对所述流中的所述数据项中的第一数据项,识别与所述数据项中的该第一数据项相关联的所述关键字的值;识别为所述规范与针对所述关键字的该值的等待状态相关联,其中,所述等待状态包括所述可执行逻辑被配置为等待一个或多个数据项的状态,所述一个或多个数据项与所述关键字的该值相关联、并且与在所述流中位于所述一个或多个数据项之前的一个或多个其它数据项时间上分离;利用至少一个处理器,根据所述可执行逻辑的、在所述规范中被表示为与所述等待状态相关联的一个或多个部分来处理所述数据项中的所述第一数据项;以及使得根据所述可执行逻辑的与所述等待状态相关联的一个或多个部分来显示指示出所述数据项中的所述第一数据项的处理的结果的数据的至少一部分。
在一般方面24中,一种用于实现状态机的数据处理系统所进行的方法,其中,所述状态机被配置为针对关键字的各值,处理与该值相关联的数据记录,所述方法包括:在一个或多个编辑器界面中显示:(i)具有节点和一个或多个链接的图、以及(ii)用于输入或编辑与所述节点中的一个或多个节点相关的一个或多个逻辑表达式的一个或多个部分,其中,所述节点中的所述一个或多个节点与所述状态机的特定状态相对应,以及逻辑表达式表示在所述状态机处于所述特定状态的情况下对数据记录的至少部分处理;其中,所述节点中的一个节点与所述节点中的另一节点之间的链接表示所述状态机从一个状态向另一状态的转变;将所述一个或多个逻辑表达式和所述图变换为用于实现状态机的可执行逻辑以:随着间歇性地接收到数据记录,评价所述数据记录中的一个或多个字段,以识别所述关键字的值;以及针对所述关键字的各值,处理包括所述关键字的该值所基于的一个或多个字段的一个或多个第一数据记录,其中针对所述关键字的该值的所述处理根据与同所述状态机的当前状态相对应的一个或多个节点相关的一个或多个逻辑表达式;以及根据所述图中的链接而转变为用于处理间歇性接收到的数据记录中的一个或多个第二数据记录的另一状态,其中,所述一个或多个第二数据记录包括所述关键字的该值所基于的一个或多个字段,以及所述一个或多个第二数据记录是在所述一个或多个第一数据记录之后接收到的。
在根据方面24所述的方面25中,所述方法包括在接收数据记录之前执行所述可执行逻辑。
在根据方面24至25中任一项所述的方面26中,所述方法还包括:针对所述关键字的各值,保存通过处理所述一个或多个第一数据记录而达到的所述可执行逻辑的状态;以及通过继续对与所述关键字的该值相关联的一个或多个其它数据项执行所述可执行逻辑来继续处理一个或多个其它数据记录。
在根据方面24至26中任一项所述的方面27中,所述关键字的值包括所述关键字的第一值,以及所述方法包括:保存针对所述关键字的所述第一值的所述可执行逻辑的第一状态;识别与所述关键字的第二值相关联的一个或多个第三数据记录;以及根据与同针对所述关键字的所述第二值的所述状态机的当前状态相对应的一个或多个节点相关的一个或多个逻辑表达式来处理所述一个或多个第三数据记录。
在根据方面24至27中任一项所述的方面28中,所述方法包括:在数据存储库中保存针对所述关键字的所述第二值的所述可执行逻辑的第二状态;以及在数据存储库中生成所述关键字的所述第一值和所述第一状态、以及所述关键字的所述第二值和所述第二状态之间的关联。
在根据方面24至28中任一项所述的方面29中,所述一个或多个逻辑表达式与所述可执行逻辑的、能够在所述可执行逻辑处于第一状态的情况下执行的一个或多个第一部分相对应,所述方法包括:在执行所述一个或多个第一部分之后,将针对所述关键字的第一值的所述可执行逻辑的状态更新为所述第一状态之后的另一状态。
在根据方面24至29中任一项所述的方面30中,所述方法包括基于利用所述可执行逻辑的一个或多个部分处理数据记录,来将数据项发布至队列以发起一个或多个动作。
在根据方面24至30中任一项所述的方面31中,所述方法包括接收指示出针对与节点相关的一个或多个逻辑表达式的一个或多个编辑的数据。
在根据方面24至31中任一项所述的方面32中,所述方法包括从客户端装置接收一个或多个逻辑表达式、以及指定哪个节点与所接收到的一个或多个逻辑表达式相关联的数据。
在根据方面24至32中任一项所述的方面33中,所述节点中的至少一个节点包括决策节点、已完成节点或发送节点,以及所述节点中的至少另一节点包括等待节点。
在根据方面24至33中任一项所述的方面34中,显示包括使在一个或多个编辑器界面中显示(i)具有节点和一个或多个链接的图、以及(ii)用于输入或编辑与所述节点中的一个或多个节点相关的一个或多个逻辑表达式的一个或多个部分。
在一般方面35中,描述了用于实现状态机的数据处理系统,其中,所述状态机被配置为针对关键字的各值,处理与该值相关联的数据记录,所述数据处理系统包括:一个或多个处理装置;以及一个或多个机器可读硬件存储装置,其存储所述一个或多个处理装置能够执行以进行包括以下的操作的指令:在一个或多个编辑器界面中显示:(i)具有节点和一个或多个链接的图、以及(ii)用于输入或编辑与所述节点中的一个或多个节点相关的一个或多个逻辑表达式的一个或多个部分,其中,所述节点中的所述一个或多个节点与所述状态机的特定状态相对应,以及逻辑表达式表示在所述状态机处于所述特定状态的情况下对数据记录的至少部分处理;其中,所述节点中的一个节点与所述节点中的另一节点之间的链接表示所述状态机从一个状态向另一状态的转变;将所述一个或多个逻辑表达式和所述图变换为用于实现状态机的可执行逻辑以进行操作:随着间歇性地接收到数据记录,评价所述数据记录中的一个或多个字段,以识别所述关键字的值;以及针对所述关键字的各值,处理包括所述关键字的该值所基于的一个或多个字段的一个或多个第一数据记录,其中针对所述关键字的该值的所述处理根据与同所述状态机的当前状态相对应的一个或多个节点相关的一个或多个逻辑表达式;以及根据所述图中的链接而转变为用于处理间歇性接收到的数据记录中的一个或多个第二数据记录的另一状态,其中,所述一个或多个第二数据记录包括所述关键字的该值所基于的一个或多个字段,以及所述一个或多个第二数据记录是在所述一个或多个第一数据记录之后接收到的。
在一般方面36中,描述了存储用于实现状态机的指令的一个或多个机器可读硬件存储装置,其中,所述状态机被配置为针对关键字的各值,处理与该值相关联的数据记录,所述指令能够由一个或多个处理装置执行以进行包括以下的操作:在一个或多个编辑器界面中显示:(i)具有节点和一个或多个链接的图、以及(ii)用于输入或编辑与所述节点中的一个或多个节点相关的一个或多个逻辑表达式的一个或多个部分,其中,所述节点中的所述一个或多个节点与所述状态机的特定状态相对应,以及逻辑表达式表示在所述状态机处于所述特定状态的情况下对数据记录的至少部分处理;其中,所述节点中的一个节点与所述节点中的另一节点之间的链接表示所述状态机从一个状态向另一状态的转变;将所述一个或多个逻辑表达式和所述图变换为用于实现状态机的可执行逻辑以进行操作:随着间歇性地接收到数据记录,评价所述数据记录中的一个或多个字段,以识别所述关键字的值;以及针对所述关键字的各值,处理包括所述关键字的该值所基于的一个或多个字段的一个或多个第一数据记录,其中针对所述关键字的该值的所述处理根据与同所述状态机的当前状态相对应的一个或多个节点相关的一个或多个逻辑表达式;以及根据所述图中的链接而转变为用于处理间歇性接收到的数据记录中的一个或多个第二数据记录的另一状态,其中,所述一个或多个第二数据记录包括所述关键字的该值所基于的一个或多个字段,以及所述一个或多个第二数据记录是在所述一个或多个第一数据记录之后接收到的。
在一般方面37中,一种用以处理数据的流中的数据项的数据处理系统所实现的方法,所述处理包括:接收表示用于处理数据的流中的数据项的可执行逻辑的规范,其中,所述规范与关键字相关联,数据项与所述关键字的值相关联,以及针对所述关键字的各个值而保持所述可执行逻辑的状态,其中,所述规范包括节点和一个或多个链接,一个或多个第一节点表示所述可执行逻辑的针对所述关键字的值的第一状态,其中能够对所述数据项中的与所述关键字的该值相关联的第一数据项执行所述可执行逻辑的第一部分;第二节点表示所述可执行逻辑的针对所述关键字的该值的第二状态,所述第二节点中的一个第二节点表示所述可执行逻辑的、被配置为在所述第二状态下等待所述数据项中的与所述关键字的该值相关联的第二数据项的一部分,所述数据项中的所述第二数据项通过在所述流中位于所述数据项中的所述第一数据项之后来与所述数据项中的所述第一数据项时间上分离,所述第二节点中的另一第二节点表示所述可执行逻辑的、被配置为在所述第二状态下使一个或多个动作执行的另一部分;所述一个或多个第一节点中的一个第一节点与所述第二节点中的一个第二节点之间的链接表示针对所述关键字的该值的、所述可执行逻辑从能够执行所述第一部分的所述第一状态向所述可执行逻辑被配置为等待所述数据项中的所述第二数据项的所述第二状态的状态转变;以及将所述规范变换为可执行逻辑以针对所述关键字的各值而处理与该值相关联的、且在数据的流中时间上分离的数据项。
在根据方面37所述的方面38中,所述方法包括:通过对所述数据项中的第一数据项执行所述可执行逻辑的所述第一部分来处理所述数据项中的所述第一数据项;以及在执行所述可执行逻辑的所述第一部分之后,更新所述可执行逻辑的状态。
在根据方面37至38中任一项所述的方面39中,所述方法包括在处于所述第二状态的情况下,通过执行所述可执行逻辑的用于等待满足一个或多个标准的数据项的一部分来等待所述数据项中的所述第二数据项。
在根据方面37至39中任一项所述的方面40中,所述方法包括:接收所述数据项中的所述第二数据项;以及执行所述可执行逻辑的、被配置为使所述一个或多个执行的所述另一部分。
在一般方面41中,描述了用于处理数据的流中的数据项的数据处理系统,所述数据处理系统包括:一个或多个处理装置;以及一个或多个机器可读硬件存储装置,其存储所述一个或多个处理装置能够执行以进行包括以下的操作的指令:接收表示用于处理数据的流中的数据项的可执行逻辑的规范,其中,所述规范与关键字相关联,数据项与所述关键字的值相关联,以及针对所述关键字的各个值而保持所述可执行逻辑的状态;其中,所述规范包括节点和一个或多个链接,一个或多个第一节点表示所述可执行逻辑的针对所述关键字的值的第一状态,其中能够对所述数据项中的与所述关键字的该值相关联的第一数据项执行所述可执行逻辑的第一部分;第二节点表示所述可执行逻辑的针对所述关键字的该值的第二状态,所述第二节点中的一个第二节点表示所述可执行逻辑的、被配置为在所述第二状态下等待所述数据项中的与所述关键字的该值相关联的第二数据项的一部分,所述数据项中的所述第二数据项通过在所述流中位于所述数据项中的所述第一数据项之后来与所述数据项中的所述第一数据项时间上分离,所述第二节点中的另一第二节点表示所述可执行逻辑的、被配置为在所述第二状态下使一个或多个动作执行的另一部分;所述一个或多个第一节点中的一个第一节点与所述第二节点中的一个第二节点之间的链接表示针对所述关键字的该值的、所述可执行逻辑从所述第一部分能够执行的所述第一状态向所述可执行逻辑被配置为等待所述数据项中的所述第二数据项的所述第二状态的状态转变;以及将所述规范变换为可执行逻辑以针对所述关键字的各值而处理与该值相关联、且在数据的流中时间上分离的数据项。
在一般方面42中,描述了存储用于处理数据的流中的数据项的指令的一个或多个机器可读硬件存储装置,所述指令能够由一个或多个处理装置执行以进行包括以下的操作:接收表示用于处理数据的流中的数据项的可执行逻辑的规范,其中,所述规范与关键字相关联,数据项与所述关键字的值相关联,以及针对所述关键字的各个值而保持所述可执行逻辑的状态;其中,所述规范包括节点和一个或多个链接,一个或多个第一节点表示所述可执行逻辑的针对所述关键字的值的第一状态,其中能够对所述数据项中的与所述关键字的该值相关联的第一数据项执行所述可执行逻辑的第一部分;第二节点表示所述可执行逻辑的针对所述关键字的该值的第二状态,所述第二节点中的一个第二节点表示所述可执行逻辑的、被配置为在所述第二状态下等待所述数据项中的与所述关键字的该值相关联的第二数据项的一部分,所述数据项中的所述第二数据项通过在所述流中位于所述数据项中的所述第一数据项之后来与所述数据项中的所述第一数据项时间上分离,所述第二节点中的另一第二节点表示所述可执行逻辑的、被配置为在所述第二状态下使一个或多个动作执行的另一部分;所述一个或多个第一节点中的一个第一节点与所述第二节点中的一个第二节点之间的链接表示针对所述关键字的该值的、所述可执行逻辑从所述第一部分能够执行的所述第一状态向所述可执行逻辑被配置为等待所述数据项中的所述第二数据项的所述第二状态的状态转变;以及将所述规范变换为可执行逻辑以针对所述关键字的各值而处理与该值相关联、且在数据的流中时间上分离的数据项。
在一般方面43中,一种数据处理系统所实现的方法,所述数据处理系统用于根据规范来处理数据的流中的数据项,所述规范与关键字相关联并且表示用于处理数据项的可执行逻辑,其中,数据项与所述关键字的值相关联,针对所述关键字的多个值而保持所述规范的状态,所述处理包括:访问所述规范,其中所述规范的状态表示所述可执行逻辑的、能够在该状态下执行的一个或多个部分;接收所述数据项中的第一数据项,其中所述第一数据项与所述关键字的特定值相关联;识别针对所述关键字的所述特定值的第一状态;根据所述可执行逻辑的、被所述规范指定为能够在所述第一状态下执行的一个或多个部分来处理所述第一数据项;识别针对所述关键字的所述特定值的、从所述规范的所述第一状态向所述可执行逻辑的一个或多个其它部分能够执行的第二状态的转变;接收与所述关键字的另一值相关联的中间数据项,其中该另一值与所述关键字的所述特定值不同、并且与所述关键字的所述特定值不相关联;识别与针对所述中间数据项的所述关键字的所述另一值相关联的所述规范的给定状态;根据所述可执行逻辑的、被所述规范指定为能够在所述给定状态下执行的一个或多个部分来处理所述中间数据项;接收所述数据项中、在所述流中比所述第一数据项和所述中间数据项靠后且也与所述关键字的所述特定值相关联的第二数据项;以及基于针对所述关键字的所述特定值的所述规范的转变,根据所述可执行逻辑的、被所述规范指定为能够在所述第二状态下执行的一个或多个部分来处理所述第二数据项,其中所述可执行逻辑的、能够在所述第二状态下执行的所述一个或多个部分与所述可执行逻辑的、能够在所述第一状态下执行的所述一个或多个部分不同。
在根据方面43所述的方面44中,所述规范包括至少第一节点、第二节点以及所述第一节点和所述第二节点之间的链接;其中所述第一节点包括一个或多个用户可配置逻辑表达式;其中所述方法包括:将所述规范的一个或多个用户可配置逻辑表达式变换为所述可执行逻辑;以及执行所述可执行逻辑的一个或多个部分。
在根据方面43至44中任一项所述的方面45中,针对所述中间数据项的给定状态与针对所述关键字的所述值的第一状态和第二状态中的各状态不同。
在根据方面43至44中任一项所述的方面46中,针对所述中间数据项的给定状态是与所述第一状态或所述第二状态中的至少一个状态相同的状态。
在根据方面43至46中任一项所述的方面47中,所述规范包括所述可执行逻辑的可显示图形表示、流程图、状态转变图和图中的一个或多个。
在根据方面43至47中任一项所述的方面48中,所述方法包括:通过利用所述数据处理系统执行所述可执行逻辑的与所述规范的一个或多个部分相对应的一个或多个部分来处理所述第一数据项;保存通过处理所述第一数据项所达到的所述可执行逻辑的状态;通过继续执行所述规范中所表示的所述可执行逻辑来继续处理所述流中的数据项;以及检测所述流中的与所述关键字的所述值相关联的所述第二数据项。
在根据方面43至48中任一项所述的方面49中,所述方法包括在检测之前等待所述流中的所述第二数据项。
在根据方面43至49中任一项所述的方面50中,所述方法包括间歇性地接收所述流中的数据项。
在根据方面43至50中任一项所述的方面51中,所述方法包括针对所述关键字的所述值发起所述规范的实例;以及执行所述规范的实例。
在根据方面43至51中任一项所述的方面52中,所述关键字的所述值包括所述关键字的第一值并且所述实例包括第一实例,以及所述方法包括:识别所述流中的与所述关键字的第二值相关联的一个或多个数据项;以及针对所述关键字的所述第二值发起所述规范的第二实例,其中所述第二实例与所述第一实例不同。
在根据方面43至52中任一项所述的方面53中,所述规范包括具有一个或多个第一部分和一个或多个第二部分的流程图;以及所述方法包括:使用所述可执行逻辑的与所述流程图的所述一个或多个第一部分相对应的一个或多个第一部分来处理所述第一数据项;以及使用所述可执行逻辑的与所述流程图的所述一个或多个第二部分来处理所述第二数据项。
在根据方面43至53中任一项所述的方面54中,所述方法包括基于处理所述第二数据项,来将数据项发布至队列以发起一个或多个动作。
在根据方面43至54中任一项所述的方面55中,所述第二数据项包括数据记录。
在根据方面43至55中任一项所述的方面56中,所述规范表示包括聚合的规则,所述方法包括:基于执行所述规则来计算所述聚合;以及保存所计算出的聚合以供包括所述聚合的一个或多个其它规则检索。
在根据方面43至56中任一项所述的方面57中,所述规则包括第一规则,以及所述方法包括:访问与所述第一规则不同的第二规则,其中所述第二规则包括所述聚合;以及执行所述第二规则以使得检索出所述第二规则中所使用的先前计算出的聚合。
在根据方面43至57中任一项所述的方面58中,所述方法包括:进行用于保存所述可执行逻辑的正被执行的一部分的状态的操作,以实现所述可执行逻辑的所述状态的可恢复性。
在一般方面59中,描述了用于根据规范来处理数据的流中的数据项的数据处理系统,所述规范与关键字相关联并且表示用于处理数据项的可执行逻辑,其中,数据项与所述关键字的值相关联,针对所述关键字的多个值而保持所述规范的状态,所述数据处理系统包括:一个或多个处理装置;以及一个或多个机器可读硬件存储装置,其存储所述一个或多个处理装置能够执行以进行包括以下的操作的指令:访问所述规范,其中所述规范的状态表示所述可执行逻辑的、能够在该状态下执行的一个或多个部分;接收所述数据项中的第一数据项,其中所述第一数据项与所述关键字的特定值相关联;识别针对所述关键字的所述特定值的第一状态;根据所述可执行逻辑的、被所述规范指定为能够在所述第一状态下执行的一个或多个部分来处理所述第一数据项;识别针对所述关键字的所述特定值的、从所述规范的所述第一状态向所述可执行逻辑的一个或多个其它部分能够执行的第二状态的转变;接收与所述关键字的另一值相关联的中间数据项,其中该另一值与所述关键字的所述特定值不同、并且与所述关键字的所述特定值不相关联;识别与针对所述中间数据项的所述关键字的所述另一值相关联的所述规范的给定状态;根据所述可执行逻辑的、被所述规范指定为能够在所述给定状态下执行的一个或多个部分来处理所述中间数据项;接收所述数据项中、在所述流中比所述第一数据项和所述中间数据项靠后且也与所述关键字的所述特定值相关联的第二数据项;以及基于针对所述关键字的所述特定值的所述规范的转变,根据所述可执行逻辑的、被所述规范指定为能够在所述第二状态下执行的一个或多个部分来处理所述第二数据项,其中所述可执行逻辑的、能够在所述第二状态下执行的所述一个或多个部分与所述可执行逻辑的、能够在所述第一状态下执行的所述一个或多个部分不同。
在一般方面60中,描述了存储用于根据规范来处理数据的流中的数据项的指令的一个或多个机器可读硬件存储装置,所述规范与关键字相关联并且表示用于处理所述数据项的可执行逻辑,其中,数据项与所述关键字的值相关联,针对所述关键字的多个值而保持所述规范的状态,所述指令能够由一个或多个处理装置执行以进行包括以下的操作:访问所述规范,其中所述规范的状态表示所述可执行逻辑的、能够在该状态下执行的一个或多个部分;接收所述数据项中的第一数据项,其中所述第一数据项与所述关键字的特定值相关联;识别针对所述关键字的所述特定值的第一状态;根据所述可执行逻辑的、被所述规范指定为能够在所述第一状态下执行的一个或多个部分来处理所述第一数据项;识别针对所述关键字的所述特定值的、从所述规范的所述第一状态向所述可执行逻辑的一个或多个其它部分能够执行的第二状态的转变;接收与所述关键字的另一值相关联的中间数据项,其中该另一值与所述关键字的所述特定值不同、并且与所述关键字的所述特定值不相关联;识别与针对所述中间数据项的所述关键字的所述另一值相关联的所述规范的给定状态;根据所述可执行逻辑的、被所述规范指定为能够在所述给定状态下执行的一个或多个部分来处理所述中间数据项;接收所述数据项中、在所述流中比所述第一数据项和所述中间数据项靠后且也与所述关键字的所述特定值相关联的第二数据项;以及基于针对所述关键字的所述特定值的所述规范的转变,根据所述可执行逻辑的、被所述规范指定为能够在所述第二状态下执行的一个或多个部分来处理所述第二数据项,其中所述可执行逻辑的、能够在所述第二状态下执行的所述一个或多个部分与所述可执行逻辑的、能够在所述第一状态下执行的所述一个或多个部分不同。
在一般方面61中,描述了一种用于根据与关键字相关联的规范来处理数据的流中的数据项的数据处理系统所实现的方法,其中,数据项与所述关键字的值相关联,针对所述关键字的各个值而保持所述规范的状态,所述规范表示数据存储系统中所存储的可执行逻辑,所述方法包括:访问表示所述可执行逻辑的规范,其中针对所述关键字的特定值的所述规范的状态指定所述可执行逻辑的、能够在该状态下执行的一个或多个部分;通过输入装置或端口来接收数据的流中的数据项;针对所述流中的所述数据项中的第一数据项,识别针对与所述数据项中的该第一数据项相关联的所述关键字的值的所述规范的第一状态;利用所述数据处理系统,根据所述可执行逻辑的、在所述规范中被表示为与所述第一状态相关联的一个或多个部分来处理所述数据项中的所述第一数据项,所述处理包括:使得显示所述规范的一个或多个部分;对所述数据项中的所述第一数据项应用所述可执行逻辑的所述一个或多个部分以获得结果数据;以及使得与所显示的所述规范的所述一个或多个部分中的至少一个部分一起显示所述结果数据的至少一部分。
附图说明
图1A和4是流程图的图。
图1B是流程图实例的图。
图2和3是用于处理关键字数据的系统的图。
图5是处理关键字数据记录的图。
图6~10是示例性图形用户界面。
图11~15是示例性处理的图。
具体实施方式
与本发明一致的系统处理在数据流中彼此时间上分离的关键数据项,例如,经由分组化网络的网络连接而传入的数据项(包括例如分组化数据)。一般地,关键数据项包括与关键字(例如,标识符)相关联的数据项。关键字可以是值。根据规范来处理关键数据项,其中该规范表示可执行逻辑并且基于由对先前数据项执行可执行逻辑所达到的状态来指定可执行逻辑的各种状态。一般地,可执行逻辑包括源代码和其它计算机指令。
规范还指定关键字。根据规范来处理与该关键字相关联的数据项。即,基于关键字,系统进行基于关键字的处理,其中在该处理中,基于该关键字的各个值来匹配和评价数据项。针对该关键字的各唯一值,系统针对关键字的该值发起规范的实例。通过这样做,在流中彼此时间上分离、且各自包括关键字的该值的数据项以独立于包括关键字的另一值的数据项的处理的方式进行处理。例如,通过对数据项执行可执行逻辑来对数据项应用规范的可执行逻辑,以获得结果数据,其中所述规范与具有同该数据项相关联的关键字相同的值的关键字相关联。一般地,规范的实例包括例如通过执行规范中所表示的可执行逻辑、并且针对关键字的各唯一值而保持可执行逻辑的状态来具体实现针对关键字的唯一值的规范。系统例如通过存储器内数据网格(或其它数据结构)来保持各实例的状态,其中关键字的各值是指示出针对关键字的该值的图的执行状态的关联数据,如以下进一步详细所述。一般地,存储器内数据网格可以包括存在于随机存取存储器(RAM)中的数据结构,并且分布在多个服务器或系统中。
存在各种类型的关键数据项,例如,事件和记录等。一般地,事件包括表示特定事件或其不存在的数据记录(例如,采用预定格式)。虽然这里所述的技术参考数据记录的处理,但是这些技术同样适用于处理事件。数据记录还包括多个字段。在示例中,一个字段可以与规范的关键字相对应。在该示例中,规范指定哪个字段是关键字字段(例如,包括规范的关键字的值的字段)。在另一示例中,关键字基于各种不同的数据,包括例如数据记录中的多个字段的值、以及存储在数据存储库中且与数据记录的字段中所包括的特定标识符相关联的数据等。
在示例中,规范通过包括需要时间上分离的多个数据记录(例如,事件)作为输入的规则来表示复杂事件处理(CEP)所用的可执行逻辑。一般地,复杂事件处理包括:接收在不同时间点发生的多个数据记录,以及根据这多个数据记录来推断模式、数据记录或状态。在该示例中,规范包括具有多个节点的图(例如,流程图或数据流图)。图中的各节点表示可执行逻辑的一个或多个部分,其中这一个或多个部分转而与规范的一个或多个部分相对应。例如,节点包括生成可执行逻辑的一个或多个逻辑表达式(以下称“逻辑”)。在另一示例中,在可执行逻辑处于特定状态的情况下,节点与该可执行逻辑的一个或多个特定部分相对应。
一般地,这里所述的“图”可被实现为数据流图,并且这里所述的方法或处理可以由计算系统执行,该计算系统包括:开发环境,其连接至数据存储,其中开发环境被配置为建立与用于实现对从一个或多个输入数据集通过处理图组件的图流向一个或多个输出数据集的数据项进行的基于图的计算的数据流图相关联的数据处理应用,其中数据流图由数据存储中的数据结构指定,数据流图具有由数据结构指定并且表示利用一个或多个链接所连接的图组件的多个节点,链接由数据结构指定并且表示图组件之间的数据流;运行时环境,其连接至数据存储并且托管在一个或多个计算机上,该运行时环境包括预执行模块,该预执行模块被配置为读取所存储的指定数据流图的数据结构、并分配和配置用于对由该预执行模块分配给数据流图的图组件进行计算的计算资源(诸如进程等),该运行时环境包括执行模块,该执行模块用以调度和控制所分配的进程的执行以使得执行根据方法或处理的下述操作中的一个或多个操作。
参考图1A,规范1包括具有节点2a~2g的流程图2。一般地,图包括用于处理数据记录的模板。该模板包括用于对输入数据记录作出反应并产生输出数据记录(例如,基于规范中所包括的逻辑而生成的数据记录)的逻辑的图形单元。一般地,逻辑的图形单元包括至少部分以图形方式(例如,通过将各个节点从模板(未示出)拖放至用于建立图的窗口)生成的逻辑。在示例中,节点包括用于指定如何处理输入数据记录、如何设置可执行逻辑所使用的变量的值、以及例如在满足逻辑所指定的条件时要生成哪些输出数据记录等。在示例中,能够利用节点的逻辑中所使用的参数和/或变量的用户输入值来对节点进行编程。
图本身是可执行的,这是因为节点中的逻辑被编译为可执行逻辑、并且各节点与该可执行逻辑的一个或多个部分相对应。例如,系统通过将节点中的逻辑编译为可执行逻辑来对规范(以及/或者规范中的图)进行变换。由于图本身是可执行的,因此图本身能够处理数据记录并且能够停止、开始和中止。系统还例如通过跟踪当前正在执行节点2a~2g中的哪个节点来保持流程图2的状态。流程图2的状态与流程图2所表示的可执行逻辑的状态相对应。例如,流程图2中的各节点表示可执行逻辑的特定状态(其中能够在该状态下执行可执行逻辑的一个或多个部分)。在正针对关键字的多个值执行流程图2的情况下,系统例如通过保持各实例的状态来针对关键字的各值保持流程图2的状态,如以下进一步详细所述。在该示例中,流程图2包括状态转变图,其中,各传入数据记录驱动节点之间的转变,并且基于通过处理先前的数据记录所达到的状态来评价数据记录。流程图2中的节点之间的链接表示逻辑的时间流。
节点2a表示可执行逻辑的开始。在完成节点2a之后,流程图2的状态转变为节点2b,其中节点2b表示可执行逻辑的一个或多个其它部分。节点2b包括等待节点(以下称等待节点2b)。等待节点2b表示等待状态,其中可执行逻辑的(与等待节点2b相对应的)一部分等待满足一个或多个条件的输入数据记录。在示例中,等待状态可以是流程图2的另一状态的一部分,例如系统执行等待节点(以实现等待状态)、然后执行一个或多个其它节点的状态。在完成等待节点2b所表示的可执行逻辑的一部分之后,系统退出等待状态并且执行节点2c,其中该节点2c表示用于实现决策的可执行逻辑。在该示例中,节点2c包括决策节点。一般地,决策节点包括包含用于执行决策的逻辑(例如,评价为布尔值的逻辑)的节点。
基于决策的结果,流程图2的状态转变为节点2g(使状态转变回节点2a)或节点2d(另一等待节点)。在完成等待节点2d所表示的可执行逻辑的一部分之后,流程图2的状态转变为节点2e,其中该节点2e包括发送节点。一般地,发送节点包括表示用于使数据传输至另一系统的可执行逻辑的节点。在完成执行节点2e所表示的可执行逻辑的一部分之后,流程图2的状态转变为节点2f,其中该节点2f包括已完成节点。一般地,已完成节点表示可执行逻辑的执行完成。
在示例中,等待节点表示状态之间的转变,例如,从一个状态向另一状态的转变,其中该另一状态的开始是等待节点。在该示例中,流程图2与状态转变图不同,这是因为并非流程图2中的每个节点都代表表示状态转变的等待节点。相反,一些节点表示(例如在流程图2已处于特定状态的情况下)要进行的动作。在一些示例中,系统处理流程图2以生成状态机图或状态机指令。
在该示例中,流程图2包括两个状态:由节点2b、2c、2g表示的第一状态、以及由节点2d、2e、2f表示的第二状态。在该第一状态中,系统等待(如节点2b所表示的)特定数据记录,然后执行节点2c,其中该节点2c转而导致向第二状态(其开始由节点2d表示)的(规范1和/或图2的)转变、或者导致节点2g的执行。一旦处于第二状态,系统再次等待(如节点2d所表示的)特定数据记录,然后执行节点2e、2f。通过包括除等待节点以外的节点,流程图2包括数据记录的时间处理的逻辑图。在该示例中,流程图2包括链接2i,其中该链接2i表示流程图2从第一状态向第二状态的转变、并且还表示数据从节点2c向节点2d的流动。
流程图2还包括节点2a、2b之间的链接2j以及节点2b、2c之间的链接2k,以表示针对与节点2a、2b、2c相对应的第一状态下的可执行逻辑的一部分的用户指定执行顺序。在该示例中,第一状态下的可执行逻辑的一部分(以下称“第一状态可执行逻辑”)包括语句(例如,逻辑语句和指令等(这里统称为“语句”,但并非限制性地))。一般地,执行顺序包括执行可执行逻辑和/或语句的顺序。节点2a、2b、2c中的各节点与这些语句中的一个或多个语句相对应(例如,与第一状态可执行逻辑的一个或多个部分相对应)。如此,链接2j通过表示为系统在执行节点2b所表示的第一状态可执行逻辑中的语句之前执行节点2a所表示的第一状态可执行逻辑中的其它语句,来表示第一状态可执行逻辑的执行顺序。链接2k也通过表示为系统在执行节点2c所表示的第一状态可执行逻辑中的语句之前执行节点2b所表示的第一状态可执行逻辑中的其它语句,来表示第一状态可执行逻辑的执行顺序。
规范1还包括关键字2h,该关键字2h标识为流程图2处理包括关键字2h、或者与关键字2h相关联的数据记录。在该示例中,自定义标识符(ID)用作关键字。关键字2h可以与数据记录的一个字段(诸如subscriber_ID字段、customer_ID字段和session_ID等)相对应。在该示例中,customer_ID字段是关键字字段。对于特定数据记录,系统通过识别针对该数据记录的关键字字段的值来确定针对该数据记录的关键字的值。
在该示例中,流程图2订阅具有指定类型(例如,在配置流程图2时指定)的数据记录。在该示例中,流程图2订阅包括关键字2h的数据记录。在该示例中,流程图2和数据记录共享关键字。一般地,流程图通过包括用以处理包括流程图的关键字的数据记录的逻辑,来订阅一些类型的数据记录。当数据记录处理开始时,系统例如通过针对关键字的各个新值保持(流程图中所表示的)可执行逻辑的状态,来针对流程图开始关键字的各个新值所用的流程图实例。系统通过将流程图实例(以及因此底层可执行逻辑)配置为对特定关键字值的数据记录进行响应,来进行数据记录处理。在示例中,流程图订阅客户短消息服务(SMS)数据记录。针对特定客户ID的流程图实例管理该客户的数据记录。流程图实例可以与传入数据记录中遇到的客户ID一样多。
参考图1B,图表7示出例如由系统根据流程图2(图1A)所生成的流程图实例3、4、5,以及数据记录6a、6b、6c。即,针对数据记录6a、6b和6c中所检测到的各个新关键字创建流程图2的新的副本或实例。
流程图实例3、4、5各自与“customer_id”关键字相关联。流程图实例3处理在其“customer_id”字段中包括值“VBN3419”的数据记录,其中在该示例中,“customer_id”字段是关键字字段。流程图实例4处理在其“customer_id”字段中包括值“CND8954”的数据记录。流程图实例5处理在其“customer_id”字段中包括值“MGY6203”的数据记录。在该示例中,系统不会针对各流程图实例重新执行可执行逻辑。相反,系统执行可执行逻辑,然后通过保持针对关键字的各个值的状态来实现流程图实例。因此,“处理数据记录的流程图实例”的示例是执行(流程图所表示的)可执行逻辑、保持针对关键字的各个值的状态、以及(基于针对关键字的特定值的状态机的状态)处理与关键字的该特定值相关联的数据记录的系统。
在该示例中,流程图实例3包括节点3a~3g,其分别与图1A中的节点2a~2g相对应。流程图实例4包括节点4a~4g,其分别与图1A中的节点2a~2g相对应。流程图实例5包括节点5a~5g,其分别与图1A中的节点2a~2g相对应。
流程图实例本身是可执行的。在系统接收到与关键字的特定值相关联的输入数据记录之后,针对关键字的该特定值的流程图实例例如通过系统执行可执行逻辑的与流程图实例相对应(或者与流程图实例的一个或多个节点相对应)的一个或多个部分,来处理输入数据记录。流程图实例继续处理输入数据记录,直到输入数据记录到达已完成节点或等待节点为止。在该示例中,流程图实例例如通过系统继续处理输入数据记录直到到达可执行逻辑的与已完成节点或等待节点相对应的部分为止,来继续处理输入数据记录。如果输入数据记录到达等待节点,则流程图实例暂停,直到经过一定量的时间或者适当的新输入数据记录到达为止。一般地,适当的数据记录包括满足(例如,包括在节点的逻辑中的)一个或多个指定条件或标准的数据记录。如果输入数据记录到达已完成节点,则流程图实例的执行完成。
流程图实例具有其本身的生命周期。随着数据记录到达,流程图实例的当前状态或状况发生改变:数据记录触发决策、或返回至流程图实例的开始、或消息被发送至客户。当数据记录到达已完成节点时,针对客户的流程图实例结束。
在该示例中,系统针对值为“VBN3419”的关键字字段(例如,customer_id=VBN3419)开始流程图实例3。流程图实例3处理包括customer_id“VBN3419”的数据记录6a、6b、6c的子集。在该示例中,流程图实例3处理在其customer_id关键字字段中具有值“VBN3419”的数据记录6a。流程图实例3的节点3a、3b、3c处理数据记录6a。流程图实例3的当前状态是等待数据记录的状态,如节点3d的虚线所示。在到达节点3d时,流程图实例3等待customer_ID=VBN3419的另一数据记录以通过流程图实例3的节点3d、3e、3f来进行处理。
系统针对值为“CND8954”(例如,customer_id=CND8954)的关键字开始流程图实例4。流程图实例4处理包括customer_id为“CND8954”的数据记录6a、6b、6c的子集。在该示例中,流程图实例4包括等待节点4b和4d。各数据记录只能满足针对各流程图实例具有一个等待节点的条件。因此,流程图实例4通过节点4b到节点4d来处理customer_id=CND8954的数据记录6b,然后在进入节点4f之前等待具有相同关键字的第二数据记录。系统针对值为“MGY6203”(例如,客户ID=MGY6203)的关键字开始流程图实例5。流程图实例5处理包括customer_id“MGY6203”的数据记录6a、6b、6c的子集。在该示例中,流程图实例5通过节点5b~5d来处理customer_id=MGY6203的数据记录6c,然后在进入发送了消息的节点5e之前等待具有相同关键字的第二数据记录。在该示例中,系统不在非等待节点处停止,因此不在节点5e处停止,而是发送消息然后进入节点5f。
在图1B的变形中,系统针对单个关键字值多于一个的流程图实例。例如,针对同一客户,可以存在具有不同开始和结束日期的多个流程图实例,或者针对同一客户,可以存在用于不同营销活动的多个流程图实例。
在该示例中,系统通过在数据存储库或存储器内数据网格中存储状态数据(例如,指示出针对各实例当前正在执行哪个节点的数据)来保持实例的状态。一般地,状态数据包括指示状态的数据。在该示例中,实例与关键字的值相关联。数据存储库或存储器内数据网格存储关键字的值。系统通过存储针对关键字的各个值的状态数据来保持实例的状态。在完成处理关键字的特定值的数据记录之后,系统更新数据存储库中的状态数据,以指定(流程图2中的)下一节点表示关键字的该值的当前状态。然后,当另一数据记录到达时,系统在数据存储库中查找针对关键字的该值的当前状态,并且执行可执行逻辑的、与表示针对关键字的该值的可执行逻辑的当前状态的节点相对应的部分。
参考图2,联网环境10包括用于基于根据关键数据记录之前的处理所达到的状态来处理关键数据记录的环境。联网环境10包括用于处理数据记录的系统11、以及接收数据记录的数据源20。这些数据记录中的一个或多个数据记录可以是数据项的一部分,使得所接收到的一个或多个数据记录是以一个或多个数据项的形式接收到的。在该示例中,数据源20(通过一个或多个网络(未示出))将实时数据流12中的数据记录14、16、18发送至系统11。如此,系统11间歇性地接收数据记录14、16、18或其它数据记录(未示出)中的一个或多个。数据记录14、16、18中的各数据记录可以彼此在时间上分离,使得例如数据记录14首先到达系统11,数据记录16(例如,通过在实时数据流12中定位在数据记录14之后)接着到达系统11,以及数据记录18(例如通过在实时数据流12中定位在数据记录16之后,其中数据记录16在实时数据流12中定位在数据记录18之前且数据记录14之后)接着到达系统11。数据记录14、16、18中的各数据记录包括一个或多个字段(例如,客户ID所用的字段、以及账户ID所用的字段等)。在该示例中,数据记录18包括具有值24的关键字字段22。
系统11包括用于检测数据记录的检测引擎26、用于针对一个或多个数据记录执行可执行逻辑48的执行引擎44、用于基于对数据记录执行可执行逻辑48的结果而发起一个或多个动作的动作引擎53、以及用于运行时监视和控制的控制引擎54。可执行逻辑48被存储在诸如系统11等的数据存储系统中。在该示例中,数据存储库28包括表示可执行逻辑48、可执行逻辑48的一个或多个状态、以及可执行逻辑48的状态之间的转变的规范45。
规范45包括可执行逻辑48的可显示图形表示。存在各种类型的可显示图形表示,包括例如图和流程图等。在该示例中,规范45包括具有节点47、49、51、55的流程图43。节点表示可执行逻辑48的特定部分,其中可执行逻辑48的该特定部分能够在其处于规范45所指定的特定状态的情况下执行。因此,流程图43提供了用于执行可执行逻辑48的模板。在该示例中,系统11将规范45的流程图43中的逻辑编译为可执行逻辑48,其中可执行逻辑48的执行使系统11对输入数据记录作出反应并产生输出数据记录。
规范45还指定了流程图43的关键字(未示出)。在该示例中,关键字字段22与流程图43的关键字相对应。针对关键字字段的各个值,执行引擎44与针对关键字字段的其它值的数据记录无关地处理针对关键字字段的该值的数据记录或数据项。为此,执行引擎44针对实时数据流12的数据记录中所包括的(关键字字段22的)各唯一值而发起流程图43的实例。在该示例中,执行引擎44针对数据记录14、16、18中所包括的关键字的值分别发起实例23、25、46。针对流程图43的各实例,系统11通过跟踪该实例中的正执行的节点的当前位置来保持针对该实例的可执行逻辑的状态。当前位置指定当前正在执行图中的哪个节点。系统11通过执行节点所表示的可执行逻辑的一个或多个部分来执行该节点。一般地,当前位置表示可执行逻辑的当前状态。在示例中,数据记录之间的当前位置仅仅是等待节点,这是因为系统仅在等待节点处停止而在非等待节点处不停止。在该示例中,其它当前位置是瞬时的,这是因为当数据记录进入时,系统在图中按顺序运行所有节点直到下一等待节点(或已完成节点)为止,然后通过存储指示该当前位置的数据来记住该当前位置。
系统11通过将节点数据项30、38、40分别与值24、32、36相关联地存储在数据存储库28中,来跟踪流程图43的各实例23、25、46的当前位置。节点数据项指定当前正在执行(规范45的实例中的)哪个节点,例如由此指定图的实例的状态和可执行逻辑的状态。值24、32、36中的各值与关键字字段22的唯一值相对应。因此,值和节点数据项之间的关联指定了针对该值所发起的流程图43的实例的当前位置。在该示例中,针对数据记录18中所包括的值24而发起实例46。
数据记录16包括关键字字段22的值32。针对值32而发起实例23。值24在数据存储库28中与节点数据项30相关联以指定实例46的当前位置是节点47。值32在数据存储库28中与节点数据项38相关联以指定实例23的当前位置是节点49。在该示例中,数据记录14包括关键字字段22的值36。针对值36而发起实例25。值36在数据存储库28中与节点数据项40相关联以指定实例25的当前位置是节点47。
在该示例中,系统11通过输入装置或端口(未示出)来从一个或多个数据源20接收数据记录18。系统11的检测引擎26分析数据记录18以判断为数据记录18与关键字字段22的值24相关联。检测引擎26在数据存储库28中(或者在存储器内数据网格(未示出)中)查找针对关键字字段22的值24的规范的状态。在该示例中,值24与节点数据项30相关联以指定节点47是规范45的实例46的当前位置。因此,针对关键字字段22的值24的规范45的状态是节点47。检测引擎26向执行引擎44发送数据记录18和节点数据项30。基于节点数据项30,执行引擎44识别出规范45的实例46的当前位置是节点47。在该示例中,可执行逻辑48的特定部分与节点47相对应。执行引擎44通过对(或关于)数据记录18执行可执行逻辑48的特定部分(例如,对数据记录18应用可执行逻辑48的特定部分)来处理数据记录18。
基于对数据记录18执行可执行逻辑48的一个或多个部分,执行引擎44生成触发52。一般地,触发包括输出数据记录。例如,触发包括使SMS消息被发送至客户的数据记录。为此,执行引擎44生成具有要发送的消息的详情的输出数据记录,并且动作引擎53使输出数据记录变成SMS消息。在该示例中,触发52被发布到队列50以供动作引擎53处理和执行。
基于数据记录18的处理,执行引擎44还将流程图43的实例46的当前位置更新为节点49。执行引擎44通过生成更新后的节点数据56来这样做,其中更新后的节点数据56指定实例46的当前位置。基于更新后的节点数据56,执行引擎44将指令发送到数据存储库28以利用指定实例46中的当前位置是节点49的内容来更新节点数据项30。执行引擎44还生成结果数据58,该结果数据指示出对数据记录18执行可执行逻辑48的由节点47表示的一个或多个部分的结果。执行引擎44向控制引擎54发送更新后的节点数据56(与值24相关联)和结果数据58(也与值24相关联)。
在该示例中,控制引擎54生成用于显示流程图43的实例46的数据,以测试和实时监视包括关键字字段22的值24的数据记录。在该示例中,节点49可视地突出显示以指示出该节点49表示实例46的当前位置。控制引擎54还生成用于利用实例46显示结果数据58的数据。结果数据58可以覆盖在实例46的一个或多个部分上。在另一示例中,控制引擎54所生成的数据用于利用节点47(例如,与节点47并列或接近地)显示结果数据58。在该示例中,控制引擎54针对流程图43的各节点(和/或针对流程图43的各实例)生成结果数据,并在显示流程图43(和/或流程图43的各实例)时将结果数据与该节点并列地显示在流程图43(和/或流程图43的各实例)中。在该示例中,结果数据指示出通过各节点进行处理的多个数据记录。在另一示例中,结果数据指示出例如在针对关键字字段的特定值处理数据记录时,特定节点处理哪些单独的数据记录。
在处理数据记录18之后,执行引擎44可以等待也包括关键字字段22的值24的一个或多个后续数据记录。随着执行引擎44处理针对值24的各数据记录时,可执行逻辑48在规范45所定义的状态之间转变。根据规范45所指定的可执行逻辑48的一个或多个部分来处理这些后续数据记录。
在变形中,系统11基于所接收到的数据记录的一个或多个数据记录字段中的一个或多个值(例如,而不是与特定数据记录字段即关键字字段的值相对应的关键字的值)来确定流程图43的关键字的值。在该示例中,系统11接收(或配置有)用于指定关键字的值中使用了一个或多个数据记录字段中的哪个数据记录字段的指令。在另一示例中,系统11接收数据记录并解析该数据记录以获得这些指定字段的值。基于这些指定字段的值,系统11例如通过使这些指定字段的值增加、通过修改这些指定字段的值、以及通过向数据存储库查询与这些指定字段的值中的一个或多个值相关联的另一值等,来确定或生成关键字的值。
在示例中,图的关键字是客户账户ID。在该示例中,数据存储库28与其它数据相关联地存储客户的客户账户ID(例如客户ID等)。在该示例中,数据记录不包括客户账户ID的数据记录字段。相反,数据记录包括客户ID的数据记录字段(“客户ID数据记录字段”)。在该示例中,系统11执行指令以基于客户ID数据记录字段来确定客户账户ID。系统11解析数据记录以获得客户ID数据记录字段的值。系统11使用该解析值来向数据存储库28查询与该解析值相关联的客户账户ID。作为响应,数据存储库28返回(与解析值相关联的)客户账户ID的值。系统11将关键字的值设置为客户账户ID的值。
在另一示例中,图的关键字包括来自多个数据记录字段的值。在该示例中,系统11将这些值联接在一起以产生关键字的值。在又一示例中,图的关键字包括来自与数据存储库中所存储的其它数据(诸如客户账户数据、客户简档数据、以及客户购买数据等)联接的一个或多个数据记录字段的值。在又一示例中,(例如,如数据存储库28中所存储的)关键字的值包括预定义位数。在该示例中,关键字的值基于指定数据记录字段的值。数据记录字段保留与关键字所需的位数不同的位数。在该示例中,系统11通过在指定数据记录字段的值之前或之后插入(或删除)预定义位数来生成关键字的值。使用所生成的关键字的值,系统11在数据存储库28中识别与同所生成的关键字的值相对应的(关键字的)值相关联的状态数据(例如,节点数据项)。
参考图3,环境59包括用于实现CEP规则环境(CRE)的系统60。在示例中,系统60包括系统11(图2)或者包括在系统11(图2)中。在示例中,系统60是与系统11相同的系统。在另一示例中,系统60与系统11不同。在该示例中,系统60包括CRE系统。
环境59包括用于例如从外部资源收集一个或多个数据记录(未示出)的收集引擎61。环境59还包括用于发起或执行系统60的一个或多个输出数据记录所指定的一个或多个动作的动作引擎72。在示例中,系统60、收集引擎61和动作引擎72被包括在另一系统(例如,父系统)中。在另一示例中,收集引擎61和动作引擎72各自包括在与系统60不同的系统中并由其实现。在又一示例中,收集引擎61和动作引擎72中的一个或多个包括在系统60中。
在该示例中,收集引擎61将一个或多个数据记录(未示出)发送至输入数据记录队列62。一般地,输入数据记录队列是用于接收输入数据记录的队列。一般地,输入数据记录是表示在系统60、收集引擎61和动作引擎72外部发生的特定事件的数据记录。在示例中,输入数据记录包括指定客户进行电话呼叫或发送交易的数据。在另一示例中,输入数据记录包括指定货币交易的发生的数据。在该示例中,对于收集引擎61所接收到的各数据记录,收集引擎61将该数据记录发布到输入数据记录队列62以供执行引擎78处理。通过这样做,系统60独立于数据库查询和关于数据记录本身的查找来处理数据记录。相对于在数据记录存储在数据存储库中、然后系统60进行数据库查询或查找以检索数据记录的情况下与数据记录处理相关联的延迟,数据记录向队列的这种发布减少了与数据记录处理相关联的延迟。
输入数据记录队列62将一个或多个数据记录发送到执行引擎78。在该示例中,执行引擎78选择从输入数据记录队列62接收到的数据记录63。在该示例中,执行引擎78执行图(未示出)的实例64、65、66。并非限制性地且为了方便的目的,以下将实例64、65、66称为图实例64、65、66。图实例64、65、66中的各图实例与输入数据记录队列62中所包括的数据记录的(关键字的)唯一值相对应。
在该示例中,执行引擎78选择针对数据记录63中所包括的关键字的值而发起的图实例64、65、66其中之一。执行引擎78使用这里所述的技术、根据图实例64、65、66中所选择的一个图实例来处理数据记录63。执行引擎78包括内部数据记录和警报67。一般地,内部数据记录包括从一个图发送到另一个图的数据记录。例如,图(或图实例)可以生成内部数据记录,其中该内部数据记录不被发送到动作引擎72,而是被发送到另一个图(或图实例)。在示例中,各图表示线程进程中的线程。在该示例中,内部数据记录表示在线程之间发送数据的方式。一般地,警报包括(例如,图自身发送的)在将来的预计算时间处到达的预定义类型的数据记录。系统生成警报以执行等待状态。例如,图(或图实例)可被配置为等待一段时间,这被实现为保存在内部数据结构中并且稍后呈现给图的警报。
基于图实例64、65、66中的一个或多个图实例的执行,执行引擎78生成一个或多个输出数据记录,并将这些输出数据记录发布到输出数据记录队列71(例如用于保持输出数据记录的队列)。系统60将输出数据记录队列71中所包括的输出数据记录发送至动作引擎72。一旦动作引擎72接收到输出数据记录,动作引擎72就根据输出数据记录的内容来执行一个或多个动作或生成供执行的一个或多个动作。
执行引擎78包括全局图69。一般地,全局图包括存在一个实例的图。全局图用于操纵全局变量(例如,指示出在实时数据流中所接收到的数据记录中看到的多个不同账户的变量)。一般地,图可以在关键字的上下文中运行,但是存在仅运行一个实例的一些图,即全局图。全局图在执行引擎78内部使用,例如,用作请求/响应同步服务。一般地,请求/响应同步服务包括用于提供对请求的立即响应的服务。
执行引擎78包括图子引擎68,用于例如基于从用户接收到的一个或多个指令以及/或者基于手动状态操纵数据74而开始、停止或调整图(和/或图实例),如以下进一步详细所述。在示例中,执行引擎78还从一个或多个数据存储库(例如,位于环境59外部或者包括在环境59中的数据存储库)检索参考数据70。一般地,参考数据包括与特定关键字或关键字的特定值相关联的数据。例如,客户账户是关键字。在该示例中,参考数据包括客户账户的账户详情。
系统60还包括用于图实例和图的运行时监视(和/或测试)和控制的控制引擎79。在该示例中,控制引擎79表示系统60的运行时环境。追踪指示出执行引擎78内的活动的数据并将其发送到控制引擎79以供运行时监视和/或测试。该追踪数据存储在数据库(未示出)或数据集中,诸如度量存储数据75(存储在数据库中)。控制引擎79生成操作显示数据80,用于在显示装置上呈现图实例的执行的实时可视化、并示出运行执行引擎78的当前统计数据。控制引擎79使用该追踪数据来生成报告数据76,包括例如汇总了图实例64、65、66的行为的各种表格报告。
控制引擎79还例如通过向用户提供用于停止、开始或中止图及其实例的控件(或控件的数据),来控制图和/或图实例64、65、66中的一个或多个图实例的运行。选择这些控件中的一个或多个控件使控制引擎79生成手动状态操纵数据74。一般地,手动状态操纵数据74包括用于手动地操纵(例如,改变)图实例的状态的数据。例如,可以通过重新开始图、暂停图或停止图来手动地改变图实例的状态。在另一示例中,用户能够(例如通过指定图的当前状态来)针对关键字的子集选择图,然后针对这些关键字来改变图的状态。在该示例中,控制引擎79将手动状态操纵数据74发送到图子引擎68,以根据状态操纵数据74来控制图。图子引擎68处理作为用于指定如何操纵运行中的图实例的状态的指令的手动状态操纵数据74。
控制引擎79还包括控制点73。一般地,控制点包括由(生成图的)用户所定义的运行时参数,并用于在运行时改变一个或多个图(或图实例)的行为。执行引擎78读取作为只读变量且还作为全局变量的控制点。在示例中,在用于定义和配置图的用户界面中定义控制点73,并且通过(例如,由操作显示数据80生成的)运行时界面来暴露该控制点73。因为执行引擎78读取作为全局变量的控制点73,所以可以在图运行时改变一个或多个控制点73以改变该图的行为。例如,使用控制点,可以开始或停止各个图,可以改变阈值,以及可以启用或禁用可选逻辑等。基于控制点,可以在不停止图的情况下执行该实时配置。
在该示例中,系统60还被配置用于例如通过进行如下的一个或多个操作来实现可恢复性:保存为了可执行逻辑的状态的可恢复性而正在执行的可执行逻辑的一部分的状态。例如,图的至少一些节点包括使系统60执行如下的检查点操作的逻辑:(例如,通过保存指示出流程图中的当前位置的数据来)在(例如,系统60的)缓冲器中保存可执行逻辑的状态,以实现可执行逻辑的状态的可恢复性。
参考图4所示,规范100包括图表102。一般地,图表102表示以下场景的逻辑:当客户发送文本消息时,如果该客户仍在使用“按文本支付”计划、但是该客户在本月已经发送了足够的文本消息从而使无限制短信计划有吸引力,则系统会向该客户发送建议该客户升级至无限制计划的SMS消息。此外,当系统发送提议时,如果客户通过在一小时内回复SMS消息进行升级,则客户还会入账$10信贷的奖励。否则,客户被指示在web上进行升级。
在该示例中,图表102包括用于实现上述逻辑的节点104~136。系统保持图表102的当前位置。如前所述,当前位置指定当前正在执行哪个节点。在该示例中,系统通过执行节点所表示的可执行逻辑的一个或多个部分来执行该节点。系统通过保持图表102的当前位置数据来保持可执行逻辑和图表102的状态。
开始节点104指定图表102的入口以及逻辑的开始位置。在完成开始节点104所表示的可执行逻辑的一个或多个部分之后,系统将图表102的当前位置更新为等待节点106。在该示例中,等待节点106包括部分106a、106b、106c和106d。部分106a、106b、106c和106d中的各位置对于用户而言是可编辑的,以输入或修改等待节点106所使用的各种逻辑。部分106a、106b、106c中所包括的逻辑由系统编译为可执行逻辑。部分106a指定(等待节点106所表示的)可执行逻辑的一部分所等待的数据记录的名称或类型。在该示例中,“AS”表示账户活动流数据记录。部分106b指定一旦接收到适当类型的数据记录就必须满足的条件。部分106c可以指定超时,例如系统等待指定类型的数据记录的时间量。在该示例中,等待节点106不包括超时。
根据图表102,如等待节点106底部的数据记录缩写106d所指定的,AS数据记录一旦被接收到就根据下一节点(即,决策节点108)的逻辑进行处理。
图表102指定,基于根据决策节点108的逻辑来处理AS数据记录的结果,可执行逻辑转变为可执行逻辑已完成处理数据记录的状态(如已完成节点110所表示)、或者转变为进行AS数据记录的进一步评价的另一状态(如决策节点112所表示)。基于根据决策节点112的逻辑来处理AS数据记录,可执行逻辑转变为其返回到可执行逻辑的开始状态的状态(如节点114所指定)、或者转变为设置了图实例变量的值的状态(如节点116所指定)。一般地,图实例变量包括针对图的各实例具有一个值的变量。
在设置图实例的值之后,系统将图表102的当前位置更新为表示可执行逻辑的如下状态的触发节点118,其中在该状态下,输出数据记录被发送到系统的一部分以作用于输出数据记录。当利用用于发送输出数据记录的逻辑对图表102进行编程时,用户必须识别正在发送哪种输出数据记录类型,并且针对该数据记录类型而填充触发节点118的字段118a、118b、118c。在该示例中,用户想要发送SMS类型的输出数据记录。为此,用户为字段118a选择“SMS”值。字段118b、118c的值也由用户提供。在该示例中,字段118b指定在发送SMS消息时所要使用的电话号码,并且字段118c指定要发送的消息的内容。
在完成触发节点118之后,系统将图表102的当前位置更新为表示如下状态的等待节点120,其中在该状态下,可执行逻辑等待一个或多个附加数据记录(与先前根据等待节点106进行等待的一个或多个数据记录时间上分离)。
在该示例中,等待节点120包括部分120a、120b、120c。部分120a指定等待节点120所表示的可执行部分等待的数据记录的名称或类型。在该示例中,等待节点120表示等待AS数据记录。部分120b指定一旦接收到AS数据记录就必须满足的条件,并且显示一个或多个逻辑表达式(或基于逻辑表达式的可视化)。部分120c指定超时,例如系统等待指定类型的数据记录的时间量。如果在部分120c所指定的时间量期间没有接收到适当的数据记录,则等待将超时,并且图表102的当前位置移动到连接至超时箭头129的等待节点128,从而离开等待块120。在该示例中,等待节点128表示可执行逻辑要等待一天然后转变到决策节点130所表示的状态。基于根据决策节点130的逻辑来评价账户详情的结果,图表102的当前位置被更新为表示执行完成的状态的已完成节点134、或者表示进行发送SMS消息的触发的状态的触发节点132。在完成触发节点132所指定的触发之后,系统更新将当前位置更新为表示执行完成的已完成节点136。
如果在部分120c所指定的时间内接收到另一AS数据记录,则图表102的当前位置被更新为触发节点122,并且可执行逻辑转变为触发节点122所表示的状态,其中向用户的账户申请信贷。在完成触发节点122所指定的触发之后,图表102的当前位置被更新为触发节点124,并且可执行逻辑转变为触发节点124所表示的状态,以向客户发送感谢SMS。在完成触发节点124所指定的触发之后,图表102的当前位置被更新为节点126,从而表示可执行逻辑的执行完成的状态。
规范100还包括图例部分140。在该示例中,图例部分140包括用于指定规范100和图表102所用的关键字的关键字部分142。在该示例中,客户账户ID是关键字。针对关键字的各唯一值(例如,客户账户ID的各唯一值),系统生成图表102的实例,从而针对各客户生成图表102的一个实例。在该示例中,系统保持每个运行中的图实例的当前位置。如此,系统将各客户与图表102的实例进行关联,并且例如通过跟踪各实例的当前位置来保持这些实例中的各实例的状态。
图例部分140还包括外部输入数据记录部分144,其指定作为图表102的逻辑所处理的输入数据记录的数据记录类型。一般地,外部输入数据记录是作为图所表示的可执行逻辑的输入的外部源接收到的数据记录。在该示例中,外部输入数据记录部分144指定账户活动流数据记录是外部输入数据记录。图例部分还包括外部输出数据记录部分146、148,其指定图表102的逻辑生成并输出了哪些类型的数据记录。在该示例中,外部输出数据记录部分146、148分别指定存在SMS和账户修改输出数据记录。
图例部分140包括指示出控制点的控制点部分150。不必停止执行图表102所表示的可执行逻辑以读入控制点的新值。在该示例中,决策节点112包括基于控制点部分150所表示的控制点的逻辑。控制点部分150所表示的控制点包括称为文本提议阈值的数值,该数值包括在决策节点112的逻辑中。该控制点包括客户在被给予提议之前必须发送的文本消息的数量。客户在被给予提议之前必须发送的文本消息的数量被存储在控制点中以允许在不改变或重新开始图表102的情况下改变阈值(例如,文本提议阈值)。
图例部分140包括指示聚合的聚合部分152。聚合包括通过将来自多个数据记录的值组合在一起所计算出的值。聚合与关键字相关联。在一些示例中,图的关键字将与聚合的关键字相匹配。聚合部分152所参考的特定聚合称为本月总文本。针对各个账户(即,关键字的各个值)的这种聚合存在不同的值,并且每当为相应账户发送文本消息时,聚合自动增加。以下进一步详细讨论聚合。
图例部分140还包括表示参考数据的参考部分154。一般地,参考数据包括位于图表102和/或图表102所表示的可执行逻辑外部、并且通过查找操作来访问的数据。参考数据与关键字相关联,其中关键字可以是与图相同的关键字。一些参考数据是全局的,或者不需要关键字,或者通过明确地提供关键字(例如,州邮政编码查找)来参考。
参考图5,图表500示出了在时间T1、T2、T3内的可执行逻辑的状态508、510、512。可执行逻辑由图表102(图4)表示。在该示例中,针对图表102的关键字的各个值而保持可执行逻辑的状态。可执行逻辑包括状态508、510、512,这些状态508、510、512的开始分别由(图4中的)等待节点106、120、128表示。在该示例中,状态508、510、512中的各状态包括等待状态。系统例如通过保持针对关键字的各唯一值的状态来针对图表102的各实例保持可执行逻辑的状态。
在该示例中,系统在第一时间T1处接收数据记录502。数据记录502与关键字的“423-e5f”值相关联。系统根据针对关键字的该值的图实例来处理数据记录502。在到达等待节点106(图4)时,系统将与“423-e5f”值相关联的图实例的当前状态更新为状态508。在该示例中,系统(例如,在数据存储库中)生成指示出状态508的数据和表示关键字值等于423-e5f的数据514之间的关联。通过这种关联,系统指定在时间T1处,值=423-e5f的图实例的当前状态是状态508。在该示例中,链接516可视地指示数据记录502与状态508相关联。在该示例中,规范指定在可执行逻辑处于状态508的情况下可执行的可执行逻辑的一个或多个部分。例如,规范包括与在可执行逻辑处于状态508的情况下可执行的可执行逻辑的一个或多个部分相对应的节点。
系统在第二时间T2处接收数据记录504。数据记录504是系统所接收到的、数据记录502之后且数据记录506之前的中间数据记录。数据记录504与关键字的“453-0rf”值相关联。系统根据针对关键字的该值的图实例来处理数据记录504。在到达等待节点106(图4)时,系统将与“453-0rf”值相关联的图实例的当前状态更新为状态508。在该示例中,系统(例如,在数据存储库中)生成指示出状态508的数据和表示关键字值等于423-e5f、另一关键字值等于453-0rf的数据518之间的关联。通过这种关联,系统指定在时间T2处,值=423-e5f和值=453-0rf的各个图实例的当前状态是状态508。在该示例中,链接520可视地指示数据记录504与状态508相关联。
系统在第三时间T3处接收数据记录506。数据记录506与关键字的“423-e5f”值相关联。系统根据针对关键字的该值的图实例来处理数据记录506。在到达等待节点120(图4)时,系统将与“423-e5f”值相关联的图实例的当前状态更新为状态510。在该示例中,系统(例如,在数据存储库中)生成指示出状态510的数据和表示关键字值等于423-e5f的数据522之间的关联。通过这种关联,系统指定在时间T3处,值=423-e5f的图实例的当前状态是状态510。在该示例中,链接524可视地指示数据记录506与状态510相关联。该系统还生成表示状态508的数据和数据526之间的关联,从而表示在时间T3处,仅具有值=453-0rf的图实例处于状态508。
参考图6,图形用户界面600包括标签602、604、606。一般地,标签包括图形用户界面的可选择部分,其中该可选择部分的选择显示与所选标签相关联的数据。在该示例中,选择标签602,并且图形用户界面600显示与特定抽奖有关的数据,即“抽奖”。在该示例中,图形用户界面600包括用于显示与图表622有关的数据的部分608。部分608包括用于输入和显示指示出图表622的名称的数据的名称字段610。部分608还包括用于输入和显示指示出图表622的图类型的数据的类型字段612。存在各种类型的图,包括例如目标图。一般地,目标图包括用于描述客户进程(例如,单个营销活动)的图,并且是逻辑上表示用户的CEP进程的顶级图。部分608还包括控制部分614,其具有用于指定图表622是私人的还是公开可见的、图表622是否是无等待的(例如,图表622是否包括等待节点)、以及图表622是否是全局图的控制。部分608还包括关键字类型字段616,用于输入和显示哪种类型的关键字值用于图表622。在该示例中,关键字是账户标识符(例如,账户编号等)。部分608还包括内置值控件618,用于显示指示出例如在正以步进通过(例如,处理)(针对关键字的特定值的)各个数据记录的测试模式执行图时、关键字的哪个特定值(_key Value)与当前正处理的数据记录相关联的数据。一般地,步进通过数据记录包括顺次处理按顺序排列的数据记录,例如,使得在按该顺序处理下一个数据记录之前显示处理各数据记录的结果。一般地,测试模式包括利用测试数据(例如,预定义数据集)执行图的操作模式。通过在测试模式下执行图,系统进行时间序列的测试,例如,测试被表达为图的规则或决策表,其中利用时间上分离的数据记录在一段时间内完成测试。内置值控件618还显示指示出例如在图正以测试模式运行时针对关键字的特定值当前正在执行的图实例的ID(ChartID)的数据。在该示例中,内置值控件618显示“运行”状况以指示图正在实时运行,例如而不是以步进通过(例如,处理)(针对关键字的特定值的)各个数据记录的测试模式运行。部分608还包括自变量部分620,用于在存在图的参数的情况下显示图的自变量。一般地,自变量包括参数。例如,图可以包括参数,其中这些参数的值在单独的文件中指定并被读入图中。例如,图中的逻辑表达式可以包括一个或多个参数。在运行时,系统访问用于指定这些参数的值的文件,并在逻辑表达式中包括这些值。通过这样做,系统促进了图和逻辑表达式的重复使用,这是因为这些图和逻辑表达式不包含指定值。相反,这些图和逻辑表达式包括参数,其中可以独立于图和逻辑表达式来指定这些参数的值。
图表622包括规则以及规则的各部分之间的时间关系的视觉表示。在该示例中,图表622包括节点624、626、628、630、632、634。各节点表示规则的一个或多个部分。系统执行图表622以例如针对数据项或数据记录来测试规则执行的精确度。例如,通过执行图表622,系统确定哪些节点(如果存在的话)处理数据记录失败。这种失败可以指示出规则的各部分之间的冲突,或者可以指示出用于指定不太可能满足的条件的规则的一部分。如此,这种失败可以指示出不能精确地处理数据记录或者以不同于目标处理样式或目标的方式处理数据记录的规则。
节点624、626是子图节点。一般地,子图节点包括表示用于调用和执行子图的可执行逻辑的节点。子图包括用于在其它图之间共享逻辑的图,以例如避免必须复制和粘贴图的部分。子图提供了复杂性抽象和混淆。例如,子图可以由技术更高的用户创建,但是然后由不必暴露于更复杂实现详情的技术较低的用户使用(调用)。从调用图调用子图,其中该调用图包括用于调用(例如,转移控制)到子图的图。调用图包括各种类型的图,包括例如目标图或另一子图。
在该示例中,节点628是等待节点(以下称为等待节点628),并且节点632、634是已完成节点。等待节点628被配置为等待满足三个条件628a、628b、628c至少之一的任意类型的数据记录。条件628a要求数据记录是指示出大于$2500的交易的货币交易(MT)外部输入数据记录。条件628b要求数据记录是电子报表类型的内部(intr)数据记录。条件628c要求数据记录是账单支付类型的内部数据记录。
图表622分别包括链接645、647、649、659和相关标记651、653、655、657。一般地,标记包括满足条件的视觉表示。在该示例中,满足条件628a的数据记录经由具有标记651的链接645从等待节点628遍历到节点630。该系统使得在图形用户界面600中显示从等待节点628(例如,其表示可执行逻辑的等待状态)向节点630(例如,其表示可执行逻辑或者可执行逻辑的一个或多个部分的另一状态)的转变的视觉表示。系统可以通过可视地突出显示链接645来显示(或使得显示)转变的视觉表示。
在该示例中,满足条件628b的数据记录经由具有标记653的链接647从等待节点628遍历到节点630。在该示例中,满足条件628c的数据记录经由具有标记655的链接649从等待节点628遍历到节点630。如果等待节点628由于超时而终止,则系统将图表622的当前位置更新为已完成节点632,其中该已完成节点632通过具有标记657的路径(即,链接659)而连接到等待节点628。
图表622包括用以指定图表622中的哪个节点当前正在处理数据记录的状况指示符629。在该示例中,如与等待节点628并列(例如,靠近等待节点628)显示的状况指示符629所指定,系统当前正在执行等待节点628。图表622包括监视点636、638、640、642、644、646、648、650、652、654。一般地,监视点表示用于计算例如在运行时或者在模拟和测试期间自动收集到的特定度量的指令。监视点由用户定义,并由用户插入到图中。监视点具有名称,并且该名称在图中是唯一的。在示例中,系统使用监视点,以例如通过监视有多少数据记录通过特定节点来测试规则的精确度。如果没有数据记录通过节点,则系统利用该节点中所包括的逻辑来识别潜在问题,并且可以提示用户检查逻辑并潜在地调整逻辑。在该示例中,监视点在图表622中与正被监视的节点并列显示,以例如提供测试该节点的结果的视觉指示。
在示例中,监视点允许用户对运行时可用的数据进行计算,使得运行时数据可被包括在度量中。例如,用户可能想知道有多少高度重视客户(而不是所有客户)占用了特定决策节点的特定分支。为了计算该度量,监视点指示系统在执行图时计算客户是否被高度重视、并将指示出客户是否被高度重视的数据发送回监视点。如果在子图中定义了监视点,则该监视点将与调用图相关联。
监视点附加到连接图表622中的两个节点的箭头,或者附加到等待节点。例如,监视点646与链接645相关联,以例如如下所述通过跟踪遍历链接645的多个数据记录来跟踪满足条件628a的多个数据记录。监视点648、650分别与链接647、649相关联,以跟踪遍历链接647、649的多个数据记录。
图形用户界面600还包括具有标签662、664、666的部分660。标签662使得显示与图表622的控制有关的数据,如以下进一步详细所述。标签664使得显示与图表622中的各个对象的使用有关的数据,如以下进一步详细所。标签666使得显示与监测点有关的数据。标签666包括用于显示表达式信息的部分668、用于显示与同箭头相关联(例如,附加到箭头)的监视点有关的数据的部分670、用于显示与同等待节点相关联的监视点有关的数据的部分674、以及用于显示指示出图和/或图实例的执行的一个或多个结果的度量数据的部分676。
部分668显示用户定义的表达式668a、668b。表达式与名称(例如,“总合格品(Total Qual)”)、指定系统如何计算表达式的值的定义、以及计算并输出的值相关联。在示例中,表达式指定一组参数、一个或多个局部变量、以及/或者用于指定如何聚合和报告监视点的定义。
部分670、674使用户能够例如基于表达式668a、668b来定义监视点。在该示例中,部分670用于指定与箭头相关联的监视点的定义。部分670包括用于指定监视点646的定义的监视点定义672。因此,(由监视点定义672生成的)监视点646包括文本“A 8”以指定该监视点646是与箭头(“A”)相关联的监视点、并且它是第八个这种类型的监视点。监视点定义672指定监视点646的名称(即,“购买的合格品(Qual by Pchs)”),并且还指定分别要由监视点646及相关定义672e~672h跟踪的各个值672i~672l、以及分别用于这些值672i~672的名称672a~672d。值672i指定有多少数据记录遍历了等待节点628和节点630之间的箭头645。在该示例中,值672i例如基于要在监视点646中显示值的部分670中的用户规范而显示在监视点646中。在该示例中,部分670包括用于定义新监视点的一个或多个字段。
部分674包括用于指定监视点642的定义的监视点定义,其中监视点642与由该监视点642中的“W”所指定的等待节点628相关联。在该示例中,部分674中的监视点定义指定待处理等待块计数674a、等待块延迟计数674b和等待块延迟平均值674c。在该示例中,待处理等待块计数674a指定当前位置与等待节点628相对应的多个图。一般地,节点包括块。在该示例中,等待块延迟计数674b指定在指定时间或报告间隔期间满足等待节点628(等待节点628未超时)的实例的数量。在该示例中,等待块延迟平均值674c指定等待节点628的平均数据记录处理延迟。一般地,等待节点的平均数据记录处理延迟包括指示出等待节点628等待满足条件628a、628b、628c中的一个或多个条件的数据记录、并且处理满足条件628a、628b、628c中的一个或多个条件的数据记录的平均时间的值。在该示例中,监视点642例如基于部分674中的监视点642的用户配置来显示待处理等待块674a的值(即,3173)。特别地,部分674包括供用户指定在监视点642中显示哪些值的一个或多个控制或输入字段(未示出)。
部分676显示度量,例如活动图度量和已完成图度量等。一般地,活动图度量指定特定图的当前活动(例如,运行)实例的数量。一般地,已完成图指标指定先前处于活动状态但不再处于活动状态的图实例的数量。
在变形中,部分676还显示指示出将数据记录放入输入队列的时间与处理数据记录的时间之间的处理延迟的其它度量。为此,系统为输入数据记录分配摄取时间,例如,将数据记录添加到输入队列(例如,以供处理)的时间。当系统从输入队列读取数据记录时,系统通过从当前时间减去摄取时间来计算处理延迟。系统还通过计算指示出处理延迟的度量的平均值来跟踪平均数据记录处理延迟。在示例中,上述度量包括(针对一组或多个图所处理的数据记录的)全局度量、以及每个图度量。
在一些示例中,系统对例如存储在数据存储库中的多组测试数据项执行图表622。在该示例中,系统选择多组中的一组并使用所选择的一组来模拟近实时测试数据流。系统对模拟流中的测试数据项应用诸如图表622等的图表。在另一示例中,测试数据项是由系统例如从一个或多个外部源接收到的数据项。
参考图7,图形用户界面700显示标签701(其例如可以与标签662相对应)的内容。在该示例中,图形用户界面700显示重置控件702、停止控件703、步进控件704、释放控件706、下一节点控件708、以及用于控制图(例如图6中的图表622)的执行的运行控件710。重置控件702例如在被选择时使图重置。一般地,通过终止当前执行的图实例并将图使用的所有变量设置为具有初始值(例如,零值)来重置图。停止控件703使图的执行停止,例如,至少直到用户指定要再次运行图为止。
步进704通过使得用户能够步进通过(例如,针对关键字的特定值的)数据记录以查看图如何处理这些数据记录来提供短时关注测试。随着系统步进通过数据记录,系统利用哪个节点正在处理哪个数据记录以及该数据的值(或内容)的视觉指示来更新图。例如,图的逻辑(例如,其体现规则)处理大量数据记录。在测试期间,用户需要查看与针对给定关键字值的决策(例如,图中遍历的路径)相关联的记录。通过使用步进控件704,系统步进通过(针对关键字的特定值的)各数据记录并且可视地突出显示图中的哪个节点当前正在处理数据记录以及正被处理的数据记录(以及先前处理的数据记录)的值和内容,如以下进一步详细所述。释放控件706使系统释放数据记录。一般地,数据记录的释放包括数据记录的处理和/或评价,例如,使得图可以继续处理新的或传入的数据记录。下一节点控件708使系统改变图的状态,使得状态进入图中的下一节点。该下一节点控件708的选择向系统发送指令以例如在测试期间覆盖图的当前状态并强制图前进到下一节点,如下所述。运行控件710使图开始或恢复执行。
图形用户界面700还显示状况指示符,诸如停止指示符716、步进测试指示符714和运行指示符712。在该示例中,例如当在图形用户界面700中可视地突出显示停止指示符716时,该停止指示符716指定图的执行当前停止。当在图形用户界面700中可视地突出显示时,步进测试指示符714指定当前正步进通过图以例如基于步进控件704的选择来进行测试。例如当在图形用户界面700中可视地突出显示运行指示符712时,运行指示器712指定图当前正在执行。
图形用户界面700还包括经过时间部分718,其中该经过时间部分718包括时间条718a以可视地指定在图的执行期间已经经过的时间量。图形用户界面700还包括运行图部分720,其中该运行图部分720指定系统当前正在执行哪些图。在该示例中,运行图部分720指定图表720a正在运行。对于图表720a,运行图部分720包括控件720b,其中该控件720b的选择使系统识别并显示用于指定当前正在执行图表720a中的哪个节点的状况指示符。图形用户界面700还包括用于显示各种输入数据记录所用的标记、以及这些数据记录所用的处理时间(例如,执行图中的节点处理数据记录所花费的时间量)和相关输入数据记录所用的输出触发的部分722。
参考图8,图形用户界面800显示标签802(例如,其可以与图6中的标签664相对应)的内容。图形用户界面800包括用于指定一个或多个图(例如,图6中的图表622)所使用的控制点(和相关值)的部分804。图形用户界面800包括用于指定图所使用的变量(和相关值)的部分806。变量是分配值,其可以使用表达式、规则和子图等来进行计算。
图形用户界面800还包括用于显示例如与特定图一起使用的合作者图的部分808。一般地,合作者图包括通过另一个图开始、然后以其自己的当前位置独立运行的图。系统可以例如基于单个图被允许具有单个当前位置的限制来使用合作者图。例如,目标图可被配置为使附加图开始,该附加图将具有其自己的当前位置、并且与目标图并行运行。在该示例中,附加图是合作者图,并且其使用内部数据记录来与其它图(如使其开始的目标图)进行通信。图形用户界面800还包括用于指定图所使用的内部数据记录的部分810、用于指定图所使用的全局变量的部分812、用于指定图所使用的参考数据的部分814、以及用于指定图所使用的外部输入数据记录的部分816。
这里所述的图可被配置为执行窗口聚合。一般地,窗口聚合是在指定时间段或窗口内的数据(例如,特定类型的数据)的聚合。例如,窗口聚合包括针对数据记录的子集所计算出的聚合。子集包括最近的数据记录(例如,过去一天的数据记录),并且随着时间的推移,聚合的数据记录的集合也发生变化。许多CEP规则使用各种类型的窗口聚合(例如,过去24小时内的ATM提款的次数)。因此,系统生成窗口聚合,生成用以进行聚合的规则,并向用户提供用于定义这些聚合以及用于在测试期间观察这些聚合的行为的控制。在示例中,可执行逻辑包括或者表达聚合。在该示例中,系统通过执行表示可执行逻辑的规则来计算聚合。在完成聚合的计算之后,系统按照也包括聚合的一个或多个其它规则来存储后续检索的聚合–由此促进先前计算出的聚合的共享。
在示例中,系统提供用户在生成图时可以选择和使用的各种预先指定聚合(例如,本月使用的文本的数量)。在该示例中,系统提供如下的界面(或界面的数据),其中用户可以例如通过将各个节点、图标和链接“拖放”到界面中用于定义图的一部分来定义图。节点包括并显示可编辑的逻辑。用户可以编辑逻辑以指定由节点所表示的可执行逻辑使用的聚合、或指定其它逻辑(在编译可执行逻辑时使用)。用户可以例如通过输入用于指定聚合的逻辑、通过(例如,从多个预定义聚合中)选择预定义聚合、以及通过选择指示出预定义聚合的图标或节点并将其添加到图或者将其与图中的节点进行关联,来指定聚合。系统通过步进通过(例如,针对关键字的特定值的)数据记录来测试这些聚合的行为,以识别哪些节点处理哪些数据记录以及这些数据记录在被处理时的值(和/或内容)。基于该测试,系统可以识别出数据记录未通过包括聚合的节点。如此,系统可以针对错误(例如,从未满足的条件)来分析该节点中的逻辑,以及/或者可以提示用户将节点的逻辑更改为更容易或更经常满足的条件。
参考回图2,收集引擎61计算窗口聚合,并且将其存储为参考数据或将其作为富集添加到数据记录。一般地,富集包括在系统接收到数据记录之后被添加到该数据记录的数据。系统将数据记录与该数据进行“富集”。在另一示例中,系统60例如基于图的作者(或图所体现的规则)所指定的定义来生成聚合,并将这些聚合实现为图执行处理的一部分。
系统60将聚合定义为变量(例如,图内或者项目内)。一般地,项目包括图的集合,例如用于运行活动的图的集合。为使得能够在图之间共享聚合,系统60定义了项目的聚合。通过这样做,例如通过相对于在系统60针对彼此独立的各图计算聚合的情况下该系统60在计算聚合时将需要进行的计算数而减少系统60在计算聚合时进行的计算数,来改进系统性能以及各个图的性能。
在示例中,系统60计算(例如,通过与关键字的特定值或者与特定关键字进行关联)而使得关键的聚合。系统60生成用于访问跨关键字的聚合的规则,使得图可以访问与该图的关键字相同的关键字的聚合。在该示例中,系统60计算窗口聚合、移动窗口聚合(例如,过去15分钟的聚合)、时段聚合(例如,一系列定义时间间隔的聚合)、以及相关聚合(例如,基于另一字段的最小值或最大值而返回一个字段的值的聚合)等。
在示例中,移动窗口聚合所用的聚合的定义(以下称聚合定义)以文本的方式表示如下:
针对各客户,针对trade.action=“购买”的一类贸易中的各数据记录,计算过去15分钟内的trade.amount平均值
上述文本表示的划线部分与系统60所生成的聚合定义中的参数相对应。在该示例中,系统60利用下表1中所示的参数生成聚合:
Figure GDA0003343299720000481
Figure GDA0003343299720000491
表1
在上表1中,聚合定义在系统60生成聚合时所使用的各种参数。参数和/或参数的值中的一个或多个是用户可例如在图的生成期间配置的。例如,系统60提供了用户指定上表1中所示的一个或多个参数的值所经由的用户界面。基于所指定的参数的值和类型,系统60生成聚合定义并使用该聚合定义来计算针对该聚合定义的聚合。
系统60还计算时段聚合,包括例如针对一系列定义时间间隔的聚合。时段聚合的文本表示如下所示:
针对各客户,针对trade.action=“购买”的一类贸易的各数据记录,计算过去10 分钟内的每30秒时段的trade.amount总和
上述文本表示的划线部分与系统60所生成的针对该时段聚合的聚合定义中的参数相对应。对于时段聚合,系统60利用如前面参考表1所述的聚合名称参数、数据记录类型参数、关键字参数、过滤表达式参数、聚合函数参数、字段或表达式参数来生成聚合定义。另外,这种聚合定义还包括下表2中所示的以下参数:
Figure GDA0003343299720000501
表2
上表2中所示的参数可由用户例如通过系统60的用户界面来配置。另外,系统60计算返回值和聚合值之间存在相关性的相关聚合。以下示出示例性相关聚合:
针对各客户,针对trade.action=“buy”的一类贸易中的各数据记录,计算过去20分钟内所见的最大trade.amount的符号。
在该示例中,系统60在指定的时间窗口(即,20分钟)内选择适当的数据记录,并返回满足聚合所指定的标准(例如,最大trade.amount)的符号(例如,^GSPC)。系统60还计算多时段聚合,其中系统60计算时段聚合、然后计算该时段聚合的结果的聚合。示例性时段聚合包括以下聚合:针对各客户,针对trade.action=“购买”的一类贸易的各数据记录,首先计算每天的trade.amount的总和,然后计算过去七天的最大总数。
随着数据记录到达,系统60例如针对每个数据记录在接收到这些数据记录时计算聚合。这些聚合接近实时聚合,因为它们是在接收到数据记录时近实时地计算出的。在示例中,系统60与图是否测试或使用聚合的值无关地计算聚合。在另一示例中,系统60按需地计算聚合,例如在系统60对数据记录流进行存档时计算聚合。一般地,按需聚合包括响应于请求而发生的聚合。在该示例中,系统60例如通过将数据记录或指示出数据记录的数据存储在数据存储库中,来对数据记录流进行存档。在按需地计算聚合时,系统60向数据存储库查询适当的数据记录类型,读出适当的数据记录,识别哪个适当的数据记录与所需的日期范围匹配,并计算聚合就好像数据记录到达了现场一样。一般地,适当的数据记录包括满足一个或多个标准或条件的数据记录。在示例中,不经常使用特定聚合。在该示例中,系统60不是针对每个传入数据记录计算这些特定聚合,而是针对这些特定聚合计算按需聚合以节约系统资源并且相对于用于在接收到数据记录时实时地计算这些聚合的处理速度增加处理速度。另外,系统60实现针对在较短时间尺度上运行(例如,运行几天)的图的按需聚合,但是一些逻辑使用较长时间尺度的聚合(例如,过去的多个月)。通过这样做,系统60(相对于在数据记录到达时实时计算这些聚合的计算量)减少了在较长时间尺度上连续计算聚合的昂贵计算量。聚合定义指定聚合是按需聚合还是近实时聚合。在一些示例中,用户(例如,在定义聚合时在用户界面中)指定聚合是近实时聚合还是按需聚合。
在示例中,系统60提供了共享的规则和聚合(例如,在CEP系统中的多个规则间共享逻辑)。通过共享规则和聚合,系统60例如通过使得不会被计算相同聚合多次而消耗,来相对于与共享规则和聚合无关地处理传入数据记录的速度而提高系统60可以处理传入数据记录的速度。例如,系统60计算多个规则所需的聚合,并将这些聚合的值存储在数据存储库或存储器高速缓存中。在另一示例中,系统60将节点的逻辑(例如,节点中的决策逻辑)存储在数据存储库中。然后,例如如其它节点所指定的,可以在计算其它单独保持的多个决策时重复使用该逻辑。
参考图9,图形用户界面900(例如,编辑界面)提供用于创建图的“拖放”界面。在该示例中,系统生成图形用户界面900(或提供图形用户界面900所用的数据),以提供用于生成描述时间序列的测试或规则(例如,用以处理时间上分离的数据记录的规则)、并在视觉上示出规则或测试的哪些部分处理哪些数据记录的图的图形编程模型。使用图形用户界面900,用户可以定义规则的流程图样式。
图形用户界面900包括显示与正创建的图有关的数据的部分902。部分902包括用于指定图的名称的名称字段938、用于指定图类型的类型字段940、以及用于指定图是公开还是私人可见、图是否是无等待的、以及图是否是全局图的可见性控件942。部分902还包括用于指定图的关键字的类型的关键字类型字段944。部分902包括用于指定正在生成或构造的图的关键字的样本值的_keyValue字段946。例如,用户可以使用_keyValue字段946来选择关键字的特定值,并且例如通过使用步进控件(诸如图7中的步进控件704等)来测试针对关键字的该值的图(在其正被构建时进行测试)。部分902还包括chartID字段948,用于指定针对_keyValue字段946中所指定的关键字的特定值正执行的图实例的ID。如果存在自变量,则部分902还包括自变量字段950。
图形用户界面900还包括部分904,该部分904包括可选择节点906、908、910、912、914、916、918、920、921、922、924、以及用于创建流程图的编辑窗格952。在该示例中,编辑窗格包括用于将一个或多个逻辑表达式与节点进行关联或者用于编辑与节点或规范相关联的一个或多个逻辑表达式的规范的可编辑显示。在该示例中,系统生成图形用户界面900所用的数据。
这些可选择节点中的各可选择节点被配置为“拖放”到编辑窗格952中以将节点添加到流程图。在该示例中,编辑窗格952包括节点926、928、930、932、934、936,其中通过选择适当的可选择节点并将该可选择节点拖放到编辑窗格952中来将这些节点中的各节点添加到编辑窗格952。在示例中,节点包括用于输入一个或多个逻辑表达式的一个或多个可编辑部分。在另一示例中,节点的一个或多个部分的选择使得显示用于输入一个或多个逻辑表达式、以及用于编辑一个或多个逻辑表达式等的图形用户界面(例如,提示框)。在该示例中,(基于对节点的一个或多个部分的选择而显示的)图形用户界面被显示为针对图形用户界面900的覆盖。基于(基于对节点的一个或多个部分的选择而显示的)图形用户界面中所指定的一个或多个逻辑表达式,节点包括一个或多个逻辑表达式以及/或者这一个或多个逻辑表达式的可视化。在另一示例中,节点例如通过显示解释一个或多个逻辑表达式的句子,来显示基于一个或多个逻辑表达式的其它数据。
例如,通过选择可选择节点906并且根据箭头954所指定的拖放遍历来将该可选择节点906拖放到编辑窗格952中,来将节点936添加到编辑窗格952。一旦可选择节点906在编辑窗格952中,用户就可以配置可选择节点906以将其变换为图所使用的节点(例如节点936)。在该示例中,可选择节点906包括可选择部分906a、906b、906c,其中这些可选择部分各自指定要实现的等待类型。可选择部分906a指定等待特定数据记录的等待类型。可选择部分906b指定等待满足(来自多个不同标准中的)至少一个标准的任何数据记录的等待类型。可选择部分906c指定等待一起满足指定标准的多个数据记录的等待类型。
在该示例中,用户选择可选择部分906a来指定节点936等待满足一个或多个指定标准的任何数据记录。可选择节点906还包括供用户输入用于指定一个或多个标准的数据的其它可编辑字段(未示出),其中所述一个或多个标准指示出等待节点被配置为等待的一类数据记录。在该示例中,(输入到可选择节点906的)用户指定标准显示在节点936的部分936a、936b、936c中。(在该示例中,部分929d包括部分936a、936b、936c)。在该示例中,用户将节点926、928、930、932、934、936添加到编辑窗格952以定义供执行用的图。在编辑窗格952中,节点926、928、930、932、934、936可例如通过编辑节点中的逻辑来进行编辑。在示例中,系统接收指示出针对节点926、928、930、932、934、936中的一个或多个节点的一个或多个逻辑表达式的一个或多个编辑的数据、以及指定节点926、928、930、932、934、936中的哪一个节点与所接收到的一个或多个逻辑表达式相关联的数据。
在该示例中,编辑器界面900显示具有节点926、928、930、932、934、936以及链接927a~927e的图表951。编辑器界面900包括用于输入或编辑与节点926、928、930、932、934、936中的一个或多个节点相关的一个或多个逻辑表达式的部分929a~929d。例如,编辑器界面900包括用于输入或编辑与节点928相关的一个或多个逻辑表达式的部分929a。在变形中,用于输入或编辑逻辑表达式的一个或多个部分(例如,在选择和/或点击节点之后)位于节点外部,位于节点附近,与节点并列,紧邻节点,以及显示在另一用户界面中等。在该示例中,节点926、928、930、932、934、936中的一个或多个节点与状态机的特定状态相对应。逻辑表达式(例如,“开始合作者图:CheckElectricStatements”以及“调用SendSMSDailyLimit”,电话:Account Details.Phone,消息:“赢得一部新手机!满足YourBank.com/raffle上的标准的前1000个人将进入特别的抽奖”)表示在状态机处于特定状态的情况下针对数据记录的至少部分处理。特别地,逻辑表达式表示在状态机处于特定状态的情况下如何处理数据记录(例如,执行什么操作)。
在该示例中,节点中的一个节点与节点中的另一节点之间的链接(例如,链接927a~927d中的一个链接)表示状态机从一个状态向另一状态的转变。在该示例中,系统11(图2)将一个或多个逻辑表达式和图表951变换为用于实现状态机的可执行逻辑,以随着间歇性地接收到数据记录而评价数据记录中的一个或多个字段从而识别关键字的值。例如,系统11将字段的值联接在一起以产生关键字的值,修改字段的值的格式以产生关键字的值,将数据附加到字段的值以产生关键字的值,以及选择字段的值以产生关键字的值等。针对关键字的各个值,系统11实现用以处理包括关键字的值所基于的一个或多个字段的一个或多个第一数据记录的状态机,其中处理根据与同针对关键字的该值的状态机的当前状态相对应的一个或多个节点相关的一个或多个逻辑表达式。例如,在状态机处于与节点928相对应的状态的情况下,系统对所接收到的记录应用可执行逻辑的、与同节点928相关的逻辑表达式(即,“调用SendSMS_DailyLimit”,电话:Account Details.Phone,消息:“赢得一部新手机!满足YourBank.com/raffle上的标准的前1000个人将进入特别的抽奖”)相对应(或者基于逻辑表达式)的一个或多个部分。由节点926、928、930、932、934、936、链接927a~927e和逻辑表达式生成的状态机还根据图表951的链接转变至用于处理间歇性接收到的数据记录中的一个或多个第二数据记录的另一个状态。在该示例中,一个或多个第二数据记录包括关键字的值所基于的一个或多个字段,并且在一个或多个第一数据记录之后被接收。
参考图10,图形用户界面1000包括用于显示图表1034的部分1032、以及用于显示测试图表1034的详情(例如,具有与关键字的特定值相关联的一组记录)并且用于显示测试图表1034所用的控件的部分1002。部分1002包括用于选择测试中所要使用的图的名称的选择控件1004。部分1002还包括用于选择测试图表1034时所要使用的一组测试数据的选择控件1006。在该示例中,该组测试数据包括与关键字的特定值相关联、并且用于测试的数据记录(例如,“活动沙箱数据记录”)的序列。这里将该数据记录序列中的数据记录称为测试数据记录。在示例中,测试数据记录包括系统先前接收到的数据记录。在另一示例中,测试数据记录是基于接收数据记录的,例如通过模糊或修改系统所接收到的数据记录的内容来生成测试数据记录。在该示例中,图表1034的关键字是账户ID。选择控件1006所指定的数据记录是与账户ID“1000000117”相关联的数据记录,如部分1028所示。
部分1002还包括倒回控件1008,其中该倒回控件1008的选择指示系统例如通过返回去测试先前节点来“倒回”测试。例如,倒回控件1008的选择指示系统返回去测试紧挨在正被测试的当前节点之前的节点。部分1002还包括后向步进控件1010,其中该后向步进控件的选择指示系统返回去利用先前测试的数据记录来测试图表1034。部分1002还包括运行控件1012,其中该运行控件1012的选择指示系统例如通过对选择控件1006所指定的数据记录应用图表1034,来开始利用这些数据记录测试图表1034。部分1002包括前向步进控件1014,其中该前向步进控件的选择指示系统利用正被测试的数据记录中所包括的下一数据记录来测试图表1034。在该示例中,数据记录包括数据记录序列。如此,前向步进控件1014的选择使图表1034被应用于测试用序列中的下一数据记录。部分1002包括前向节点控件1016,其中该前向节点控件1016的选择指示系统前进到测试图表1034中的下一节点。部分1002还包括用于表示测试图表1034的进度的时间标度1018。
部分1002还包括部分1020、1022、1024、1026、1028、1030。在该示例中,部分1020显示指示出图表1034当前所处理的外部数据记录的当前外部数据记录数据。以下将部分1020称为当前外部数据记录部分1020。在该示例中,当前正处理的外部数据记录在活动流(“AS”)队列(例如,订阅AS外部数据记录以供图表1034处理的队列)中被接收并且与账户ID1000000117相关联。另外,外部数据记录是包括文本消息的文本发送数据记录。部分1022显示正在执行或处理哪些输出数据记录(如果存在的话)。部分1024显示图表1034使用哪些变量(例如,与测试数据记录或数据项中的第一数据项相关联的变量)以及变量的相关值。部分1026指定系统所计算、并且在图表1034中使用的聚合。在该示例中,系统计算“本月总文本”的聚合。部分1028显示图表1034所使用的参考数据。可以将参考数据与通过执行图表1034所输出的结果数据进行比较,以识别它们之间的任何潜在偏差。部分1030显示图表1034所使用的控制点。
图表1034包括节点1036、1038、1040、1042、1044、1048、1050、1052、以及用以指定图表1034中的哪个节点(或可执行逻辑的哪个部分)当前正被测试的状况指示符1046。在该示例中,系统当前正在测试节点1044,如节点1044附近的状况指示符1046所指定。系统正在利用当前外部数据记录部分1020中所表示的数据记录来测试节点1044。在该示例中,节点1044包括决策节点,并且包括(或显示)基于部分1026中所表示的聚合以及部分1030中所表示的控制点的逻辑表达式。倒回控件1008的选择使系统返回利用先前处理的一个或多个数据记录来测试节点1040。前向节点控件1016的选择使系统测试节点1050或节点1048以及相关数据记录。通过控件1008、1016,用户可以指定测试了图表1034的哪些节点。
后向步进控件1010的选择使系统向后步进通过(与关键字的特定值相关联的)数据记录、并测试(正被测试的数据记录序列中的)先前数据记录。前向步进控件1014的选择使系统向前步进通过数据记录、并(例如,通过用一个或多个适当节点处理下一数据记录来)测试序列中的下一数据记录。使用控件1008和1014,用户可以步进通过数据记录以识别哪些节点被应用于哪些数据记录。随着用户步进通过数据记录,利用图表1034(例如,在部分1002中)显示利用图表1034来处理特定数据记录的结果。例如,结果可以包括生成输出数据记录(数据显示在部分1022中)、计算聚合(其结果显示在部分1026中)、以及设置变量的值(如部分1024中所显示,例如与测试数据记录或数据项中的第一数据项相关联的变量)等。部分1032还例如通过显示状况指示符1046来显示处理数据记录的结果,其中该状况指示符1046表示数据记录的处理是否导致当前节点的改变。
在该示例中,状况指示符1046使得用户能够通过提供正在执行哪些节点(或哪些可执行逻辑)、以及如何(例如,以哪种顺序、利用哪个可执行逻辑、以及/或者呈现哪个结果数据)处理数据记录的视觉指示来测试图表1034。图形用户界面1000提供当前处理的数据项或数据记录的指示符、当前应用于数据项或数据记录的可执行逻辑、以及/或者通过对数据项或数据记录应用可执行逻辑所呈现的结果数据。由此,可以根据所应用可执行逻辑中所指定的程序指令,来将结果数据呈现为来自处理数据项或数据记录的输出。这里所述的一个或多个反馈手段直接支持用户正确地操作底层系统或评估底层系统是否正在正确地操作。
例如,可以接收对流中的数据项中的第一数据项的用户选择(1006),可以使得显示对数据处理系统当前正处理的、流中的数据项中的第一数据项的指示,以及可以使得显示可执行逻辑的、当前正应用于数据项中的第一数据项以获得结果数据的一个或多个部分的指示。
例如,可以将结果数据的一部分与预定参考数据(1022或1028)进行比较。可以判断结果数据的一部分和预定参考数据之间是否存在偏差、或者是否不存在这样的偏差;以及可以基于判断结果数据的一部分和预定参考数据之间是否存在偏差、或者是否不存在这样的偏差,来输出结果数据的一部分与预定参考数据是否一致的指示。
例如,可以将数据处理系统当前正处理的、流中的数据项中的第一数据项与预定参考数据项(1006或1028)进行比较;可以判断当前正处理的、流中的数据项中的第一数据项与预定参考数据项之间是否存在偏差、或者是否不存在这样的偏差;以及可以基于判断当前正处理的、流中的数据项中的第一数据项与预定参考数据项之间是否存在偏差、或者是否不存在这样的偏差,来输出当前正处理的、流中的数据项中的第一数据项与预定参考数据项是否一致的指示。
例如,可以将可执行逻辑的、当前正应用于数据项中的第一数据项以获得结果数据的一个或多个部分与预定参考可执行逻辑进行比较;可以判断可执行逻辑的、当前正应用于数据项中的第一数据项的一个或多个部分与预定参考可执行逻辑之间是否存在偏差、或者是否不存在这样的偏差;以及可以基于判断可执行逻辑的、当前正应用于数据项中的第一数据项的一个或多个部分与预定参考可执行逻辑之间是否存在偏差、或者是否不存在这样的偏差,来输出可执行逻辑的、当前正应用于数据项中的第一数据项以获得结果数据的一个或多个部分与预定参考可执行逻辑是否一致的指示。
在这里使用表达式“偏差”的情况下,可以接受一定公差余裕内的偏差以确定相对于各个参考的依从性或一致性。可选地,可能需要与各个参考的精确匹配来确定相对于各个参考的依从性或一致性。
例如,如果状况指示符1046从不与特定节点相关联,则向用户警告节点可以包括逻辑上不一致的表达式或者与prdata从节点被执行开始记录该节点的标准相关联的事实。另外,状况指示符1046指定如何通过图表1034来处理数据记录。在该示例中,如果用户期望以一种方式(例如,通过遍历图中的特定路径)处理数据记录、但是状况指示符1046指定以不同的方式处理数据记录,则用户可以修改图表1034中的一个或多个节点,或者可以修改与(例如,可执行逻辑中的)节点相关联的逻辑表达式以实现通过图表1034来处理数据记录的期望方式。总之,为了辅助用户正确地操作底层系统,例如通过部分1022、1024、1026、1028、1030和指示符1046来提供指示出(i)正确的可执行逻辑是否(ii)被正确地应用于(iii)正确的数据项或数据记录的反馈。
参考图11,系统执行用于根据与关键字相关联的规范来处理数据流中的数据项(例如,数据记录)的处理1100。数据项例如通过在数据存储库中与关键字的值相关联的数据项中所包括的内容,来与关键字的值相关联。在该示例中,系统针对关键字的各个值保持规范的状态。该规范表示可执行逻辑,并由系统存储在数据存储系统中。
在操作中,系统访问(1102)表示可执行逻辑的规范。该示例中,针对关键字的特定值的规范的状态指定可执行逻辑的、能够在该状态下执行的一个或多个部分。系统通过输入装置或端口来接收(1104)数据流中的数据项(例如,经由网络连接的数据项)。针对流中的数据项中的第一数据项,系统识别(1106)与数据项中的该第一数据项相关联的关键字的值。系统根据可执行逻辑的、在规范中被表示为与第一状态相关联的一个或多个部分来处理(1108)数据项中的第一数据项。系统使得(1110)例如在图形用户界面中显示规范的一个或多个部分。系统对数据项中的第一数据项应用(1112)可执行逻辑的一个或多个部分以获得结果数据,例如,使用数据项中的第一数据项作为可执行逻辑的输入来执行可执行逻辑的一个或多个部分以获得作为执行之后的可执行逻辑的输出的结果数据。系统使得(1114)例如通过在规范中与节点并列地显示结果数据、以及通过在用于显示结果的图形用户界面的一部分中显示结果(其中图形用户界面的另一部分显示规范的一个或多个部分)等,来与所显示的规范的一个或多个部分中的至少一个部分一起显示结果数据的至少一部分。系统还针对数据项中的第一数据项所用的关键字的值(例如,仅针对关键字的该值),例如通过关于关键字的该值、利用指示出图的当前位置的数据更新存储器内数据网格(例如,易失性存储器中所存储的数据结构,用于存储针对关键字的该值的状态)的一部分来使规范从第一状态转变为第二状态。通过使用存储器内数据网格,系统的处理速度相对于在数据被存储到诸如硬盘等的电机大容量存储介质的情况下的系统的处理速度而提高。通过使用存储器内数据网格,系统采用比将数据写入和读入硬盘更快的方式将数据写入存储器并从存储器中读取数据。另外,存储器内数据网格的关键字/值数据结构提供例如相对于利用关系数据结构(诸如字符串和有向图等)的检索时间而言更快的数据检索时间。一般地,关键字-值结构包括具有阵列的数据结构,其中阵列包括关键字和该关键字的值(或关键字的散列值)。
参考图12,系统实现用于根据与关键字相关联的规范来处理数据流中的数据项的处理1200。在该示例中,数据项与关键字的值相关联。系统针对关键字的各个值保持规范的状态。另外,规范表示数据存储系统中所存储的可执行逻辑。
在操作中,系统访问(1202)表示可执行逻辑的规范。该示例中,针对关键字的特定值的规范的状态指定可执行逻辑的、能够在该状态下执行的一个或多个部分。系统通过输入装置或端口来接收(1204)数据流中的数据项。针对流中的数据项中的第一数据项,如前所述,系统例如基于数据记录的内容或者基于数据记录中所包括的值来识别(1206)与数据项中的该第一数据项相关联的关键字的值。系统还识别出(1208)规范与针对关键字的该值的等待状态相关联。在等待状态中,可执行逻辑等待一个或多个数据项,其中这一个或多个数据项与关键字的该值相关联、并且与在流中位于这一个或多个数据项之前的一个或多个其它数据项时间上分离。在该示例中,系统通过(例如,在存储器内数据网格中)查找与关键字的值相关联的状态数据,来识别为规范处于等待状态。在该示例中,状态数据指定当前节点是等待节点,或者以其它方式指定当前状态是等待状态。
系统根据可执行逻辑的、在规范中被表示为与等待状态相关联的一个或多个部分来处理(1210)数据项中的第一数据项。系统使(1212)根据可执行逻辑的与等待状态相关联的一个或多个部分来显示指示出数据项中的第一数据项的处理结果的数据(例如,状况指示符、指示出输出数据记录的数据等)的至少一部分。
参考图13,系统实现用以根据与关键字相关联、并且表示可执行逻辑的规范来处理数据流中的数据项的处理1300。在该示例中,数据项与关键字的值相关联。系统针对关键字的各个值保持规范的状态。
在操作中,系统访问(1302)表示可执行逻辑的规范。该示例中,针对关键字的特定值的规范的状态指定可执行逻辑的、能够在该状态下执行的一个或多个部分。在该示例中,规范包括逻辑表达式、节点、以及一个或多个链接。第一节点(例如,图1A中的节点2a、2b、2c)表示针对关键字的值的规范(或可执行逻辑)的第一状态,其中能够对数据项中的与关键字的该值相关联的第一数据项执行可执行逻辑的第一部分。第一节点中的至少一个第一节点包括基于与可执行逻辑的第一部分至少部分对应的一个或多个第一逻辑表达式(例如,图4的部分120b中的逻辑表达式)的第一可视化。
一个或多个第二节点(例如,节点2d、2e、2f)表示针对关键字的值的规范(或可执行逻辑)的第二状态,其中能够对数据项中的与关键字的该值相关联、且在流中位于数据项中的第一数据项之后的第二数据项执行可执行逻辑的第二部分。在该示例中,第一节点中的一个第一节点和一个或多个第二节点中的一个第二节点之间的链接(例如,图1A中的链接2i)表示针对关键字的该值的规范(或可执行逻辑)从第一状态向第二状态的转变。
系统将规范中的逻辑表达式变换(1304)为可执行逻辑。例如,数据流图或图包括顶点(表示数据处理组件或数据集),这些顶点通过顶点之间的有向链接(表示工作元素、即数据的流动)来连接。在标题为“Executing Computations Expressed as Graphs”的美国专利5,966,072中描述了用于执行这种数据流图的系统,其内容通过引用而全文并入于此。根据本系统制作的数据流图提供了用于将数据输入至图组件所表示的各个处理中并从中输出数据、用于使数据在进程之间移动以及用于定义进程的运行顺序的方法。该系统包括从任何可用方法中选择处理间通信方法的算法(例如,根据图的链接的通信路径可以使用TCP/IP或UNIX域套接字,或者使用共享内存来在进程之间传递数据)。
对于关键字的各个值,在针对该关键字值的状态包括第一状态的情况下,能够对具有该关键字值的第一数据项执行第一节点(例如,图1A中的节点2a、2b、2c)所表示的可执行逻辑的第一部分(其与第一状态相关联)。在执行第一部分之后,可执行逻辑被配置用于链接(例如,图1A中的链接2i)所表示的从第一状态向第二状态的转变。在针对该关键字值的状态包括第二状态的情况下,能够对具有该关键字值的第二数据项执行一个或多个第二节点(例如,图1A中的节点2d、2e、2f)所表示的可执行逻辑的第二部分。在该示例中,系统接收(1306)数据流中的数据项。针对关键字的特定值,系统识别与该关键字相关联的状态。在该示例中,关键字与包括节点2a、2b、2c的第一状态相关联。系统还查找当前位置以识别节点2a、2b、2c中的哪个节点是当前节点。在该示例中,节点2c是当前节点。
在针对该关键字值的状态包括与第一部分相关联的第一状态(例如,如存储器内数据网格中的针对该关键字值的数据结构所表示)的情况下,系统对具有该关键字值的第一数据项执行(1308)可执行逻辑的第一部分。在该示例中,系统执行节点2c所表示的可执行逻辑的一部分,这是因为针对该关键字值的状态是第一状态(其与节点2c所表示的可执行逻辑的一个或多个部分相关联)并且当前位置是节点2c。
在示例中,第二节点中的一个第二节点包括等待节点,该等待节点表示可执行逻辑的、被配置为等待数据项中的具有该关键字值的第二数据项的一部分。在该示例中,第二节点中的另一第二节点(例如,图1A中的发送节点2e)表示可执行逻辑的、被配置为使一个或多个动作(诸如发送消息)执行的另一部分。在该示例中,链接2i表示针对关键字的该值的、规范从第一部分能够执行的第一状态向可执行逻辑被配置为等待数据项中的第二数据项的第二状态的状态转变。
参考图14,系统实现用于根据与关键字相关联、并且表示用于处理数据项的可执行逻辑的规范来处理数据流中的数据项的处理1400。在该示例中,数据项与关键字的值相关联。系统(例如在存储器内数据网格中)保持针对关键字的多个值的状态。
在操作中,系统访问(1402)规范。规范的状态表示可执行逻辑的、能够在该状态下执行的一个或多个部分。系统接收(1404)数据项中的第一数据项。数据项可以是传入数据流的一部分,例如,经由网络连接而接收到的数据项。第一数据项与关键字的特定值相关联。系统识别(1406)针对关键字的特定值的第一状态。系统根据可执行逻辑的、被规范指定为能够在第一状态下执行的一个或多个部分(例如,通过执行这一个或多个部分)来处理(1408)第一数据项。系统识别(1410)针对关键字的特定值的、规范从第一状态向可执行逻辑的一个或多个其它部分能够执行的第二状态的转变。系统接收(1412)与关键字的另一值相关联的中间数据项,其中该另一值与关键字的特定值不同、并且与关键字的特定值不相关。系统针对中间数据项识别(1414)与关键字的另一值相关联的规范的给定状态。系统根据可执行逻辑的、被规范指定为能够在给定状态下执行的一个或多个部分来处理(1416)中间数据项。系统接收(1418)数据项中、在流中比第一数据项和中间数据项靠后且也与关键字的特定值相关联的第二数据项。基于针对关键字的特定值的规范的转变,系统根据可执行逻辑的、被规范指定为能够在第二状态下执行的一个或多个部分来处理(1420)第二数据项。可执行逻辑的能够在第二状态下执行的一个或多个部分与可执行逻辑的能够在第一状态下执行的一个或多个部分不同。例如,可执行逻辑的能够在节点2d、2e、2f(图1A)所表示的第二状态下执行的一个或多个部分与可执行逻辑的能够在节点2a、2b、2c(图1A)所表示的第一状态下执行的一个或多个部分不同。
参考图15,系统实现用于实现被配置为针对关键字的各个值处理与该值相关联的数据记录的状态机的处理1500。在操作中,系统在一个或多个编辑器界面中显示(1502)(i)具有节点和一个或多个链接的图、以及(ii)用于输入或编辑与所述节点中的一个或多个节点相关的一个或多个逻辑表达式的一个或多个部分。在该示例中,这些节点中的一个或多个节点与状态机的特定状态相对应。例如,决策节点表示可执行逻辑实现决策的特定状态。在另一示例中,等待节点以及用于指定在等待之后要执行的一个或多个动作的另一节点表示状态机的另一种状态。在该示例中,逻辑表达式表示在状态机处于特定状态的情况下对数据记录进行的至少部分处理。存在各种类型的逻辑表达式(包括例如用于指定系统应当等待的数据记录的类型的表达式)、以及在检测到系统正在等待的数据记录时所要执行的一个或多个动作。在该示例中,节点中的一个节点与节点中的另一节点之间的链接表示状态机从一个状态向另一状态的转变。
系统将一个或多个逻辑表达式和图变换(1504)为用于实现状态机的可执行逻辑。基于用于实现状态机的可执行逻辑的执行、并且随着间歇性地接收到数据记录,系统评价(1506)数据记录中的一个或多个字段以识别关键字的值。针对关键字的各个值,系统处理(1508)包括关键字的该值所基于的一个或多个字段的一个或多个第一数据记录,其中处理是根据与同针对关键字的该值的状态机的当前状态相对应的一个或多个节点相关的一个或多个逻辑表达式进行的。在一些示例中,随着间歇性地接收到数据记录,系统进行该处理。针对关键字的各个值,系统还根据图中的链接而转变(1510)为用于处理间歇性接收到的数据记录中的一个或多个第二数据记录的另一状态,其中,一个或多个第二数据记录包括关键字的该值所基于的一个或多个字段,以及一个或多个第二数据记录是在一个或多个第一数据记录之后接收到的。在一些示例中,随着间歇性地接收到数据记录,系统进行该转变。
在一些示例中,系统将指示出针对关键字的各个值的可执行逻辑的状态的数据保存和存储在数据存储库中。然后,在系统检测到与关键字的同一值相关联的附加数据记录的情况下,该系统进行数据库查找以识别针对关键字的该值的可执行逻辑的状态。基于针对关键字的该值的可执行逻辑的状态,系统判断在该状态下是否要对数据记录进行进一步处理、或者是否要转变至新的下一个状态。通过针对关键字的各个值维持状态、而不是针对关键字的各个值执行可执行逻辑,系统节约系统资源(诸如内存和处理能力等)。另外,一旦可执行逻辑转变为针对关键字的特定值的新状态,系统就从存储器中删除旧状态的值,由此减少执行和实现状态机所需的内存总量。
另外,用于输入或编辑与一个或多个节点相关的一个或多个逻辑表达式的一个或多个部分允许在配置和编辑状态机(诸如关键状态机等)方面的灵活性相对于独立于或者没有用于输入或编辑的部分的情况下编辑状态机的灵活性有所提高。这里所述的编辑界面不是在启动状态机之前对各种状态和状态之间的关系进行广泛的建模和配置,而是提供了可在没有这样的预先任务的情况下启动、并且作为替代即时进行配置的状态机的实现。
使用这里所述的技术,系统提供了用于对时间上分离的数据记录进行近实时处理的图形编程模型。该处理是基于关键字的处理,因为数据记录是基于关键字进行处理的。在示例中,与关键字的特定值相关联的数据记录被一起分析和处理。另外,该系统通过显示指示出对系统所接收到的数据记录应用图中所定义的可执行逻辑的结果的结果数据,来提供短时关注测试。该结果数据可以在图中显示,其中各结果数据项与生成结果数据的图中的节点并列显示。另外,系统还通过允许用户步进通过针对图中的关键字值的测试结果,来向用户提供更具粒度的观察。在该示例中,系统提供对与关键字的特定值相关联的数据记录执行可执行逻辑的结果,例如作为图的覆盖。
上述技术可以使用软件来实现以在计算机上执行。例如,该软件形成了在一个或多个编程或可编程计算机系统(可以具有诸如分布式、客户端/服务器或网格式等的各种架构)上执行的一个或多个计算机程序中的过程,其中该一个或多个编程或可编程计算机系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置或端口以及至少一个输出装置或端口。该软件可以形成例如提供与图和流程图的设计和配置有关的其它服务的较大程序的一个或多个模块。该图的节点、链接或元素可被实现为存储在计算机可读介质中的数据结构或符合数据存储库中所存储的数据模型的其它有组织数据。
这里所述的技术可以在数字电子电路、或计算机硬件、固件、软件、或它们的组合中实现。设备可以以有形地体现或存储在机器可读存储装置(例如,非暂时性机器可读存储装置和机器可读硬件存储装置等)中以供可编程处理器执行的计算机程序产品实现,并且方法动作可以由可编程处理器执行指令程序来进行,以通过对输入数据进行操作并生成输出来执行功能。这里所述的实施例以及这里所述的权利要求和技术的其它实施例可以有利地以可编程系统上可执行的一个或多个计算机程序来实现,其中该可编程系统包括至少一个可编程处理器,以相对于数据存储系统、至少一个输入装置和至少一个输出装置进行数据和指令的接收和发送。各计算机程序可以以高级过程编程语言或面向对象的编程语言来实现,或者必要时可以以汇编语言或机器语言来实现;并且在任何情况下,语言可以是编译语言或解释语言。
举例而言,适合执行计算机程序的处理器包括通用微处理器和专用微处理器两者、以及任何种类的数字计算机中的任意一个或多个处理器。一般地,处理器将会从只读存储器或随机存取存储器或这两者接收指令和数据。计算机的基本元件是用于执行指令的处理器、以及用于存储指令和数据的一个或多个存储器装置。一般地,计算机还将包括用于存储数据的一个或多个大容量存储装置(例如,磁盘、磁光盘或光盘等),或者可操作地连接以相对于这一个或多个大容量存储装置接收或传送数据。用于体现计算机存储指令和数据的计算机可读介质包括所有形式的非易失性存储器,举例而言包括:半导体存储器装置,例如EPROM、EEPROM和闪速存储器装置等;磁盘,例如内部硬盘或可移动盘等;磁光盘;以及CDROM盘和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或者并入专用逻辑电路。任何前述装置可以由ASIC(专用集成电路)进行补充、或者并入到ASIC(专用集成电路)中。
为了提供与用户的交互,实施例可以在计算机上实现,其中该计算机具有例如用于向用户显示信息的LCD(液晶显示器)监视器等的显示装置、以及用户可以向计算机提供输入的键盘和例如鼠标或追踪球等的指示装置。也可以使用其它种类的装置来提供与用户的交互;例如,被提供至用户的反馈可以是任何形式的传感反馈,例如视觉反馈、听觉反馈或触觉反馈等;并且可以以任何形式接收来自用户的输入(包括听觉输入、语音输入或触觉输入)。
实施例可以在如下的计算系统中实现,其中该计算系统包括后端计算机(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有图形用户界面的客户端计算机或用户可以与实施例的实现进行交互的Web浏览器)、或者这样的后端组件、中间件组件或前端组件的任意组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)来互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如互联网。
系统和方法或其部分可以使用“万维网”(Web或WWW),该万维网是互联网上的利用超文本传送协议(HTTP)的服务器的集合。HTTP是用于向用户提供对资源的访问的已知应用协议,其中资源可以是不同格式的信息,诸如文本、图形、图像、声音、视频、超文本标记语言(HTML)以及程序等。在用户指定链接时,客户端计算机向Web服务器提出TCP/IP请求并接收信息,其中该信息可以是根据HTML进行格式化的另一Web页面。用户还可以通过遵循画面上的指示、输入特定数据、或者点击所选择的图标来访问相同服务器或其它服务器上的其它页面。还应当注意,针对使用web页面来允许用户选择给定组件的选项的实施例,可以使用本领域技术人员已知的任何类型的选择装置,诸如复选框和下拉框等。服务器运行在各种平台(包括UNIX机器)上,但是也可以使用诸如Windows 2000/2003、Windows NT、Sun、Linux和Macintosh等的其它平台。计算机用户可以通过使用诸如Firefox、Netscape Navigator、Microsoft Internet Explorer或Mosaic浏览器等的浏览软件来查看服务器或网络上可获得的信息。计算系统可以包括客户端和服务器。客户端和服务器一般来说彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是通过运行在各个计算机上并且彼此间具有客户端-服务器关系的计算机程序而产生的。
其它实施例在说明书和权利要求书的范围和精神内。例如,由于软件的性质,因此可以使用软件、硬件、固件、硬连线、或者任何这些的组合来实现上述的功能。实现功能的特征还可以物理地定位在各个位置处,包括分布为使得在不同的物理位置处实现功能的多个部分。这里以及整个申请中的术语“一个”的使用不以限制性的方式使用,因此并不意味着排除术语“一个”的多重含义或“一个或多个”含义。另外,在临时专利申请要求优先权的范围内,应当理解,临时专利申请不是限制性的,而是包括可以如何实现这里所述的技术的示例。
已经描述了本发明的许多实施例。然而,本领域普通技术人员应当理解,可以在没有偏离这里所述的权利要求和技术的精神和范围的情况下作出各种修改。

Claims (20)

1.一种数据处理系统所实现的方法,其特征在于,所述数据处理系统用于根据与关键字相关联的规范来处理数据的流中的数据项,其中,数据项与所述关键字的值相关联,针对所述关键字的各个值而保持所述规范的状态,所述规范表示数据存储系统中所存储的可执行逻辑,所述规范包括具有多个节点的图,所述图中的各节点表示所述可执行逻辑的一个或多个部分,所述方法包括:
访问表示所述可执行逻辑的规范,其中所述规范的针对所述关键字的特定值的状态指定所述可执行逻辑的、能够在该状态下执行的一个或多个部分;
通过输入装置或端口来接收数据的流中的数据项;
针对所述流中的所述数据项中的第一数据项,
识别针对与所述数据项中的该第一数据项相关联的所述关键字的值的所述规范的第一状态;
利用所述数据处理系统,根据所述可执行逻辑的、在所述规范中被表示为与所述第一状态相关联的一个或多个部分来处理所述数据项中的所述第一数据项,所述处理包括:
使得显示所述规范的一个或多个部分;
对所述数据项中的所述第一数据项应用所述可执行逻辑的所述一个或多个部分以获得结果数据;
使得与所显示的所述规范的所述一个或多个部分中的至少一个部分一起显示所述结果数据的至少一部分;以及
针对所述数据项中的所述第一数据项的关键字的值,使所述规范从所述第一状态转变为第二状态。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
执行所述可执行逻辑。
3.根据权利要求1所述的方法,其特征在于,所述可执行逻辑的所述一个或多个部分包括所述可执行逻辑的一个或多个第一部分,所述规范的所述一个或多个部分包括所述规范的第一部分,所述结果数据包括第一结果信息,所述方法还包括:
执行所述可执行逻辑;
随着所述可执行逻辑继续执行,接收所述数据项中的、在所述流中比所述数据项中的所述第一数据项靠后且也与所述关键字的值相关联的第二数据项;
基于从所述第一状态向所述第二状态的转变,根据所述可执行逻辑的与所述第二状态相关联的一个或多个第二部分来处理所述数据项中的所述第二数据项,其中所述可执行逻辑的一个或多个第二部分被表达为所述规范的第二部分;
基于所述处理,获得指示出处理所述数据项中的所述第二数据项的一个或多个结果的第二结果数据;以及
使得与所述规范的所述第二部分一起显示所述第二结果数据的至少一部分。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
访问测试数据项的集合;以及
根据所述集合中的所选择的一个集合,模拟具有在第二测试数据项之前出现的第一测试数据项的近实时测试数据流。
5.根据权利要求4所述的方法,其特征在于,接收所述数据的流包括接收模拟流。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过对所述数据项中的所述第一数据项应用所述可执行逻辑的所述一个或多个部分来测试所述规范所表达的规则的执行的精确度。
7.根据权利要求6所述的方法,其特征在于,
测试规则的执行的精确度包括以下操作中的一个或多个:判断为所述数据项中的所述第一数据项的一部分不由所述数据处理系统处理、判断为所述规则的部分之间存在冲突、判断为所述规则的一部分指定了所述数据项中的所述第一数据项不可能满足的条件、以及判断为所述规则的一部分以与所旨在的处理目标不同的方式处理所述数据项中的所述第一数据项的一部分。
8.根据权利要求4所述的方法,其特征在于,所述关键字的值包括第一值,以及所述方法还包括:
从测试数据的集合中选择与所述关键字的第二值相关联的集合;以及
对使用针对第二关键字的集合中的测试数据进行模拟的流执行所述可执行逻辑的针对所述关键字的第二值的实例。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
使得显示从所述规范的表示所述可执行逻辑的所述第一状态的一部分向所述规范的表示所述第二状态的另一部分的转变的视觉表示。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收对所述流中的所述数据项中的所述第一数据项的用户选择;
使得显示对所述数据处理系统当前正处理的、所述流中的所述数据项中的所述第一数据项的指示;以及
使得显示所述可执行逻辑的、当前正应用于所述数据项中的所述第一数据项以获得所述结果数据的所述一个或多个部分的指示。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述结果数据的一部分与预定参考数据进行比较;
判断所述结果数据的该部分和所述预定参考数据之间是否存在偏差、或者是否不存在这样的偏差;以及
基于判断所述结果数据的该部分和所述预定参考数据之间是否存在偏差、或者是否不存在这样的偏差,来输出所述结果数据的该部分与所述预定参考数据是否一致的指示。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
将所述数据处理系统当前正处理的、所述流中的所述数据项中的所述第一数据项与预定参考数据项进行比较;
判断当前正处理的所述流中的所述数据项中的所述第一数据项与所述预定参考数据项之间是否存在偏差、或者是否不存在这样的偏差;以及
基于判断当前正处理的所述流中的所述数据项中的所述第一数据项与所述预定参考数据项之间是否存在偏差、或者是否不存在这样的偏差,来输出当前正处理的所述流中的所述数据项中的所述第一数据项与所述预定参考数据项是否一致的指示。
13.根据权利要求10所述的方法,其特征在于,所述方法还包括:
将所述可执行逻辑的、当前正应用于所述数据项中的所述第一数据项以获得所述结果数据的所述一个或多个部分与预定参考可执行逻辑进行比较;
判断所述可执行逻辑的、当前正应用于所述数据项中的所述第一数据项的所述一个或多个部分与所述预定参考可执行逻辑之间是否存在偏差、或者是否不存在这样的偏差;以及
基于判断所述可执行逻辑的、当前正应用于所述数据项中的所述第一数据项的所述一个或多个部分与所述预定参考可执行逻辑之间是否存在偏差、或者是否不存在这样的偏差,来输出所述可执行逻辑的、当前正应用于所述数据项中的所述第一数据项以获得所述结果数据的所述一个或多个部分与所述预定参考可执行逻辑是否一致的指示。
14.一种数据处理系统所实现的方法,其特征在于,所述数据处理系统用于根据与关键字相关联的规范来处理数据的流中的数据项,其中,数据项与所述关键字的值相关联,针对所述关键字的各个值而保持所述规范的状态,以及所述规范表示数据存储系统中所存储的可执行逻辑,所述方法包括:
访问表示所述可执行逻辑的规范,其中所述规范的针对所述关键字的特定值的状态指定所述可执行逻辑的、能够在该状态下执行的一个或多个部分;
通过输入装置或端口来接收数据的流中的数据项;
针对所述流中的所述数据项中的第一数据项,识别与所述数据项中的该第一数据项相关联的所述关键字的值;
识别为所述规范与针对所述关键字的该值的等待状态相关联,其中,所述等待状态包括所述可执行逻辑被配置为等待一个或多个数据项的状态,所述一个或多个数据项与所述关键字的该值相关联、并且与在所述流中位于所述一个或多个数据项之前的一个或多个其它数据项时间上分离;
利用至少一个处理器,根据所述可执行逻辑的、在所述规范中被表示为与所述等待状态相关联的一个或多个部分来处理所述数据项中的所述第一数据项;以及
使得根据所述可执行逻辑的与所述等待状态相关联的一个或多个部分来显示指示出所述数据项中的所述第一数据项的处理的结果的数据的至少一部分。
15.根据权利要求14所述的方法,其特征在于,所述规范包括具有多个节点的流程图,所述节点中的至少一个节点包括表示所述等待状态的等待节点,以及所述流程图包括所述节点中的第一节点和所述节点中的第二节点之间的链接,所述链接表示所述可执行逻辑的从执行所述可执行逻辑的由所述节点中的所述第一节点表示的一个或多个第一部分向执行所述可执行逻辑的由所述节点中的所述第二节点表示的一个或多个第二部分的转变。
16.根据权利要求14所述的方法,其特征在于,所述方法还包括:
生成图形用户界面所用的数据,其中所述图形用户界面在呈现在显示装置上的情况下,包括用于执行流程图的开始控件并且还包括所述流程图;
接收指示出所述开始控件的选择的数据;
响应于所接收到的数据,通过进行包括以下的操作来执行所述流程图:
对所述数据项中的所述第一数据项执行所述可执行逻辑的由第一节点表示的一个或多个第一部分;以及
使所述图形用户界面更新以显示指示出利用所述可执行逻辑的由所述第一节点表示的所述一个或多个第一部分来处理所述数据项中的所述第一数据项的结果的结果数据,其中在所述流程图中,所述结果数据与所述第一节点并列显示。
17.根据权利要求14所述的方法,其特征在于,图形用户界面所用的数据包括用于显示停止控件的数据,所述方法包括:
接收指示出所述停止控件的选择的数据;以及
暂停流程图的执行。
18.一种用于实现状态机的数据处理系统所进行的方法,其特征在于,所述状态机被配置为针对关键字的各值,处理与该值相关联的数据记录,所述方法包括:
在一个或多个编辑器界面中显示:(i)具有节点和一个或多个链接的图、以及(ii)用于输入或编辑与所述节点中的一个或多个节点相关的一个或多个逻辑表达式的一个或多个部分,其中,所述节点中的所述一个或多个节点与所述状态机的特定状态相对应,以及逻辑表达式表示在所述状态机处于所述特定状态的情况下对数据记录的至少部分处理;
其中,所述节点中的一个节点与所述节点中的另一节点之间的链接表示所述状态机从一个状态向另一状态的转变;
将所述一个或多个逻辑表达式和所述图变换为用于实现状态机的可执行逻辑以:
随着间歇性地接收到数据记录,
评价所述数据记录中的一个或多个字段,以识别所述关键字的值;以及
针对所述关键字的各值,
处理包括所述关键字的该值所基于的一个或多个字段的一个或多个第一数据记录,其中针对所述关键字的该值的所述处理根据与同所述状态机的当前状态相对应的一个或多个节点相关的一个或多个逻辑表达式;以及
根据所述图中的链接而转变为用于处理间歇性接收到的数据记录中的一个或多个第二数据记录的另一状态,其中,所述一个或多个第二数据记录包括所述关键字的该值所基于的一个或多个字段,以及所述一个或多个第二数据记录是在所述一个或多个第一数据记录之后接收到的。
19.一种用以处理数据的流中的数据项的数据处理系统所实现的方法,其特征在于,所述处理包括:
接收表示用于处理数据的流中的数据项的可执行逻辑的规范,其中,所述规范与关键字相关联,数据项与所述关键字的值相关联,以及针对所述关键字的各个值而保持所述可执行逻辑的状态,其中,
所述规范包括节点和一个或多个链接,一个或多个第一节点表示所述可执行逻辑的针对所述关键字的值的第一状态,其中能够对所述数据项中的与所述关键字的该值相关联的第一数据项执行所述可执行逻辑的第一部分;
第二节点表示所述可执行逻辑的针对所述关键字的该值的第二状态,所述第二节点中的一个第二节点表示所述可执行逻辑的、被配置为在所述第二状态下等待所述数据项中的与所述关键字的该值相关联的第二数据项的一部分,所述数据项中的所述第二数据项通过在所述流中位于所述数据项中的所述第一数据项之后来与所述数据项中的所述第一数据项时间上分离,所述第二节点中的另一第二节点表示所述可执行逻辑的、被配置为在所述第二状态下使一个或多个动作执行的另一部分;
所述一个或多个第一节点中的一个第一节点与所述第二节点中的一个第二节点之间的链接表示针对所述关键字的该值的、所述可执行逻辑从能够执行所述第一部分的所述第一状态向所述可执行逻辑被配置为等待所述数据项中的所述第二数据项的所述第二状态的状态转变;以及
将所述规范变换为可执行逻辑以针对所述关键字的各值而处理与该值相关联的、且在数据的流中时间上分离的数据项。
20.一种数据处理系统所实现的方法,其特征在于,所述数据处理系统用于根据规范来处理数据的流中的数据项,所述规范与关键字相关联并且表示用于处理数据项的可执行逻辑,其中,数据项与所述关键字的值相关联,针对所述关键字的多个值而保持所述规范的状态,所述处理包括:
访问所述规范,其中所述规范的状态表示所述可执行逻辑的、能够在该状态下执行的一个或多个部分;
接收所述数据项中的第一数据项,其中所述第一数据项与所述关键字的特定值相关联;
识别针对所述关键字的所述特定值的第一状态;
根据所述可执行逻辑的、被所述规范指定为能够在所述第一状态下执行的一个或多个部分来处理所述第一数据项;
识别针对所述关键字的所述特定值的、从所述规范的所述第一状态向所述可执行逻辑的一个或多个其它部分能够执行的第二状态的转变;
接收与所述关键字的另一值相关联的中间数据项,其中该另一值与所述关键字的所述特定值不同、并且与所述关键字的所述特定值不相关联;
识别与针对所述中间数据项的所述关键字的所述另一值相关联的所述规范的给定状态;
根据所述可执行逻辑的、被所述规范指定为能够在所述给定状态下执行的一个或多个部分来处理所述中间数据项;
接收所述数据项中、在所述流中比所述第一数据项和所述中间数据项靠后且也与所述关键字的所述特定值相关联的第二数据项;以及
基于针对所述关键字的所述特定值的所述规范的转变,根据所述可执行逻辑的、被所述规范指定为能够在所述第二状态下执行的一个或多个部分来处理所述第二数据项,其中所述可执行逻辑的、能够在所述第二状态下执行的所述一个或多个部分与所述可执行逻辑的、能够在所述第一状态下执行的所述一个或多个部分不同。
CN201780032631.3A 2016-05-24 2017-05-23 用于处理网络中的关键数据的可执行逻辑 Active CN109196482B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210448939.9A CN114817037B (zh) 2016-05-24 2017-05-23 数据处理系统、方法和存储装置

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662340825P 2016-05-24 2016-05-24
US62/340,825 2016-05-24
US15/376,129 US10579753B2 (en) 2016-05-24 2016-12-12 Executable logic for processing keyed data in networks
US15/376,129 2016-12-12
PCT/US2017/033978 WO2017205362A1 (en) 2016-05-24 2017-05-23 Executable logic for processing keyed data in networks

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210448939.9A Division CN114817037B (zh) 2016-05-24 2017-05-23 数据处理系统、方法和存储装置

Publications (2)

Publication Number Publication Date
CN109196482A CN109196482A (zh) 2019-01-11
CN109196482B true CN109196482B (zh) 2022-04-05

Family

ID=59009798

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210448939.9A Active CN114817037B (zh) 2016-05-24 2017-05-23 数据处理系统、方法和存储装置
CN201780032631.3A Active CN109196482B (zh) 2016-05-24 2017-05-23 用于处理网络中的关键数据的可执行逻辑

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202210448939.9A Active CN114817037B (zh) 2016-05-24 2017-05-23 数据处理系统、方法和存储装置

Country Status (9)

Country Link
US (2) US10579753B2 (zh)
EP (1) EP3465442B1 (zh)
JP (2) JP6847980B2 (zh)
CN (2) CN114817037B (zh)
AU (2) AU2017269280B2 (zh)
CA (2) CA3026445C (zh)
DE (1) DE112017002645T5 (zh)
SG (2) SG11201809395XA (zh)
WO (1) WO2017205362A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19521421C2 (de) * 1995-06-14 1999-12-30 Hoffmeister Helmut Steuerbarer Schrägaufzug
US10579753B2 (en) 2016-05-24 2020-03-03 Ab Initio Technology Llc Executable logic for processing keyed data in networks
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US11947978B2 (en) 2017-02-23 2024-04-02 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US11429725B1 (en) * 2018-04-26 2022-08-30 Citicorp Credit Services, Inc. (Usa) Automated security risk assessment systems and methods
US10978176B2 (en) 2018-06-29 2021-04-13 pulseData Inc. Machine learning systems and methods for predicting risk of renal function decline
US11561993B2 (en) * 2018-08-08 2023-01-24 Ab Initio Technology Llc Generating real-time aggregates at scale for inclusion in one or more modified fields in a produced subset of data
AU2019346562B2 (en) 2018-09-25 2023-08-10 Ab Initio Technology Llc A dedicated audit port for implementing recoverability in outputting audit data
CN109634845B (zh) * 2018-11-13 2022-05-17 微梦创科网络科技(中国)有限公司 一种生成上下文记录文本的方法及装置
CN110059004B (zh) * 2019-03-21 2021-08-17 深圳市腾讯信息技术有限公司 一种应用测试的方法、装置、设备和介质
CN112286812A (zh) * 2020-10-30 2021-01-29 上海莉莉丝科技股份有限公司 Json数据处理方法、系统、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101923464A (zh) * 2010-05-19 2010-12-22 上海爱韦讯信息技术有限公司 Do-178b标准文档生成器
CN105224461A (zh) * 2015-10-23 2016-01-06 网易(杭州)网络有限公司 一种集成测试用例的生成方法和装置

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0792771B2 (ja) * 1986-04-01 1995-10-09 株式会社日立製作所 プログラム実行状況表示システム
US5966072A (en) * 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US6542894B1 (en) 1998-12-09 2003-04-01 Unica Technologies, Inc. Execution of multiple models using data segmentation
AU1968501A (en) 1999-10-21 2001-04-30 Unica Technologies, Inc. Combining value and probability models in database mining
US20020083103A1 (en) 2000-10-02 2002-06-27 Ballance Chanin M. Machine editing system incorporating dynamic rules database
US7571187B2 (en) * 2002-05-31 2009-08-04 Microsoft Corporation Support for real-time queries concerning current state, data and history of a process
US8145629B2 (en) * 2004-05-28 2012-03-27 International Business Machines Corporation Method and system for business reporting
US7472101B2 (en) 2005-07-12 2008-12-30 Tibco Software Inc. Inferential state machines
US9092464B2 (en) * 2005-11-17 2015-07-28 International Business Machines Corporation Monitoring and debugging query execution objects
US20090276431A1 (en) 2008-05-01 2009-11-05 Kabira Technologies, Inc. Java virtual machine having integrated transaction management system
US8868518B2 (en) * 2009-08-14 2014-10-21 International Business Machines Corporation Processing of streaming data with keyed aggregation
EP2348416A1 (en) 2010-01-21 2011-07-27 Software AG Analysis system and method for analyzing continuous queries for data streams
US9552280B2 (en) * 2010-05-13 2017-01-24 Microsoft Technology Licensing, Llc Visual analysis and debugging of complex event flows
EP2612260A1 (en) 2010-09-03 2013-07-10 Loglogic, Inc. Dynamic parsing rules
JP5480395B2 (ja) * 2010-10-06 2014-04-23 株式会社日立製作所 ストリームデータ処理方法及び装置
US8887138B2 (en) * 2012-05-25 2014-11-11 Telefonaktiebolaget L M Ericsson (Publ) Debugging in a dataflow programming environment
KR101388845B1 (ko) * 2012-07-10 2014-04-23 삼성전기주식회사 다단 히트 싱크를 구비한 냉각 시스템 및 그 제어방법
WO2014093198A1 (en) * 2012-12-10 2014-06-19 DANIELSSON, Bjorn Rules based data processing system and method
WO2014107318A1 (en) * 2013-01-03 2014-07-10 Ab Initio Technology Llc Configurable testing of computer programs
US9256460B2 (en) * 2013-03-15 2016-02-09 International Business Machines Corporation Selective checkpointing of links in a data flow based on a set of predefined criteria
KR102349573B1 (ko) 2013-09-27 2022-01-10 아브 이니티오 테크놀로지 엘엘시 데이터에 적용되는 규칙 평가
JP6032680B2 (ja) * 2013-10-31 2016-11-30 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 受信したデータごとに集計処理を行うシステム、方法およびプログラム
EP3189422A1 (en) 2014-09-02 2017-07-12 AB Initio Technology LLC Executing graph-based program specifications
JP6479966B2 (ja) 2014-09-02 2019-03-06 アビニシオ テクノロジー エルエルシー ユーザインタラクションを通じたグラフに基づくプログラム内の構成要素のサブセットの視覚的な規定
US10055333B2 (en) 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph
US10579753B2 (en) 2016-05-24 2020-03-03 Ab Initio Technology Llc Executable logic for processing keyed data in networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101923464A (zh) * 2010-05-19 2010-12-22 上海爱韦讯信息技术有限公司 Do-178b标准文档生成器
CN105224461A (zh) * 2015-10-23 2016-01-06 网易(杭州)网络有限公司 一种集成测试用例的生成方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Processing Flows of Information: From Data Stream to Complex Event Processing;GIANPAOLO CUGOLA等;《ACM Computing Surveys (CSUR)》;20120614;第1-62页 *

Also Published As

Publication number Publication date
AU2020202161B2 (en) 2021-11-25
US20200175213A1 (en) 2020-06-04
EP3465442B1 (en) 2023-07-05
AU2020202161A1 (en) 2020-04-16
JP7163435B2 (ja) 2022-10-31
SG10202003805QA (en) 2020-06-29
SG11201809395XA (en) 2018-11-29
AU2017269280B2 (en) 2020-01-23
JP6847980B2 (ja) 2021-03-24
CA3026445C (en) 2022-11-15
DE112017002645T5 (de) 2019-03-07
CA3026445A1 (en) 2017-11-30
US10579753B2 (en) 2020-03-03
CA3175664A1 (en) 2017-11-30
AU2017269280A1 (en) 2018-12-06
JP2019521421A (ja) 2019-07-25
CN114817037A (zh) 2022-07-29
EP3465442A1 (en) 2019-04-10
WO2017205362A1 (en) 2017-11-30
JP2021106000A (ja) 2021-07-26
US20170344672A1 (en) 2017-11-30
US11295049B2 (en) 2022-04-05
CN114817037B (zh) 2023-02-17
CN109196482A (zh) 2019-01-11

Similar Documents

Publication Publication Date Title
CN109196482B (zh) 用于处理网络中的关键数据的可执行逻辑
EP3635536B1 (en) Integrated system for rule editing, simulation, version control, and business process management
US8930337B2 (en) Mapping dataset elements
US8006187B1 (en) Checkpoint sequence fallout metrics management during path analysis
US20140013308A1 (en) Application Development Environment with Services Marketplace
US20140013306A1 (en) Computer Load Generator Marketplace
US20130282545A1 (en) Marketplace for Monitoring Services
US11263562B1 (en) System and method for computer-assisted improvement of business intelligence exosystem
US20050125401A1 (en) Wizard for usage in real-time aggregation and scoring in an information handling system
CN109960560A (zh) 一种指标处理方法及系统
CN114168565B (zh) 业务规则模型的回溯测试方法、装置、系统及决策引擎
US8375365B2 (en) Customization verification
US20140316926A1 (en) Automated Market Maker in Monitoring Services Marketplace
US20150006236A1 (en) Rules visualization using an expression tree
US20050125280A1 (en) Real-time aggregation and scoring in an information handling system
Zafar et al. Simtee: An automated environment for simulation and analysis of requirements
WO2020047173A1 (en) Computer system and method for predicting risk level of punch items

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