專利名稱:跨執行環境保持數據完整性的制作方法
技術領域:
本發明申請涉及在計算機實現的進程中驗證數據,具體來講,涉及在非均質執行環境上傳遞數據的計算機實現的進程中驗證數據。
背景技術:
當前的計算解決方案通常包括一起工作以提供期望功能的多個模塊。這些模塊可以都位于單個計算設備上,不過,這些模塊在跨多個計算設備分布已成為常態。另外,分布式計算解決方案可以由不同類型和不同架構的設備組成。盡管計算解決方案本質上是非均質的,但不同的模塊可能經常被要求共享數據。由于數據在不同的模塊和環境中移動,必須驗證數據處于正確或有效的表達。為此,可以定義管理數據的驗證規則。為了執行驗證規則,可以將執行環境特有的驗證方法包含在每個模塊中。每當管理數據的規則發生變化時, 也必須改變與每個模塊相關的驗證方法。如果所需的規則改變沒有傳達到所有的驗證方法,會產生顯著的維護開銷,會導致潛在的錯誤。
發明內容
在下文的說明中陳述了本發明申請的其他特征和優點,部分特征和優點在說明中會變得明顯,或者通過本文公開的原則的實現而可以為人所了解。通過所附權利要求中特別指出的儀器和組合,可以實現和得到本發明申請的特征和優點。通過下文的說明和所附的權利要求,本發明申請的這些和其他特征會變得清楚,或者,通過本文所陳述的原則的實現,可以了解本發明申請的這些和其他特征。本文公開的是用于跨非均質執行環境保持數據完整性的系統、方法以及非臨時性計算機可讀存儲媒介。當前的計算解決方案通常包括跨多個計算機實現的進程共享數據。 由于數據在多個計算機實現的進程之間以及可能在不同的存儲位置之間移動,必須確保數據處于正確或有效的表達。為了解決這個與添加和保持多個驗證校驗的局限,可以將數據和驗證規則封裝在可以在多個計算機實現的進程之間傳遞的數據對象中。數據對象可以由數據和一個或多個驗證對象組成。驗證對象可以指定單個“驗證” 函數,該驗證函數執行完成一個或多個與數據相關的驗證規則的動作。計算機實現的進程采用數據對象而不是裸數據執行來自進程外部的數據請求以及將數據傳送出進程。為了有利于創建數據對象,在執行環境中可以存在一個或多個數據提供者。數據提供者可以是數據進出正在執行的計算機實現的進程的通道。數據提供者可以指定兩個函數“retrieveDataObject”函數和“storeDataObject”函數。基于檢索數據的請求,數據提供者獲取被請求的數據以及一個或多個驗證對象。可以基于保持在數據提供者中的驗證規則創建驗證對象。基于存儲數據對象的請求,數據提供者可以更新數據存儲位置和/或驗證規則。在執行的任何點上,可以請求驗證包含在數據對象中的數據。可以直接向數據對象發起驗證請求。一旦接收到驗證請求,數據對象可以指令每個驗證對象測試數據的有效性。數據對象可以收集驗證校驗的結果,并將這些結果返回至發起請求的計算機實現的進程。為了解決多個執行環境的非均質本質,數據對象可以包括輸出功能,其中,數據對象可以創建適于目標計算機實現的進程的自身表達。一旦接收到輸出請求,數據對象指令每個驗證對象創建自身的適當驗證對象表達。然后,封裝新的驗證對象和數據,以創建用于目標計算機實現的進程的可輸出數據對象。當輸出的數據對象到達目標計算機實現的進程,該進程可以存取該數據并基于為源進程定義的同一驗證規則對該數據進行驗證。
參照附圖中所示出的特定實施例,將對上文簡單描述的原則進行更具體的說明, 以對獲得本發明公開的上述優點和特征以及其他優點和特征的方式進行說明。應當理解的是,這些附圖只是描述了本發明公開的示例性實施例,而不是對本發明公開范圍的限制。通過這些附圖,對本發明的原則進行了更詳盡的說明和解釋,其中圖I示出了示例性的執行環境;
圖2示出了示例性的數據對象;
圖3示出了示例性的數據檢索方法;
圖4示出了示例性的數據存儲方法;
圖5示出了示例性的數據驗證方法;
圖6示出了示例性的數據輸出方法;
圖7示出了用于跨執行環境保持數據完整性的示例性方法實施例;以及
圖8示出了示例性的系統實施例。
具體實施方式
下文將對本發明公開中的各種實施例進行詳細的討論。在討論具體的實施方式
時,應當理解的是,這些實施方式僅僅是出于說明目的而給出的。相關領域的技術人員可以意識到,在不脫離本發明公開的精神和范圍的情況下,可以采用其他的部件和配置。本發明公開解決了本領域中對在不同計算環境之間移動數據時校驗數據完整性的方法的需要。在圖I中示出了示例性的執行環境100,其中,計算機實現的多個進程104、 106、108和110以及存儲設備112均使用數據102。在圖I中,計算機實現的每個進程104、 106,108和110可以讀取和/或編輯數據102、發送數據102至計算機實現的另一個進程或接收來自計算機實現的另一個進程的數據102、和/或向存儲設備112請求數據102或將數據102保存到存儲設備112。在某些配置中,可以在單個計算設備中執行計算機實現的進程104、106、108和 110。不過,還可以在通過網絡進行通信的一個或多個計算設備中執行計算機實現的進程。 另外,所述一個或多個計算設備可以是不同類型的,例如服務器、臺式計算機、移動式計算機、諸如移動電話、智能電話、平板電腦之類的手持通信設備、和/或其他類型的計算設備。 另外,存儲設備可以位于與計算機實現的進程中的一個或多個進程相同的同一臺計算設備上,或者,存儲設備可以位于不同的計算設備上,例如服務器或外部硬盤驅動器上。執行環境100可以被配置為用于有助于電子設備之間通信的局域網或任何其他網絡配置上。例如,執行環境100中的每個部件可以在網絡上以局部方式或分布方式實現。 本領域技術人員應當清楚的是,執行環境100可以包括計算機實現的任意數量的進程、存儲設備和/或數據段,而且,不是計算機實現的所有進程和/或存儲設備都可以利用特定的數據項。圖I中示出的執行環境100可以是當前計算解決方案中的通常配置。也就是說, 在一個或多個計算設備上執行的計算機實現的一個或多個進程利用同一數據是常見的。例如,計算機實現的一個進程可以被用來從用戶采集數據,而計算機實現的第二個進程可以在一個任務中使用這個數據。另外,計算機實現的第一個進程可以采集數據,并將數據存儲到數據庫或文件中。計算機實現的第二個進程在使用數據之前可以從數據庫或文件中取回數據。在采集、存儲、取回、使用過程的每個階段,數據可能由于不當表達而結束。不當表達可能由多個因素引起,例如,用戶輸入的數據不符合要求,或數據已損毀。當前用來確保數據正確表達或有效表達的解決方案是定義管理數據的驗證規則。 基于這些驗證規則,可以實現驗證校驗,并將驗證校驗加入到負責采集數據的計算機實現的進程中。不幸的是,除非在系統中的多個點上加入驗證校驗,不然,系統仍會嘗試采用不當形式的數據。從而,還應當將驗證校驗加入到計算機實現的以某種方式利用這些數據的任何進程中。基于這個解決方案,需要將驗證校驗加入到計算機實現的進程104、106、108 和110中,而且,根據存儲設備的類型,還可以將驗證校驗加入到存儲設備112中。采用這種解決方案,每當管理數據的驗證規則發生變化時,必須對計算機實現的包括驗證校驗的每個進程進行更新。更新過程會消耗時間,并容易產生錯誤。另外,在必須保持多個驗證校驗實現的非均質執行環境中,維護開銷(maintenance overhead)會變得更加復雜。為了說明基于上述驗證解決方案的執行環境100的可行應用,假定數據102是從一個執行環境轉移至另一個執行環境的客戶記錄。客戶記錄可以包含用于客戶電子郵件地址的字段。為了確保所提供的電子郵件地址是正確的,可以定義一種驗證規則,要求數據包含一個符號。可以從服務器執行的web應用程序檢索客戶數據。可以用在服務器執行環境中運行的代碼實現用于有效電子郵件字段的校驗。服務器可以將作為web應用程序一部分的HTML和JavaScript代碼發送到用戶的瀏覽器,這些代碼實現了顯示給用戶的網頁。 對于能夠查看和操作客戶數據的用戶來講,代碼被發送到網頁瀏覽器的執行環境。在瀏覽器執行環境中加入第二驗證校驗,以增強電子郵件字段規則。通過將驗證規則和數據封裝在一個數據對象中,可以改善上文所述的驗證解決方案。通過這種封裝,可以將所有的驗證校驗包含在一個位置中。從而,只要驗證規則發生改變,就可以很容易地識別和更新所有的校驗。這可以減少所需的維護量,并降低與更新一個或多個驗證校驗失敗相關的錯誤風險。圖2示出了示例性的數據對象200。數據對象200可以由數據202和一個或多個驗證對象204組成。包含在數據對象200中的數據類型可以根據執行環境的配置而發生變化。在某些情況下,數據可以是原始數據,正在執行的采用這些數據的計算機實現的進程可以負責對數據進行分析并提取計算機實現的進程所需的信息。在另外一些情況下,數據可以采用特定的格式。在某些情況下,包含在數據對象中的數據大小可以很大。在另外一些情況下,數據大小可以很小。例如,數據對象中的數據可以是所有的客戶記錄、某一特定時期的客戶記錄、與單個客戶相關的記錄、客戶記錄中的單個字段、等等。驗證對象可以指定單個“驗證”函數,該“驗證”函數執行完成一個或多個驗證規則的動作。該“驗證”函數可以被配置,使得驗證對象只驗證數據的單個方面,例如客戶記錄中的電子郵件字段。可替換地,“驗證”函數可以被配置來驗證數據的多個方面或整個數據。例如,驗證對象可以被配置來確保數據中的字段的總量不超過某一預定值。采用任何可編程語言實現驗證對象,例如,Java、C++等。例如,下列代碼示出了用于實現驗證對象的可行接口。public interface ValidationObject{public void validate(DataObject dataObject);}在這個例子中,為了實現驗證對象,用戶可以簡單地實現采用單個數據對象作為參數的“驗證”函數。實現驗證對象的其他方法也是可行的。例如,其他參數也是可行的, 和/或代替傳遞數據對象,可以將實際數據作為參數傳遞。另外,用戶不局限于采用單個編程語言來實現與單個數據集相關的所有驗證對象,可以采用多個編程語言來實現這些驗證對象。與驗證對象一樣,可以采用任何一種編程語言來實現數據對象,例如Java、C++
等。例如,下列代碼示出了實現數據對象的可行的類的基本因素。
public class Dataobject {
private List data = new List(); private List validators = new ListQ;
public addData(Data data) { data.add(data);
public List getData() {
權利要求
1.一種計算機實現的方法,其包括關聯至少一個驗證對象和數據集;從至少一個正在執行的進程接收對數據集的請求;將所述數據集和所述至少一個驗證對象封裝在數據對象中;以及將所述數據對象發送到所述至少一個正在執行的進程。
2.根據權利要求I所述的計算機實現的方法,其還包括關聯至少一個驗證對象、數據集和至少一個管理數據集應用的驗證規則。
3.根據權利要求I或權利要求2所述的計算機實現的方法,其中,所述數據對象能夠提供所述數據對象對至少一個正在執行的進程的表達。
4.根據權利要求I至3中的任何一項所述的計算機實現的方法,其中,所述驗證對象包括用于執行所述至少一個驗證規則的驗證函數。
5.根據權利要求I所述的計算機實現的方法,其還包括產生所述數據對象的表達;其中,接收包括從至少兩個正在執行的進程接收對數據集的請求;其中,發送包括向所述至少兩個正在執行的進程發送所述數據對象的表達。
6.根據權利要求5所述的計算機實現的方法,其中,所述數據對象的表達被提供給用至少兩種編程語言實現的至少兩個正在執行的進程。
7.根據權利要求I至6中的任何一項權利要求所述的計算機實現的方法,其還包括 接收存儲所述數據對象的請求;以及存儲所述數據對象。
8.一種計算機實現的方法,其包括從至少一個正在執行的進程發送對數據集的請求;在所述至少一個正在執行的進程接收數據對象的表達,所述數據對象包括數據集和至少一個驗證對象,其中,所述驗證對象包括用于執行管理所述數據集應用的至少一種驗證規則的驗證函數;以及應用所述至少一種驗證規則來執行所述至少一個正在執行的進程。
9.一種計算機可讀媒介,其包括存儲在所述計算機可讀媒介上的用來使計算機執行權利要求I至8中的任何一項所述的計算機實現的方法的計算機可讀代碼。
10.一種包含處理器的設備,所述處理器被配置來執行權利要求I至8中的任何一項所述的計算機實現的方法。
全文摘要
當前的計算解決方案通常包括多個計算機實現的進程之間的數據共享。為了確保在整個執行環境上的數據完整性,正在執行的進程可以向數據提供者請求數據。響應于這種請求,數據提供者可以將數據和一個或多個驗證對象打包在一個數據對象中。可以在正在執行的進程之間傳遞數據對象,而且,在執行中的任何點上,通過向數據對象發起請求,正在執行的進程可以驗證數據的完整性。為了有助于在非均質執行環境上傳遞數據對象,數據對象可以創建它自身為目標系統獨有的表達。數據對象的優勢在于,所有必須的驗證校驗是集中的,從而降低了維護成本和錯誤概率。
文檔編號G06F17/00GK102612683SQ201080046792
公開日2012年7月25日 申請日期2010年10月8日 優先權日2009年10月16日
發明者林賽·伊恩·史密斯, 沙恩·安德魯·莫薩, 約翰·馬修·馬丁 申請人:核心科技有限公司