生成預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)的制作方法
【專利摘要】一種用于在應(yīng)用在網(wǎng)絡(luò)連接的數(shù)據(jù)處理系統(tǒng)中離線操作時(shí)為該應(yīng)用生成預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)的方法,該應(yīng)用包括具有執(zhí)行路徑的源代碼,該方法包括以下步驟:確定在應(yīng)用的源代碼內(nèi)的退出點(diǎn);根據(jù)退出點(diǎn)確定包括至少一個(gè)條件語(yǔ)句的執(zhí)行路徑;標(biāo)識(shí)至少一個(gè)被標(biāo)識(shí)條件語(yǔ)句的一個(gè)或者多個(gè)分支,并且為每個(gè)被標(biāo)識(shí)分支確定預(yù)期響應(yīng);為每個(gè)確定的預(yù)期響應(yīng)根據(jù)響應(yīng)生成數(shù)據(jù)結(jié)構(gòu);從退出點(diǎn)沿著源代碼的執(zhí)行路徑繼續(xù),并且用指向生成的數(shù)據(jù)結(jié)構(gòu)的指針替換源代碼中的對(duì)于資源的每個(gè)請(qǐng)求;以及從確定的退出點(diǎn)用指向生成的數(shù)據(jù)結(jié)構(gòu)的指針執(zhí)行源代碼。
【專利說(shuō)明】生成預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及聯(lián)網(wǎng)數(shù)據(jù)處理系統(tǒng)領(lǐng)域。具體而言,本發(fā)明涉及一種用于在應(yīng)用離線操作時(shí)生成用于應(yīng)用的預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)的方法和裝置。
【背景技術(shù)】
[0002]因特網(wǎng)用戶訪問(wèn)因特網(wǎng)服務(wù)提供者提供的服務(wù)用于執(zhí)行交互、比如個(gè)人銀行、在線購(gòu)物、信息取回或者用于從服務(wù)提供者的在線環(huán)境內(nèi)起動(dòng)其它服務(wù)。
[0003]為了訪問(wèn)在線服務(wù),用戶操作客戶端設(shè)備用于向服務(wù)器發(fā)送請(qǐng)求以便請(qǐng)求訪問(wèn)由一個(gè)或者多個(gè)應(yīng)用提供的資源。
[0004]服務(wù)器接收對(duì)于資源的請(qǐng)求并且向請(qǐng)求客戶端設(shè)備返回請(qǐng)求的資源。通常部署超文本傳送協(xié)議(HTTP),該協(xié)議定義如下手段,在該手段中,客戶端設(shè)備跨因特網(wǎng)與一個(gè)或者多個(gè)服務(wù)器交互。HTTP是‘請(qǐng)求-答復(fù)’協(xié)議,在該協(xié)議中,客戶端向服務(wù)器發(fā)送包含所需資源的URL的請(qǐng)求消息。服務(wù)器查找路徑名并且如果它存在則在答復(fù)中向客戶端發(fā)送回資源。HTTP允許內(nèi)容協(xié)商和認(rèn)證。
[0005]只要客戶端和服務(wù)器可以相互連續(xù)通信、即發(fā)送對(duì)于資源的請(qǐng)求和從服務(wù)器接收回請(qǐng)求的資源,以上類型的交互就良好工作。這一請(qǐng)求答復(fù)交互依賴于跨網(wǎng)絡(luò)的開(kāi)放和連續(xù)通信路徑。
[0006]在網(wǎng)絡(luò)(無(wú)論出于什么原因)暫時(shí)不可用時(shí)出現(xiàn)問(wèn)題。網(wǎng)絡(luò)不可用的結(jié)果是事務(wù)不能完成。經(jīng)常在這一點(diǎn),用來(lái)請(qǐng)求一個(gè)或者多個(gè)資源的應(yīng)用、通常為web瀏覽器移入稱為‘離線工作’的操作狀態(tài)。當(dāng)在‘離線’模式中工作時(shí),在網(wǎng)頁(yè)中嵌入的腳本和/或HTML不能執(zhí)行,因?yàn)檐浖枰蚍?wù)器進(jìn)行調(diào)用以便加載進(jìn)一步數(shù)據(jù)。
[0007]—種對(duì)于以上問(wèn)題的典型解決方案是高速緩存請(qǐng)求的資源、即網(wǎng)頁(yè)。然而這一方式的缺點(diǎn)是資源的高速緩存的副本可能包括‘過(guò)時(shí)’數(shù)據(jù)、因此產(chǎn)生不正確結(jié)果,或者可能由于安全或者私密原因而無(wú)高速緩存的版本。
【發(fā)明內(nèi)容】
[0008]從第一方面來(lái)看,本發(fā)明提供一種用于在應(yīng)用在網(wǎng)絡(luò)連接的數(shù)據(jù)處理系統(tǒng)中離線操作時(shí)為所述應(yīng)用生成預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)的方法,該應(yīng)用包括具有執(zhí)行路徑的源代碼,該方法包括以下步驟:確定在應(yīng)用的源代碼內(nèi)的退出點(diǎn);根據(jù)退出點(diǎn)確定包括至少一個(gè)條件語(yǔ)句的執(zhí)行路徑;標(biāo)識(shí)至少一個(gè)被標(biāo)識(shí)條件語(yǔ)句的一個(gè)或者多個(gè)分支,并且為每個(gè)被標(biāo)識(shí)分支確定預(yù)期響應(yīng);為每個(gè)確定的預(yù)期響應(yīng)根據(jù)響應(yīng)生成數(shù)據(jù)結(jié)構(gòu);從退出點(diǎn)沿著源代碼的執(zhí)行路徑繼續(xù)并且用指向生成的數(shù)據(jù)結(jié)構(gòu)的指針替換源代碼中的對(duì)于資源的每個(gè)請(qǐng)求;以及從確定的退出點(diǎn)用指向生成的數(shù)據(jù)結(jié)構(gòu)的指針執(zhí)行源代碼。
[0009]優(yōu)選地,本發(fā)明提供一種方法,其中確定預(yù)期響應(yīng)包括用一個(gè)或者多個(gè)邏輯規(guī)則測(cè)試條件語(yǔ)句的每個(gè)分支以便確定預(yù)期響應(yīng)的步驟。
[0010]優(yōu)選地,本發(fā)明提供一種方法,其中每個(gè)邏輯規(guī)則包括用于映射到在應(yīng)用的源代碼中的變量的數(shù)據(jù)集,并且數(shù)據(jù)集包括響應(yīng)于變量的輸入而將在網(wǎng)絡(luò)應(yīng)用的視窗中顯示的數(shù)據(jù)
[0011]優(yōu)選地,本發(fā)明提供一種方法,其中退出點(diǎn)是源代碼由于確定失去網(wǎng)絡(luò)活動(dòng)而不能執(zhí)行的代碼行。
[0012]優(yōu)選地,本發(fā)明提供一種方法,其中替換對(duì)于資源的請(qǐng)求包括修改在源代碼中標(biāo)識(shí)的對(duì)在服務(wù)器上的資源的引用以引用生成的數(shù)據(jù)結(jié)構(gòu)。
[0013]優(yōu)選地,本發(fā)明提供一種方法,該方法還包括執(zhí)行具有修改的引用的源代碼。
[0014]優(yōu)選地,本發(fā)明提供一種方法,該方法還包括確定客戶端和服務(wù)器是否被網(wǎng)絡(luò)連接,以及響應(yīng)于肯定確定而向服務(wù)器發(fā)送數(shù)據(jù)分組,并且服務(wù)器從源代碼的、客戶端交接處理的位置繼續(xù)執(zhí)行應(yīng)用的源代碼。
[0015]優(yōu)選地,本發(fā)明提供一種方法,該方法還包括監(jiān)視客戶端的對(duì)來(lái)自服務(wù)器的資源的請(qǐng)求,并且根據(jù)請(qǐng)求確定用于在歷史數(shù)據(jù)存儲(chǔ)庫(kù)中存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)。
[0016]優(yōu)選地,本發(fā)明提供一種方法,該方法從存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)去除任何個(gè)人數(shù)據(jù)。
[0017]從另一方面來(lái)看,本發(fā)明提供一種用于在應(yīng)用在網(wǎng)絡(luò)連接的數(shù)據(jù)處理系統(tǒng)中離線操作時(shí)為所述應(yīng)用生成預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)的裝置,該應(yīng)用包括具有執(zhí)行路徑的源代碼,該方法包括以下步驟:用于確定在應(yīng)用的源代碼內(nèi)的退出點(diǎn)的攔截器部件;用于根據(jù)退出點(diǎn)確定包括至少一個(gè)條件語(yǔ)句的執(zhí)行路徑的腳本引擎;用于標(biāo)識(shí)至少一個(gè)被標(biāo)識(shí)條件語(yǔ)句的一個(gè)或者多個(gè)分支并且為每個(gè)被標(biāo)識(shí)分支確定預(yù)期響應(yīng)的腳本引擎;用于為每個(gè)確定的預(yù)期響應(yīng)根據(jù)響應(yīng)生成數(shù)據(jù)結(jié)構(gòu)的腳本引擎;用于從退出點(diǎn)沿著源代碼的執(zhí)行路徑繼續(xù)并且用指向生成的數(shù)據(jù)結(jié)構(gòu)的指針替換源代碼中的對(duì)于資源的每個(gè)請(qǐng)求的腳本引擎;以及用于從確定的退出點(diǎn)用指向生成的數(shù)據(jù)結(jié)構(gòu)的指針執(zhí)行源代碼的構(gòu)建部件。
[0018]優(yōu)選地,本發(fā)明提供一種裝置,其中確定預(yù)期響應(yīng)包括用一個(gè)或者多個(gè)邏輯規(guī)則測(cè)試條件語(yǔ)句的每個(gè)分支以便確定預(yù)期響應(yīng)的步驟。
[0019]優(yōu)選地,本發(fā)明提供一種裝置,其中每個(gè)邏輯規(guī)則包括用于映射到在應(yīng)用的源代碼中的變量的數(shù)據(jù)集,并且數(shù)據(jù)集包括將響應(yīng)于變量的輸入而在網(wǎng)絡(luò)應(yīng)用的視窗中顯示的數(shù)據(jù)。
[0020]優(yōu)選地,本發(fā)明提供一種裝置,其中退出點(diǎn)是源代碼由于確定失去網(wǎng)絡(luò)活動(dòng)而不能執(zhí)行的代碼行。
[0021]優(yōu)選地,本發(fā)明提供一種裝置,其中替換對(duì)于資源的請(qǐng)求包括修改在源代碼中標(biāo)識(shí)的對(duì)在服務(wù)器上的資源的引用以引用生成的數(shù)據(jù)結(jié)構(gòu)。
[0022]優(yōu)選地,本發(fā)明提供一種裝置,該裝置還包括執(zhí)行具有修改的引用的源代碼。
[0023]優(yōu)選地,本發(fā)明提供一種裝置,該裝置還包括:網(wǎng)絡(luò)連通性檢測(cè)器,用于確定客戶端和服務(wù)器是否被網(wǎng)絡(luò)連接并且響應(yīng)于肯定確定而向服務(wù)器發(fā)送數(shù)據(jù)分組,并且服務(wù)器從源代碼的、客戶端交接處理的位置繼續(xù)執(zhí)行應(yīng)用的源代碼。
[0024]優(yōu)選地,本發(fā)明提供一種裝置,該裝置還包括:監(jiān)視部件,用于監(jiān)視客戶端的對(duì)來(lái)自服務(wù)器的資源的請(qǐng)求,并且根據(jù)請(qǐng)求確定用于在歷史數(shù)據(jù)存儲(chǔ)庫(kù)中存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)。
[0025]優(yōu)選地,本發(fā)明提供一種裝置,該裝置還包括從存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)去除任何個(gè)人數(shù)據(jù)。
[0026]從另一方面來(lái)看,本發(fā)明提供一種用于在網(wǎng)絡(luò)應(yīng)用未連接到網(wǎng)絡(luò)時(shí)測(cè)試網(wǎng)絡(luò)應(yīng)用的方法,該網(wǎng)絡(luò)應(yīng)用可操作用于跨網(wǎng)絡(luò)與服務(wù)器通信,該應(yīng)用包括具有執(zhí)行路徑的源代碼,該方法包括以下步驟:確定在應(yīng)用的源代碼內(nèi)的退出點(diǎn);根據(jù)退出點(diǎn)確定包括至少一個(gè)條件語(yǔ)句的執(zhí)行路徑;標(biāo)識(shí)至少一個(gè)被標(biāo)識(shí)條件語(yǔ)句的一個(gè)或者多個(gè)分支并且為每個(gè)被標(biāo)識(shí)分支確定預(yù)期響應(yīng);為每個(gè)確定的預(yù)期響應(yīng)根據(jù)響應(yīng)生成數(shù)據(jù)結(jié)構(gòu);從退出點(diǎn)沿著源代碼的執(zhí)行路徑繼續(xù)并且用指向生成的數(shù)據(jù)結(jié)構(gòu)的指針替換源代碼中的對(duì)于資源的每個(gè)請(qǐng)求;從確定的退出點(diǎn)用指向生成的數(shù)據(jù)結(jié)構(gòu)的指針執(zhí)行源代碼。
[0027]從另一方面來(lái)看,本發(fā)明提供一種包括計(jì)算機(jī)程序代碼的計(jì)算機(jī)程序,該計(jì)算機(jī)程序代碼用于在向計(jì)算機(jī)系統(tǒng)中加載和執(zhí)行時(shí)執(zhí)行如以上描述的本發(fā)明的所有步驟。
【專利附圖】
【附圖說(shuō)明】
[0028]現(xiàn)在將參照附圖僅通過(guò)示例描述本發(fā)明的優(yōu)選實(shí)施例,在附圖中:
[0029]圖1是詳述聯(lián)網(wǎng)數(shù)據(jù)處理環(huán)境的框圖,可以在該聯(lián)網(wǎng)數(shù)據(jù)處理環(huán)境中實(shí)施本發(fā)明的優(yōu)選實(shí)施例;
[0030]圖2是詳述數(shù)據(jù)處理系統(tǒng)的框圖,可以在該數(shù)據(jù)處理系統(tǒng)中實(shí)施本發(fā)明的一個(gè)優(yōu)選實(shí)施例;
[0031]圖3是詳述根據(jù)本發(fā)明的優(yōu)選實(shí)施例的離線應(yīng)用的示例的框圖;
[0032]圖4是描繪根據(jù)本發(fā)明的優(yōu)選實(shí)施例的預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件的框圖;
[0033]圖5是詳述根據(jù)本發(fā)明的優(yōu)選實(shí)施例的圖4的預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件的前瞻數(shù)據(jù)結(jié)構(gòu)部件的部件的框圖;
[0034]圖6是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的執(zhí)行路徑的圖示;
[0035]圖7是詳述根據(jù)本發(fā)明的優(yōu)選實(shí)施例的圖4的預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)創(chuàng)建器的空數(shù)據(jù)結(jié)構(gòu)部件的部件的框圖;
[0036]圖8是詳述根據(jù)本發(fā)明的優(yōu)選實(shí)施例的前瞻數(shù)據(jù)結(jié)構(gòu)部件的過(guò)程步驟的流程圖;并且
[0037]圖9是詳述根據(jù)本發(fā)明的優(yōu)選實(shí)施例的空數(shù)據(jù)結(jié)構(gòu)創(chuàng)建器的過(guò)程步驟的流程圖?!揪唧w實(shí)施方式】
[0038]現(xiàn)在參照各圖,圖1描繪網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100的圖解表示,可以在該網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)中實(shí)施本發(fā)明的優(yōu)選實(shí)施例。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100包括網(wǎng)絡(luò)135,該網(wǎng)絡(luò)是用來(lái)提供在網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100內(nèi)連接在一起的各種設(shè)備之間的通信鏈路的介質(zhì)。網(wǎng)絡(luò)135可以包括通信結(jié)構(gòu)、比如有線鏈路(以太網(wǎng))、無(wú)線通信鏈路或者光纖等。
[0039]在圖1描繪的示例中,服務(wù)器105與存儲(chǔ)裝置130 —起連接到網(wǎng)絡(luò)135。服務(wù)器105可以是任何類型的服務(wù)器、例如應(yīng)用服務(wù)器或者web服務(wù)器等??蛻舳嗽O(shè)備115也連接到網(wǎng)絡(luò)135。這些客戶端115可以例如是個(gè)人計(jì)算機(jī)、移動(dòng)設(shè)備、手持設(shè)備、網(wǎng)絡(luò)連接的終端設(shè)備或者能夠發(fā)送對(duì)于資源140的請(qǐng)求并且從網(wǎng)絡(luò)連接的服務(wù)器105接收資源140的任何類型的設(shè)備。資源140可以采用網(wǎng)頁(yè)、信息資源、數(shù)據(jù)、在線應(yīng)用及其下層格式、比如標(biāo)記語(yǔ)言、即HTML文件、XML文件和腳本語(yǔ)言如JavaScript文件、數(shù)據(jù)文件和凈荷等的形式??蛻舳?15通常部署網(wǎng)絡(luò)應(yīng)用120、比如web瀏覽器以便請(qǐng)求來(lái)自一個(gè)或者多個(gè)服務(wù)器105的資源140。存儲(chǔ)裝置130存儲(chǔ)用于向請(qǐng)求客戶端115發(fā)送的資源。[0040]在各圖中未描繪的另一實(shí)施例中,客戶端設(shè)備以對(duì)等方式連接,并且因此客戶端本身可以變成服務(wù)器。
[0041]網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100可以包括在各圖中未圖示的附加服務(wù)器、客戶端和其它通
信設(shè)備。
[0042]網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100可以采用具有網(wǎng)絡(luò)130的因特網(wǎng)的形式,這一形式代表網(wǎng)絡(luò)和網(wǎng)關(guān)的全球匯集,這些網(wǎng)絡(luò)和網(wǎng)關(guān)使用傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)協(xié)議套件以相互通信。類似地,網(wǎng)絡(luò)135也可以采用局域網(wǎng)或者廣域網(wǎng)等的形式。圖1旨在于僅作為示例而不是作為對(duì)于不同實(shí)施例的架構(gòu)限制。
[0043]圖2圖示數(shù)據(jù)處理系統(tǒng)200的圖解圖示。數(shù)據(jù)處理系統(tǒng)200是計(jì)算機(jī)、比如圖1的服務(wù)器105或者客戶端115的示例。
[0044]數(shù)據(jù)處理系統(tǒng)200包括中央處理單元265,該中央處理單元具有存儲(chǔ)器205 (RAM和ROM)這一形式的主存儲(chǔ)裝置。存儲(chǔ)器205存儲(chǔ)應(yīng)用程序作用于或者創(chuàng)建的程序信息和數(shù)據(jù)。程序信息包括用于數(shù)據(jù)處理系統(tǒng)200的操作系統(tǒng)代碼和用于在數(shù)據(jù)處理系統(tǒng)200上運(yùn)行的應(yīng)用的應(yīng)用代碼。次存儲(chǔ)裝置235例如包括光盤存儲(chǔ)裝置和磁盤存儲(chǔ)裝置。也可以從次存儲(chǔ)裝置235存儲(chǔ)和訪問(wèn)數(shù)據(jù)和程序信息。
[0045]數(shù)據(jù)處理系統(tǒng)200包括用于將數(shù)據(jù)處理系統(tǒng)200對(duì)接到網(wǎng)絡(luò)135的網(wǎng)絡(luò)連接裝置230。數(shù)據(jù)處理系統(tǒng)200也可以具有其它外部源通信裝置、比如傳真調(diào)制解調(diào)器或者電話連接。
[0046]中央處理單元265包括用于輸入文本、圖像、圖形等的作為示例的鍵盤260、鼠標(biāo)255、語(yǔ)音輸入250和掃描器245這一形式的輸入。來(lái)自中央處理單元265的輸出可以包括顯示裝置210、打印機(jī)215、聲音輸出220、視頻輸出225等。應(yīng)用可以從存儲(chǔ)裝置235或者經(jīng)由網(wǎng)絡(luò)連接230在數(shù)據(jù)處理系統(tǒng)200上運(yùn)行。
[0047]在一個(gè)優(yōu)選實(shí)施例中,應(yīng)用代碼包括用于運(yùn)行網(wǎng)絡(luò)應(yīng)用120的代碼,該網(wǎng)絡(luò)應(yīng)用用于訪問(wèn)在線應(yīng)用110、比如wikis、社交聯(lián)網(wǎng)站點(diǎn)和通信工具等。為了清楚,網(wǎng)絡(luò)應(yīng)用120是任何可操作用于請(qǐng)求、接收、呈現(xiàn)和遍歷來(lái)自網(wǎng)絡(luò)135的信息資源140的應(yīng)用。網(wǎng)絡(luò)應(yīng)用120可以采用在客戶端上運(yùn)行的瀏覽器應(yīng)用的形式、但是不限于這樣的應(yīng)用。為了清楚,術(shù)語(yǔ)在線應(yīng)用旨在于涵蓋任何在客戶端115與服務(wù)器105之間的交互中從網(wǎng)絡(luò)135訪問(wèn)的信息資源140。這一形式的交互可以采用HTTP請(qǐng)求或者其它相似協(xié)議的形式。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到在線應(yīng)用110可以由于一個(gè)或者多個(gè)資源未從一個(gè)或者多個(gè)服務(wù)器105可用而離線。因此造成應(yīng)用110僅部分在線,因?yàn)橐恍┵Y源140可用而一些資源140不可用,這歸因于一個(gè)或者多個(gè)服務(wù)105的選擇性的可用。
[0048]在使用網(wǎng)絡(luò)應(yīng)用120作為用于運(yùn)行在線應(yīng)用的平臺(tái)時(shí)遇到的關(guān)鍵問(wèn)題是在執(zhí)行在線應(yīng)用Iio期間失去網(wǎng)絡(luò)連通性。因此,在客戶端115訪問(wèn)要求客戶端的用戶輸入數(shù)據(jù)的在線應(yīng)用110并且客戶端釋放與在線應(yīng)用110的連通性時(shí),客戶端115不再能夠完成事務(wù),并且在線應(yīng)用在離線模式中操作。請(qǐng)求的資源可以是客戶端115從服務(wù)器105請(qǐng)求的的任何數(shù)據(jù)項(xiàng)。
[0049]失去連通性的影響經(jīng)常造成失去數(shù)據(jù)和失去功能。這造成客戶端115必須退出在線應(yīng)用110并且在已經(jīng)恢復(fù)與服務(wù)器105的連通性時(shí)重試。經(jīng)常在網(wǎng)絡(luò)應(yīng)用在離線模式中操作時(shí),應(yīng)用的源代碼仍然不能執(zhí)行,因?yàn)椴荒芟蚍?wù)器進(jìn)行對(duì)于被源代碼中的調(diào)用請(qǐng)求的資源的HTTP請(qǐng)求。
[0050]圖3是web瀏覽器應(yīng)用120的示例。Web瀏覽器應(yīng)用包括菜單300,在該菜單中,用戶可以訪問(wèn)專屬于web瀏覽器應(yīng)用120的功能。Web瀏覽器應(yīng)用也包括導(dǎo)航工具欄305,在該導(dǎo)航工具欄中,用戶可以錄入將訪問(wèn)的資源的地址(URL)。在這一示例中,用戶已經(jīng)錄入U(xiǎn)RL www.pensioncalculator.com。每個(gè)URL轉(zhuǎn)譯成服務(wù)器的資源的位置的IP地址。使用HTTP協(xié)議,向請(qǐng)求訪問(wèn)養(yǎng)老金計(jì)算器應(yīng)用(‘資源’)的服務(wù)器發(fā)送請(qǐng)求。只要客戶端115和服務(wù)器105處于網(wǎng)絡(luò)通信中,服務(wù)器105就可以a)從客戶端115接收請(qǐng)求并且b)向客戶端115發(fā)送回請(qǐng)求的資源。如果客戶端115和服務(wù)器105未連接,則網(wǎng)絡(luò)應(yīng)用顯示‘404未找到’消息。
[0051]本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到接收請(qǐng)求的服務(wù)器105可以是在‘一對(duì)一’關(guān)系中連接到客戶端115、因此可以向客戶端發(fā)送回請(qǐng)求的資源的網(wǎng)絡(luò)。然而如果服務(wù)器105未保持請(qǐng)求的資源并且請(qǐng)求的資源駐留于第二服務(wù)器105上并且第二服務(wù)器已經(jīng)失去與服務(wù)器的網(wǎng)絡(luò)連通性,則不能滿足客戶端的請(qǐng)求。
[0052]為了解決以上問(wèn)題并且根據(jù)一個(gè)優(yōu)選實(shí)施例,圖4描繪預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件400。預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件400如本領(lǐng)域所知可與網(wǎng)絡(luò)應(yīng)用120操作。預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件400可以嵌入于網(wǎng)絡(luò)應(yīng)用120內(nèi)或者可以作為插件安裝到現(xiàn)有網(wǎng)絡(luò)應(yīng)用120。
[0053]預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件400包括用于檢測(cè)客戶端115和服務(wù)器105何時(shí)不再被網(wǎng)絡(luò)連接的邏輯。響應(yīng)于檢測(cè)到失去網(wǎng)絡(luò)連通性,預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件生成如下數(shù)據(jù)結(jié)構(gòu),應(yīng)用的源代碼需要該數(shù)據(jù)結(jié)構(gòu)以便源代碼繼續(xù)執(zhí)行并且提供既定功能。創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)是如下數(shù)據(jù)結(jié)構(gòu)的副本,該副本在服務(wù)器105和客戶端115通過(guò)網(wǎng)絡(luò)135通信的情況下本來(lái)應(yīng)由源代碼創(chuàng)建。預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件400確定源代碼需要什么資源以便源代碼執(zhí)行和完成。通過(guò)預(yù)測(cè)需要哪些數(shù)據(jù)結(jié)構(gòu),預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件400可以創(chuàng)建數(shù)據(jù)結(jié)構(gòu)并且修改對(duì)服務(wù)器側(cè)資源的源代碼引用以指向在客戶端115上存儲(chǔ)的創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)。因此,在已經(jīng)在源代碼中修改源代碼引用之后,源代碼可以沿著它的執(zhí)行路徑繼續(xù)并且執(zhí)行如同它被網(wǎng)絡(luò)連接一樣。因此,對(duì)于用戶來(lái)說(shuō),表現(xiàn)的如同客戶端115和服務(wù)器105仍然被網(wǎng)絡(luò)連接一樣。
[0054]根據(jù)第一實(shí)施例,位于客戶端115上的數(shù)據(jù)連通性檢測(cè)器部件415連續(xù)監(jiān)視對(duì)于資源140的HTTP請(qǐng)求。在檢測(cè)到客戶端115請(qǐng)求已經(jīng)超時(shí)或者客戶端115接收HTTP404錯(cuò)誤代碼時(shí),數(shù)據(jù)連通性檢測(cè)器部件415向預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件400發(fā)送消息。
[0055]預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件400包括多個(gè)部件,這些部件相互交互以便向離線應(yīng)用提供進(jìn)行中的功能、即因此給予應(yīng)用在線的印象。
[0056]預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件400運(yùn)用兩種技術(shù)以實(shí)現(xiàn)這一點(diǎn)。一種是‘空’數(shù)據(jù)結(jié)構(gòu)創(chuàng)建器410,而另一種是‘前瞻’數(shù)據(jù)結(jié)構(gòu)創(chuàng)建器405。兩個(gè)預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件405、410的目的是在已經(jīng)在客戶端115與服務(wù)器105之間失去連通性時(shí)通過(guò)重建離線應(yīng)用需要的數(shù)據(jù)結(jié)構(gòu)來(lái)提供進(jìn)行中的功能。
[0057]參照?qǐng)D5、6和8,前瞻數(shù)據(jù)結(jié)構(gòu)創(chuàng)建器部件405經(jīng)由消息接收器部件500接收通知失去網(wǎng)絡(luò)連通性的消息(步驟800)。這一消息可以采用‘資源故障’消息、比如HTTP404響應(yīng)的形式。
[0058]攔截器部件505訪問(wèn)和攔截在客戶端115上運(yùn)行的應(yīng)用110的源代碼。攔截器部件505通過(guò)確定邏輯已經(jīng)在執(zhí)行路徑中何處請(qǐng)求網(wǎng)絡(luò)(例如哪個(gè)具體代碼行)來(lái)開(kāi)始。這一點(diǎn)稱為‘退出點(diǎn)’ 615 (步驟805),因?yàn)閳?zhí)行流程可能由于缺乏網(wǎng)絡(luò)連通性而不再能夠繼續(xù)。執(zhí)行路徑是如下順序,應(yīng)用的源代碼行按照該順序執(zhí)行以便提供在線應(yīng)用的功能。例如網(wǎng)絡(luò)應(yīng)用120發(fā)送對(duì)于訪問(wèn)www.pensioncalculator.com的請(qǐng)求。服務(wù)器105取讀請(qǐng)求的資源140并且向客戶端115發(fā)送資源??蛻舳?15接收資源140,并且網(wǎng)絡(luò)應(yīng)用120顯示需要用戶的數(shù)據(jù)輸入的問(wèn)題(請(qǐng)錄入你的性別)。用戶錄入他們的性別‘女性’,并且執(zhí)行路徑規(guī)定基于響應(yīng)‘女性’應(yīng)當(dāng)向用戶呈現(xiàn)具體問(wèn)題集。如果在這一點(diǎn)在客戶端115與服務(wù)器105之間失去執(zhí)行路徑網(wǎng)絡(luò)連通性,則這稱為‘退出點(diǎn)’。
[0059]在執(zhí)行路徑中的退出點(diǎn)的位置,攔截器部件505修改并且向存儲(chǔ)器存儲(chǔ)庫(kù)中復(fù)制源代碼并且向腳本引擎510發(fā)送調(diào)用。腳本引擎510與解析部件515組合解析從在退出點(diǎn)之前的第一個(gè)標(biāo)識(shí)的數(shù)據(jù)結(jié)構(gòu)開(kāi)始的在存儲(chǔ)器中存儲(chǔ)的源代碼。這是因?yàn)槟_本引擎必須標(biāo)識(shí)a)什么是正在向用戶顯示的當(dāng)前數(shù)據(jù)結(jié)構(gòu)和b)數(shù)據(jù)結(jié)構(gòu)需要按照用戶輸入而遵循的執(zhí)行路徑。腳本引擎510通過(guò)標(biāo)識(shí)在源代碼中的第一條件語(yǔ)句(步驟810)來(lái)開(kāi)始。條件語(yǔ)句可以采用“如果這樣,則……;否則……(if this, then else)”的形式,例如如果X的值大于Y的值,則執(zhí)行具體動(dòng)作、基于肯定確定來(lái)執(zhí)行動(dòng)作等。
[0060]在標(biāo)識(shí)條件語(yǔ)句、比如‘IF’語(yǔ)句時(shí),腳本引擎生成數(shù)據(jù)元,該數(shù)據(jù)元將滿足IF語(yǔ)句的分支(步驟815)。為了進(jìn)一步說(shuō)明這一概念,將使用稱為‘養(yǎng)老金計(jì)算器’的在線應(yīng)用的示例。
[0061]在用戶起動(dòng)稱為‘養(yǎng)老金計(jì)算器’的在線應(yīng)用時(shí),可以向用戶呈現(xiàn)‘主頁(yè)’。主頁(yè)提供關(guān)于在線應(yīng)用的細(xì)節(jié)和如 下信息,在線應(yīng)用需要來(lái)自用戶的該信息以便計(jì)算最終計(jì)算。在這一時(shí)間點(diǎn),從其訪問(wèn)在線應(yīng)用的客戶端115具有與服務(wù)器105的網(wǎng)絡(luò)連通性。
[0062]用戶選擇主頁(yè)上的用于起動(dòng)養(yǎng)老金計(jì)算器的選項(xiàng)。向服務(wù)器105發(fā)送對(duì)于取讀將在客戶端115上向用戶顯示的下一頁(yè)面的HTTP請(qǐng)求。攔截器部件505在后臺(tái)中連續(xù)工作從而監(jiān)視在客戶端115與服務(wù)器105之間的網(wǎng)絡(luò)連通性的狀態(tài)。
[0063]只要有網(wǎng)絡(luò)連通性,客戶端115將接收請(qǐng)求的資源140,并且服務(wù)器105將接收對(duì)于資源140的請(qǐng)求并且從資源140在網(wǎng)絡(luò)135中取讀資源140,無(wú)論其位于哪里。如果在這一點(diǎn),攔截器部件505標(biāo)識(shí)無(wú)連通性,則向腳本引擎510發(fā)送消息,該消息指令它開(kāi)始解析離線應(yīng)用110的源代碼。
[0064]作為示例,如果將向用戶顯示的下一頁(yè)面是指令用戶選擇他們的性別的‘下拉’框,則用戶通常將選擇下拉框并且錄入他們的性別,并且將向服務(wù)器105發(fā)送請(qǐng)求取讀‘個(gè)人.性別’數(shù)據(jù)集的請(qǐng)求。然而如果無(wú)網(wǎng)絡(luò)連通性,則服務(wù)器105未接收對(duì)于‘個(gè)人.性別’數(shù)據(jù)集的請(qǐng)求,不能滿足客戶端的請(qǐng)求,并且請(qǐng)求超時(shí)。
[0065]因此,根據(jù)本發(fā)明的一個(gè)實(shí)施例,腳本引擎510標(biāo)識(shí)邏輯流程中的退出點(diǎn)并且備注需要‘個(gè)人.性別’數(shù)據(jù)集。
[0066]腳本引擎510生成數(shù)據(jù)元,這些數(shù)據(jù)元將滿足條件語(yǔ)句以便生成數(shù)據(jù)結(jié)構(gòu)如同客戶端和服務(wù)器被網(wǎng)絡(luò)連接一樣。腳本引擎510與邏輯部件520接口,該邏輯部件本身包括規(guī)則這一形式的條件語(yǔ)句以便測(cè)試和驗(yàn)證條件語(yǔ)句的每個(gè)分支。通過(guò)測(cè)試和驗(yàn)證具有變量的條件語(yǔ)句的每個(gè)分支,可以生成數(shù)據(jù)結(jié)構(gòu)(即確定預(yù)期響應(yīng))。例如,如果條件語(yǔ)句是‘如果個(gè)人年齡=>65,則顯示數(shù)據(jù)集‘X’ ’。
[0067]邏輯部件515測(cè)試和驗(yàn)證條件語(yǔ)句以標(biāo)識(shí)數(shù)據(jù)集‘X’(預(yù)期響應(yīng))。一旦驗(yàn)證,變量(variable)數(shù)據(jù)集‘X’就變成生成的數(shù)據(jù)結(jié)構(gòu)的部分。通過(guò)修改應(yīng)用的源代碼,使用生成的數(shù)據(jù)結(jié)構(gòu)而不是必須請(qǐng)求來(lái)自與客戶端115無(wú)網(wǎng)絡(luò)連通性的服務(wù)器105的資源。因此,腳本引擎510測(cè)試和驗(yàn)證條件語(yǔ)句的每個(gè)可能分支,例如如果有五個(gè)可能執(zhí)行路徑,每個(gè)執(zhí)行路徑具有執(zhí)行源代碼,則將有五個(gè)數(shù)據(jù)結(jié)構(gòu)集。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)五個(gè)數(shù)據(jù)結(jié)構(gòu)集中的每個(gè)數(shù)據(jù)結(jié)構(gòu)集可以具有五個(gè)數(shù)據(jù)集中的每個(gè)數(shù)據(jù)集公共的重疊數(shù)據(jù)。
[0068]又一示例如下:
[0069]數(shù)據(jù)結(jié)構(gòu)
[0070]個(gè)人={性別:?--}
[0071]條件語(yǔ)句可以陳述如下:
[0072]如果(個(gè)人.性別====“女性” &&個(gè)人.年齡>60) {
[0073]呈現(xiàn)養(yǎng)老金問(wèn)題O;
[0074]}否則如果(個(gè)人.性別====“男性” &&個(gè)人.年齡>65) {
[0075]呈現(xiàn)養(yǎng)老金問(wèn)題O;
[0076]}
[0077]腳本引擎510與邏輯部件515交互以創(chuàng)建和標(biāo)識(shí)條件語(yǔ)句的每個(gè)可能響應(yīng)(步驟815)。例如,如果性別為女性并且個(gè)人的年齡大于年齡六十歲,則呈現(xiàn)具體養(yǎng)老金問(wèn)題,這些問(wèn)題涉及年齡大于六十歲的女性(圖6的605、610)。取條件語(yǔ)句的不同分支,例如如果性別是男性并且個(gè)人的年齡大于 六十五歲,則呈現(xiàn)具體養(yǎng)老金問(wèn)題,這些問(wèn)題涉及年齡大于六十五歲的男性(圖6的615、620)。
[0078]在完成創(chuàng)建條件語(yǔ)句的答案的每一個(gè)可能排列時(shí),腳本引擎510構(gòu)造在線應(yīng)用110為了繼續(xù)操作而需要的整個(gè)數(shù)據(jù)結(jié)構(gòu)(步驟820)。注意在這一點(diǎn),已經(jīng)生成、但是尚未執(zhí)行數(shù)據(jù)結(jié)構(gòu)。
[0079]攔截器部件505將消息修改成‘成功’消息以便源代碼繼續(xù)執(zhí)行(步驟825)。源代碼可以采用例如XML、HTML或者JavaScript等的形式。
[0080]解析部件515解析腳本引擎510已經(jīng)創(chuàng)建的整個(gè)數(shù)據(jù)結(jié)構(gòu)并且向用戶呈現(xiàn)相關(guān)數(shù)據(jù)結(jié)構(gòu)。例如:
[0081]個(gè)人
[0082]錄入性別
[0083]錄入年齡
[0084]根據(jù)用戶的答案,解析部件510取回適當(dāng)數(shù)據(jù)集并且向用戶呈現(xiàn)適當(dāng)數(shù)據(jù)集用于錄入進(jìn)一步信息。用戶的輸入的答案中的每個(gè)答案作為變量存儲(chǔ)于數(shù)據(jù)存儲(chǔ)庫(kù)525中。在向用戶呈現(xiàn)每個(gè)數(shù)據(jù)結(jié)構(gòu)時(shí),用戶錄入他們的答案,并且答案中的每個(gè)答案定義接著向用戶呈現(xiàn)哪個(gè)數(shù)據(jù)結(jié)構(gòu)、因此定義將遵循哪個(gè)執(zhí)行路徑。構(gòu)建部件530沿著這一相同執(zhí)行路徑執(zhí)行從而向問(wèn)題中的每個(gè)問(wèn)題填充用戶輸入的變量,并且離線應(yīng)用繼續(xù)以如同它離線一樣的相同方式執(zhí)行(步驟830 )。
[0085]數(shù)據(jù)存儲(chǔ)庫(kù)525存儲(chǔ)用戶向應(yīng)用10中輸入的數(shù)據(jù)。數(shù)據(jù)映射到源代碼中的變量。數(shù)據(jù)存儲(chǔ)庫(kù)525包括映射以便將從 用戶接收的數(shù)據(jù)映射到源代碼中列舉的變量以便標(biāo)識(shí)哪個(gè)數(shù)據(jù)與源代碼中的變量關(guān)聯(lián)。因此,從確定的退出點(diǎn)用指向如下指針的指針執(zhí)行源代碼,該指針指向生成的數(shù)據(jù)結(jié)構(gòu)。[0086]在另一實(shí)施例中,概率部件535確定是否將在執(zhí)行路徑內(nèi)到達(dá)特定源代碼塊的概率。例如基于用戶對(duì)特定問(wèn)題的響應(yīng),可以認(rèn)為不可能到達(dá)條件語(yǔ)句的特定分支。在這一場(chǎng)景中,如果不可能到達(dá)代碼塊,則用戶將無(wú)需錄入數(shù)據(jù)。因此,用戶將僅需輸入用于最可能執(zhí)行的代碼塊的數(shù)據(jù)。
[0087]在一個(gè)備選實(shí)施例中并且參照?qǐng)D7和9,空數(shù)據(jù)結(jié)構(gòu)410部件監(jiān)視用戶的在線活動(dòng)以便構(gòu)建用于在攔截器部件檢測(cè)到在客戶端與服務(wù)器之間失去網(wǎng)絡(luò)連通性時(shí)執(zhí)行的數(shù)據(jù)結(jié)構(gòu)的歷史記錄。
[0088]在這一示例實(shí)施例中,監(jiān)視部件705監(jiān)視用戶的在線活動(dòng)并且記錄何時(shí)訪問(wèn)在線應(yīng)用110。在數(shù)據(jù)存儲(chǔ)庫(kù)720中存儲(chǔ)標(biāo)識(shí)信息、比如在線應(yīng)用110的URL、在線應(yīng)用110的名稱、版本號(hào)和訪問(wèn)日期(步驟900)。這一信息用來(lái)在檢測(cè)到無(wú)網(wǎng)絡(luò)連通性的情況下確定是否之前已經(jīng)訪問(wèn)在線應(yīng)用110。
[0089]資源取回部件725監(jiān)視用戶與在線應(yīng)用110的交互并且檢查源代碼以標(biāo)識(shí)向用戶呈現(xiàn)的或者用戶與之交互的每個(gè)數(shù)據(jù)結(jié)構(gòu)。同前,監(jiān)視部件監(jiān)視每個(gè)條件語(yǔ)句并且在存儲(chǔ)器中暫時(shí)存儲(chǔ)在返回什么數(shù)據(jù)集方面對(duì)條件語(yǔ)句中的每個(gè)條件語(yǔ)句的響應(yīng)(步驟905)。
[0090]并行地,腳本引擎715解析數(shù)據(jù)結(jié)構(gòu)和輸入數(shù)據(jù)并且從數(shù)據(jù)結(jié)構(gòu)去除輸入數(shù)據(jù)并且在數(shù)據(jù)存儲(chǔ)庫(kù)730中存儲(chǔ)空數(shù)據(jù)結(jié)構(gòu)(步驟915)。
[0091]因此,數(shù)據(jù)存儲(chǔ)庫(kù)730包括空數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)庫(kù)以及指向數(shù)據(jù)結(jié)構(gòu)中的依賴空數(shù)據(jù)結(jié)構(gòu)的鏈接和與這些依賴空數(shù)據(jù)結(jié)構(gòu)的交互。
[0092]在一個(gè)備選實(shí)施例中,也存儲(chǔ)用戶的輸入數(shù)據(jù)。
[0093]本領(lǐng)域技術(shù)人員將認(rèn)識(shí)在時(shí)間段內(nèi)增進(jìn)空數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)庫(kù)的創(chuàng)建。這是因?yàn)橛脩魞H可以使用組成在線應(yīng)用的功能集的子集。因此,如果在線應(yīng)用包括功能集Fl至Fn,則在第一交互時(shí),用戶僅可以使用子集Fl和F2。因此,在數(shù)據(jù)存儲(chǔ)庫(kù)中存儲(chǔ)子集Fl和F2的空數(shù)據(jù)結(jié)構(gòu)。在后續(xù)交互時(shí),可以訪問(wèn)相同子集或者可以訪問(wèn)其它先前未訪問(wèn)的子集、例如F7至F12。在數(shù)據(jù)存儲(chǔ)庫(kù)中存儲(chǔ)這些新子集。
[0094]在用戶在以后時(shí)間訪問(wèn)在線應(yīng)用110時(shí),攔截器部件710不斷監(jiān)視在客戶端與服務(wù)器之間的網(wǎng)絡(luò)連通性的狀態(tài)。在攔截器部件710檢測(cè)到已經(jīng)失去網(wǎng)絡(luò)連通性時(shí),攔截器部件710向腳本引擎715發(fā)送用于開(kāi)始表現(xiàn)和生成應(yīng)用110的預(yù)期執(zhí)行流程的消息(步驟925)。腳本引擎710通過(guò)檢查URL和其它標(biāo)識(shí)信息來(lái)確定用戶以前是否已經(jīng)訪問(wèn)在線應(yīng)用110。
[0095]腳本引擎715使用數(shù)據(jù)存儲(chǔ)庫(kù)730中存儲(chǔ)的空數(shù)據(jù)結(jié)構(gòu)來(lái)確定用戶在執(zhí)行流程中的哪個(gè)點(diǎn)與服務(wù)器105失去網(wǎng)絡(luò)連通性(步驟935)并且通過(guò)執(zhí)行源代碼并且用生成的數(shù)據(jù)結(jié)構(gòu)填充執(zhí)行源代碼來(lái)重建執(zhí)行路徑(步驟940至950)。
[0096]在以上示例中的任一示例中,在網(wǎng)絡(luò)連通性檢測(cè)器部件檢測(cè)到已經(jīng)恢復(fù)網(wǎng)絡(luò)連通性時(shí),向腳本引擎發(fā)送用于創(chuàng)建數(shù)據(jù)分組的消息,該數(shù)據(jù)分組包括信息、比如處理已經(jīng)在執(zhí)行路徑中到達(dá)哪一點(diǎn)。服務(wù)器能夠使用這一信息以繼續(xù)執(zhí)行源代碼直至它的結(jié)束。
[0097]預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件也可以用來(lái)在向聯(lián)網(wǎng)數(shù)據(jù)處理系統(tǒng)中部署應(yīng)用之前測(cè)試基于web的應(yīng)用。預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)部件能夠生成源代碼為了在應(yīng)用未被部署網(wǎng)絡(luò)并且不能從網(wǎng)絡(luò)連接的服務(wù)器取讀請(qǐng)求的資源時(shí)繼續(xù)沿著執(zhí)行路徑執(zhí)行而需要的數(shù)據(jù)結(jié)構(gòu)。因此,可以在離線環(huán)境中驗(yàn)證和測(cè)試應(yīng)用為了完成請(qǐng)求的事務(wù)而需要完成的事務(wù)序列。在這一示例中,可以生成報(bào)告以向開(kāi)發(fā)者通知由于在源代碼中的引用中的錯(cuò)誤而不能完成的執(zhí)行路徑。
[0098]本發(fā)明可以采用全硬件實(shí)施例、全軟件實(shí)施例或者包含硬件和軟件單元二者的實(shí)施例的形式。在一個(gè)優(yōu)選實(shí)施例中,在包括但不限于固件、常駐軟件、微代碼等的軟件中實(shí)施本發(fā)明。
[0099]本發(fā)明可以采用從計(jì)算機(jī)可用或者計(jì)算機(jī)可讀介質(zhì)可訪問(wèn)的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可用或者計(jì)算機(jī)可讀介質(zhì)提供用于由計(jì)算機(jī)或者任何指令執(zhí)行系統(tǒng)使用或者與計(jì)算機(jī)或者任何指令執(zhí)行系統(tǒng)結(jié)合使用的程序代碼。出于本說(shuō)明書(shū)的目的,計(jì)算機(jī)可用或者計(jì)算機(jī)可讀介質(zhì)可以是任何可以包含、存儲(chǔ)、傳達(dá)、傳播或者傳送用于由指令執(zhí)行系統(tǒng)、裝置或者設(shè)備使用或者與該指令執(zhí)行系統(tǒng)、裝置或者設(shè)備結(jié)合使用的程序的裝置。
[0100]介質(zhì)可以是任何電子、磁、光、電磁、紅外線或者半導(dǎo)體系統(tǒng)(或者裝置或者設(shè)備)或者傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的示例包括半導(dǎo)體或者固態(tài)存儲(chǔ)器、磁帶、可去除計(jì)算機(jī)盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、硬磁盤和光盤。光盤的當(dāng)前示例包括緊致盤只讀存儲(chǔ)器(CD-ROM)、緊致盤讀/寫(xiě)(CD-R/W)和DVD。
[0101]可以對(duì)前文進(jìn)行改進(jìn)和修改而未脫離本發(fā)明的范圍。
【權(quán)利要求】
1.一種用于在應(yīng)用在網(wǎng)絡(luò)連接的數(shù)據(jù)處理系統(tǒng)中離線操作時(shí)為所述應(yīng)用生成預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)的方法,所述應(yīng)用包括具有執(zhí)行路徑的源代碼,所述方法包括以下步驟: 確定在所述應(yīng)用的所述源代碼內(nèi)的退出點(diǎn); 根據(jù)所述退出點(diǎn)確定包括至少一個(gè)條件語(yǔ)句的執(zhí)行路徑; 標(biāo)識(shí)所述至少一個(gè)被標(biāo)識(shí)條件語(yǔ)句的一個(gè)或者多個(gè)分支,并且為每個(gè)被標(biāo)識(shí)分支確定預(yù)期響應(yīng); 為每個(gè)確定的預(yù)期響應(yīng)根據(jù)所述響應(yīng)生成數(shù)據(jù)結(jié)構(gòu); 從所述退出點(diǎn)沿著所述源代碼的所述執(zhí)行路徑繼續(xù),并且用指向生成的所述數(shù)據(jù)結(jié)構(gòu)的指針替換所述源代碼中的對(duì)于資源的每個(gè)請(qǐng)求;以及 從所述確定的退出點(diǎn)用指向生成的所述數(shù)據(jù)結(jié)構(gòu)的所述指針執(zhí)行所述源代碼。
2.如權(quán)利要求1所述的方法,其中確定預(yù)期響應(yīng)包括用一個(gè)或者多個(gè)邏輯規(guī)則測(cè)試所述條件語(yǔ)句的每個(gè)分支以便確定所述預(yù)期響應(yīng)的步驟。
3.如權(quán)利要求2所述的方法,其中每個(gè)邏輯規(guī)則包括用于映射到在所述應(yīng)用的所述源代碼中的變量的數(shù)據(jù)集,并且所述數(shù)據(jù)集包括響應(yīng)于所述變量的所述輸入而將在所述網(wǎng)絡(luò)應(yīng)用的視窗中顯示的數(shù)據(jù)。
4.如權(quán)利要求1所述的方法,其中所述退出點(diǎn)是所述源代碼由于確定失去網(wǎng)絡(luò)活動(dòng)而不能執(zhí)行的代碼行。
5.如權(quán)利要求1所述的方法,其中替換對(duì)于資源的請(qǐng)求包括修改在所述源代碼中標(biāo)識(shí)的對(duì)在所述服務(wù)器上的資源的引用,以引用生成的所述數(shù)據(jù)結(jié)構(gòu)。
6.如權(quán)利要求5所述的方法,還包括執(zhí)行具有所述修改的引用的所述源代碼。
7.如權(quán)利要求1所述的方法,還包括確定所述客戶端和所述服務(wù)器是否被網(wǎng)絡(luò)連接,以及響應(yīng)于肯定確定而向所述服務(wù)器發(fā)送數(shù)據(jù)分組,并且所述服務(wù)器從所述源代碼的、所述客戶端交接處理的位置繼續(xù)執(zhí)行所述應(yīng)用的所述源代碼。
8.如權(quán)利要求1所述的方法,還包括監(jiān)視客戶端的對(duì)來(lái)自服務(wù)器的資源的請(qǐng)求,并且根據(jù)所述請(qǐng)求確定用于在歷史數(shù)據(jù)存儲(chǔ)庫(kù)中存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)。
9.如權(quán)利要求7所述的方法,還包括從所述存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)去除任何個(gè)人數(shù)據(jù)。
10.一種用于在應(yīng)用在網(wǎng)絡(luò)連接的數(shù)據(jù)處理系統(tǒng)中離線操作時(shí)為所述應(yīng)用生成預(yù)測(cè)數(shù)據(jù)結(jié)構(gòu)的裝置,所述應(yīng)用包括具有執(zhí)行路徑的源代碼,所述方法包括以下步驟: 用于確定在所述應(yīng)用的所述源代碼內(nèi)的退出點(diǎn)的攔截器部件; 用于根據(jù)所述退出點(diǎn)確定包括至少一個(gè)條件語(yǔ)句的執(zhí)行路徑的腳本引擎; 用于標(biāo)識(shí)所述至少一個(gè)被標(biāo)識(shí)條件語(yǔ)句的一個(gè)或者多個(gè)分支并且為每個(gè)被標(biāo)識(shí)分支確定預(yù)期響應(yīng)的腳本引擎; 用于為每個(gè)確定的預(yù)期響應(yīng)根據(jù)所述響應(yīng)生成數(shù)據(jù)結(jié)構(gòu)的腳本引擎; 用于從所述退出點(diǎn)沿著所述源代碼的所述執(zhí)行路徑繼續(xù)、并且用指向生成的所述數(shù)據(jù)結(jié)構(gòu)的指針替換所述源代碼中的對(duì)于資源的每個(gè)請(qǐng)求的腳本引擎;以及 用于從所述確定的退出點(diǎn)用指向生成的所述數(shù)據(jù)結(jié)構(gòu)的所述指針執(zhí)行所述源代碼的構(gòu)建部件。
11.如權(quán)利要求10所述的裝置,其中確定預(yù)期響應(yīng)包括用一個(gè)或者多個(gè)邏輯規(guī)則測(cè)試所述條件語(yǔ)句的每個(gè)分支以便確定所述預(yù)期響應(yīng)的步驟。
12.如權(quán)利要求11所述的裝置,其中每個(gè)邏輯規(guī)則包括用于映射到在所述應(yīng)用的所述源代碼中的變量的數(shù)據(jù)集,并且所述數(shù)據(jù)集包括將響應(yīng)于所述變量的所述輸入而在所述網(wǎng)絡(luò)應(yīng)用的視窗中顯示的數(shù)據(jù)。
13.如權(quán)利要求10所述的裝置,其中所述退出點(diǎn)是所述源代碼由于確定失去網(wǎng)絡(luò)活動(dòng)而不能執(zhí)行的代碼行。
14.如權(quán)利要求10所述的裝置,其中替換對(duì)于資源的請(qǐng)求包括修改在所述源代碼中標(biāo)識(shí)的對(duì)在所述服務(wù)器上的資源的引用,以引用生成的所述數(shù)據(jù)結(jié)構(gòu)。
15.如權(quán)利要求14所述的裝置,還包括執(zhí)行具有所述修改的引用的所述源代碼。
16.如權(quán)利要求10所述的裝置,還包括:網(wǎng)絡(luò)連通性檢測(cè)器,用于確定所述客戶端和所述服務(wù)器是否被網(wǎng)絡(luò)連接,以及響應(yīng)于肯定確定而向所述服務(wù)器發(fā)送數(shù)據(jù)分組,并且所述服務(wù)器從所述源代碼的、所述客戶端交接處理的位置繼續(xù)執(zhí)行所述應(yīng)用的所述源代碼。
17.如權(quán)利要求10所述的裝置,還包括:監(jiān)視部件,用于監(jiān)視客戶端的對(duì)來(lái)自服務(wù)器的資源的請(qǐng)求,并且根據(jù)所述請(qǐng)求確定用于在歷史數(shù)據(jù)存儲(chǔ)庫(kù)中存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)。
18.如權(quán)利要求16所述的裝置,還包括從所述存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)去除任何個(gè)人數(shù)據(jù)。
19.一種用于在網(wǎng)絡(luò)應(yīng)用未連接到網(wǎng)絡(luò)時(shí)測(cè)試所述網(wǎng)絡(luò)應(yīng)用的方法,所述網(wǎng)絡(luò)應(yīng)用可操作用于跨網(wǎng)絡(luò)與服務(wù)器通信,所述應(yīng)用包括具有執(zhí)行路徑的源代碼,所述方法包括以下步驟: 確定在所述應(yīng)用的所述源代碼內(nèi)的退出點(diǎn); 根據(jù)所述退出點(diǎn)確定包括至少一個(gè)條件語(yǔ)句的執(zhí)行路徑; 標(biāo)識(shí)所述至少一個(gè)被標(biāo)識(shí)條件語(yǔ)句的一個(gè)或者多個(gè)分支,并且為每個(gè)被標(biāo)識(shí)分支確定預(yù)期響應(yīng);` 為每個(gè)確定的預(yù)期響應(yīng)根據(jù)所述響應(yīng)生成數(shù)據(jù)結(jié)構(gòu); 從所述退出點(diǎn)沿著所述源代碼的所述執(zhí)行路徑繼續(xù),并且用指向生成的所述數(shù)據(jù)結(jié)構(gòu)的指針替換所述源代碼中的對(duì)于資源的每個(gè)請(qǐng)求; 從所述確定的退出點(diǎn)用指向生成的所述數(shù)據(jù)結(jié)構(gòu)的所述指針執(zhí)行所述源代碼。
20.一種包括計(jì)算機(jī)程序代碼的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序代碼用于在向計(jì)算機(jī)系統(tǒng)中加載和執(zhí)行時(shí)執(zhí)行根據(jù)權(quán)利要求1至9中的任一權(quán)利要求所述的方法的所有步驟。
【文檔編號(hào)】G06F17/30GK103874998SQ201280050218
【公開(kāi)日】2014年6月18日 申請(qǐng)日期:2012年10月8日 優(yōu)先權(quán)日:2011年10月12日
【發(fā)明者】B·J·弗萊徹 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司