亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

指定和應(yīng)用數(shù)據(jù)的規(guī)則的制作方法

文檔序號(hào):11288595閱讀:259來源:國知局
指定和應(yīng)用數(shù)據(jù)的規(guī)則的制造方法與工藝

相關(guān)申請(qǐng)的交叉引用

本申請(qǐng)要求于2014年10月20日提交的序列號(hào)為62/065,909的美國申請(qǐng)的優(yōu)先權(quán)。

本說明書涉及指定和應(yīng)用數(shù)據(jù)的規(guī)則。



背景技術(shù):

在一些示例中,對(duì)數(shù)據(jù)處理系統(tǒng)中的記錄可以應(yīng)用一個(gè)或多個(gè)規(guī)則。例如,規(guī)則可以用于驗(yàn)證記錄的質(zhì)量或者用于基于記錄中所包括的信息來觸發(fā)事件。開發(fā)者可以使用用戶界面指定規(guī)則。在一些示例中,取決于研發(fā)階段或制作階段中是否應(yīng)用了規(guī)則,應(yīng)用規(guī)則的結(jié)果可能不同。



技術(shù)實(shí)現(xiàn)要素:

在第一方面中,一般性地,一種用于將規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)的方法,所述方法包括:從第一數(shù)據(jù)源接收數(shù)據(jù);以及處理有序的多個(gè)數(shù)據(jù)單元中的特定數(shù)據(jù)單元,所述有序的多個(gè)數(shù)據(jù)單元至少部分從接收自所述第一數(shù)據(jù)源的數(shù)據(jù)中導(dǎo)出。所述處理包括:確定第一組數(shù)據(jù)單元,所述第一組數(shù)據(jù)單元包括來自所述有序的多個(gè)數(shù)據(jù)單元中的數(shù)據(jù)單元的有序子集,所述有序子集中包括的每個(gè)數(shù)據(jù)單元與所述特定數(shù)據(jù)單元相關(guān)并且在所述有序的多個(gè)數(shù)據(jù)單元中出現(xiàn)在所述特定數(shù)據(jù)單元之前;在將所述規(guī)則應(yīng)用于所述特定數(shù)據(jù)單元之前,將至少一個(gè)狀態(tài)變量更新為如果依序迭代通過所述第一組數(shù)據(jù)單元將能夠產(chǎn)生的狀態(tài),并且對(duì)于所述有序子集的每個(gè)數(shù)據(jù)單元,將所述規(guī)則應(yīng)用于數(shù)據(jù)單元;以及將所述規(guī)則應(yīng)用于所述特定數(shù)據(jù)單元,其包括讀取所述狀態(tài)變量的更新后的值。

各個(gè)方面可以包括一個(gè)或多個(gè)下述特征。

所述處理可以與在測(cè)試環(huán)境中將所述規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)的第一模式相關(guān)聯(lián),在所述第一模式中,在用于測(cè)試所述規(guī)則的用戶界面內(nèi)選擇所述特定數(shù)據(jù)單元。在測(cè)試環(huán)境中將所述規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)的所述第一模式可以被配置為:針對(duì)所述有序的多個(gè)數(shù)據(jù)單元的每個(gè)數(shù)據(jù)單元產(chǎn)生結(jié)果,其與在制作環(huán)境中將所述規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)的第二模式中產(chǎn)生的結(jié)果一致。在測(cè)試環(huán)境中將所述規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)的所述第一模式可以被配置為:針對(duì)所述有序的多個(gè)數(shù)據(jù)單元的每個(gè)數(shù)據(jù)單元產(chǎn)生結(jié)果,其與在測(cè)試環(huán)境中將所述規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)的第三模式中產(chǎn)生的結(jié)果一致,在所述第三模式中,對(duì)所有的所述有序的多個(gè)數(shù)據(jù)單元進(jìn)行批量測(cè)試。

所述第一組數(shù)據(jù)單元可以由數(shù)據(jù)單元的所述有序子集構(gòu)成。更新所述狀態(tài)變量可以包括依序迭代通過所述第一組數(shù)據(jù)單元,并且針對(duì)所述有序子集的每個(gè)數(shù)據(jù)單元,將所述規(guī)則應(yīng)用于數(shù)據(jù)單元,并且基于將所述規(guī)則應(yīng)用于數(shù)據(jù)單元的結(jié)果寫入所述狀態(tài)變量的更新后的值。所述第一組數(shù)據(jù)單元可以包括不在數(shù)據(jù)單元的所述有序子集中的數(shù)據(jù)單元,并且依序迭代通過所述第一組數(shù)據(jù)單元可以包括確定數(shù)據(jù)單元是否是數(shù)據(jù)單元的所述有序子集的成員。所述多個(gè)數(shù)據(jù)單元可以包括相關(guān)數(shù)據(jù)單元,所述相關(guān)數(shù)據(jù)單元是所述多個(gè)數(shù)據(jù)單元中第一次出現(xiàn)的與所述特定數(shù)據(jù)單元相關(guān)的數(shù)據(jù)單元,并且數(shù)據(jù)單元的所述有序子集的初始數(shù)據(jù)單元不是所述相關(guān)數(shù)據(jù)單元。

所述方法可以包括:針對(duì)每一次將所述規(guī)則應(yīng)用于所述有序的多個(gè)數(shù)據(jù)單元中的數(shù)據(jù)單元,將所述狀態(tài)變量的更新后的值存儲(chǔ)在狀態(tài)變量緩存中。將所述規(guī)則應(yīng)用于數(shù)據(jù)單元的所述有序子集的初始數(shù)據(jù)單元可以包括:從所述狀態(tài)變量緩存讀取所述狀態(tài)變量的更新后的值,該值是響應(yīng)于將所述規(guī)則應(yīng)用于在所述多個(gè)數(shù)據(jù)單元中出現(xiàn)在所述初始數(shù)據(jù)單元之前的數(shù)據(jù)單元而存儲(chǔ)的。在所述多個(gè)數(shù)據(jù)單元中出現(xiàn)在所述初始數(shù)據(jù)單元之前的數(shù)據(jù)單元可以是與所述初始數(shù)據(jù)單元相關(guān)的、并且在所多個(gè)數(shù)據(jù)單元中出現(xiàn)在所述初始數(shù)據(jù)單元之前的最近的數(shù)據(jù)單元。所述規(guī)則可以包括多個(gè)規(guī)則情況。測(cè)試所述多個(gè)規(guī)則情況中的至少一個(gè)規(guī)則情況的結(jié)果可以取決于所述狀態(tài)變量的值。

將所述規(guī)則應(yīng)用于所述多個(gè)數(shù)據(jù)單元的所述特定數(shù)據(jù)單元可以包括:針對(duì)所述狀態(tài)變量的更新后的值測(cè)試所述多個(gè)規(guī)則情況中的所述至少一個(gè)規(guī)則情況。數(shù)據(jù)單元的所述有序子集中的初始數(shù)據(jù)單元可以是第一次出現(xiàn)的與所述有序的多個(gè)數(shù)據(jù)單元中的所述特定數(shù)據(jù)單元相關(guān)的數(shù)據(jù)單元。所述多個(gè)規(guī)則情況中的至少一個(gè)規(guī)則情況可以基于從第二數(shù)據(jù)源導(dǎo)出的值,所述第二數(shù)據(jù)源與所述第一數(shù)據(jù)源不同。所述第二數(shù)據(jù)源在所述處理開始之后可以被動(dòng)態(tài)的訪問。所述有序的多個(gè)數(shù)據(jù)單元中的每個(gè)數(shù)據(jù)單元可以包括來自所述第一數(shù)據(jù)源的記錄的一個(gè)或多個(gè)值和來自所述第二數(shù)據(jù)源的至少一個(gè)值。所述有序的多個(gè)數(shù)據(jù)單元可以根據(jù)所述第一數(shù)據(jù)源的一組記錄的順序來排序。數(shù)據(jù)單元的所述有序子集的每個(gè)數(shù)據(jù)單元可以通過共享標(biāo)識(shí)符與數(shù)據(jù)單元的所述有序子集的其他數(shù)據(jù)單元相關(guān)。所述共享標(biāo)識(shí)符可以包括鍵字段值。

處理所述特定數(shù)據(jù)單元可以包括:確定為所述特定數(shù)據(jù)單元的一個(gè)或多個(gè)先前獲取的值是否存在于數(shù)據(jù)單元緩存中并且是否有效,并且如果確定先前獲取的值存在并且有效,則從所述數(shù)據(jù)單元緩存中為所述特定數(shù)據(jù)單元獲取一個(gè)或多個(gè)值,否則,從包括所述第一數(shù)據(jù)源的一個(gè)或多個(gè)數(shù)據(jù)源中為所述特定數(shù)據(jù)單元獲取一個(gè)或多個(gè)值。確定為所述特定數(shù)據(jù)單元的先前獲取的值是否有效可以包括:將自獲取了先前獲取的值起所經(jīng)過的時(shí)間與預(yù)定的經(jīng)過時(shí)間閾值進(jìn)行比較。

從所述一個(gè)或多個(gè)數(shù)據(jù)源為所述特定數(shù)據(jù)單元獲取一個(gè)或多個(gè)值可以包括:打開至所述第一數(shù)據(jù)源的連接用于為所述特定數(shù)據(jù)單元接收一個(gè)或多個(gè)值,并且將所述連接保持在打開狀態(tài)用于為所述有序的多個(gè)數(shù)據(jù)單元中其他數(shù)據(jù)單元接收一個(gè)或多個(gè)值。從所述一個(gè)或多個(gè)數(shù)據(jù)源為所述特定數(shù)據(jù)單元獲取一個(gè)或多個(gè)值可以包括:從先前打開的至所述第一數(shù)據(jù)源的連接為所述特定數(shù)據(jù)單元接收一個(gè)或多個(gè)值。所述第一數(shù)據(jù)源可以是數(shù)據(jù)庫。所述第一數(shù)據(jù)源可以是數(shù)據(jù)檔案文件。

所述方法可以包括:針對(duì)所述有序子集的至少第一數(shù)據(jù)單元,確定為所述第一數(shù)據(jù)單元的先前獲取的值是否存在于數(shù)據(jù)單元緩存中并且是否有效,并且如果確定所述先前獲取的值存在并且有效,則從所述數(shù)據(jù)單元緩存中為所述第一數(shù)據(jù)單元獲取一個(gè)或多個(gè)值,否則,從包括所述第一數(shù)據(jù)源的一個(gè)或多個(gè)數(shù)據(jù)源中為所述第一數(shù)據(jù)單元獲取一個(gè)或多個(gè)值。確定為所述第一數(shù)據(jù)單元的先前獲取的值是否有效可以包括:將自獲取所述先前獲取的值起所經(jīng)過的時(shí)間與預(yù)定的經(jīng)過時(shí)間閾值進(jìn)行比較。從所述一個(gè)或多個(gè)數(shù)據(jù)源為所述第一數(shù)據(jù)單元獲取一個(gè)或多個(gè)值可以包括:打開至所述第一數(shù)據(jù)源的連接用于為所述第一數(shù)據(jù)單元接收一個(gè)或多個(gè)值,并且將所述連接保持在打開狀態(tài)用于為所述有序的多個(gè)數(shù)據(jù)單元中其他數(shù)據(jù)單元接收一個(gè)或多個(gè)值。從所述一個(gè)或多個(gè)數(shù)據(jù)源為所述第一數(shù)據(jù)單元獲取一個(gè)或多個(gè)值可以包括:從先前打開的至所述第一數(shù)據(jù)源的連接為所述第一數(shù)據(jù)單元接收一個(gè)或多個(gè)值。

