首页 / 专利库 / 专利权 / 申请 / 国际申请 / 请求书 / 指定 / 指定和应用数据的规则

指定和应用数据的规则

阅读:577发布:2020-05-12

专利汇可以提供指定和应用数据的规则专利检索,专利查询,专利分析的服务。并且一种用于将规则应用于数据的方法包括:从数据源接收数据;以及处理有序的多个数据单元中的特定数据单元,有序的多个数据单元至少部分从接收到的数据中导出。处理包括:确定一组数据单元,该组数据单元包括来自有序的多个数据单元中的数据单元的有序子集,有序子集中的每个数据单元与特定数据单元相关,并且在有序的多个数据单元中出现在特定数据单元之前。在应用规则之前,将状态变量更新为如果依序 迭代 通过上述一组数据单元将可能产生的状态,并且,对于有序子集的每个数据单元,将规则应用于数据单元。然后,将规则应用于特定数据单元,包括读取状态变量的更新后的值。,下面是指定和应用数据的规则专利的具体信息内容。

1.一种用于将规则应用于来自一个或多个数据源的数据的方法,所述方法包括:
从第一数据源接收数据;
处理有序的多个数据单元中的特定数据单元,所述有序的多个数据单元至少部分从接收自所述第一数据源的数据中导出,所述处理包括:
确定第一组数据单元,所述第一组数据单元包括来自所述有序的多个数据单元中的数据单元的有序子集,所述有序子集中包括的每个数据单元与所述特定数据单元相关并且在所述有序的多个数据单元中出现在所述特定数据单元之前;
在将所述规则应用于所述特定数据单元之前,将至少一个状态变量更新为如果依序迭代通过所述第一组数据单元将能够产生的状态,并且对于所述有序子集的每个数据单元,将所述规则应用于数据单元;以及
将所述规则应用于所述特定数据单元,其包括读取所述状态变量的更新后的值。
2.根据权利要求1所述的方法,其中,所述处理与在测试环境中将所述规则应用于来自一个或多个数据源的数据的第一模式相关联,在所述第一模式中,在用于测试所述规则的用户界面内选择所述特定数据单元。
3.根据权利要求2所述的方法,其中,在测试环境中将所述规则应用于来自一个或多个数据源的数据的所述第一模式被配置为:针对所述有序的多个数据单元的每个数据单元产生结果,其与在制作环境中将所述规则应用于来自一个或多个数据源的数据的第二模式中产生的结果一致。
4.根据权利要求3所述的方法,其中,在测试环境中将所述规则应用于来自一个或多个数据源的数据的所述第一模式被配置为:针对所述有序的多个数据单元的每个数据单元产生结果,其与在测试环境中将所述规则应用于来自一个或多个数据源的数据的第三模式中产生的结果一致,在所述第三模式中,对所有的所述有序的多个数据单元进行批量测试。
5.根据权利要求1所述的方法,其中,所述第一组数据单元由数据单元的所述有序子集构成。
6.根据权利要求1所述的方法,其中,更新所述状态变量包括依序迭代通过所述第一组数据单元,并且针对所述有序子集的每个数据单元,将所述规则应用于数据单元,并且基于将所述规则应用于数据单元的结果写入所述状态变量的更新后的值。
7.根据权利要求6所述的方法,其中,所述第一组数据单元包括不在数据单元的所述有序子集中的数据单元,并且依序迭代通过所述第一组数据单元包括确定数据单元是否是数据单元的所述有序子集的成员。
8.根据权利要求1所述的方法,其中,所述多个数据单元包括相关数据单元,所述相关数据单元是所述多个数据单元中第一次出现的与所述特定数据单元相关的数据单元,并且数据单元的所述有序子集的初始数据单元不是所述相关数据单元。
9.根据权利要求8所述的方法,还包括:针对每一次将所述规则应用于所述有序的多个数据单元中的数据单元,将所述状态变量的更新后的值存储在状态变量缓存中。
10.根据权利要求9所述的方法,其中,将所述规则应用于数据单元的所述有序子集的初始数据单元包括:从所述状态变量缓存读取所述状态变量的更新后的值,该值是响应于将所述规则应用于在所述多个数据单元中出现在所述初始数据单元之前的数据单元而存储的。
11.根据权利要求10所述的方法,其中,在所述多个数据单元中出现在所述初始数据单元之前的数据单元是与所述初始数据单元相关的、并且在所多个数据单元中出现在所述初始数据单元之前的最近的数据单元。
12.根据权利要求1所述的方法,其中,所述规则包括多个规则情况。
13.根据权利要求12所述的方法,其中,测试所述多个规则情况中的至少一个规则情况的结果取决于所述状态变量的值。
14.根据权利要求13所述的方法,其中,将所述规则应用于所述多个数据单元的所述特定数据单元包括:针对所述状态变量的更新后的值测试所述多个规则情况中的所述至少一个规则情况。
15.根据权利要求1所述的方法,其中,数据单元的所述有序子集中的初始数据单元是第一次出现的与所述有序的多个数据单元中的所述特定数据单元相关的数据单元。
16.根据权利要求15所述的方法,其中,所述多个规则情况中的至少一个规则情况基于从第二数据源导出的值,所述第二数据源与所述第一数据源不同。
17.根据权利要求16所述的方法,其中,所述第二数据源在所述处理开始之后被动态的访问
18.根据权利要求16所述的方法,其中,所述有序的多个数据单元中的每个数据单元包括来自所述第一数据源的记录的一个或多个值和来自所述第二数据源的至少一个值。
19.根据权利要求18所述的方法,其中,所述有序的多个数据单元根据所述第一数据源的一组记录的顺序来排序。
20.根据权利要求1所述的方法,其中,数据单元的所述有序子集的每个数据单元通过共享标识符与数据单元的所述有序子集的其他数据单元相关。
21.根据权利要求20所述的方法,其中,所述共享标识符包括键字段值。
22.根据权利要求1所述的方法,其中,处理所述特定数据单元包括:确定为所述特定数据单元的一个或多个先前获取的值是否存在于数据单元缓存中并且是否有效,并且如果确定先前获取的值存在并且有效,则从所述数据单元缓存中为所述特定数据单元获取一个或多个值,否则,从包括所述第一数据源的一个或多个数据源中为所述特定数据单元获取一个或多个值。
23.根据权利要求22所述的方法,其中,确定为所述特定数据单元的先前获取的值是否有效包括:将自获取了先前获取的值起所经过的时间与预定的经过时间阈值进行比较。
24.根据权利要求22所述的方法,其中,从所述一个或多个数据源为所述特定数据单元获取一个或多个值包括:打开至所述第一数据源的连接用于为所述特定数据单元接收一个或多个值,并且将所述连接保持在打开状态用于为所述有序的多个数据单元中其他数据单元接收一个或多个值。
25.根据权利要求22所述的方法,其中,从所述一个或多个数据源为所述特定数据单元获取一个或多个值包括:从先前打开的至所述第一数据源的连接为所述特定数据单元接收一个或多个值。
26.根据权利要求1所述的方法,其中,所述第一数据源是数据库
27.根据权利要求1所述的方法,其中,所述第一数据源是数据档案文件。
28.根据权利要求1所述的方法,还包括:针对所述有序子集的至少第一数据单元,确定为所述第一数据单元的先前获取的值是否存在于数据单元缓存中并且是否有效,并且如果确定所述先前获取的值存在并且有效,则从所述数据单元缓存中为所述第一数据单元获取一个或多个值,否则,从包括所述第一数据源的一个或多个数据源中为所述第一数据单元获取一个或多个值。
29.根据权利要求28所述的方法,其中,确定为所述第一数据单元的先前获取的值是否有效包括:将自获取所述先前获取的值起所经过的时间与预定的经过时间阈值进行比较。
30.根据权利要求1所述的方法,其中,从所述一个或多个数据源为所述第一数据单元获取一个或多个值包括:打开至所述第一数据源的连接用于为所述第一数据单元接收一个或多个值,并且将所述连接保持在打开状态用于为所述有序的多个数据单元中其他数据单元接收一个或多个值。
31.根据权利要求1所述的方法,其中,从所述一个或多个数据源为所述第一数据单元获取一个或多个值包括:从先前打开的至所述第一数据源的连接为所述第一数据单元接收一个或多个值。
32.一种以非暂时形式存储在计算机可读介质上的软件,用于将规则应用于来自一个或多个数据源的数据,所述软件包括用于使得计算系统执行下列步骤的指令:
从第一数据源接收数据;
处理有序的多个数据单元中的特定数据单元,所述有序的多个数据单元至少部分从接收自所述第一数据源的数据中导出,所述处理包括:
确定第一组数据单元,所述第一组数据单元包括来自所述有序的多个数据单元中的数据单元的有序子集,所述有序子集中包括的每个数据单元与所述特定数据单元相关并且在所述有序的多个数据单元中出现在所述特定数据单元之前;
在将所述规则应用于所述特定数据单元之前,将至少一个状态变量更新为如果依序迭代通过所述第一组数据单元将能够产生的状态,并且对于所述有序子集的每个数据单元,将所述规则应用于数据单元;以及
将所述规则应用于所述特定数据单元,其包括读取所述状态变量的更新后的值。
33.一种用于将规则应用于来自一个或多个数据源的数据的计算系统,所述计算系统包括:
输入装置或端口,被配置为从第一数据源接收数据;
至少一个处理器,被配置为处理有序的多个数据单元的特定数据单元,所述有序的多个数据单元至少部分从接收自所述第一数据源的所述数据中导出,所述处理包括:
确定第一组数据单元,所述第一组数据单元包括来自所述有序的多个数据单元中的数据单元的有序子集,所述有序子集中包括的每个数据单元与所述特定数据单元相关并且在所述有序的多个数据单元中出现在所述特定数据单元之前;
在将所述规则应用于所述特定数据单元之前,将至少一个状态变量更新为如果依序迭代通过所述第一组数据单元将能够产生的状态,并且对于所述有序子集的每个数据单元,将所述规则应用于数据单元;以及将所述规则应用于所述特定数据单元,其包括读取所述状态变量的更新后的值。

