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

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

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

相關申請的交叉引用

本申請要求于2014年10月20日提交的序列號為62/065,909的美國申請的優(yōu)先權。

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



背景技術:

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

附圖說明

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

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

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

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

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

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

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

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

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

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

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

具體實施方式

1綜述

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

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

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

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

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

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

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

1.2用戶界面

用戶界面112(下文參照圖2進行更加詳細的描述)使開發(fā)者110能夠指定用于處理測試數(shù)據(jù)單元的一組數(shù)據(jù)處理規(guī)則。用戶界面112的輸出是一個或多個數(shù)據(jù)處理規(guī)則的規(guī)范。將由用戶界面112生成的一個或多個數(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)存儲器122。在一些示例中,所述參數(shù)集120和所述狀態(tài)存儲器122充當在應用數(shù)據(jù)處理規(guī)則期間可以被動態(tài)訪問的附加輔助數(shù)據(jù)源。

來自用戶界面112的一個或多個數(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ù)單元。在一些示例中,如下文更詳細地描述的那樣,當處理來自數(shù)據(jù)源102的數(shù)據(jù)時,狀態(tài)存儲器122保持從一個測試數(shù)據(jù)單元到下一個測試數(shù)據(jù)單元的狀態(tài)。將處理來自數(shù)據(jù)源102的數(shù)據(jù)的結果提供回ui模塊106,然后返回到用戶界面112,在用戶界面112上將結果呈現(xiàn)給開發(fā)者110。

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

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

2示例性用戶界面

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

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

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

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

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

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

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

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

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

風險等級等于“正?!?,則

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

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

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

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

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

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

風險等級等于“高”,則

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

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

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

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

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

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

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

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

4測試結果的呈現(xiàn)

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

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

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

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

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

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

6批量測試

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

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

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

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

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

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

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

7單個單元測試

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

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

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

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

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

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

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

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

8復雜事件處理

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

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

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

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

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

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

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

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

8.1復雜事件處理配置用戶界面

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9可選方案

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

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

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

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

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

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

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

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

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

10實現(xiàn)方式

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

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

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

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