在另一方面中,一般性地,一種以非暫時(shí)形式存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上的軟件,用于將規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù),所述軟件包括用于使得計(jì)算系統(tǒng)執(zhí)行下列步驟的指令:從第一數(shù)據(jù)源接收數(shù)據(jù);以及處理有序的多個(gè)數(shù)據(jù)單元中的特定數(shù)據(jù)單元,所述有序的多個(gè)數(shù)據(jù)單元至少部分從接收自所述第一數(shù)據(jù)源的數(shù)據(jù)中導(dǎo)出。所述處理包括:確定第一組數(shù)據(jù)單元,所述第一組數(shù)據(jù)單元包括來自所述有序的多個(gè)數(shù)據(jù)單元中的數(shù)據(jù)單元的有序子集,所述有序子集中包括的每個(gè)數(shù)據(jù)單元與所述特定數(shù)據(jù)單元相關(guān)并且在所述有序的多個(gè)數(shù)據(jù)單元中出現(xiàn)在所述特定數(shù)據(jù)單元之前;在將所述規(guī)則應(yīng)用于所述特定數(shù)據(jù)單元之前,將至少一個(gè)狀態(tài)變量更新為如果依序迭代通過所述第一組數(shù)據(jù)單元將能夠產(chǎn)生的狀態(tài),并且對(duì)于所述有序子集的每個(gè)數(shù)據(jù)單元,將所述規(guī)則應(yīng)用于數(shù)據(jù)單元;以及將所述規(guī)則應(yīng)用于所述特定數(shù)據(jù)單元,其包括讀取所述狀態(tài)變量的更新后的值。

在另一方面中,一般性地,一種用于將規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)的計(jì)算系統(tǒng),所述計(jì)算系統(tǒng)包括:輸入裝置或端口,被配置為從第一數(shù)據(jù)源接收數(shù)據(jù);以及至少一個(gè)處理器,被配置為處理有序的多個(gè)數(shù)據(jù)單元的特定數(shù)據(jù)單元,所述有序的多個(gè)數(shù)據(jù)單元至少部分從接收自所述第一數(shù)據(jù)源的所述數(shù)據(jù)中導(dǎo)出。所述處理包括:確定第一組數(shù)據(jù)單元,所述第一組數(shù)據(jù)單元包括來自所述有序的多個(gè)數(shù)據(jù)單元中的數(shù)據(jù)單元的有序子集,所述有序子集中包括的每個(gè)數(shù)據(jù)單元與所述特定數(shù)據(jù)單元相關(guān)并且在所述有序的多個(gè)數(shù)據(jù)單元中出現(xiàn)在所述特定數(shù)據(jù)單元之前;在將所述規(guī)則應(yīng)用于所述特定數(shù)據(jù)單元之前,將至少一個(gè)狀態(tài)變量更新為如果依序迭代通過所述第一組數(shù)據(jù)單元將能夠產(chǎn)生的狀態(tài),并且對(duì)于所述有序子集的每個(gè)數(shù)據(jù)單元,將所述規(guī)則應(yīng)用于數(shù)據(jù)單元;以及將所述規(guī)則應(yīng)用于所述特定數(shù)據(jù)單元,其包括讀取所述狀態(tài)變量的更新后的值。

在另一個(gè)方面中,一般性地,一種用于將規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)的計(jì)算系統(tǒng),所述計(jì)算系統(tǒng)包括:輸入裝置或端口,被配置為從第一數(shù)據(jù)源接收數(shù)據(jù);以及至少一個(gè)處理器,被配置為以應(yīng)用所述規(guī)則的至少兩種不同模式中選出的一種模式來處理多個(gè)數(shù)據(jù)單元,所述多個(gè)數(shù)據(jù)單元至少部分從接收自所述第一數(shù)據(jù)源的所述數(shù)據(jù)中導(dǎo)出。這些模式包括:第一模式,在所述第一模式中,以特定順序接收所述多個(gè)數(shù)據(jù)單元,并且處理所述多個(gè)數(shù)據(jù)單元包括:針對(duì)所述多個(gè)數(shù)據(jù)單元的至少一些數(shù)據(jù)單元中的每一個(gè)數(shù)據(jù)單元,基于將所述規(guī)則應(yīng)用于數(shù)據(jù)單元的結(jié)果將更新后的值寫入至少一個(gè)狀態(tài)變量;以及第二模式,在所述第二模式中,接收所述多個(gè)數(shù)據(jù)單元中選擇的特定數(shù)據(jù)單元,并且處理所述特定數(shù)據(jù)單元包括:(1)確定第一組數(shù)據(jù)單元,所述第一組數(shù)據(jù)單元包括來自所述多個(gè)數(shù)據(jù)單元中的數(shù)據(jù)單元的有序子集,所述有序子集中包括的每個(gè)數(shù)據(jù)單元在所述多個(gè)數(shù)據(jù)單元中出現(xiàn)在所述特定數(shù)據(jù)單元之前;(2)在將所述規(guī)則應(yīng)用于所述特定數(shù)據(jù)單元之前,將至少一個(gè)狀態(tài)變量更新為如果以所述第一模式處理所述第一組數(shù)據(jù)單元將能夠產(chǎn)生的狀態(tài);以及(3)將所述規(guī)則應(yīng)用于所述特定數(shù)據(jù)單元,包括讀取所述狀態(tài)變量的更新后的值。

各個(gè)方面可以包括一個(gè)或多個(gè)下述特征。

所述第二模式可以是在測(cè)試環(huán)境中將所述規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)的模式,在所述第二模式中,在用于測(cè)試所述規(guī)則的用戶界面內(nèi)選擇所述特定數(shù)據(jù)單元。所述第一模式可以是在制作環(huán)境中將所述規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)的模式。所述第一模式可以是在所述測(cè)試環(huán)境中將所述規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)的模式,在所述第一模式中,對(duì)所有的所述多個(gè)數(shù)據(jù)單元進(jìn)行批量測(cè)試。所述第一組數(shù)據(jù)單元可以由數(shù)據(jù)單元的所述有序子集構(gòu)成。

更新所述狀態(tài)變量可以包括依序迭代通過所述第一組數(shù)據(jù)單元,并且針對(duì)所述有序子集的每個(gè)數(shù)據(jù)單元,將所述規(guī)則應(yīng)用于數(shù)據(jù)單元,并且基于將所述規(guī)則應(yīng)用于數(shù)據(jù)單元的結(jié)果寫入所述狀態(tài)變量的更新后的值。所述第一組數(shù)據(jù)單元可以包括不在數(shù)據(jù)單元的所述有序子集中的數(shù)據(jù)單元,并且依序迭代通過所述第一組數(shù)據(jù)單元可以包括確定數(shù)據(jù)單元是否是數(shù)據(jù)單元的所述有序子集的成員。所述有序子集中包括的每個(gè)數(shù)據(jù)單元可以與所述特定數(shù)據(jù)單元相關(guān),并且所述多個(gè)數(shù)據(jù)單元可以包括相關(guān)數(shù)據(jù)單元,所述相關(guān)數(shù)據(jù)單元是所述多個(gè)數(shù)據(jù)單元中第一次出現(xiàn)的與所述特定數(shù)據(jù)單元相關(guān)的數(shù)據(jù)單元,并且數(shù)據(jù)單元的所述有序子集的初始數(shù)據(jù)單元不是所述相關(guān)數(shù)據(jù)單元。

以所述第二模式處理所述特定數(shù)據(jù)單元可以包括:針對(duì)每一次將所述規(guī)則應(yīng)用于所述多個(gè)數(shù)據(jù)單元中的數(shù)據(jù)單元,將所述狀態(tài)變量的更新后的值存儲(chǔ)在狀態(tài)變量緩存中。將所述規(guī)則應(yīng)用于數(shù)據(jù)單元的所述有序子集的初始數(shù)據(jù)單元可以包括:從所述狀態(tài)變量緩存讀取所述狀態(tài)變量的更新后的值,該值是響應(yīng)于將所述規(guī)則應(yīng)用于在所述多個(gè)數(shù)據(jù)單元中出現(xiàn)在所述初始數(shù)據(jù)單元之前的數(shù)據(jù)單元而存儲(chǔ)的。在所述多個(gè)數(shù)據(jù)單元中出現(xiàn)在所述初始數(shù)據(jù)單元之前的數(shù)據(jù)單元可以是與所述初始數(shù)據(jù)單元相關(guān)的、并且在所多個(gè)數(shù)據(jù)單元中出現(xiàn)在所述初始數(shù)據(jù)單元之前的最近的數(shù)據(jù)單元。所述規(guī)則可以包括多個(gè)規(guī)則情況。

測(cè)試所述多個(gè)規(guī)則情況中的至少一個(gè)規(guī)則情況的結(jié)果可以取決于所述狀態(tài)變量的值。將所述規(guī)則應(yīng)用于所述多個(gè)數(shù)據(jù)單元的所述特定數(shù)據(jù)單元可以包括:針對(duì)所述狀態(tài)變量的更新后的值測(cè)試所述多個(gè)規(guī)則情況中的所述至少一個(gè)規(guī)則情況。所述有序子集中包括的每個(gè)數(shù)據(jù)單元可以與所述特定數(shù)據(jù)單元相關(guān),并且數(shù)據(jù)單元的所述有序子集中的初始數(shù)據(jù)單元可以是第一次出現(xiàn)的與所述多個(gè)數(shù)據(jù)單元中的所述特定數(shù)據(jù)單元相關(guān)的數(shù)據(jù)單元。所述多個(gè)規(guī)則情況中的至少一個(gè)規(guī)則情況可以基于從第二數(shù)據(jù)源導(dǎo)出的值,所述第二數(shù)據(jù)源與所述第一數(shù)據(jù)源不同。所述第二數(shù)據(jù)源在所述處理開始之后可以被動(dòng)態(tài)的訪問。

所述多個(gè)數(shù)據(jù)單元中的每個(gè)數(shù)據(jù)單元可以包括來自所述第一數(shù)據(jù)源的記錄的一個(gè)或多個(gè)值和來自所述第二數(shù)據(jù)源的至少一個(gè)值。所述多個(gè)數(shù)據(jù)單元可以根據(jù)所述第一數(shù)據(jù)源的一組記錄的順序來排序。所述有序子集中包括的每個(gè)數(shù)據(jù)單元可以通過共享標(biāo)識(shí)符與所述特定數(shù)據(jù)單元相關(guān)并且與數(shù)據(jù)單元的所述有序子集的其他數(shù)據(jù)單元相關(guān)。所述共享標(biāo)識(shí)符可以包括鍵字段值。

處理所述特定數(shù)據(jù)單元可以包括:確定為所述特定數(shù)據(jù)單元的一個(gè)或多個(gè)先前獲取的值是否存在于數(shù)據(jù)單元緩存中并且是否有效,并且如果確定先前獲取的值存在并且有效,則從所述數(shù)據(jù)單元緩存中為所述特定數(shù)據(jù)單元獲取一個(gè)或多個(gè)值,否則,從包括所述第一數(shù)據(jù)源的一個(gè)或多個(gè)數(shù)據(jù)源中為所述特定數(shù)據(jù)單元獲取一個(gè)或多個(gè)值。確定為所述特定數(shù)據(jù)單元的先前獲取的值是否有效可以包括:將自獲取了先前獲取的值起所經(jīng)過的時(shí)間與預(yù)定的經(jīng)過時(shí)間閾值進(jìn)行比較。從所述一個(gè)或多個(gè)數(shù)據(jù)源為所述特定數(shù)據(jù)單元獲取一個(gè)或多個(gè)值可以包括:打開至所述第一數(shù)據(jù)源的連接用于為所述特定數(shù)據(jù)單元接收一個(gè)或多個(gè)值,并且將所述連接保持在打開狀態(tài)用于為所述多個(gè)數(shù)據(jù)單元中其他數(shù)據(jù)單元接收一個(gè)或多個(gè)值。