说明书全文

指定和应用数据的规则

[0001] 相关申请的交叉引用
[0002] 本申请要求于2014年10月20日提交的序列号为62/065,909的美国申请的优先权。

技术领域

[0003] 本说明书涉及指定和应用数据的规则。

背景技术

[0004] 在一些示例中,对数据处理系统中的记录可以应用一个或多个规则。例如,规则可以用于验证记录的质量或者用于基于记录中所包括的信息来触发事件。开发者可以使用用户界面指定规则。在一些示例中,取决于研发阶段或制作阶段中是否应用了规则,应用规则的结果可能不同。发明内容
[0005] 在第一方面中,一般性地,一种用于将规则应用于来自一个或多个数据源的数据的方法,所述方法包括:从第一数据源接收数据;以及处理有序的多个数据单元中的特定数据单元,所述有序的多个数据单元至少部分从接收自所述第一数据源的数据中导出。所述处理包括:确定第一组数据单元,所述第一组数据单元包括来自所述有序的多个数据单元中的数据单元的有序子集,所述有序子集中包括的每个数据单元与所述特定数据单元相关并且在所述有序的多个数据单元中出现在所述特定数据单元之前;在将所述规则应用于所述特定数据单元之前,将至少一个状态变量更新为如果依序迭代通过所述第一组数据单元将能够产生的状态,并且对于所述有序子集的每个数据单元,将所述规则应用于数据单元;以及将所述规则应用于所述特定数据单元,其包括读取所述状态变量的更新后的值。
[0006] 各个方面可以包括一个或多个下述特征。
[0007] 所述处理可以与在测试环境中将所述规则应用于来自一个或多个数据源的数据的第一模式相关联,在所述第一模式中,在用于测试所述规则的用户界面内选择所述特定数据单元。在测试环境中将所述规则应用于来自一个或多个数据源的数据的所述第一模式可以被配置为:针对所述有序的多个数据单元的每个数据单元产生结果,其与在制作环境中将所述规则应用于来自一个或多个数据源的数据的第二模式中产生的结果一致。在测试环境中将所述规则应用于来自一个或多个数据源的数据的所述第一模式可以被配置为:针对所述有序的多个数据单元的每个数据单元产生结果,其与在测试环境中将所述规则应用于来自一个或多个数据源的数据的第三模式中产生的结果一致,在所述第三模式中,对所有的所述有序的多个数据单元进行批量测试。
[0008] 所述第一组数据单元可以由数据单元的所述有序子集构成。更新所述状态变量可以包括依序迭代通过所述第一组数据单元,并且针对所述有序子集的每个数据单元,将所述规则应用于数据单元,并且基于将所述规则应用于数据单元的结果写入所述状态变量的更新后的值。所述第一组数据单元可以包括不在数据单元的所述有序子集中的数据单元,并且依序迭代通过所述第一组数据单元可以包括确定数据单元是否是数据单元的所述有序子集的成员。所述多个数据单元可以包括相关数据单元,所述相关数据单元是所述多个数据单元中第一次出现的与所述特定数据单元相关的数据单元,并且数据单元的所述有序子集的初始数据单元不是所述相关数据单元。
[0009] 所述方法可以包括:针对每一次将所述规则应用于所述有序的多个数据单元中的数据单元,将所述状态变量的更新后的值存储在状态变量缓存中。将所述规则应用于数据单元的所述有序子集的初始数据单元可以包括:从所述状态变量缓存读取所述状态变量的更新后的值,该值是响应于将所述规则应用于在所述多个数据单元中出现在所述初始数据单元之前的数据单元而存储的。在所述多个数据单元中出现在所述初始数据单元之前的数据单元可以是与所述初始数据单元相关的、并且在所多个数据单元中出现在所述初始数据单元之前的最近的数据单元。所述规则可以包括多个规则情况。测试所述多个规则情况中的至少一个规则情况的结果可以取决于所述状态变量的值。
[0010] 将所述规则应用于所述多个数据单元的所述特定数据单元可以包括:针对所述状态变量的更新后的值测试所述多个规则情况中的所述至少一个规则情况。数据单元的所述有序子集中的初始数据单元可以是第一次出现的与所述有序的多个数据单元中的所述特定数据单元相关的数据单元。所述多个规则情况中的至少一个规则情况可以基于从第二数据源导出的值,所述第二数据源与所述第一数据源不同。所述第二数据源在所述处理开始之后可以被动态的访问。所述有序的多个数据单元中的每个数据单元可以包括来自所述第一数据源的记录的一个或多个值和来自所述第二数据源的至少一个值。所述有序的多个数据单元可以根据所述第一数据源的一组记录的顺序来排序。数据单元的所述有序子集的每个数据单元可以通过共享标识符与数据单元的所述有序子集的其他数据单元相关。所述共享标识符可以包括键字段值。
[0011] 处理所述特定数据单元可以包括:确定为所述特定数据单元的一个或多个先前获取的值是否存在于数据单元缓存中并且是否有效,并且如果确定先前获取的值存在并且有效,则从所述数据单元缓存中为所述特定数据单元获取一个或多个值,否则,从包括所述第一数据源的一个或多个数据源中为所述特定数据单元获取一个或多个值。确定为所述特定数据单元的先前获取的值是否有效可以包括:将自获取了先前获取的值起所经过的时间与预定的经过时间阈值进行比较。
[0012] 从所述一个或多个数据源为所述特定数据单元获取一个或多个值可以包括:打开至所述第一数据源的连接用于为所述特定数据单元接收一个或多个值,并且将所述连接保持在打开状态用于为所述有序的多个数据单元中其他数据单元接收一个或多个值。从所述一个或多个数据源为所述特定数据单元获取一个或多个值可以包括:从先前打开的至所述第一数据源的连接为所述特定数据单元接收一个或多个值。所述第一数据源可以是数据库。所述第一数据源可以是数据档案文件。
[0013] 所述方法可以包括:针对所述有序子集的至少第一数据单元,确定为所述第一数据单元的先前获取的值是否存在于数据单元缓存中并且是否有效,并且如果确定所述先前获取的值存在并且有效,则从所述数据单元缓存中为所述第一数据单元获取一个或多个值,否则,从包括所述第一数据源的一个或多个数据源中为所述第一数据单元获取一个或多个值。确定为所述第一数据单元的先前获取的值是否有效可以包括:将自获取所述先前获取的值起所经过的时间与预定的经过时间阈值进行比较。从所述一个或多个数据源为所述第一数据单元获取一个或多个值可以包括:打开至所述第一数据源的连接用于为所述第一数据单元接收一个或多个值,并且将所述连接保持在打开状态用于为所述有序的多个数据单元中其他数据单元接收一个或多个值。从所述一个或多个数据源为所述第一数据单元获取一个或多个值可以包括:从先前打开的至所述第一数据源的连接为所述第一数据单元接收一个或多个值。
[0014] 在另一方面中,一般性地,一种以非暂时形式存储在计算机可读介质上的软件,用于将规则应用于来自一个或多个数据源的数据,所述软件包括用于使得计算系统执行下列步骤的指令:从第一数据源接收数据;以及处理有序的多个数据单元中的特定数据单元,所述有序的多个数据单元至少部分从接收自所述第一数据源的数据中导出。所述处理包括:确定第一组数据单元,所述第一组数据单元包括来自所述有序的多个数据单元中的数据单元的有序子集,所述有序子集中包括的每个数据单元与所述特定数据单元相关并且在所述有序的多个数据单元中出现在所述特定数据单元之前;在将所述规则应用于所述特定数据单元之前,将至少一个状态变量更新为如果依序迭代通过所述第一组数据单元将能够产生的状态,并且对于所述有序子集的每个数据单元,将所述规则应用于数据单元;以及将所述规则应用于所述特定数据单元,其包括读取所述状态变量的更新后的值。
[0015] 在另一方面中,一般性地,一种用于将规则应用于来自一个或多个数据源的数据的计算系统,所述计算系统包括:输入装置或端口,被配置为从第一数据源接收数据;以及至少一个处理器,被配置为处理有序的多个数据单元的特定数据单元,所述有序的多个数据单元至少部分从接收自所述第一数据源的所述数据中导出。所述处理包括:确定第一组数据单元,所述第一组数据单元包括来自所述有序的多个数据单元中的数据单元的有序子集,所述有序子集中包括的每个数据单元与所述特定数据单元相关并且在所述有序的多个数据单元中出现在所述特定数据单元之前;在将所述规则应用于所述特定数据单元之前,将至少一个状态变量更新为如果依序迭代通过所述第一组数据单元将能够产生的状态,并且对于所述有序子集的每个数据单元,将所述规则应用于数据单元;以及将所述规则应用于所述特定数据单元,其包括读取所述状态变量的更新后的值。
[0016] 在另一个方面中,一般性地,一种用于将规则应用于来自一个或多个数据源的数据的计算系统,所述计算系统包括:输入装置或端口,被配置为从第一数据源接收数据;以及至少一个处理器,被配置为以应用所述规则的至少两种不同模式中选出的一种模式来处理多个数据单元,所述多个数据单元至少部分从接收自所述第一数据源的所述数据中导出。这些模式包括:第一模式,在所述第一模式中,以特定顺序接收所述多个数据单元,并且处理所述多个数据单元包括:针对所述多个数据单元的至少一些数据单元中的每一个数据单元,基于将所述规则应用于数据单元的结果将更新后的值写入至少一个状态变量;以及第二模式,在所述第二模式中,接收所述多个数据单元中选择的特定数据单元,并且处理所述特定数据单元包括:(1)确定第一组数据单元,所述第一组数据单元包括来自所述多个数据单元中的数据单元的有序子集,所述有序子集中包括的每个数据单元在所述多个数据单元中出现在所述特定数据单元之前;(2)在将所述规则应用于所述特定数据单元之前,将至少一个状态变量更新为如果以所述第一模式处理所述第一组数据单元将能够产生的状态;以及(3)将所述规则应用于所述特定数据单元,包括读取所述状态变量的更新后的值。
[0017] 各个方面可以包括一个或多个下述特征。
[0018] 所述第二模式可以是在测试环境中将所述规则应用于来自一个或多个数据源的数据的模式,在所述第二模式中,在用于测试所述规则的用户界面内选择所述特定数据单元。所述第一模式可以是在制作环境中将所述规则应用于来自一个或多个数据源的数据的模式。所述第一模式可以是在所述测试环境中将所述规则应用于来自一个或多个数据源的数据的模式,在所述第一模式中,对所有的所述多个数据单元进行批量测试。所述第一组数据单元可以由数据单元的所述有序子集构成。
[0019] 更新所述状态变量可以包括依序迭代通过所述第一组数据单元,并且针对所述有序子集的每个数据单元,将所述规则应用于数据单元,并且基于将所述规则应用于数据单元的结果写入所述状态变量的更新后的值。所述第一组数据单元可以包括不在数据单元的所述有序子集中的数据单元,并且依序迭代通过所述第一组数据单元可以包括确定数据单元是否是数据单元的所述有序子集的成员。所述有序子集中包括的每个数据单元可以与所述特定数据单元相关,并且所述多个数据单元可以包括相关数据单元,所述相关数据单元是所述多个数据单元中第一次出现的与所述特定数据单元相关的数据单元,并且数据单元的所述有序子集的初始数据单元不是所述相关数据单元。
[0020] 以所述第二模式处理所述特定数据单元可以包括:针对每一次将所述规则应用于所述多个数据单元中的数据单元,将所述状态变量的更新后的值存储在状态变量缓存中。将所述规则应用于数据单元的所述有序子集的初始数据单元可以包括:从所述状态变量缓存读取所述状态变量的更新后的值,该值是响应于将所述规则应用于在所述多个数据单元中出现在所述初始数据单元之前的数据单元而存储的。在所述多个数据单元中出现在所述初始数据单元之前的数据单元可以是与所述初始数据单元相关的、并且在所多个数据单元中出现在所述初始数据单元之前的最近的数据单元。所述规则可以包括多个规则情况。
[0021] 测试所述多个规则情况中的至少一个规则情况的结果可以取决于所述状态变量的值。将所述规则应用于所述多个数据单元的所述特定数据单元可以包括:针对所述状态变量的更新后的值测试所述多个规则情况中的所述至少一个规则情况。所述有序子集中包括的每个数据单元可以与所述特定数据单元相关,并且数据单元的所述有序子集中的初始数据单元可以是第一次出现的与所述多个数据单元中的所述特定数据单元相关的数据单元。所述多个规则情况中的至少一个规则情况可以基于从第二数据源导出的值,所述第二数据源与所述第一数据源不同。所述第二数据源在所述处理开始之后可以被动态的访问。
[0022] 所述多个数据单元中的每个数据单元可以包括来自所述第一数据源的记录的一个或多个值和来自所述第二数据源的至少一个值。所述多个数据单元可以根据所述第一数据源的一组记录的顺序来排序。所述有序子集中包括的每个数据单元可以通过共享标识符与所述特定数据单元相关并且与数据单元的所述有序子集的其他数据单元相关。所述共享标识符可以包括键字段值。
[0023] 处理所述特定数据单元可以包括:确定为所述特定数据单元的一个或多个先前获取的值是否存在于数据单元缓存中并且是否有效,并且如果确定先前获取的值存在并且有效,则从所述数据单元缓存中为所述特定数据单元获取一个或多个值,否则,从包括所述第一数据源的一个或多个数据源中为所述特定数据单元获取一个或多个值。确定为所述特定数据单元的先前获取的值是否有效可以包括:将自获取了先前获取的值起所经过的时间与预定的经过时间阈值进行比较。从所述一个或多个数据源为所述特定数据单元获取一个或多个值可以包括:打开至所述第一数据源的连接用于为所述特定数据单元接收一个或多个值,并且将所述连接保持在打开状态用于为所述多个数据单元中其他数据单元接收一个或多个值。
[0024] 从所述一个或多个数据源为所述特定数据单元获取一个或多个值可以包括:从先前打开的至所述第一数据源的连接为所述特定数据单元接收一个或多个值。所述第一数据源可以是数据库。所述第一数据源可以是数据档案文件。
[0025] 以所述第二模式处理所述特定数据单元可以包括:针对所述有序子集的至少第一数据单元,确定为所述第一数据单元的先前获取的值是否存在于数据单元缓存中并且是否有效,并且如果确定所述先前获取的值存在并且有效,则从所述数据单元缓存中为所述第一数据单元获取一个或多个值,否则,从包括所述第一数据源的一个或多个数据源中为所述第一数据单元获取一个或多个值。
[0026] 确定为所述第一数据单元的先前获取的值是否有效可以包括:将自获取所述先前获取的值起所经过的时间与预定的经过时间阈值进行比较。从所述一个或多个数据源为所述第一数据单元获取一个或多个值可以包括:打开至所述第一数据源的连接用于为所述第一数据单元接收一个或多个值,并且将所述连接保持在打开状态用于为所述多个数据单元中其他数据单元接收一个或多个值。从所述一个或多个数据源获取所述第一数据单元的一个或多个值可以包括从在先打开的所第一数据源的连接中接收所述第一数据单元的一个或多个值。
[0027] 在另一方面中,一般性地,一种以非暂时形式存储在计算机可读介质上的软件,用于将规则应用于来自一个或多个数据源的数据,所述软件包括用于使得计算系统执行下列步骤的指令:为从第一数据源接收数据;以及以应用所述规则的至少两种不同模式中选出的一种模式来处理多个数据单元,所述多个数据单元至少部分从接收自所述第一数据源的所述数据中导出。这些模式包括:第一模式,在所述第一模式中,以特定顺序接收所述多个数据单元,并且处理所述多个数据单元包括:针对所述多个数据单元的至少一些数据单元中的每一个数据单元,基于将所述规则应用于数据单元的结果将更新后的值写入至少一个状态变量;以及第二模式,在所述第二模式中,接收所述多个数据单元中选择的特定数据单元,并且处理所述特定数据单元包括:(1)确定第一组数据单元,所述第一组数据单元包括来自所述多个数据单元中的数据单元的有序子集,所述有序子集中包括的每个数据单元在所述多个数据单元中出现在所述特定数据单元之前;(2)在将所述规则应用于所述特定数据单元之前,将至少一个状态变量更新为如果以所述第一模式处理所述第一组数据单元将能够产生的状态;以及(3)将所述规则应用于所述特定数据单元,包括读取所述状态变量的更新后的值。
[0028] 在另一方面中,一般性地,一种用于将规则应用于来自一个或多个数据源的数据的方法,所述方法包括:为从第一数据源接收数据;以及以应用所述规则的至少两种不同模式中选出的一种模式来处理多个数据单元,所述多个数据单元至少部分从接收自所述第一数据源的所述数据中导出。这些模式包括:第一模式,在所述第一模式中,以特定顺序接收所述多个数据单元,并且处理所述多个数据单元包括:针对所述多个数据单元的至少一些数据单元中的每一个数据单元,基于将所述规则应用于数据单元的结果将更新后的值写入至少一个状态变量;以及第二模式,在所述第二模式中,接收所述多个数据单元中选择的特定数据单元,并且处理所述特定数据单元包括:(1)确定第一组数据单元,所述第一组数据单元包括来自所述多个数据单元中的数据单元的有序子集,所述有序子集中包括的每个数据单元在所述多个数据单元中出现在所述特定数据单元之前;(2)在将所述规则应用于所述特定数据单元之前,将至少一个状态变量更新为如果以所述第一模式处理所述第一组数据单元将能够产生的状态;以及(3)将所述规则应用于所述特定数据单元,包括读取所述状态变量的更新后的值。
[0029] 各个方面可以包括一个或多个下述优点。
[0030] 与常规系统相比,本文所描述的一些方面改进了用于指定和应用规则的系统的性能和功能,同时,确保当所述系统用单个单元测试模式、批量测试模式以及制作模式来应用规则时产生一致的结果,下文将进行更加详细的描述。
[0031] 与一些常规系统不同,本文描述的方面不需要静态测试环境。这可能是有利的,这是因为各个方面可以对复杂事件处理有效地工作,并且不太可能导致开发人员为了符合静态测试环境而改变他们编写规则的方式。
[0032] 根据以下描述及权利要求,本发明的其他特征及优点将变得更加明显。附图说明
[0033] 图1是用于指定和应用数据的规则的系统的框图
[0034] 图2是用于指定和应用数据的规则的用户界面。
[0035] 图3是示出用户界面的元素与数据源的关联的框图。
[0036] 图4是批量应用规则的第一步骤的示图。
[0037] 图5是批量应用规则的第二步骤的示图。
[0038] 图6是批量应用规则的第三步骤的示图。
[0039] 图7是单个单元应用规则的第三步骤的示图。
[0040] 图8是单个单元应用规则的第一步骤的示图。
[0041] 图9是单个单元应用规则的第二步骤的示图。
[0042] 图10是示例性复杂事件处理例程的状态图。
[0043] 图11是配置用于复杂事件处理的系统的用户界面。