從所述一個(gè)或多個(gè)數(shù)據(jù)源為所述特定數(shù)據(jù)單元獲取一個(gè)或多個(gè)值可以包括:從先前打開的至所述第一數(shù)據(jù)源的連接為所述特定數(shù)據(jù)單元接收一個(gè)或多個(gè)值。所述第一數(shù)據(jù)源可以是數(shù)據(jù)庫。所述第一數(shù)據(jù)源可以是數(shù)據(jù)檔案文件。

以所述第二模式處理所述特定數(shù)據(jù)單元可以包括:針對(duì)所述有序子集的至少第一數(shù)據(jù)單元,確定為所述第一數(shù)據(jù)單元的先前獲取的值是否存在于數(shù)據(jù)單元緩存中并且是否有效,并且如果確定所述先前獲取的值存在并且有效,則從所述數(shù)據(jù)單元緩存中為所述第一數(shù)據(jù)單元獲取一個(gè)或多個(gè)值,否則,從包括所述第一數(shù)據(jù)源的一個(gè)或多個(gè)數(shù)據(jù)源中為所述第一數(shù)據(jù)單元獲取一個(gè)或多個(gè)值。

確定為所述第一數(shù)據(jù)單元的先前獲取的值是否有效可以包括:將自獲取所述先前獲取的值起所經(jīng)過的時(shí)間與預(yù)定的經(jīng)過時(shí)間閾值進(jìn)行比較。從所述一個(gè)或多個(gè)數(shù)據(jù)源為所述第一數(shù)據(jù)單元獲取一個(gè)或多個(gè)值可以包括:打開至所述第一數(shù)據(jù)源的連接用于為所述第一數(shù)據(jù)單元接收一個(gè)或多個(gè)值,并且將所述連接保持在打開狀態(tài)用于為所述多個(gè)數(shù)據(jù)單元中其他數(shù)據(jù)單元接收一個(gè)或多個(gè)值。從所述一個(gè)或多個(gè)數(shù)據(jù)源獲取所述第一數(shù)據(jù)單元的一個(gè)或多個(gè)值可以包括從在先打開的所第一數(shù)據(jù)源的連接中接收所述第一數(shù)據(jù)單元的一個(gè)或多個(gè)值。

在另一方面中,一般性地,一種以非暫時(shí)形式存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上的軟件,用于將規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù),所述軟件包括用于使得計(jì)算系統(tǒng)執(zhí)行下列步驟的指令:為從第一數(shù)據(jù)源接收數(shù)據(jù);以及以應(yīng)用所述規(guī)則的至少兩種不同模式中選出的一種模式來處理多個(gè)數(shù)據(jù)單元,所述多個(gè)數(shù)據(jù)單元至少部分從接收自所述第一數(shù)據(jù)源的所述數(shù)據(jù)中導(dǎo)出。這些模式包括:第一模式,在所述第一模式中,以特定順序接收所述多個(gè)數(shù)據(jù)單元,并且處理所述多個(gè)數(shù)據(jù)單元包括:針對(duì)所述多個(gè)數(shù)據(jù)單元的至少一些數(shù)據(jù)單元中的每一個(gè)數(shù)據(jù)單元,基于將所述規(guī)則應(yīng)用于數(shù)據(jù)單元的結(jié)果將更新后的值寫入至少一個(gè)狀態(tài)變量;以及第二模式,在所述第二模式中,接收所述多個(gè)數(shù)據(jù)單元中選擇的特定數(shù)據(jù)單元,并且處理所述特定數(shù)據(jù)單元包括:(1)確定第一組數(shù)據(jù)單元,所述第一組數(shù)據(jù)單元包括來自所述多個(gè)數(shù)據(jù)單元中的數(shù)據(jù)單元的有序子集,所述有序子集中包括的每個(gè)數(shù)據(jù)單元在所述多個(gè)數(shù)據(jù)單元中出現(xiàn)在所述特定數(shù)據(jù)單元之前;(2)在將所述規(guī)則應(yīng)用于所述特定數(shù)據(jù)單元之前,將至少一個(gè)狀態(tài)變量更新為如果以所述第一模式處理所述第一組數(shù)據(jù)單元將能夠產(chǎn)生的狀態(tài);以及(3)將所述規(guī)則應(yīng)用于所述特定數(shù)據(jù)單元,包括讀取所述狀態(tài)變量的更新后的值。

在另一方面中,一般性地,一種用于將規(guī)則應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)的方法,所述方法包括:為從第一數(shù)據(jù)源接收數(shù)據(jù);以及以應(yīng)用所述規(guī)則的至少兩種不同模式中選出的一種模式來處理多個(gè)數(shù)據(jù)單元,所述多個(gè)數(shù)據(jù)單元至少部分從接收自所述第一數(shù)據(jù)源的所述數(shù)據(jù)中導(dǎo)出。這些模式包括:第一模式,在所述第一模式中,以特定順序接收所述多個(gè)數(shù)據(jù)單元,并且處理所述多個(gè)數(shù)據(jù)單元包括:針對(duì)所述多個(gè)數(shù)據(jù)單元的至少一些數(shù)據(jù)單元中的每一個(gè)數(shù)據(jù)單元,基于將所述規(guī)則應(yīng)用于數(shù)據(jù)單元的結(jié)果將更新后的值寫入至少一個(gè)狀態(tài)變量;以及第二模式,在所述第二模式中,接收所述多個(gè)數(shù)據(jù)單元中選擇的特定數(shù)據(jù)單元,并且處理所述特定數(shù)據(jù)單元包括:(1)確定第一組數(shù)據(jù)單元,所述第一組數(shù)據(jù)單元包括來自所述多個(gè)數(shù)據(jù)單元中的數(shù)據(jù)單元的有序子集,所述有序子集中包括的每個(gè)數(shù)據(jù)單元在所述多個(gè)數(shù)據(jù)單元中出現(xiàn)在所述特定數(shù)據(jù)單元之前;(2)在將所述規(guī)則應(yīng)用于所述特定數(shù)據(jù)單元之前,將至少一個(gè)狀態(tài)變量更新為如果以所述第一模式處理所述第一組數(shù)據(jù)單元將能夠產(chǎn)生的狀態(tài);以及(3)將所述規(guī)則應(yīng)用于所述特定數(shù)據(jù)單元,包括讀取所述狀態(tài)變量的更新后的值。

各個(gè)方面可以包括一個(gè)或多個(gè)下述優(yōu)點(diǎn)。

與常規(guī)系統(tǒng)相比,本文所描述的一些方面改進(jìn)了用于指定和應(yīng)用規(guī)則的系統(tǒng)的性能和功能,同時(shí),確保當(dāng)所述系統(tǒng)用單個(gè)單元測(cè)試模式、批量測(cè)試模式以及制作模式來應(yīng)用規(guī)則時(shí)產(chǎn)生一致的結(jié)果,下文將進(jìn)行更加詳細(xì)的描述。

與一些常規(guī)系統(tǒng)不同,本文描述的方面不需要靜態(tài)測(cè)試環(huán)境。這可能是有利的,這是因?yàn)楦鱾€(gè)方面可以對(duì)復(fù)雜事件處理有效地工作,并且不太可能導(dǎo)致開發(fā)人員為了符合靜態(tài)測(cè)試環(huán)境而改變他們編寫規(guī)則的方式。

根據(jù)以下描述及權(quán)利要求,本發(fā)明的其他特征及優(yōu)點(diǎn)將變得更加明顯。

附圖說明

圖1是用于指定和應(yīng)用數(shù)據(jù)的規(guī)則的系統(tǒng)的框圖。

圖2是用于指定和應(yīng)用數(shù)據(jù)的規(guī)則的用戶界面。

圖3是示出用戶界面的元素與數(shù)據(jù)源的關(guān)聯(lián)的框圖。

圖4是批量應(yīng)用規(guī)則的第一步驟的示圖。

圖5是批量應(yīng)用規(guī)則的第二步驟的示圖。

圖6是批量應(yīng)用規(guī)則的第三步驟的示圖。

圖7是單個(gè)單元應(yīng)用規(guī)則的第三步驟的示圖。

圖8是單個(gè)單元應(yīng)用規(guī)則的第一步驟的示圖。

圖9是單個(gè)單元應(yīng)用規(guī)則的第二步驟的示圖。

圖10是示例性復(fù)雜事件處理例程的狀態(tài)圖。

圖11是配置用于復(fù)雜事件處理的系統(tǒng)的用戶界面。

具體實(shí)施方式

1綜述

圖1示出了允許開發(fā)者110指定應(yīng)用于來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)(例如,數(shù)據(jù)庫記錄)的數(shù)據(jù)處理規(guī)則的數(shù)據(jù)處理系統(tǒng)100的示例。因?yàn)橛砷_發(fā)者110指定的數(shù)據(jù)處理規(guī)則在被釋放到制作環(huán)境之前能正確地發(fā)揮功能很重要,所以系統(tǒng)100被配置為允許開發(fā)者110在釋放數(shù)據(jù)處理規(guī)則之前針對(duì)測(cè)試數(shù)據(jù)去測(cè)試數(shù)據(jù)處理規(guī)則的功能。在一些示例中,系統(tǒng)100允許開發(fā)者110在單個(gè)單元測(cè)試模式中或在批量測(cè)試模式中測(cè)試數(shù)據(jù)處理規(guī)則的功能。在單個(gè)單元測(cè)試模式中,由開發(fā)者110指定的數(shù)據(jù)處理規(guī)則一次應(yīng)用于一個(gè)測(cè)試數(shù)據(jù)單元。在批量測(cè)試模式中,由開發(fā)者110指定的數(shù)據(jù)處理規(guī)則一次應(yīng)用于多個(gè)測(cè)試數(shù)據(jù)單元。

系統(tǒng)100包括用于向系統(tǒng)100提供數(shù)據(jù)的數(shù)據(jù)源102、用于指定數(shù)據(jù)處理規(guī)則的用戶界面112(例如,顯示屏上的圖形視圖)、以及用于將數(shù)據(jù)處理規(guī)則應(yīng)用于由數(shù)據(jù)源102所提供的數(shù)據(jù)的執(zhí)行模塊104。

1.1數(shù)據(jù)源

通常,數(shù)據(jù)源102包括一個(gè)或多個(gè)數(shù)據(jù)源,例如存儲(chǔ)設(shè)備或者在線數(shù)據(jù)流的連接,每個(gè)數(shù)據(jù)源可以存儲(chǔ)或提供各種格式中任意一種的數(shù)據(jù)(例如,數(shù)據(jù)庫表、電子表格文件、純文本文件或大型機(jī)使用的本地格式)。在圖1的示例性系統(tǒng)100中,數(shù)據(jù)源102包括測(cè)試數(shù)據(jù)集114、信用卡余額數(shù)據(jù)集116和多個(gè)近期采購檔案118。注意到,包括在數(shù)據(jù)源102中的上述數(shù)據(jù)源的集合僅僅是可能包括在數(shù)據(jù)源102中的數(shù)據(jù)源的集合的一個(gè)示例。實(shí)際上,根據(jù)系統(tǒng)100的具體應(yīng)用,數(shù)據(jù)源102中可以包括具有不同類型的數(shù)據(jù)內(nèi)容的許多不同類型的數(shù)據(jù)源。

數(shù)據(jù)源102中包括的至少一些數(shù)據(jù)集包括許多記錄(例如,根據(jù)預(yù)定記錄結(jié)構(gòu)格式化的記錄、或數(shù)據(jù)庫表中的行)。所述許多記錄中的每個(gè)元素可以包括關(guān)于多個(gè)字段的值(例如,記錄結(jié)構(gòu)中限定的屬性、或數(shù)據(jù)庫表中的列;例如,“名字”,“姓氏”,“電子郵件地址”等等),所述值可能包括空值或空白值。

在一些示例中,數(shù)據(jù)源102中包括的數(shù)據(jù)源中的一個(gè)被指定為主數(shù)據(jù)源,并且數(shù)據(jù)源102中包括的其他數(shù)據(jù)源被指定為與主數(shù)據(jù)源相關(guān)的輔助數(shù)據(jù)數(shù)據(jù)源。一般來說,數(shù)據(jù)處理規(guī)則被應(yīng)用于主數(shù)據(jù)源中的預(yù)定義記錄集中的每條記錄的至少一些字段。在將數(shù)據(jù)處理規(guī)則應(yīng)用于主數(shù)據(jù)源的各條記錄的過程中,訪問輔助數(shù)據(jù)源以獲得與來自主數(shù)據(jù)源的記錄相關(guān)的且是數(shù)據(jù)處理規(guī)則所需的其他值或甚至是其他記錄。例如,主數(shù)據(jù)集的每條記錄可以包括用于訪問來自輔助數(shù)據(jù)源的相關(guān)數(shù)據(jù)的鍵(例如,帳號(hào))??梢允占瘉碜灾鲾?shù)據(jù)源和輔助數(shù)據(jù)源的數(shù)據(jù)作為單元以進(jìn)行測(cè)試,該單元被稱為“測(cè)試數(shù)據(jù)單元”,以下將進(jìn)行更加詳細(xì)的描述。在圖1的示例性系統(tǒng)中,主數(shù)據(jù)源是測(cè)試數(shù)據(jù)集114,并且數(shù)據(jù)源102中包括的輔助數(shù)據(jù)源是信用卡余額數(shù)據(jù)集116和多個(gè)近期采購檔案文件118。

如下面更詳細(xì)描述的那樣,系統(tǒng)100被配置為能夠在開發(fā)和測(cè)試數(shù)據(jù)處理規(guī)則期間動(dòng)態(tài)地訪問輔助數(shù)據(jù)源,而不是在開發(fā)和測(cè)試開始之前要求確定和存儲(chǔ)固定的測(cè)試值作為輔助數(shù)據(jù)源的靜態(tài)仿真。

1.2用戶界面

用戶界面112(下文參照?qǐng)D2進(jìn)行更加詳細(xì)的描述)使開發(fā)者110能夠指定用于處理測(cè)試數(shù)據(jù)單元的一組數(shù)據(jù)處理規(guī)則。用戶界面112的輸出是一個(gè)或多個(gè)數(shù)據(jù)處理規(guī)則的規(guī)范。將由用戶界面112生成的一個(gè)或多個(gè)數(shù)據(jù)處理規(guī)則的規(guī)范提供給執(zhí)行環(huán)境104。

1.3執(zhí)行環(huán)境

執(zhí)行環(huán)境104包括用戶界面(ui)模塊106、處理模塊108和參數(shù)集120。處理模塊108包括狀態(tài)存儲(chǔ)器122。在一些示例中,所述參數(shù)集120和所述狀態(tài)存儲(chǔ)器122充當(dāng)在應(yīng)用數(shù)據(jù)處理規(guī)則期間可以被動(dòng)態(tài)訪問的附加輔助數(shù)據(jù)源。

來自用戶界面112的一個(gè)或多個(gè)數(shù)據(jù)處理規(guī)則的規(guī)范被提供給ui模塊106,ui模塊106將指定的數(shù)據(jù)處理規(guī)則變換(例如,編譯或解釋)為處理模塊108可使用的形式。處理模塊108從數(shù)據(jù)源102接收數(shù)據(jù)處理規(guī)則的可用形式、參數(shù)集120和數(shù)據(jù)單元作為輸入,并根據(jù)數(shù)據(jù)處理規(guī)則和參數(shù)集120處理來自數(shù)據(jù)源102的數(shù)據(jù)單元。在一些示例中,如下文更詳細(xì)地描述的那樣,當(dāng)處理來自數(shù)據(jù)源102的數(shù)據(jù)時(shí),狀態(tài)存儲(chǔ)器122保持從一個(gè)測(cè)試數(shù)據(jù)單元到下一個(gè)測(cè)試數(shù)據(jù)單元的狀態(tài)。將處理來自數(shù)據(jù)源102的數(shù)據(jù)的結(jié)果提供回ui模塊106,然后返回到用戶界面112,在用戶界面112上將結(jié)果呈現(xiàn)給開發(fā)者110。

執(zhí)行環(huán)境104可以被托管在例如處于適當(dāng)?shù)牟僮飨到y(tǒng)(諸如某版本的unix操作系統(tǒng))控制下的一個(gè)或多個(gè)通用計(jì)算機(jī)上。例如,執(zhí)行環(huán)境104可包括多節(jié)點(diǎn)并行計(jì)算環(huán)境,包括使用多個(gè)中央處理單元(cpu)或處理器內(nèi)核的計(jì)算機(jī)系統(tǒng)的配置,其為本地的(例如,諸如對(duì)稱多處理(smp)計(jì)算機(jī)等多處理器系統(tǒng)),或本地分布式的(例如,耦接為群集或大規(guī)模并行處理(mpp)系統(tǒng)的多個(gè)處理器),或遠(yuǎn)程的,或遠(yuǎn)程分布式的(例如,經(jīng)由局域網(wǎng)(lan)和/或廣域網(wǎng)(wan)耦接的多處理器),或其任意組合。

提供數(shù)據(jù)源102的存儲(chǔ)設(shè)備可以對(duì)于執(zhí)行環(huán)境104來說是本地的(例如,存儲(chǔ)在連接到托管執(zhí)行環(huán)境104的計(jì)算機(jī)的存儲(chǔ)介質(zhì)(例如,硬盤驅(qū)動(dòng)器)上),或者可以對(duì)于執(zhí)行環(huán)境104來說是遠(yuǎn)程的,例如,通過遠(yuǎn)程連接(例如,由云計(jì)算基礎(chǔ)設(shè)施提供的遠(yuǎn)程連接)被托管在與托管執(zhí)行環(huán)境104的計(jì)算機(jī)通信的遠(yuǎn)程系統(tǒng)(例如,大型機(jī))上。

2示例性用戶界面

參考圖2,用戶界面112的一個(gè)示例被配置為允許開發(fā)者110指定并測(cè)試數(shù)據(jù)處理規(guī)則。用戶界面112通過ui模塊106(例如,在計(jì)算機(jī)監(jiān)視器上)來呈現(xiàn),并且包括二維網(wǎng)格224、數(shù)據(jù)單元號(hào)控制226、單個(gè)單元測(cè)試控制228和批量測(cè)試控制230。通常,開發(fā)者110可以使用二維網(wǎng)格224來指定數(shù)據(jù)處理規(guī)則,然后可以使用單個(gè)單元測(cè)試控制228在單個(gè)測(cè)試數(shù)據(jù)單元(由數(shù)據(jù)單元號(hào)控制226來指定)上測(cè)試數(shù)據(jù)處理規(guī)則,或者使用批量測(cè)試控制230在整個(gè)測(cè)試數(shù)據(jù)單元集上測(cè)試數(shù)據(jù)處理規(guī)則。可代替地,在一些實(shí)施中,在開發(fā)者110改變由數(shù)據(jù)單元號(hào)控制226指定的數(shù)據(jù)單元之后,響應(yīng)于該選擇,ui模塊106將自動(dòng)對(duì)所選測(cè)試數(shù)據(jù)單元發(fā)起數(shù)據(jù)處理規(guī)則的測(cè)試,而無需開發(fā)者110輸入明確的指令。

二維網(wǎng)格224包括多列232和多行234。列232被分為兩種列類型:輸入列和輸出列。在圖2的示例中,二維網(wǎng)格224包括五個(gè)輸入列:交易金額列(transactionamount)、信用卡余額列(creditcardbalance)、數(shù)量.近期采購列(num.recentpurchases)、數(shù)量.近期警告列(num.recentalerts)和風(fēng)險(xiǎn)等級(jí)列(risklevel)。通常,每個(gè)輸入列可以與來自主輸入數(shù)據(jù)集114的字段相關(guān)聯(lián),或者與來自可以獲得字段值(例如,為了用作原始值或作為表達(dá)式的一部分)的輔助數(shù)據(jù)源102的字段相關(guān)聯(lián)。在一些示例中,與輸入列相關(guān)聯(lián)的字段的每組值被稱為“測(cè)試數(shù)據(jù)單元”。在一些示例中,輸入列可以與來自除字段之外的源的值(諸如臨時(shí)變量、常數(shù)或其他自由形式的輸入值)相關(guān)聯(lián)。

在圖2的示例中,二維網(wǎng)格224包括單個(gè)輸出列:警告(alert)。在一些示例中,警告輸出列基于其輸出的值觸發(fā)事件(例如,發(fā)送文本消息)。

二維網(wǎng)格224的行234與輸入列的交點(diǎn)處的至少一些單元格236包括約束條件。在一些示例中,至少一些約束條件表示來自數(shù)據(jù)源102的給定數(shù)據(jù)單元的字段的值與比較值(例如,美元總額)之間的比較(例如,大于,小于或等于)。二維網(wǎng)格224的給定行的各單元格中的各約束條件一起限定了規(guī)則情況(rulecase),并且如果滿足規(guī)則情況,則每個(gè)輸出值限定規(guī)則的輸出。一般來說,為了滿足規(guī)則情況,必須滿足規(guī)則情況的所有約束條件。

在圖2的例子中,第一行限定了第一規(guī)則情況和第一輸出值,如下所示:

如果交易金額輸入數(shù)據(jù)的值大于$10,000并且

信用卡余額輸入數(shù)據(jù)的值大于$5,000并且

數(shù)量.近期采購輸入數(shù)據(jù)的值小于3并且

數(shù)量.近期警告輸入數(shù)據(jù)的值小于1并且

風(fēng)險(xiǎn)等級(jí)等于“正?!保瑒t

警告狀態(tài)輸出將被分配值“是”。

相似地,第二行限定了第二規(guī)則情況和第二輸出值,如下所示:

如果交易金額輸入數(shù)據(jù)的值大于$5,000并且

信用卡余額輸入數(shù)據(jù)的值大于$5,000并且

數(shù)量.近期采購輸入數(shù)據(jù)的值小于3并且

數(shù)量.近期警告輸入數(shù)據(jù)的值小于1并且

風(fēng)險(xiǎn)等級(jí)等于“高”,則

警告狀態(tài)輸出將被分配值“是”。

最后,第三行限定第三規(guī)則情況和第三輸入出值,如下所示:

如果交易金額輸入數(shù)據(jù)的值小于$5,000則

警告狀態(tài)輸出將被分配值“否”。

如向下指向箭頭所指出的,任何其他行表示具有默認(rèn)輸出值為“否”的默認(rèn)規(guī)則情況,這表示(既對(duì)于輸入列,也對(duì)于輸出列),箭頭頂部處的單元格值對(duì)于包含箭頭的框中的所有單元格是重復(fù)的。

3數(shù)據(jù)處理規(guī)則應(yīng)用