具体实施方式

[0044] 1综述
[0045] 图1示出了允许开发者110指定应用于来自一个或多个数据源的数据(例如,数据库记录)的数据处理规则的数据处理系统100的示例。因为由开发者110指定的数据处理规则在被释放到制作环境之前能正确地发挥功能很重要,所以系统100被配置为允许开发者110在释放数据处理规则之前针对测试数据去测试数据处理规则的功能。在一些示例中,系统100允许开发者110在单个单元测试模式中或在批量测试模式中测试数据处理规则的功能。在单个单元测试模式中,由开发者110指定的数据处理规则一次应用于一个测试数据单元。在批量测试模式中,由开发者110指定的数据处理规则一次应用于多个测试数据单元。
[0046] 系统100包括用于向系统100提供数据的数据源102、用于指定数据处理规则的用户界面112(例如,显示屏上的图形视图)、以及用于将数据处理规则应用于由数据源102所提供的数据的执行模104。
[0047] 1.1数据源
[0048] 通常,数据源102包括一个或多个数据源,例如存储设备或者在线数据流的连接,每个数据源可以存储或提供各种格式中任意一种的数据(例如,数据库表、电子表格文件、纯文本文件或大型机使用的本地格式)。在图1的示例性系统100中,数据源102包括测试数据集114、信用卡余额数据集116和多个近期采购档案118。注意到,包括在数据源102中的上述数据源的集合仅仅是可能包括在数据源102中的数据源的集合的一个示例。实际上,根据系统100的具体应用,数据源102中可以包括具有不同类型的数据内容的许多不同类型的数据源。
[0049] 数据源102中包括的至少一些数据集包括许多记录(例如,根据预定记录结构格式化的记录、或数据库表中的行)。所述许多记录中的每个元素可以包括关于多个字段的值(例如,记录结构中限定的属性、或数据库表中的列;例如,“名字”,“姓氏”,“电子邮件地址”等等),所述值可能包括空值或空白值。
[0050] 在一些示例中,数据源102中包括的数据源中的一个被指定为主数据源,并且数据源102中包括的其他数据源被指定为与主数据源相关的辅助数据数据源。一般来说,数据处理规则被应用于主数据源中的预定义记录集中的每条记录的至少一些字段。在将数据处理规则应用于主数据源的各条记录的过程中,访问辅助数据源以获得与来自主数据源的记录相关的且是数据处理规则所需的其他值或甚至是其他记录。例如,主数据集的每条记录可以包括用于访问来自辅助数据源的相关数据的键(例如,帐号)。可以收集来自主数据源和辅助数据源的数据作为单元以进行测试,该单元被称为“测试数据单元”,以下将进行更加详细的描述。在图1的示例性系统中,主数据源是测试数据集114,并且数据源102中包括的辅助数据源是信用卡余额数据集116和多个近期采购档案文件118。
[0051] 如下面更详细描述的那样,系统100被配置为能够在开发和测试数据处理规则期间动态地访问辅助数据源,而不是在开发和测试开始之前要求确定和存储固定的测试值作为辅助数据源的静态仿真。
[0052] 1.2用户界面
[0053] 用户界面112(下文参照图2进行更加详细的描述)使开发者110能够指定用于处理测试数据单元的一组数据处理规则。用户界面112的输出是一个或多个数据处理规则的规范。将由用户界面112生成的一个或多个数据处理规则的规范提供给执行环境104。
[0054] 1.3执行环境
[0055] 执行环境104包括用户界面(UI)模块106、处理模块108和参数集120。处理模块108包括状态存储器122。在一些示例中,所述参数集120和所述状态存储器122充当在应用数据处理规则期间可以被动态访问的附加辅助数据源。
[0056] 来自用户界面112的一个或多个数据处理规则的规范被提供给UI模块106,UI模块106将指定的数据处理规则变换(例如,编译或解释)为处理模块108可使用的形式。处理模块108从数据源102接收数据处理规则的可用形式、参数集120和数据单元作为输入,并根据数据处理规则和参数集120处理来自数据源102的数据单元。在一些示例中,如下文更详细地描述的那样,当处理来自数据源102的数据时,状态存储器122保持从一个测试数据单元到下一个测试数据单元的状态。将处理来自数据源102的数据的结果提供回UI模块106,然后返回到用户界面112,在用户界面112上将结果呈现给开发者110。
[0057] 执行环境104可以被托管在例如处于适当的操作系统(诸如某版本的UNIX操作系统)控制下的一个或多个通用计算机上。例如,执行环境104可包括多节点并行计算环境,包括使用多个中央处理单元(CPU)或处理器内核计算机系统的配置,其为本地的(例如,诸如对称多处理(SMP)计算机等多处理器系统),或本地分布式的(例如,耦接为群集或大规模并行处理(MPP)系统的多个处理器),或远程的,或远程分布式的(例如,经由局域网(LAN)和/或广域网(WAN)耦接的多处理器),或其任意组合。
[0058] 提供数据源102的存储设备可以对于执行环境104来说是本地的(例如,存储在连接到托管执行环境104的计算机的存储介质(例如,硬盘驱动器)上),或者可以对于执行环境104来说是远程的,例如,通过远程连接(例如,由计算基础设施提供的远程连接)被托管在与托管执行环境104的计算机通信的远程系统(例如,大型机)上。
[0059] 2示例性用户界面
[0060] 参考图2,用户界面112的一个示例被配置为允许开发者110指定并测试数据处理规则。用户界面112通过UI模块106(例如,在计算机监视器上)来呈现,并且包括二维网格224、数据单元号控制226、单个单元测试控制228和批量测试控制230。通常,开发者110可以使用二维网格224来指定数据处理规则,然后可以使用单个单元测试控制228在单个测试数据单元(由数据单元号控制226来指定)上测试数据处理规则,或者使用批量测试控制230在整个测试数据单元集上测试数据处理规则。可代替地,在一些实施中,在开发者110改变由数据单元号控制226指定的数据单元之后,响应于该选择,UI模块106将自动对所选测试数据单元发起数据处理规则的测试,而无需开发者110输入明确的指令。
[0061] 二维网格224包括多列232和多行234。列232被分为两种列类型:输入列和输出列。在图2的示例中,二维网格224包括五个输入列:交易金额列(Transaction Amount)、信用卡余额列(Credit Card Balance)、数量.近期采购列(Num.Recent Purchases)、数量.近期警告列(Num.Recent Alerts)和险等级列(Risk Level)。通常,每个输入列可以与来自主输入数据集114的字段相关联,或者与来自可以获得字段值(例如,为了用作原始值或作为表达式的一部分)的辅助数据源102的字段相关联。在一些示例中,与输入列相关联的字段的每组值被称为“测试数据单元”。在一些示例中,输入列可以与来自除字段之外的源的值(诸如临时变量、常数或其他自由形式的输入值)相关联。
[0062] 在图2的示例中,二维网格224包括单个输出列:警告(Alert)。在一些示例中,警告输出列基于其输出的值触发事件(例如,发送文本消息)。
[0063] 二维网格224的行234与输入列的交点处的至少一些单元格236包括约束条件。在一些示例中,至少一些约束条件表示来自数据源102的给定数据单元的字段的值与比较值(例如,美元总额)之间的比较(例如,大于,小于或等于)。二维网格224的给定行的各单元格中的各约束条件一起限定了规则情况(rule case),并且如果满足规则情况,则每个输出值限定规则的输出。一般来说,为了满足规则情况,必须满足规则情况的所有约束条件。
[0064] 在图2的例子中,第一行限定了第一规则情况和第一输出值,如下所示:
[0065] 如果交易金额输入数据的值大于$10,000并且
[0066] 信用卡余额输入数据的值大于$5,000并且
[0067] 数量.近期采购输入数据的值小于3并且
[0068] 数量.近期警告输入数据的值小于1并且
[0069] 风险等级等于“正常”,则
[0070] 警告状态输出将被分配值“是”。
[0071] 相似地,第二行限定了第二规则情况和第二输出值,如下所示:
[0072] 如果交易金额输入数据的值大于$5,000并且
[0073] 信用卡余额输入数据的值大于$5,000并且
[0074] 数量.近期采购输入数据的值小于3并且
[0075] 数量.近期警告输入数据的值小于1并且
[0076] 风险等级等于“高”,则
[0077] 警告状态输出将被分配值“是”。
[0078] 最后,第三行限定第三规则情况和第三输入出值,如下所示:
[0079] 如果交易金额输入数据的值小于$5,000则
[0080] 警告状态输出将被分配值“否”。
[0081] 如向下指向箭头所指出的,任何其他行表示具有默认输出值为“否”的默认规则情况,这表示(既对于输入列,也对于输出列),箭头顶部处的单元格值对于包含箭头的框中的所有单元格是重复的。
[0082] 3数据处理规则应用
[0083] 如上所述,为了将数据处理规则应用于来自数据源102中的数据源的一个或多个数据单元,用户界面112向UI模块106提供数据处理规则的规范。UI模块106将数据处理规则的规范处理成可由处理模块108使用的形式(例如,通过编译,解释或一些其它转换)。然后将数据处理规则的可用形式与来自数据源102的一个或多个记录或其它值一起提供给处理模块108,以便为一个或多个数据单元提供输入。处理模块108将数据处理规则应用于一个或多个数据单元并返回一个或多个输出值。
[0084] 通常,二维网格224的行234中限定的规则情况通过优先级排序,使得具有较低行号(例如,第一行)的规则情况具有比具有较高行号(例如,第二行)的规则情况高的优先级。当处理模块108应用规则时,考虑与二维网格224的行234相关联的优先级。因此,首先测试第一行中限定的规则情况。如果满足第一行中限定的规则情况(有时称为触发),则返回第一行中限定的输出值,并且结束规则的应用而不测试具有较低优先级的行中限定的规则情况。如果不满足第一行中限定的规则情况,则处理模块108测试第二行中限定的规则情况。
如果满足第二行中限定的规则情况,则返回第二行中限定的输出值,并且结束规则的应用而不测试具有较低优先级的行中限定的规则情况。处理模块108重复该过程,直到测试完二维网格224的最低优先级行中限定的规则情况并且返回二维网格224的最低优先级行中限定的默认输出值。
[0085] 4测试结果的呈现
[0086] 在一些示例中,将处理模块108返回的一个或多个输出值提供给UI模块106,UI模块106进而向用户界面112提供一个或多个输出值,以呈现给开发者110。然后,开发者110可以在用户界面112中查看应用数据处理规则的结果(例如,一个或多个输出值),以确定数据处理规则是否符合预期的功能。如果需要,开发者110可以使用并经由用户界面112来对数据处理规则做出改变。通过本文描述的用于在单个单元测试模式、批量测试模式和制作模式中获取一致结果的方法有利于该互动式反馈的能
[0087] 5测试数据单元间依赖性
[0088] 如上所述,在一些示例中,与用户界面112的二维网格224的列相关的字段可以从各种辅助数据源中导出,一些包括在数据源102中,一些包括在执行环境104要不或者从执行环境104中可访问。参照图3,示出用于图2的示例性数据处理规则的二维网格224,以及导出与二维网格224的列232相关联的字段的各种示例性数据源。应当注意到,仅仅是为了说明性目的而包括了图3所示的数据源,并且这些数据源通常不会通过用户界面112向开发者110显示。
[0089] 在图3中,与二维网格224的第一列相关联的交易金额字段从出现在测试数据集114内的记录中的对应字段中导出,与二维网格224的第二列相关联的信用卡余额字段从出现在信用卡余额数据集116内的记录中的对应字段中导出。与二维网格224的第三列相关联的数量.近期采购字段从近期采购档案118(例如,诸如索引压缩纯文本文件(ICFF)的档案,如在第8,229,902号美国专利中详细描述的那样)中导出,与二维网格224的第四列相关联的数量.近期警告字段从存储在状态存储器122中的值导出,以及与二维网格224的第五列相关联的风险等级字段从来自参数集120的参数值中导出。应当注意到,在图3的示例中,测试数据集114是主数据源,而信用卡余额数据集116、近期采购档案118、状态存储器和外部参数120都是辅助数据源。还要注意,来自测试数据集114的记录的信息(例如,键)被提供给辅助数据源,使得它们可以访问与测试数据集114的记录相关的辅助数据。
[0090] 如图3所示,在某些示例中,某些输出列的输出值可以用于更新与某些输入列相关联的数据源。例如,图3中警告输出列340的输出值用于更新状态存储器122,标题为数量.近期警告的第四输入列从所述状态存储器122中导出其输入数据。也就是说,当应用由图3的二维网格224指定的规则的结果导致警告值为“是”时,状态存储器122中的数量.近期警告字段递增,这表示近期发出过警告。通过将规则应用的输出写入用作数据处理规则的输入的数据源,可以在不同的测试数据单元之间建立数据单元间依赖性。
[0091] 对于具有数据单元间依赖性的测试数据单元,将数据处理规则应用于第一测试数据单元450的结果取决于将数据处理规则应用于一个或多个其他不同测试数据单元的结果。
[0092] 6批量测试
[0093] 当以批量测试模式将数据处理规则应用于测试数据单元时,以预定义的顺序将数据处理规则应用于多个测试数据单元(这些测试数据单元通常与从主数据源导出的测试数据单元中的值相关联),如同制作环境中开展并以制作模式运行的数据处理系统中完成的那样。针对每一次将图2的数据处理规则应用于测试数据单元,均生成警告输出值,并且基于警报输出值更新状态存储器122。由于批量测试从第一个测试数据单元(由预定义的测试数据单元的子集组成)开始处理所有的测试数据单元,对于给定的测试数据单元,所有先前的测试数据单元都已经被应用了数据处理规则。因此,状态存储器122反映了将数据处理规则应用于先前的测试数据单元所产生的警告输出值。
[0094] 图4至图6示例性地示出了将图2的数据处理规则以批量测试模式应用于一批测试数据单元,这批测试数据单元对应于由客户账号键值标识的给定客户(在该示例中标记为“客户A”、“客户B”等)。在该示例中,每个测试数据单元包括从主测试数据集114导出的给定客户的交易金额和多个辅助值,所述多个辅助值包括从辅助数据源116、118、120、122导出的客户的信用卡余额、客户的近期采购数量、对客户发出的近期警告的数量、以及客户的风险等级参数。近期警告的数量存储在不同客户的存储器122内的不同的相应状态变量中。不同客户的测试数据单元可能在被测试的一批测试数据单元内交错。在该示例中,假定具有订购键值1、2和10的测试数据单元对应客户A,而具有订购键值3至9的测试数据单元对应于其他客户。
[0095] 参考图4所示,客户A(具有的订购键值为1)的第一测试数据单元450包括值为$100的第一交易金额441、值为$0的信用卡余额442、为0的近期采购数量值444、为0的近期警告数量值446、以及为“高”的风险等级参数值448。为了应用图2中指定的数据处理规则,处理模块108首先将数据处理规则的第一规则情况应用于第一测试数据单元450。满足第一规则情况的一个要求是交易金额441必须大于$10,000。由于第一测试数据单元450的交易金额441是$100,所以第一测试数据单元450不满足第一规则情况。然后,处理模块108将数据处理规则的第二规则情况应用于第一测试数据单位450。满足第二条规则情况的一个要求是交易金额441必须大于$5,000。由于第一测试数据单元450的交易金额441是$100,所以第一测试数据单元450不满足第二规则情况。最后,处理模块108将数据处理规则的第三规则情况应用于第一测试数据单元450。满足第三规则情况的唯一要求是交易金额441小于$5,
000。由于第一测试数据单元450的交易金额441是$100,所以满足第三规则情况。由于第三规则情况与值为“否”的警告值相关联,所以将数据处理规则应用于第一测试数据单元450导致警告输出值为“否”。由于输出了值为“否”的警告输出值,所以近期警告的数量在状态存储器122中不增加并保持为0。
[0096] 通常,一个或多个其他过程基于测试数据集114中的第一交易更新信用卡余额数据集116中的客户A的信用卡余额442的值和多个近期采购档案118中的客户A的近期购买数量444的值。
[0097] 参考图5,客户A的第二测试数据单元552(具有的订购键值为2)包括值为$5,100的第二交易金额541、值为$100的信用卡余额542、为1的近期采购数量值544、为0的近期警告数量值546、以及为“高”的风险等级参数值548。为了应用图2中指定的数据处理规则,处理模块108首先将数据处理规则的第一规则情况应用于第二测试数据单元552。满足第一规则情况的一个要求是交易金额541必须大于$10,000。由于第二测试数据单元552的交易金额541为$5,100,所以第二测试数据单元552不满足第一规则情况。然后,处理模块108将数据处理规则的第二规则情况应用于第二测试数据单元552。由于在第二测试数据单元552中交易金额541大于$5,000,近期采购数量值544小于3,近期警告数量值546小于1,并且风险等级值548为“高”,所以满足第二规则情况。由于第二规则情况与值为“是”的警告值相关联,所以将数据处理规则应用于第二测试数据单元552导致警告输出值为“是”。如上所述,由于应用数据处理规则导致警告输出值为“是”,所以数量.近期警告状态存储器122的值增加1,以表示近期发出过警告。
[0098] 具有订购键值3至9的测试数据单元已经在具有订购键值2的测试数据单元之后顺序地进行了处理,且不改变客户A的近期警告数量值646,这是因为在先数据单元的处理仅影响具有匹配的客户帐户键值的后续数据单元的存储状态。
[0099] 参考图6,客户A(具有的订购键值为10)的第三测试数据单元654包括值为$11,000的第三交易金额641、值为$5,200的信用卡余额642、为2的近期采购数量值644、为1的近期警告数量值646、以及为“高”的风险等级参数值648。为了应用图2中指定的数据处理规则,处理模块108首先将数据处理规则的第一规则情况应用于第三测试数据单元654。满足第一规则情况的一个要求是近期警告数量646必须具有小于1的值。由于第三测试数据单元654的近期警告数量646为1,因此第三测试数据单元654不满足第一规则情况。然后,处理模块108将数据处理规则的第二规则情况应用于第三测试数据单元654。满足第二规则情况的一个要求是近期警告数量646必须具有小于1的值。由于第三测试数据单元654的近期警告值的数量646为1,所以第三测试数据单元654不满足第二规则情况。最后,处理模块108将数据处理规则的第三规则情况应用于第三测试数据单元654。满足第三规则情况的唯一要求是交易金额641小于$5,000。由于第三测试数据单元654的交易金额641是$11,000,所以不满足第三规则情况。由于没有符合的规则情况,所以数据处理规则返回值为“否”的默认警告输出值。
[0100] 7单个单元测试
[0101] 在一些示例中,开发者110可以将数据处理规则应用于单个所选的测试数据单元,而不是以批量测试模式将数据处理规则应用于测试数据单元,所述单个所选的测试数据单元对应于来自测试数据集114中间的记录的所选键值。在这种情况下,如果根据预定顺序,测试数据单元的值无法准确地反映由于将数据处理规则应用于在所选数据单元之前出现的值或数据单元而造成的状态,则可能发生数据处理规则的错误输出。
[0102] 为了避免这样的错误输出,处理模块108被配置为通过确定在所选数据单元之前出现的测试数据单元的子集来处理所选测试数据单元。通常,测试数据单元的子集中的测试数据单元与预定顺序(例如,来自测试数据集114中的记录的唯一主键字段的排序顺序、或测试数据集114中的记录的存储顺序)相关联。在一些示例中,测试数据单元的子集中的测试数据单元都通过公共标识符相关(例如,来自测试数据集114中的记录的非唯一键字段的值,例如,客户帐号数字段)。在将数据处理规则应用于所选测试数据单元之前,处理模块以预定顺序迭代通过测试数据单元的子集中的测试数据单元,并将数据处理规则应用于每个测试数据单元。针对将数据处理规则应用于测试数据单元的至少一些应用,由应用数据处理规则所生成的输出用于更新状态变量。
[0103] 在已经将数据处理规则应用于测试数据单元的子集中的所有测试数据单元之后,读取状态变量的更新后的值并且使用状态变量的更新后的值将数据处理规则应用于所选测试数据单元。
[0104] 通过确保数据处理规则已经应用于在所选测试数据单元之前出现的所有测试数据单元,可确保状态变量的值是准确的,并因此确保数据处理规则的输出是准确的(就其与以批量测试模式获取的结果和以制作模式获取的结果一致而言)。
[0105] 参照图2以及图7至图9,示出了单个单元测试模式处理的一个示例。在图2中,开发者110使用数据单元号控制226选择了值为10订购键值。通过按下单个单元测试控制228,开发者110表明希望将数据处理规则应用于与测试数据集114的第十条记录相关联的所选测试数据单元。参照图7,如果为所选测试数据单元754从它们相应的数据源简单地读取二维网格224的每个输入列232的字段的值并且将数据处理规则应用于这些值,则将为所选测试数据单元754导致值为“是”的不正确的警告输出值,这是因为测试数据单元的数量.近期警告字段中的不准确的值而导致错误地满足了数据处理规则的第二规则情况。
[0106] 在此示例中,也假设具有订购键值1、2和10的测试数据单元对应客户A,而具有订购键值3到9的测试数据单元对应其他客户。因此,所选测试数据单元754(具有订购键值10)的警告输出值取决于将数据处理规则应用于第一测试数据单元(具有的订购键值为1)和第二测试数据单元(具有的订键值为2)的结果,其分别与测试数据集114的第一记录和第二记录相关联。第一测试数据单元和第二测试数据单元可能还没有被应用数据处理规则。在该示例中,在没有将数据处理规则应用于第一数据单元和第二数据单元的情况下,客户A的状态存储器122中存储的近期警告数量字段的值是不准确的(根据与批量测试模式和制作模式一致的预期表现)。
[0107] 参照图8和图9,为了确保在将数据处理规则应用于所选测试数据单元754之前,状态存储器122中存储的近期警告数量字段的值是准确的,系统100首先将数据处理规则应用于第一测试数据单元850(具有的订购键值为1)和第二测试数据单元952(具有的订购键值为2)。
[0108] 参照图8,将数据处理规则应用于第一测试数据单元850导致警告输出值为“否”(如图4中的情况)。由于输出了值为“否”的警告输出值,所以近期警告的数量在状态存储器122中不增加并保持为0。参照图9,将数据处理规则应用于第二测试数据单元952导致警告输出值为“是”(如图5中的情况)。由于数据处理规则的应用导致警告输出值为“是”,所以状态存储器122中的数量.近期警告值的值增加1,以便表示近期发出了警告。最后,回头参照图7,将数据处理规则应用于所选测试数据单元754导致被返回的默认警告输出值为“否”(如图6中的情况),这是因为状态存储器122中的数量.近期警告值包括准确的值。
[0109] 8复杂事件处理
[0110] 一些类型的数据处理系统可以特别受益于通过本文所述的技术实现的动态测试环境,从而在单个单元测试模式、批量测试模式和制作模式下获得一致的结果。一个这种类型的数据处理是复杂事件处理。例如,图1的处理模块108可以被配置为实现复杂事件处理例程。一般来说,复杂事件处理系统通过组合来自多个源的数据来处理事件以识别事件之间的关系中的模式。在一些示例中,复杂事件处理系统使用近期事件历史来处理到来的事件,以识别有意义的事件,例如营销机会或威胁,并尽可能快地响应所识别的有意义的事件。
[0111] 参照图10,示出了关于示例性复杂事件处理例程(即营销活动)的状态图1060。营销活动旨在通过向客户通知现金回馈计划来增加信用卡使用几率。在示例性营销活动中,基于当前采购事件以及一个或多个在先的采购事件给客户提供现金返还激励。状态图1060包括由状态转换1064、1068、1072、1076、1078互连的多个状态1062、1066、1070、1074、1080。当代表性的客户接收到采购事件时,基于客户的当前状态和所接收的采购事件的性质来更新客户的状态。
[0112] 特别地,在示例性营销活动的开始,如果客户被认为符合参加营销活动的资格,则客户被置于“有资格”状态1062(例如,通过将“有资格”状态1062的指示写入到图1的状态存储器122中的状态变量)。
[0113] 当为该客户接收到第一采购事件1064时,读取客户的当前状态(例如,从图1的状态存储器122中的状态变量中读取)。由于客户当前处于“有资格”状态1062并且他们已经接收到第一采购事件1064,所以向客户发送消息(未示出)以通知他们他们有资格参加营销活动,其中包括关于旅游相关采购和与食品相关采购的现金回馈促销。然后,客户的状态转变为“已通知”状态1066,这表示已经向客户通知了营销活动。
[0114] 在处于“已通知”状态1066时,如果接收到旅游相关的采购事件1068,则向客户发送消息以通知他们他们已经收到旅游相关的促销并且他们有资格参加食品相关的促销。然后,客户的状态转变为“第一旅游”状态1070,这表示客户已收到旅游相关的促销。
[0115] 可代替地,在处于“已通知”状态1066时,如果接收到食品相关的采购事件1072,则向客户发送消息以通知他们他们已经收到食品相关的促销,并且他们有资格参加旅游相关的促销。然后,客户的状态转变为“第一食品”状态1074,这表示客户已收到食品相关的促销。
[0116] 在处于“第一旅游”1070时,如果接收到食品相关的采购事件1076,则向客户发送消息以通知他们他们已经收到旅行相关的促销和食品相关的促销。然后,客户的状态转变为“完成”状态1080,这表示客户已完成促销。
[0117] 类似地,在处于“第一食品”状态1074时,如果接收到旅游相关的采购事件1078,则向客户发送消息以通知他们他们已经收到旅行相关的促销和食品相关的促销。然后,客户的状态转变为“完成”状态1080,这表示客户已完成促销。
[0118] 8.1复杂事件处理配置用户界面
[0119] 参照图11,示例性用户界面1182允许用户配置系统(例如,图1的处理模块108)以实现诸如由图10的状态图1060指定的复杂事件处理例程。一般来说,用户界面允许用户将复杂事件处理例程的状态图表示为有序的测试集,每个测试具有在满足该测试时出现的对应输出。
[0120] 在一些示例中,用户界面1182被实现为包括多列1186和多行1184的单元格的二维网格1183。单元格存在于每行1184和每列1185的交叉点处,并且被配置为接受用户输入(例如,参数值)。
[0121] 列1186被分为两种列类型:“触发”列1188和“输出”列1190。在图11的用户界面1182中,有三个触发列1188(即,当前状态、旅游相关和分类)和两个输出列1190(即,新状态和消息)。
[0122] 合起来看,与触发列1188相关联的给定行中的单元格用于限定测试(例如,布尔(Boolean)测试)。例如,在二维网格1183的第一行1185中,与“当前状态”触发列相关联的单元格包括输入值“有资格”,与“旅游相关”触发列相关联的单元格包括输入值“任意值”,并且与“分类”触发列相关联的单元格包括输入值“任意值”。鉴于第一行1185中的触发列1188的值,如果客户的当前状态(例如,从状态变量存储器中读取的)是“有资格”,则系统接收到的对应于客户的新采购事件满足第一行1185所限定的测试,而不管新采购事件是旅游相关的采购事件还是食品相关的采购事件。
[0123] 与输出列1188相关联的给定行中的每个单元格限定了如果满足给定行的测试就发生的输出动作。例如,在二维网格1183的第一行1185中,与“新状态”输出列相关联的单元格包括值“已通知”,并且与“消息”输出列相关联的单元格包括资格通知消息1192。鉴于第一行1185中的输出列1190的值,如果客户的新采购事件满足由第一行1185限定的测试,则客户的当前状态(例如,写到状态变量存储器)被更新为“已通知”,并且将资格通知消息1192发送给客户。
[0124] 在二维网格1183的第二行1187中,与“当前状态”触发列相关联的单元格包括输入值“已通知”,与“旅游相关”触发列相关联的单元格包括输入值“是旅游相关”,并且与“分类”触发列相关联的单元格包括输入值“任意值”。鉴于第二行1187中的触发列1188的值,如果客户的当前状态为“已通知”并且新的采购事件是旅游相关的采购事件,则系统接收到的客户的新采购事件满足由第二行1187限定的测试。
[0125] 在二维网格1183的第二行1187中,与“新状态”输出列相关联的单元格包括值“第一旅游”,并且与“消息”输出列相关联的单元格包括旅游采购通知消息1194。鉴于第二行1187中的输出列1190的值,如果客户的新采购事件满足第二行1185限定的测试,则将客户的当前状态更新为“第一旅游”并且将旅游采购通知消息1194发送给客户。
[0126] 在二维网格1183的第三行1189中,与“当前状态”触发列相关联的单元格包括输入值“已通知”,与“旅游相关”触发列相关联的单元格包括输入值“任意值”,并且与“分类”触发列相关联的单元格包括输入值“食品和药物”。鉴于第三行1189中的触发列1188的值,如果客户的当前状态为“已通知”并且新的采购事件是食品相关的采购事件,则由系统接收的客户的新采购事件满足由第三行1189限定的测试。
[0127] 在二维网格1183的第三行1189中,与“新状态”输出列相关联的单元格包括值“第一食品”,并且与“消息”输出列相关联的单元格包括食品采购通知消息1196。鉴于第三行1189中的输出列1190的值,如果客户的新采购事件满足由第三行1189限定的测试,则将客户的当前状态更新为“第一食品”,并且将食品采购通知消息1196发送给客户。
[0128] 在二维网格1183的第四行1191中,与“当前状态”触发列相关联的单元格包括输入值“第一旅游”,与“旅游相关”触发列相关联的单元格包括输入值“任意值”,并且与“分类”触发列相关联的单元格包括输入值“食品和药物”。鉴于第四行1191中的触发列1188的值,如果客户的当前状态是“第一旅游”并且新的采购事件是食品相关的采购事件,则系统接收到的客户的新采购事件满足由第四行1191限定的测试。
[0129] 在二维网格1183的第四行1191中,与“新状态”输出列相关联的单元格包括值“完成”,并且与“消息”输出列相关联的单元格包括活动完成通知消息1198。鉴于第四行1198中的输出列1190的值,如果客户的新采购事件满足由第四行1191限定的测试,则将客户的当前状态更新为“完成”,并且向客户发送活动完成通知消息1198。
[0130] 在二维网格1183的第五行1193中,与“当前状态”触发列相关联的单元格包括输入值“第一食品”,与“旅游相关”触发列相关联的单元格包括输入值“是旅游相关”,并且与“分类”触发列相关联的单元格包括输入值“任意值”。鉴于第五行1193中的触发列1188的值,如果客户的当前状态是“第一食品”并且新的采购事件是旅游相关的采购事件,则系统接收到的客户的新采购事件满足由第五行1193限定的测试。
[0131] 在二维网格1183的第五行1193中,与“新状态”输出列相关联的单元格包括值“完成”,并且与“消息”输出列相关联的单元格包括活动完成通知消息1198。鉴于第五行1193中的输出列1190的值,如果客户的新采购事件满足由第五行1193限定的测试,则将客户的当前状态更新为“完成”,并且将活动完成通知消息1198发送给客户。
[0132] 最后,在二维网格1183的第六行1195中,与“当前状态”触发列相关联的单元格包括输入值“任意值”,与“旅游相关”触发列相关联的单元格包括输入值“任意值”,并且与“分类”触发列相关联的单元格包括输入值“任意值”。鉴于第六行1195中的触发列1188的值,系统接收到的客户的任意新采购事件满足由第六行1195限定的测试。
[0133] 在二维网格1183的第六行1195中,与“新状态”输出列相关联的单元格包括值“当前状态”,并且与“消息”输出列相关联的单元格包括空消息1199。鉴于第六行1195中的输出列1190的值,如果客户的新采购事件满足由第六行1195限定的测试,则将客户的当前状态保持在其“当前状态”,并且不向客户发送通知消息。
[0134] 当接收到新的采购事件时,依次将由二维网格1183的行1184限定的测试应用于新的采购事件,直到新的采购事件满足测试为止。也就是说,首先将第一行1185限定的测试应用于新的采购事件。如果新的采购事件不满足由第一行1185限定的测试,则将第二行1187限定的测试应用于新的采购事件。如果新的采购事件不满足由第二行1187限定的测试,则将第三行1189限定的测试应用于新的采购事件,依此类推。最终,如果新的采购事件不满足其他行限定的任何测试,则将默认的第六行1195(最后一行)应用于新的采购事件,并且新的采购事件满足默认的第六行1195(最后一行)。通过依次应用由二维网格1183的行1184限定的测试,实现了图10的状态图1060的功能。
[0135] 9可选方案
[0136] 在一些示例中,可以通过打开用于给定读取操作的数据源的读取连接,并且然后缓存这些连接(例如,保存数据库句柄并保持连接有效)以用于后续的读取操作,从而改善用户界面的性能。这样做可以减少连接设置/删除时间,并在给定时间段内防止耗尽数据源的有限数量的连接。
[0137] 在一些示例中,从数据源(或整个测试数据单元)读取的记录可以存储在缓存中。
[0138] 在一些示例中,当请求记录(或测试数据单元)的值时,首先查询缓存。如果缓存中没有出现记录(或测试数据单元),则查询缓存的连接以检索所请求的记录。如果没有缓存用于检索所请求的记录的连接,则打开新的连接以检索所请求的记录。
[0139] 在一些示例中,确定在何处检索记录或测试数据单元是基于自上次检索记录或测试数据单元以后的时间。如果是最近检索的,则缓存值被确定为有效,并且查询缓存。如果自上次检索记录或测试数据单元以来已经过了较长的时间,则缓存值被视为无效,并且使用缓存连接。如果自上次检索记录或测试数据单元以来已经过了更长的时间,则缓存值和缓存连接均被视为无效,并且打开新的连接来检索记录或测试数据单元。
[0140] 虽然数据库是可以从上述方法中受益的一种常见类型的数据源,但是应当注意的是,许多其他类型的数据源(例如档案文件、次级数据集等)也可以从所述方法中受益。
[0141] 在一些示例中,缓存包括准确的状态信息的测试数据单元的值以供以后使用。在这种情况下,在单个记录测试模式下,不是必须在所选测试数据单元之前以单个记录测试模式将数据处理规则应用于所有测试数据单元,而是只有在所选测试数据单元与最近的在先缓存的测试数据单元之间的那些记录需要应用数据处理规则。
[0142] 在一些示例中,用户界面允许开发者指定何时缓存数据库连接。
[0143] 在一些示例中,状态变量值仅存储在状态变量存储器中持续一预定的时间量然后被移除。以这种方式,状态变量本质上具有对其适用的滑动窗口,所述滑动窗口允许诸如窗口聚合的操作。
[0144] 在一些示例中,当输入列要求参数访问时,可以缓存该参数的值。例如,在制作环境中,如果需要在启动了基于规则的应用的环境(即,制作环境)的上下文中解决,可以从命令行输入或参数集文件中读取参数。可选的,对于单一单元测试模式(或批量测试模式),值可以被选择为(例如,基于用户可设置的参数)使用当前环境的已评估参数或替代地被选择为假设的测试值,以作为制作环境将提供的近似值。
[0145] 10实现方式
[0146] 上述规则指定和应用方法可以例如使用执行合适的软件指令的可编程计算系统来实现,或者可以在诸如现场可编程阵列(FPGA)或一些混合形式的合适的硬件中实现。例如,在编程方法中,软件可以包括在一个或多个编程或可编程计算系统(其可以是诸如分布式、客户端/服务器或网格的各种架构)上执行的一个或多个计算机程序中的过程,每个计算系统包括至少一个处理器,至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件),至少一个用户界面(用于使用至少一个输入设备或端口接收输入,并且用于使用至少一个输出设备或端口提供输出)。软件可以包括例如提供与数据流图的设计、配置和执行相关的服务的更大程序的一个或多个模块。程序的模块(例如,数据流图的元素)可以被实现为符合存储在数据仓库中的数据模型的数据结构或其他有组织的数据。
[0147] 软件可以使用持续一段时间(例如,动态存储器装置(例如动态RAM)的刷新周期之间的时间)的介质的物理特性(例如,表面凹坑和平台、磁畴或电荷等)以非暂时性形式存储,例如被实施在易失性或非易失性存储介质或任何其它非暂时性介质中。在准备加载指令时,软件可以提供在有形、非暂时性介质上,例如CD-ROM或其他计算机可读介质(例如,可由通用或专用计算系统或设备读取),或者可以通过网络的通信介质被递送(例如,被编码成传播信号)到其被执行的计算系统的有形、非暂时性介质。可以在专用计算机上或使用诸如协处理器现场可编程门阵列(FPGA)或特定的专用集成电路(ASIC)的专用硬件来执行处理中的一些或全部。处理可以以分布式方式实现,其中由软件指定的计算的不同部分由不同的计算元件执行。每个这样的计算机程序优选地存储在或下载到可由通用或专用可编程计算机访问的存储设备的计算机可读存储介质(例如,固态存储器或介质,或磁介质或光介质)上,用于当计算机读取存储设备介质以执行本文所述的处理时,配置和操作计算机。本发明的系统还可以被认为可实现为配置有计算机程序的有形的、非暂时性介质,其中如此配置的介质使得计算机以特定和预定义的方式操作以执行本文描述的一个或多个处理步骤。
[0148] 已经描述了本发明的多个实施例。然而,应当理解,前述描述旨在说明而不是限制本发明的范围,本发明的范围由所附权利要求的范围限定。因此,其他实施例也在所附权利要求的范围内。例如,在不脱离本发明的范围的情况下可以进行各种修改。另外,上述的一些步骤可以是与顺序无关的,并且因此可以以与所描述的顺序不同的顺序来执行。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