如上所述,為了將數(shù)據(jù)處理規(guī)則應(yīng)用于來自數(shù)據(jù)源102中的數(shù)據(jù)源的一個(gè)或多個(gè)數(shù)據(jù)單元,用戶界面112向ui模塊106提供數(shù)據(jù)處理規(guī)則的規(guī)范。ui模塊106將數(shù)據(jù)處理規(guī)則的規(guī)范處理成可由處理模塊108使用的形式(例如,通過編譯,解釋或一些其它轉(zhuǎn)換)。然后將數(shù)據(jù)處理規(guī)則的可用形式與來自數(shù)據(jù)源102的一個(gè)或多個(gè)記錄或其它值一起提供給處理模塊108,以便為一個(gè)或多個(gè)數(shù)據(jù)單元提供輸入。處理模塊108將數(shù)據(jù)處理規(guī)則應(yīng)用于一個(gè)或多個(gè)數(shù)據(jù)單元并返回一個(gè)或多個(gè)輸出值。

通常,二維網(wǎng)格224的行234中限定的規(guī)則情況通過優(yōu)先級(jí)排序,使得具有較低行號(hào)(例如,第一行)的規(guī)則情況具有比具有較高行號(hào)(例如,第二行)的規(guī)則情況高的優(yōu)先級(jí)。當(dāng)處理模塊108應(yīng)用規(guī)則時(shí),考慮與二維網(wǎng)格224的行234相關(guān)聯(lián)的優(yōu)先級(jí)。因此,首先測(cè)試第一行中限定的規(guī)則情況。如果滿足第一行中限定的規(guī)則情況(有時(shí)稱為觸發(fā)),則返回第一行中限定的輸出值,并且結(jié)束規(guī)則的應(yīng)用而不測(cè)試具有較低優(yōu)先級(jí)的行中限定的規(guī)則情況。如果不滿足第一行中限定的規(guī)則情況,則處理模塊108測(cè)試第二行中限定的規(guī)則情況。如果滿足第二行中限定的規(guī)則情況,則返回第二行中限定的輸出值,并且結(jié)束規(guī)則的應(yīng)用而不測(cè)試具有較低優(yōu)先級(jí)的行中限定的規(guī)則情況。處理模塊108重復(fù)該過程,直到測(cè)試完二維網(wǎng)格224的最低優(yōu)先級(jí)行中限定的規(guī)則情況并且返回二維網(wǎng)格224的最低優(yōu)先級(jí)行中限定的默認(rèn)輸出值。

4測(cè)試結(jié)果的呈現(xiàn)

在一些示例中,將處理模塊108返回的一個(gè)或多個(gè)輸出值提供給ui模塊106,ui模塊106進(jìn)而向用戶界面112提供一個(gè)或多個(gè)輸出值,以呈現(xiàn)給開發(fā)者110。然后,開發(fā)者110可以在用戶界面112中查看應(yīng)用數(shù)據(jù)處理規(guī)則的結(jié)果(例如,一個(gè)或多個(gè)輸出值),以確定數(shù)據(jù)處理規(guī)則是否符合預(yù)期的功能。如果需要,開發(fā)者110可以使用并經(jīng)由用戶界面112來對(duì)數(shù)據(jù)處理規(guī)則做出改變。通過本文描述的用于在單個(gè)單元測(cè)試模式、批量測(cè)試模式和制作模式中獲取一致結(jié)果的方法有利于該互動(dòng)式反饋的能力。

5測(cè)試數(shù)據(jù)單元間依賴性

如上所述,在一些示例中,與用戶界面112的二維網(wǎng)格224的列相關(guān)的字段可以從各種輔助數(shù)據(jù)源中導(dǎo)出,一些包括在數(shù)據(jù)源102中,一些包括在執(zhí)行環(huán)境104要不或者從執(zhí)行環(huán)境104中可訪問。參照?qǐng)D3,示出用于圖2的示例性數(shù)據(jù)處理規(guī)則的二維網(wǎng)格224,以及導(dǎo)出與二維網(wǎng)格224的列232相關(guān)聯(lián)的字段的各種示例性數(shù)據(jù)源。應(yīng)當(dāng)注意到,僅僅是為了說明性目的而包括了圖3所示的數(shù)據(jù)源,并且這些數(shù)據(jù)源通常不會(huì)通過用戶界面112向開發(fā)者110顯示。

在圖3中,與二維網(wǎng)格224的第一列相關(guān)聯(lián)的交易金額字段從出現(xiàn)在測(cè)試數(shù)據(jù)集114內(nèi)的記錄中的對(duì)應(yīng)字段中導(dǎo)出,與二維網(wǎng)格224的第二列相關(guān)聯(lián)的信用卡余額字段從出現(xiàn)在信用卡余額數(shù)據(jù)集116內(nèi)的記錄中的對(duì)應(yīng)字段中導(dǎo)出。與二維網(wǎng)格224的第三列相關(guān)聯(lián)的數(shù)量.近期采購字段從近期采購檔案118(例如,諸如索引壓縮純文本文件(icff)的檔案,如在第8,229,902號(hào)美國專利中詳細(xì)描述的那樣)中導(dǎo)出,與二維網(wǎng)格224的第四列相關(guān)聯(lián)的數(shù)量.近期警告字段從存儲(chǔ)在狀態(tài)存儲(chǔ)器122中的值導(dǎo)出,以及與二維網(wǎng)格224的第五列相關(guān)聯(lián)的風(fēng)險(xiǎn)等級(jí)字段從來自參數(shù)集120的參數(shù)值中導(dǎo)出。應(yīng)當(dāng)注意到,在圖3的示例中,測(cè)試數(shù)據(jù)集114是主數(shù)據(jù)源,而信用卡余額數(shù)據(jù)集116、近期采購檔案118、狀態(tài)存儲(chǔ)器和外部參數(shù)120都是輔助數(shù)據(jù)源。還要注意,來自測(cè)試數(shù)據(jù)集114的記錄的信息(例如,鍵)被提供給輔助數(shù)據(jù)源,使得它們可以訪問與測(cè)試數(shù)據(jù)集114的記錄相關(guān)的輔助數(shù)據(jù)。

如圖3所示,在某些示例中,某些輸出列的輸出值可以用于更新與某些輸入列相關(guān)聯(lián)的數(shù)據(jù)源。例如,圖3中警告輸出列340的輸出值用于更新狀態(tài)存儲(chǔ)器122,標(biāo)題為數(shù)量.近期警告的第四輸入列從所述狀態(tài)存儲(chǔ)器122中導(dǎo)出其輸入數(shù)據(jù)。也就是說,當(dāng)應(yīng)用由圖3的二維網(wǎng)格224指定的規(guī)則的結(jié)果導(dǎo)致警告值為“是”時(shí),狀態(tài)存儲(chǔ)器122中的數(shù)量.近期警告字段遞增,這表示近期發(fā)出過警告。通過將規(guī)則應(yīng)用的輸出寫入用作數(shù)據(jù)處理規(guī)則的輸入的數(shù)據(jù)源,可以在不同的測(cè)試數(shù)據(jù)單元之間建立數(shù)據(jù)單元間依賴性。

對(duì)于具有數(shù)據(jù)單元間依賴性的測(cè)試數(shù)據(jù)單元,將數(shù)據(jù)處理規(guī)則應(yīng)用于第一測(cè)試數(shù)據(jù)單元450的結(jié)果取決于將數(shù)據(jù)處理規(guī)則應(yīng)用于一個(gè)或多個(gè)其他不同測(cè)試數(shù)據(jù)單元的結(jié)果。

6批量測(cè)試

當(dāng)以批量測(cè)試模式將數(shù)據(jù)處理規(guī)則應(yīng)用于測(cè)試數(shù)據(jù)單元時(shí),以預(yù)定義的順序?qū)?shù)據(jù)處理規(guī)則應(yīng)用于多個(gè)測(cè)試數(shù)據(jù)單元(這些測(cè)試數(shù)據(jù)單元通常與從主數(shù)據(jù)源導(dǎo)出的測(cè)試數(shù)據(jù)單元中的值相關(guān)聯(lián)),如同制作環(huán)境中開展并以制作模式運(yùn)行的數(shù)據(jù)處理系統(tǒng)中完成的那樣。針對(duì)每一次將圖2的數(shù)據(jù)處理規(guī)則應(yīng)用于測(cè)試數(shù)據(jù)單元,均生成警告輸出值,并且基于警報(bào)輸出值更新狀態(tài)存儲(chǔ)器122。由于批量測(cè)試從第一個(gè)測(cè)試數(shù)據(jù)單元(由預(yù)定義的測(cè)試數(shù)據(jù)單元的子集組成)開始處理所有的測(cè)試數(shù)據(jù)單元,對(duì)于給定的測(cè)試數(shù)據(jù)單元,所有先前的測(cè)試數(shù)據(jù)單元都已經(jīng)被應(yīng)用了數(shù)據(jù)處理規(guī)則。因此,狀態(tài)存儲(chǔ)器122反映了將數(shù)據(jù)處理規(guī)則應(yīng)用于先前的測(cè)試數(shù)據(jù)單元所產(chǎn)生的警告輸出值。

圖4至圖6示例性地示出了將圖2的數(shù)據(jù)處理規(guī)則以批量測(cè)試模式應(yīng)用于一批測(cè)試數(shù)據(jù)單元,這批測(cè)試數(shù)據(jù)單元對(duì)應(yīng)于由客戶賬號(hào)鍵值標(biāo)識(shí)的給定客戶(在該示例中標(biāo)記為“客戶a”、“客戶b”等)。在該示例中,每個(gè)測(cè)試數(shù)據(jù)單元包括從主測(cè)試數(shù)據(jù)集114導(dǎo)出的給定客戶的交易金額和多個(gè)輔助值,所述多個(gè)輔助值包括從輔助數(shù)據(jù)源116、118、120、122導(dǎo)出的客戶的信用卡余額、客戶的近期采購數(shù)量、對(duì)客戶發(fā)出的近期警告的數(shù)量、以及客戶的風(fēng)險(xiǎn)等級(jí)參數(shù)。近期警告的數(shù)量存儲(chǔ)在不同客戶的存儲(chǔ)器122內(nèi)的不同的相應(yīng)狀態(tài)變量中。不同客戶的測(cè)試數(shù)據(jù)單元可能在被測(cè)試的一批測(cè)試數(shù)據(jù)單元內(nèi)交錯(cuò)。在該示例中,假定具有訂購鍵值1、2和10的測(cè)試數(shù)據(jù)單元對(duì)應(yīng)客戶a,而具有訂購鍵值3至9的測(cè)試數(shù)據(jù)單元對(duì)應(yīng)于其他客戶。

參考圖4所示,客戶a(具有的訂購鍵值為1)的第一測(cè)試數(shù)據(jù)單元450包括值為$100的第一交易金額441、值為$0的信用卡余額442、為0的近期采購數(shù)量值444、為0的近期警告數(shù)量值446、以及為“高”的風(fēng)險(xiǎn)等級(jí)參數(shù)值448。為了應(yīng)用圖2中指定的數(shù)據(jù)處理規(guī)則,處理模塊108首先將數(shù)據(jù)處理規(guī)則的第一規(guī)則情況應(yīng)用于第一測(cè)試數(shù)據(jù)單元450。滿足第一規(guī)則情況的一個(gè)要求是交易金額441必須大于$10,000。由于第一測(cè)試數(shù)據(jù)單元450的交易金額441是$100,所以第一測(cè)試數(shù)據(jù)單元450不滿足第一規(guī)則情況。然后,處理模塊108將數(shù)據(jù)處理規(guī)則的第二規(guī)則情況應(yīng)用于第一測(cè)試數(shù)據(jù)單位450。滿足第二條規(guī)則情況的一個(gè)要求是交易金額441必須大于$5,000。由于第一測(cè)試數(shù)據(jù)單元450的交易金額441是$100,所以第一測(cè)試數(shù)據(jù)單元450不滿足第二規(guī)則情況。最后,處理模塊108將數(shù)據(jù)處理規(guī)則的第三規(guī)則情況應(yīng)用于第一測(cè)試數(shù)據(jù)單元450。滿足第三規(guī)則情況的唯一要求是交易金額441小于$5,000。由于第一測(cè)試數(shù)據(jù)單元450的交易金額441是$100,所以滿足第三規(guī)則情況。由于第三規(guī)則情況與值為“否”的警告值相關(guān)聯(lián),所以將數(shù)據(jù)處理規(guī)則應(yīng)用于第一測(cè)試數(shù)據(jù)單元450導(dǎo)致警告輸出值為“否”。由于輸出了值為“否”的警告輸出值,所以近期警告的數(shù)量在狀態(tài)存儲(chǔ)器122中不增加并保持為0。

通常,一個(gè)或多個(gè)其他過程基于測(cè)試數(shù)據(jù)集114中的第一交易更新信用卡余額數(shù)據(jù)集116中的客戶a的信用卡余額442的值和多個(gè)近期采購檔案118中的客戶a的近期購買數(shù)量444的值。

參考圖5,客戶a的第二測(cè)試數(shù)據(jù)單元552(具有的訂購鍵值為2)包括值為$5,100的第二交易金額541、值為$100的信用卡余額542、為1的近期采購數(shù)量值544、為0的近期警告數(shù)量值546、以及為“高”的風(fēng)險(xiǎn)等級(jí)參數(shù)值548。為了應(yīng)用圖2中指定的數(shù)據(jù)處理規(guī)則,處理模塊108首先將數(shù)據(jù)處理規(guī)則的第一規(guī)則情況應(yīng)用于第二測(cè)試數(shù)據(jù)單元552。滿足第一規(guī)則情況的一個(gè)要求是交易金額541必須大于$10,000。由于第二測(cè)試數(shù)據(jù)單元552的交易金額541為$5,100,所以第二測(cè)試數(shù)據(jù)單元552不滿足第一規(guī)則情況。然后,處理模塊108將數(shù)據(jù)處理規(guī)則的第二規(guī)則情況應(yīng)用于第二測(cè)試數(shù)據(jù)單元552。由于在第二測(cè)試數(shù)據(jù)單元552中交易金額541大于$5,000,近期采購數(shù)量值544小于3,近期警告數(shù)量值546小于1,并且風(fēng)險(xiǎn)等級(jí)值548為“高”,所以滿足第二規(guī)則情況。由于第二規(guī)則情況與值為“是”的警告值相關(guān)聯(lián),所以將數(shù)據(jù)處理規(guī)則應(yīng)用于第二測(cè)試數(shù)據(jù)單元552導(dǎo)致警告輸出值為“是”。如上所述,由于應(yīng)用數(shù)據(jù)處理規(guī)則導(dǎo)致警告輸出值為“是”,所以數(shù)量.近期警告狀態(tài)存儲(chǔ)器122的值增加1,以表示近期發(fā)出過警告。

具有訂購鍵值3至9的測(cè)試數(shù)據(jù)單元已經(jīng)在具有訂購鍵值2的測(cè)試數(shù)據(jù)單元之后順序地進(jìn)行了處理,且不改變客戶a的近期警告數(shù)量值646,這是因?yàn)樵谙葦?shù)據(jù)單元的處理僅影響具有匹配的客戶帳戶鍵值的后續(xù)數(shù)據(jù)單元的存儲(chǔ)狀態(tài)。

參考圖6,客戶a(具有的訂購鍵值為10)的第三測(cè)試數(shù)據(jù)單元654包括值為$11,000的第三交易金額641、值為$5,200的信用卡余額642、為2的近期采購數(shù)量值644、為1的近期警告數(shù)量值646、以及為“高”的風(fēng)險(xiǎn)等級(jí)參數(shù)值648。為了應(yīng)用圖2中指定的數(shù)據(jù)處理規(guī)則,處理模塊108首先將數(shù)據(jù)處理規(guī)則的第一規(guī)則情況應(yīng)用于第三測(cè)試數(shù)據(jù)單元654。滿足第一規(guī)則情況的一個(gè)要求是近期警告數(shù)量646必須具有小于1的值。由于第三測(cè)試數(shù)據(jù)單元654的近期警告數(shù)量646為1,因此第三測(cè)試數(shù)據(jù)單元654不滿足第一規(guī)則情況。然后,處理模塊108將數(shù)據(jù)處理規(guī)則的第二規(guī)則情況應(yīng)用于第三測(cè)試數(shù)據(jù)單元654。滿足第二規(guī)則情況的一個(gè)要求是近期警告數(shù)量646必須具有小于1的值。由于第三測(cè)試數(shù)據(jù)單元654的近期警告值的數(shù)量646為1,所以第三測(cè)試數(shù)據(jù)單元654不滿足第二規(guī)則情況。最后,處理模塊108將數(shù)據(jù)處理規(guī)則的第三規(guī)則情況應(yīng)用于第三測(cè)試數(shù)據(jù)單元654。滿足第三規(guī)則情況的唯一要求是交易金額641小于$5,000。由于第三測(cè)試數(shù)據(jù)單元654的交易金額641是$11,000,所以不滿足第三規(guī)則情況。由于沒有符合的規(guī)則情況,所以數(shù)據(jù)處理規(guī)則返回值為“否”的默認(rèn)警告輸出值。

7單個(gè)單元測(cè)試

在一些示例中,開發(fā)者110可以將數(shù)據(jù)處理規(guī)則應(yīng)用于單個(gè)所選的測(cè)試數(shù)據(jù)單元,而不是以批量測(cè)試模式將數(shù)據(jù)處理規(guī)則應(yīng)用于測(cè)試數(shù)據(jù)單元,所述單個(gè)所選的測(cè)試數(shù)據(jù)單元對(duì)應(yīng)于來自測(cè)試數(shù)據(jù)集114中間的記錄的所選鍵值。在這種情況下,如果根據(jù)預(yù)定順序,測(cè)試數(shù)據(jù)單元的值無法準(zhǔn)確地反映由于將數(shù)據(jù)處理規(guī)則應(yīng)用于在所選數(shù)據(jù)單元之前出現(xiàn)的值或數(shù)據(jù)單元而造成的狀態(tài),則可能發(fā)生數(shù)據(jù)處理規(guī)則的錯(cuò)誤輸出。

為了避免這樣的錯(cuò)誤輸出,處理模塊108被配置為通過確定在所選數(shù)據(jù)單元之前出現(xiàn)的測(cè)試數(shù)據(jù)單元的子集來處理所選測(cè)試數(shù)據(jù)單元。通常,測(cè)試數(shù)據(jù)單元的子集中的測(cè)試數(shù)據(jù)單元與預(yù)定順序(例如,來自測(cè)試數(shù)據(jù)集114中的記錄的唯一主鍵字段的排序順序、或測(cè)試數(shù)據(jù)集114中的記錄的存儲(chǔ)順序)相關(guān)聯(lián)。在一些示例中,測(cè)試數(shù)據(jù)單元的子集中的測(cè)試數(shù)據(jù)單元都通過公共標(biāo)識(shí)符相關(guān)(例如,來自測(cè)試數(shù)據(jù)集114中的記錄的非唯一鍵字段的值,例如,客戶帳號(hào)數(shù)字段)。在將數(shù)據(jù)處理規(guī)則應(yīng)用于所選測(cè)試數(shù)據(jù)單元之前,處理模塊以預(yù)定順序迭代通過測(cè)試數(shù)據(jù)單元的子集中的測(cè)試數(shù)據(jù)單元,并將數(shù)據(jù)處理規(guī)則應(yīng)用于每個(gè)測(cè)試數(shù)據(jù)單元。針對(duì)將數(shù)據(jù)處理規(guī)則應(yīng)用于測(cè)試數(shù)據(jù)單元的至少一些應(yīng)用,由應(yīng)用數(shù)據(jù)處理規(guī)則所生成的輸出用于更新狀態(tài)變量。

在已經(jīng)將數(shù)據(jù)處理規(guī)則應(yīng)用于測(cè)試數(shù)據(jù)單元的子集中的所有測(cè)試數(shù)據(jù)單元之后,讀取狀態(tài)變量的更新后的值并且使用狀態(tài)變量的更新后的值將數(shù)據(jù)處理規(guī)則應(yīng)用于所選測(cè)試數(shù)據(jù)單元。

通過確保數(shù)據(jù)處理規(guī)則已經(jīng)應(yīng)用于在所選測(cè)試數(shù)據(jù)單元之前出現(xiàn)的所有測(cè)試數(shù)據(jù)單元,可確保狀態(tài)變量的值是準(zhǔn)確的,并因此確保數(shù)據(jù)處理規(guī)則的輸出是準(zhǔn)確的(就其與以批量測(cè)試模式獲取的結(jié)果和以制作模式獲取的結(jié)果一致而言)。

參照?qǐng)D2以及圖7至圖9,示出了單個(gè)單元測(cè)試模式處理的一個(gè)示例。在圖2中,開發(fā)者110使用數(shù)據(jù)單元號(hào)控制226選擇了值為10訂購鍵值。通過按下單個(gè)單元測(cè)試控制228,開發(fā)者110表明希望將數(shù)據(jù)處理規(guī)則應(yīng)用于與測(cè)試數(shù)據(jù)集114的第十條記錄相關(guān)聯(lián)的所選測(cè)試數(shù)據(jù)單元。參照?qǐng)D7,如果為所選測(cè)試數(shù)據(jù)單元754從它們相應(yīng)的數(shù)據(jù)源簡單地讀取二維網(wǎng)格224的每個(gè)輸入列232的字段的值并且將數(shù)據(jù)處理規(guī)則應(yīng)用于這些值,則將為所選測(cè)試數(shù)據(jù)單元754導(dǎo)致值為“是”的不正確的警告輸出值,這是因?yàn)闇y(cè)試數(shù)據(jù)單元的數(shù)量.近期警告字段中的不準(zhǔn)確的值而導(dǎo)致錯(cuò)誤地滿足了數(shù)據(jù)處理規(guī)則的第二規(guī)則情況。

在此示例中,也假設(shè)具有訂購鍵值1、2和10的測(cè)試數(shù)據(jù)單元對(duì)應(yīng)客戶a,而具有訂購鍵值3到9的測(cè)試數(shù)據(jù)單元對(duì)應(yīng)其他客戶。因此,所選測(cè)試數(shù)據(jù)單元754(具有訂購鍵值10)的警告輸出值取決于將數(shù)據(jù)處理規(guī)則應(yīng)用于第一測(cè)試數(shù)據(jù)單元(具有的訂購鍵值為1)和第二測(cè)試數(shù)據(jù)單元(具有的訂鍵值為2)的結(jié)果,其分別與測(cè)試數(shù)據(jù)集114的第一記錄和第二記錄相關(guān)聯(lián)。第一測(cè)試數(shù)據(jù)單元和第二測(cè)試數(shù)據(jù)單元可能還沒有被應(yīng)用數(shù)據(jù)處理規(guī)則。在該示例中,在沒有將數(shù)據(jù)處理規(guī)則應(yīng)用于第一數(shù)據(jù)單元和第二數(shù)據(jù)單元的情況下,客戶a的狀態(tài)存儲(chǔ)器122中存儲(chǔ)的近期警告數(shù)量字段的值是不準(zhǔn)確的(根據(jù)與批量測(cè)試模式和制作模式一致的預(yù)期表現(xiàn))。

參照?qǐng)D8和圖9,為了確保在將數(shù)據(jù)處理規(guī)則應(yīng)用于所選測(cè)試數(shù)據(jù)單元754之前,狀態(tài)存儲(chǔ)器122中存儲(chǔ)的近期警告數(shù)量字段的值是準(zhǔn)確的,系統(tǒng)100首先將數(shù)據(jù)處理規(guī)則應(yīng)用于第一測(cè)試數(shù)據(jù)單元850(具有的訂購鍵值為1)和第二測(cè)試數(shù)據(jù)單元952(具有的訂購鍵值為2)。

參照?qǐng)D8,將數(shù)據(jù)處理規(guī)則應(yīng)用于第一測(cè)試數(shù)據(jù)單元850導(dǎo)致警告輸出值為“否”(如圖4中的情況)。由于輸出了值為“否”的警告輸出值,所以近期警告的數(shù)量在狀態(tài)存儲(chǔ)器122中不增加并保持為0。參照?qǐng)D9,將數(shù)據(jù)處理規(guī)則應(yīng)用于第二測(cè)試數(shù)據(jù)單元952導(dǎo)致警告輸出值為“是”(如圖5中的情況)。由于數(shù)據(jù)處理規(guī)則的應(yīng)用導(dǎo)致警告輸出值為“是”,所以狀態(tài)存儲(chǔ)器122中的數(shù)量.近期警告值的值增加1,以便表示近期發(fā)出了警告。最后,回頭參照?qǐng)D7,將數(shù)據(jù)處理規(guī)則應(yīng)用于所選測(cè)試數(shù)據(jù)單元754導(dǎo)致被返回的默認(rèn)警告輸出值為“否”(如圖6中的情況),這是因?yàn)闋顟B(tài)存儲(chǔ)器122中的數(shù)量.近期警告值包括準(zhǔn)確的值。

8復(fù)雜事件處理

一些類型的數(shù)據(jù)處理系統(tǒng)可以特別受益于通過本文所述的技術(shù)實(shí)現(xiàn)的動(dòng)態(tài)測(cè)試環(huán)境,從而在單個(gè)單元測(cè)試模式、批量測(cè)試模式和制作模式下獲得一致的結(jié)果。一個(gè)這種類型的數(shù)據(jù)處理是復(fù)雜事件處理。例如,圖1的處理模塊108可以被配置為實(shí)現(xiàn)復(fù)雜事件處理例程。一般來說,復(fù)雜事件處理系統(tǒng)通過組合來自多個(gè)源的數(shù)據(jù)來處理事件以識(shí)別事件之間的關(guān)系中的模式。在一些示例中,復(fù)雜事件處理系統(tǒng)使用近期事件歷史來處理到來的事件,以識(shí)別有意義的事件,例如營銷機(jī)會(huì)或威脅,并盡可能快地響應(yīng)所識(shí)別的有意義的事件。

參照?qǐng)D10,示出了關(guān)于示例性復(fù)雜事件處理例程(即營銷活動(dòng))的狀態(tài)圖1060。營銷活動(dòng)旨在通過向客戶通知現(xiàn)金回饋計(jì)劃來增加信用卡使用幾率。在示例性營銷活動(dòng)中,基于當(dāng)前采購事件以及一個(gè)或多個(gè)在先的采購事件給客戶提供現(xiàn)金返還激勵(lì)。狀態(tài)圖1060包括由狀態(tài)轉(zhuǎn)換1064、1068、1072、1076、1078互連的多個(gè)狀態(tài)1062、1066、1070、1074、1080。當(dāng)代表性的客戶接收到采購事件時(shí),基于客戶的當(dāng)前狀態(tài)和所接收的采購事件的性質(zhì)來更新客戶的狀態(tài)。

特別地,在示例性營銷活動(dòng)的開始,如果客戶被認(rèn)為符合參加營銷活動(dòng)的資格,則客戶被置于“有資格”狀態(tài)1062(例如,通過將“有資格”狀態(tài)1062的指示寫入到圖1的狀態(tài)存儲(chǔ)器122中的狀態(tài)變量)。

當(dāng)為該客戶接收到第一采購事件1064時(shí),讀取客戶的當(dāng)前狀態(tài)(例如,從圖1的狀態(tài)存儲(chǔ)器122中的狀態(tài)變量中讀取)。由于客戶當(dāng)前處于“有資格”狀態(tài)1062并且他們已經(jīng)接收到第一采購事件1064,所以向客戶發(fā)送消息(未示出)以通知他們他們有資格參加營銷活動(dòng),其中包括關(guān)于旅游相關(guān)采購和與食品相關(guān)采購的現(xiàn)金回饋促銷。然后,客戶的狀態(tài)轉(zhuǎn)變?yōu)椤耙淹ㄖ睜顟B(tài)1066,這表示已經(jīng)向客戶通知了營銷活動(dòng)。

在處于“已通知”狀態(tài)1066時(shí),如果接收到旅游相關(guān)的采購事件1068,則向客戶發(fā)送消息以通知他們他們已經(jīng)收到旅游相關(guān)的促銷并且他們有資格參加食品相關(guān)的促銷。然后,客戶的狀態(tài)轉(zhuǎn)變?yōu)椤暗谝宦糜巍睜顟B(tài)1070,這表示客戶已收到旅游相關(guān)的促銷。

可代替地,在處于“已通知”狀態(tài)1066時(shí),如果接收到食品相關(guān)的采購事件1072,則向客戶發(fā)送消息以通知他們他們已經(jīng)收到食品相關(guān)的促銷,并且他們有資格參加旅游相關(guān)的促銷。然后,客戶的狀態(tài)轉(zhuǎn)變?yōu)椤暗谝皇称贰睜顟B(tài)1074,這表示客戶已收到食品相關(guān)的促銷。

在處于“第一旅游”1070時(shí),如果接收到食品相關(guān)的采購事件1076,則向客戶發(fā)送消息以通知他們他們已經(jīng)收到旅行相關(guān)的促銷和食品相關(guān)的促銷。然后,客戶的狀態(tài)轉(zhuǎn)變?yōu)椤巴瓿伞睜顟B(tài)1080,這表示客戶已完成促銷。

類似地,在處于“第一食品”狀態(tài)1074時(shí),如果接收到旅游相關(guān)的采購事件1078,則向客戶發(fā)送消息以通知他們他們已經(jīng)收到旅行相關(guān)的促銷和食品相關(guān)的促銷。然后,客戶的狀態(tài)轉(zhuǎn)變?yōu)椤巴瓿伞睜顟B(tài)1080,這表示客戶已完成促銷。

8.1復(fù)雜事件處理配置用戶界面

參照?qǐng)D11,示例性用戶界面1182允許用戶配置系統(tǒng)(例如,圖1的處理模塊108)以實(shí)現(xiàn)諸如由圖10的狀態(tài)圖1060指定的復(fù)雜事件處理例程。一般來說,用戶界面允許用戶將復(fù)雜事件處理例程的狀態(tài)圖表示為有序的測(cè)試集,每個(gè)測(cè)試具有在滿足該測(cè)試時(shí)出現(xiàn)的對(duì)應(yīng)輸出。

在一些示例中,用戶界面1182被實(shí)現(xiàn)為包括多列1186和多行1184的單元格的二維網(wǎng)格1183。單元格存在于每行1184和每列1185的交叉點(diǎn)處,并且被配置為接受用戶輸入(例如,參數(shù)值)。

列1186被分為兩種列類型:“觸發(fā)”列1188和“輸出”列1190。在圖11的用戶界面1182中,有三個(gè)觸發(fā)列1188(即,當(dāng)前狀態(tài)、旅游相關(guān)和分類)和兩個(gè)輸出列1190(即,新狀態(tài)和消息)。

合起來看,與觸發(fā)列1188相關(guān)聯(lián)的給定行中的單元格用于限定測(cè)試(例如,布爾(boolean)測(cè)試)。例如,在二維網(wǎng)格1183的第一行1185中,與“當(dāng)前狀態(tài)”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“有資格”,與“旅游相關(guān)”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“任意值”,并且與“分類”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“任意值”。鑒于第一行1185中的觸發(fā)列1188的值,如果客戶的當(dāng)前狀態(tài)(例如,從狀態(tài)變量存儲(chǔ)器中讀取的)是“有資格”,則系統(tǒng)接收到的對(duì)應(yīng)于客戶的新采購事件滿足第一行1185所限定的測(cè)試,而不管新采購事件是旅游相關(guān)的采購事件還是食品相關(guān)的采購事件。

與輸出列1188相關(guān)聯(lián)的給定行中的每個(gè)單元格限定了如果滿足給定行的測(cè)試就發(fā)生的輸出動(dòng)作。例如,在二維網(wǎng)格1183的第一行1185中,與“新狀態(tài)”輸出列相關(guān)聯(lián)的單元格包括值“已通知”,并且與“消息”輸出列相關(guān)聯(lián)的單元格包括資格通知消息1192。鑒于第一行1185中的輸出列1190的值,如果客戶的新采購事件滿足由第一行1185限定的測(cè)試,則客戶的當(dāng)前狀態(tài)(例如,寫到狀態(tài)變量存儲(chǔ)器)被更新為“已通知”,并且將資格通知消息1192發(fā)送給客戶。

在二維網(wǎng)格1183的第二行1187中,與“當(dāng)前狀態(tài)”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“已通知”,與“旅游相關(guān)”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“是旅游相關(guān)”,并且與“分類”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“任意值”。鑒于第二行1187中的觸發(fā)列1188的值,如果客戶的當(dāng)前狀態(tài)為“已通知”并且新的采購事件是旅游相關(guān)的采購事件,則系統(tǒng)接收到的客戶的新采購事件滿足由第二行1187限定的測(cè)試。

在二維網(wǎng)格1183的第二行1187中,與“新狀態(tài)”輸出列相關(guān)聯(lián)的單元格包括值“第一旅游”,并且與“消息”輸出列相關(guān)聯(lián)的單元格包括旅游采購?fù)ㄖ?194。鑒于第二行1187中的輸出列1190的值,如果客戶的新采購事件滿足第二行1185限定的測(cè)試,則將客戶的當(dāng)前狀態(tài)更新為“第一旅游”并且將旅游采購?fù)ㄖ?194發(fā)送給客戶。

在二維網(wǎng)格1183的第三行1189中,與“當(dāng)前狀態(tài)”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“已通知”,與“旅游相關(guān)”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“任意值”,并且與“分類”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“食品和藥物”。鑒于第三行1189中的觸發(fā)列1188的值,如果客戶的當(dāng)前狀態(tài)為“已通知”并且新的采購事件是食品相關(guān)的采購事件,則由系統(tǒng)接收的客戶的新采購事件滿足由第三行1189限定的測(cè)試。

在二維網(wǎng)格1183的第三行1189中,與“新狀態(tài)”輸出列相關(guān)聯(lián)的單元格包括值“第一食品”,并且與“消息”輸出列相關(guān)聯(lián)的單元格包括食品采購?fù)ㄖ?196。鑒于第三行1189中的輸出列1190的值,如果客戶的新采購事件滿足由第三行1189限定的測(cè)試,則將客戶的當(dāng)前狀態(tài)更新為“第一食品”,并且將食品采購?fù)ㄖ?196發(fā)送給客戶。

在二維網(wǎng)格1183的第四行1191中,與“當(dāng)前狀態(tài)”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“第一旅游”,與“旅游相關(guān)”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“任意值”,并且與“分類”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“食品和藥物”。鑒于第四行1191中的觸發(fā)列1188的值,如果客戶的當(dāng)前狀態(tài)是“第一旅游”并且新的采購事件是食品相關(guān)的采購事件,則系統(tǒng)接收到的客戶的新采購事件滿足由第四行1191限定的測(cè)試。

在二維網(wǎng)格1183的第四行1191中,與“新狀態(tài)”輸出列相關(guān)聯(lián)的單元格包括值“完成”,并且與“消息”輸出列相關(guān)聯(lián)的單元格包括活動(dòng)完成通知消息1198。鑒于第四行1198中的輸出列1190的值,如果客戶的新采購事件滿足由第四行1191限定的測(cè)試,則將客戶的當(dāng)前狀態(tài)更新為“完成”,并且向客戶發(fā)送活動(dòng)完成通知消息1198。

在二維網(wǎng)格1183的第五行1193中,與“當(dāng)前狀態(tài)”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“第一食品”,與“旅游相關(guān)”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“是旅游相關(guān)”,并且與“分類”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“任意值”。鑒于第五行1193中的觸發(fā)列1188的值,如果客戶的當(dāng)前狀態(tài)是“第一食品”并且新的采購事件是旅游相關(guān)的采購事件,則系統(tǒng)接收到的客戶的新采購事件滿足由第五行1193限定的測(cè)試。

在二維網(wǎng)格1183的第五行1193中,與“新狀態(tài)”輸出列相關(guān)聯(lián)的單元格包括值“完成”,并且與“消息”輸出列相關(guān)聯(lián)的單元格包括活動(dòng)完成通知消息1198。鑒于第五行1193中的輸出列1190的值,如果客戶的新采購事件滿足由第五行1193限定的測(cè)試,則將客戶的當(dāng)前狀態(tài)更新為“完成”,并且將活動(dòng)完成通知消息1198發(fā)送給客戶。

最后,在二維網(wǎng)格1183的第六行1195中,與“當(dāng)前狀態(tài)”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“任意值”,與“旅游相關(guān)”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“任意值”,并且與“分類”觸發(fā)列相關(guān)聯(lián)的單元格包括輸入值“任意值”。鑒于第六行1195中的觸發(fā)列1188的值,系統(tǒng)接收到的客戶的任意新采購事件滿足由第六行1195限定的測(cè)試。

在二維網(wǎng)格1183的第六行1195中,與“新狀態(tài)”輸出列相關(guān)聯(lián)的單元格包括值“當(dāng)前狀態(tài)”,并且與“消息”輸出列相關(guān)聯(lián)的單元格包括空消息1199。鑒于第六行1195中的輸出列1190的值,如果客戶的新采購事件滿足由第六行1195限定的測(cè)試,則將客戶的當(dāng)前狀態(tài)保持在其“當(dāng)前狀態(tài)”,并且不向客戶發(fā)送通知消息。

當(dāng)接收到新的采購事件時(shí),依次將由二維網(wǎng)格1183的行1184限定的測(cè)試應(yīng)用于新的采購事件,直到新的采購事件滿足測(cè)試為止。也就是說,首先將第一行1185限定的測(cè)試應(yīng)用于新的采購事件。如果新的采購事件不滿足由第一行1185限定的測(cè)試,則將第二行1187限定的測(cè)試應(yīng)用于新的采購事件。如果新的采購事件不滿足由第二行1187限定的測(cè)試,則將第三行1189限定的測(cè)試應(yīng)用于新的采購事件,依此類推。最終,如果新的采購事件不滿足其他行限定的任何測(cè)試,則將默認(rèn)的第六行1195(最后一行)應(yīng)用于新的采購事件,并且新的采購事件滿足默認(rèn)的第六行1195(最后一行)。通過依次應(yīng)用由二維網(wǎng)格1183的行1184限定的測(cè)試,實(shí)現(xiàn)了圖10的狀態(tài)圖1060的功能。

9可選方案

在一些示例中,可以通過打開用于給定讀取操作的數(shù)據(jù)源的讀取連接,并且然后緩存這些連接(例如,保存數(shù)據(jù)庫句柄并保持連接有效)以用于后續(xù)的讀取操作,從而改善用戶界面的性能。這樣做可以減少連接設(shè)置/刪除時(shí)間,并在給定時(shí)間段內(nèi)防止耗盡數(shù)據(jù)源的有限數(shù)量的連接。

在一些示例中,從數(shù)據(jù)源(或整個(gè)測(cè)試數(shù)據(jù)單元)讀取的記錄可以存儲(chǔ)在緩存中。

在一些示例中,當(dāng)請(qǐng)求記錄(或測(cè)試數(shù)據(jù)單元)的值時(shí),首先查詢緩存。如果緩存中沒有出現(xiàn)記錄(或測(cè)試數(shù)據(jù)單元),則查詢緩存的連接以檢索所請(qǐng)求的記錄。如果沒有緩存用于檢索所請(qǐng)求的記錄的連接,則打開新的連接以檢索所請(qǐng)求的記錄。

在一些示例中,確定在何處檢索記錄或測(cè)試數(shù)據(jù)單元是基于自上次檢索記錄或測(cè)試數(shù)據(jù)單元以后的時(shí)間。如果是最近檢索的,則緩存值被確定為有效,并且查詢緩存。如果自上次檢索記錄或測(cè)試數(shù)據(jù)單元以來已經(jīng)過了較長的時(shí)間,則緩存值被視為無效,并且使用緩存連接。如果自上次檢索記錄或測(cè)試數(shù)據(jù)單元以來已經(jīng)過了更長的時(shí)間,則緩存值和緩存連接均被視為無效,并且打開新的連接來檢索記錄或測(cè)試數(shù)據(jù)單元。

雖然數(shù)據(jù)庫是可以從上述方法中受益的一種常見類型的數(shù)據(jù)源,但是應(yīng)當(dāng)注意的是,許多其他類型的數(shù)據(jù)源(例如檔案文件、次級(jí)數(shù)據(jù)集等)也可以從所述方法中受益。

在一些示例中,緩存包括準(zhǔn)確的狀態(tài)信息的測(cè)試數(shù)據(jù)單元的值以供以后使用。在這種情況下,在單個(gè)記錄測(cè)試模式下,不是必須在所選測(cè)試數(shù)據(jù)單元之前以單個(gè)記錄測(cè)試模式將數(shù)據(jù)處理規(guī)則應(yīng)用于所有測(cè)試數(shù)據(jù)單元,而是只有在所選測(cè)試數(shù)據(jù)單元與最近的在先緩存的測(cè)試數(shù)據(jù)單元之間的那些記錄需要應(yīng)用數(shù)據(jù)處理規(guī)則。

在一些示例中,用戶界面允許開發(fā)者指定何時(shí)緩存數(shù)據(jù)庫連接。

在一些示例中,狀態(tài)變量值僅存儲(chǔ)在狀態(tài)變量存儲(chǔ)器中持續(xù)一預(yù)定的時(shí)間量然后被移除。以這種方式,狀態(tài)變量本質(zhì)上具有對(duì)其適用的滑動(dòng)窗口,所述滑動(dòng)窗口允許諸如窗口聚合的操作。

在一些示例中,當(dāng)輸入列要求參數(shù)訪問時(shí),可以緩存該參數(shù)的值。例如,在制作環(huán)境中,如果需要在啟動(dòng)了基于規(guī)則的應(yīng)用的環(huán)境(即,制作環(huán)境)的上下文中解決,可以從命令行輸入或參數(shù)集文件中讀取參數(shù)??蛇x的,對(duì)于單一單元測(cè)試模式(或批量測(cè)試模式),值可以被選擇為(例如,基于用戶可設(shè)置的參數(shù))使用當(dāng)前環(huán)境的已評(píng)估參數(shù)或替代地被選擇為假設(shè)的測(cè)試值,以作為制作環(huán)境將提供的近似值。

10實(shí)現(xiàn)方式

上述規(guī)則指定和應(yīng)用方法可以例如使用執(zhí)行合適的軟件指令的可編程計(jì)算系統(tǒng)來實(shí)現(xiàn),或者可以在諸如現(xiàn)場(chǎng)可編程門陣列(fpga)或一些混合形式的合適的硬件中實(shí)現(xiàn)。例如,在編程方法中,軟件可以包括在一個(gè)或多個(gè)編程或可編程計(jì)算系統(tǒng)(其可以是諸如分布式、客戶端/服務(wù)器或網(wǎng)格的各種架構(gòu))上執(zhí)行的一個(gè)或多個(gè)計(jì)算機(jī)程序中的過程,每個(gè)計(jì)算系統(tǒng)包括至少一個(gè)處理器,至少一個(gè)數(shù)據(jù)存儲(chǔ)系統(tǒng)(包括易失性和/或非易失性存儲(chǔ)器和/或存儲(chǔ)元件),至少一個(gè)用戶界面(用于使用至少一個(gè)輸入設(shè)備或端口接收輸入,并且用于使用至少一個(gè)輸出設(shè)備或端口提供輸出)。軟件可以包括例如提供與數(shù)據(jù)流圖的設(shè)計(jì)、配置和執(zhí)行相關(guān)的服務(wù)的更大程序的一個(gè)或多個(gè)模塊。程序的模塊(例如,數(shù)據(jù)流圖的元素)可以被實(shí)現(xiàn)為符合存儲(chǔ)在數(shù)據(jù)倉庫中的數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)或其他有組織的數(shù)據(jù)。

軟件可以使用持續(xù)一段時(shí)間(例如,動(dòng)態(tài)存儲(chǔ)器裝置(例如動(dòng)態(tài)ram)的刷新周期之間的時(shí)間)的介質(zhì)的物理特性(例如,表面凹坑和平臺(tái)、磁疇或電荷等)以非暫時(shí)性形式存儲(chǔ),例如被實(shí)施在易失性或非易失性存儲(chǔ)介質(zhì)或任何其它非暫時(shí)性介質(zhì)中。在準(zhǔn)備加載指令時(shí),軟件可以提供在有形、非暫時(shí)性介質(zhì)上,例如cd-rom或其他計(jì)算機(jī)可讀介質(zhì)(例如,可由通用或?qū)S糜?jì)算系統(tǒng)或設(shè)備讀取),或者可以通過網(wǎng)絡(luò)的通信介質(zhì)被遞送(例如,被編碼成傳播信號(hào))到其被執(zhí)行的計(jì)算系統(tǒng)的有形、非暫時(shí)性介質(zhì)??梢栽趯S糜?jì)算機(jī)上或使用諸如協(xié)處理器或現(xiàn)場(chǎng)可編程門陣列(fpga)或特定的專用集成電路(asic)的專用硬件來執(zhí)行處理中的一些或全部。處理可以以分布式方式實(shí)現(xiàn),其中由軟件指定的計(jì)算的不同部分由不同的計(jì)算元件執(zhí)行。每個(gè)這樣的計(jì)算機(jī)程序優(yōu)選地存儲(chǔ)在或下載到可由通用或?qū)S每删幊逃?jì)算機(jī)訪問的存儲(chǔ)設(shè)備的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(例如,固態(tài)存儲(chǔ)器或介質(zhì),或磁介質(zhì)或光介質(zhì))上,用于當(dāng)計(jì)算機(jī)讀取存儲(chǔ)設(shè)備介質(zhì)以執(zhí)行本文所述的處理時(shí),配置和操作計(jì)算機(jī)。本發(fā)明的系統(tǒng)還可以被認(rèn)為可實(shí)現(xiàn)為配置有計(jì)算機(jī)程序的有形的、非暫時(shí)性介質(zhì),其中如此配置的介質(zhì)使得計(jì)算機(jī)以特定和預(yù)定義的方式操作以執(zhí)行本文描述的一個(gè)或多個(gè)處理步驟。

已經(jīng)描述了本發(fā)明的多個(gè)實(shí)施例。然而,應(yīng)當(dāng)理解,前述描述旨在說明而不是限制本發(fā)明的范圍,本發(fā)明的范圍由所附權(quán)利要求的范圍限定。因此,其他實(shí)施例也在所附權(quán)利要求的范圍內(nèi)。例如,在不脫離本發(fā)明的范圍的情況下可以進(jìn)行各種修改。另外,上述的一些步驟可以是與順序無關(guān)的,并且因此可以以與所描述的順序不同的順序來執(zhí)行。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1