專利名稱:程序與用戶之間交互的實現(xiàn)方法及其設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明與計算機(jī)程序的輸入和輸出功能有關(guān)。具體地說,本發(fā)明與使程序與用戶(其中一方或雙方是移動的)之間的交互與位置無關(guān)和對位置透明的技術(shù)有關(guān)。
為了支持一個用戶與一個程序之間的交互,當(dāng)前的系統(tǒng)要求用戶和程序一直都知道對方的位置。如果諸如移動式代理程序(mobile agentprogram)那樣的一個程序移動到了一個不同的主機(jī),那么它必需返回到用戶位置或通過在用戶位置的另一個程序進(jìn)行通信,以便接收來自用戶的輸入或向用戶顯示輸出。這在用戶是移動用戶(例如用的是膝上型或手持型設(shè)備)時就成為一個問題,因為此時通常已不是發(fā)出這個程序的原來位置了。類似,如果一個用戶選擇移動到網(wǎng)絡(luò)的另一個位置,為了給這個程序提供輸入或從這個程序接收輸入,用戶必需訪問執(zhí)行這個程序的機(jī)器。
在現(xiàn)有技術(shù)的系統(tǒng)中,程序與用戶之間的交互是利用標(biāo)準(zhǔn)的輸入和輸出結(jié)構(gòu)處理的。例如,在C編程語言中,輸入結(jié)構(gòu)是“scanf()”函數(shù),而輸出結(jié)構(gòu)是“prinf()”函數(shù)。在Java語言中,輸入是利用諸如“java.io.InputStreamReader”和“java.io.InputStream”那樣的類中的方法執(zhí)行的,而輸出是利用諸如“java.io.PrintWrite”和“java.io.PrintStream”那樣的類中的方法執(zhí)行的。對于這樣一些程序,用戶和程序雙方必需處在同一位置。
在傳統(tǒng)的移動式代理系統(tǒng)中,諸如在1997年2月11日頒布的美國專利No.5,603,031“網(wǎng)絡(luò)中過程的基于運動的分布計算、執(zhí)行和交互的系統(tǒng)和方法”(“System and Method for Distributed Computation BasedUpon the Movement,Execution,and Interaction of Processes in aNetwork”,by white et al.)中和在“IBM Aglets工作臺—Jave中的編程移動式代理”(“IBM Aglets workbench-Programming Mobile Agentsin Java”,Proceedings of 1997 World Wide Computing and ItsApplications,Japan PP.253-266 by Lange et al)中所說明的那些,程序在一個主機(jī)位置執(zhí)行它的部分代碼,然后移動到另一個主機(jī)位置,執(zhí)行下一部分代碼,如此等等。在這樣一個系統(tǒng)中一個移動式代理與一個用戶之間的交互是通過在要向用戶顯示數(shù)據(jù)和/或從用戶接收輸入時使代理移動到用戶的機(jī)器執(zhí)行來實現(xiàn)的。
這些傳統(tǒng)的系統(tǒng)具有以下三個主要缺點。第一,程序和用戶雙方必需始終知道對方的位置。第二,在一個程序必需移動到用戶位置執(zhí)行的情況下,用戶的機(jī)器必需具備主機(jī)可利用的相應(yīng)程序執(zhí)行環(huán)境,并且在任何時候都能執(zhí)行這個程序。第三,雖然有著在一個程序開始執(zhí)行前向這個程序提供初始化參數(shù)的機(jī)制,但在程序開始執(zhí)行后這些系統(tǒng)并沒有允許用戶在程序執(zhí)行期間和/或在程序請求前確定程序的執(zhí)行狀態(tài)和向程序提供輸入的機(jī)制。
本發(fā)明的一個目的是提供一種允許在用戶和程序兩個實體之間不需要一直知道對方實體的位置的情況下進(jìn)行輸入和輸出的系統(tǒng)和方法。
本發(fā)明的另一個目的是提供一種允許在用戶和程序之間進(jìn)行輸入和輸出而并不要求用戶的機(jī)器具備程序可運行的執(zhí)行環(huán)境的系統(tǒng)和方法。
本發(fā)明的又一個目的是使用戶可以確定一個移動式程序在執(zhí)行期間的狀態(tài)和向一個程序在執(zhí)行期間和實際需要輸入前提供輸入。
本發(fā)明的這些和其他一些目的是通過本發(fā)明所提供的移動用戶或與移動式程序交互的用戶可以在任何時候發(fā)出一個程序狀態(tài)請求的系統(tǒng)和方法來實現(xiàn)的。這個程序狀態(tài)請求產(chǎn)生一系列事件,從而可以確定程序的當(dāng)前位置和/或使程序可以得到用戶的當(dāng)前位置,不必哪個實體改變位置。此外,程序的代理腳本維護(hù)一個復(fù)合數(shù)據(jù)結(jié)構(gòu),它包括一個存儲輸入變量的輸入緩存區(qū),一個存儲需向用戶顯示的輸出值的輸出緩存區(qū),一個程序狀態(tài)數(shù)據(jù)結(jié)構(gòu),以及一個可選的暫時存儲程序在將來執(zhí)行的過程中要用到的輸入值的數(shù)據(jù)袋(bag)緩存區(qū)。通過維護(hù)這樣一個復(fù)合數(shù)據(jù)結(jié)構(gòu),保證了在一個程序位置能提供所有必要信息,無論程序或用戶是否已經(jīng)改變了位置。
下面將結(jié)合附圖對本發(fā)明進(jìn)行說明。在這些附圖中
圖1示出了可以采用本發(fā)明的一個聯(lián)網(wǎng)系統(tǒng);圖2例示了一個帶有輸入和輸出語句的代理腳本;圖3示出了按本發(fā)明的一種情況構(gòu)成的移動式代理腳本的相關(guān)數(shù)據(jù)結(jié)構(gòu)的實施例;圖4示出了本發(fā)明用圖1系統(tǒng)的代理執(zhí)行外殼處理輸入和輸出的邏輯的實施例;圖5示出了本發(fā)明處理用戶對狀態(tài)的請求的邏輯的實施例;以及圖6a、6b、6c和6d例示了用戶從一個地理位置發(fā)出腳本而在運動中不斷監(jiān)視程序、觀察程序結(jié)果和按需要提供輸入值的情況。
下面列出了本說明中所使用的一些術(shù)語的定義。
主機(jī)(host或host machine)是一個可以執(zhí)行程序的計算機(jī)系統(tǒng),如大型計算機(jī)、桌面?zhèn)€人計算機(jī)、便攜型膝上計算機(jī)等。
網(wǎng)絡(luò)(network)是一個由一些物理和邏輯通信設(shè)施互聯(lián)的主機(jī)構(gòu)成的集合體。
用戶(user)是網(wǎng)絡(luò)環(huán)境中的使用人員。
客戶機(jī)(client)是用戶的網(wǎng)絡(luò)接口,可以是計算機(jī)、手持便攜型設(shè)備等具有通信能力的設(shè)備。
程序(program)是一個在主機(jī)上執(zhí)行的指令序列。
移動式程序(mobile program)是一個諸如移動式代理(mobileagent)那樣的程序,可以從一個主機(jī)移動到另一個主機(jī),在每個主機(jī)上執(zhí)行它的指令中的某些指令。
代理服務(wù)器(Agent Server)是一個具有執(zhí)行移動式代理的環(huán)境的主機(jī)。
代理執(zhí)行外殼(Agent Execution Shell AES)是移動式代理執(zhí)行它的部分指令的主機(jī)的代理服務(wù)器的軟件子系統(tǒng)。
下面以程序是一個諸如移動式代理那樣的移動式程序為背景對本發(fā)明的優(yōu)選實施例進(jìn)行說明。
圖1示出了一個可以采用本發(fā)明的系統(tǒng)。聯(lián)網(wǎng)系統(tǒng)100將系統(tǒng)內(nèi)的起著不同作用的計算機(jī)連接起來。能運行諸如OS/2、UNIX、AIX或Windows NT那樣的傳統(tǒng)的操作系統(tǒng)的計算機(jī)102、104a、104b和106通過通信網(wǎng)108和通信協(xié)議連接。通信協(xié)議可以是例如能按UDP/IP或TCP/IP運行的Sun Microsystems RPC。網(wǎng)絡(luò)108可以是一個LAN、互聯(lián)網(wǎng)或內(nèi)部網(wǎng)??蛻魴C(jī)102和代理服務(wù)器104a和104b可以用諸如IBMPC那樣的傳統(tǒng)的個人計算機(jī)(PC)來實現(xiàn)。每個計算機(jī)都配有一個傳統(tǒng)的通信系統(tǒng)112,例如在操作系統(tǒng)內(nèi)的TCP/IP堆棧,用來在網(wǎng)絡(luò)108上進(jìn)行通信。或者,客戶機(jī)也可以是手持式便攜移動設(shè)備,如PalmPilot或智能型蜂窩電話機(jī)。這些移動設(shè)備可以利用蜂窩電話技術(shù)、紅外通信裝置或其他等效裝置運行專用操作系統(tǒng),接到通信網(wǎng)108上。注意,客戶機(jī)102與代理服務(wù)器104a、104b之間的差別可以是邏輯上的或物理上的,客戶機(jī)不需要能提供有關(guān)程序的執(zhí)行環(huán)境。
雖然圖1中只示出一個客戶機(jī),但實際上在系統(tǒng)100內(nèi)可以有許多客戶機(jī)。客戶機(jī)102利用一個稱為代理個人助理(Agent PersonalAssistant APA)110的子系統(tǒng)編發(fā)代理程序。除了編發(fā)代理以外,這個子系統(tǒng)還能調(diào)試、更新和檢驗代理狀態(tài)。這種子系統(tǒng)可參見1997年5月1日收編的Devarakonda等人的美國專利申請No.08/847,079“動態(tài)移動式代理”(“Dynamic Mobile Agents”)。在本發(fā)明中,推薦將APA 100作為一個帶web接口的應(yīng)用加以實現(xiàn)。APA 110與web服務(wù)機(jī)106內(nèi)的桌面型服務(wù)機(jī)114交互,執(zhí)行這些任務(wù)。
系統(tǒng)100中可以有多個代理服務(wù)器。代理服務(wù)器104a、104b各支持一個包括一個稱為代理執(zhí)行外殼(Agent Execution Shell AES)120的軟件子系統(tǒng)的執(zhí)行環(huán)境。AES 120起著獨自協(xié)調(diào)代理執(zhí)行的作用,維護(hù)一個含有所有當(dāng)前有效代理的狀態(tài)的表。每個代理服務(wù)器還維護(hù)至少一個記錄各移動式代理的來去位置的路由表。
圖2示出了配合本發(fā)明使用的代理代碼的典型例子。在一臺機(jī)器上執(zhí)行了某些運算后,代理移動到下一個主機(jī)Q(步驟200)。這個主機(jī)Q可以在代碼內(nèi)加以規(guī)定,也可以如在上述專利申請中所說明的那樣動態(tài)地確定,該申請的內(nèi)容列作本申請的參考。代理代碼可以含有提供輸出的結(jié)構(gòu)PRINT和從機(jī)器Q讀輸入值的結(jié)構(gòu)READ。如圖所示,在步驟202a,PRINT結(jié)構(gòu)使代理能向用戶顯示結(jié)果;而在步驟204a,READ結(jié)構(gòu)使代理能請求用戶進(jìn)行輸入。按要求完成了諸如執(zhí)行READ、PRINT或其他指令的運算后,在步驟206,代理移動到機(jī)器R。同樣,代理代碼可以含有PRINT結(jié)構(gòu)和READ結(jié)構(gòu),分別在步驟202b和204b執(zhí)行。在步驟208,代碼完成執(zhí)行。
圖3示出了按照本發(fā)明與代理腳本302配合在網(wǎng)絡(luò)108內(nèi)移動的復(fù)合數(shù)據(jù)結(jié)構(gòu)。雖然復(fù)合數(shù)據(jù)結(jié)構(gòu)各成分的內(nèi)容隨著代理腳本的移動改變,但數(shù)據(jù)結(jié)構(gòu)各成分,如數(shù)據(jù)袋304、STDOUT 306、STDIN 308和程序狀態(tài)310,始終是保持著的?!皵?shù)據(jù)袋”304是一個緩存區(qū),用來存儲預(yù)置或根據(jù)以后程序需要動態(tài)輸入的一組變量名/值對。在程序需要輸入時,代理腳本對數(shù)據(jù)袋的內(nèi)容進(jìn)行檢查,確定變量的值的位置,檢索出這些值。對于一個具體變量名的值可能是一組要依次返回的值,供以后對這個變量名的請求使用。如果數(shù)據(jù)袋中沒有所需變量的值,代理腳本就會暫停,等待用戶輸入所需數(shù)據(jù)。數(shù)據(jù)袋緩存區(qū)可以設(shè)計成一個數(shù)組、散列表、元組空間或其他等效的數(shù)據(jù)結(jié)構(gòu)?!癝TDOUT”緩存區(qū)306存有一個代理產(chǎn)生的所有輸出。STDOUT緩存區(qū)306的內(nèi)容在受到請求時向用戶顯示。“STDIN”緩存區(qū)308存有一個代理等待用戶輸入值的變量名。STDIN緩存區(qū)308由AES 120用來將輸入變量的值通知代理腳本。最后,還有程序、堆棧和變量數(shù)據(jù)結(jié)構(gòu),用來表示代理腳本的程序狀態(tài)310。
圖4示出了AES 120的一個實施例在執(zhí)行代理的程序語句時所完成的方法步驟。圖4中只示出與本發(fā)明有關(guān)的語句。在步驟402,AES 120檢查下一個需執(zhí)行的語句。在步驟404,AES確定這個語句是否為END語句。如果是END語句,AES在步驟406終止執(zhí)行代理。如果不是END語句,AES在步驟408確定這個語句是否為PRINT語句。如果是PRINT語句,AES 120在步驟410從程序狀態(tài)310檢索出PRINT語句變元的值,按預(yù)定格式將這些值存入STDOUT緩存區(qū)306。每個代理都配有一個STDOUT緩存區(qū)306。然后,AES 120返回步驟402,繼續(xù)執(zhí)行代理。
如果在步驟408確定這個語句不是PRINT語句,AES 120就在步驟412確定這個語句是否為READ語句。如果是READ語句,AES 120就在步驟424所需的變量值是否在數(shù)據(jù)袋304內(nèi)。如果這些值從數(shù)據(jù)袋304內(nèi)可以得到,就在步驟426從數(shù)據(jù)袋304中取出這些值。變量更新后,AES 120返回步驟402,繼續(xù)執(zhí)行程序。如果在步驟424確定得不到這些值,AES 120就在步驟414將READ語句的變元名寫入STDIN緩存區(qū)308。然后,按需要AES 120在步驟416可以通過諸如尋呼機(jī)/報警器/電子郵件之類的電子裝置通知用戶需要輸入。通知方式可由用戶在編發(fā)代理腳本時規(guī)定。
在步驟418,AES 120暫停執(zhí)行程序,等待輸入值可以取得的通知。將輸入值通知AES 120的邏輯將在下面結(jié)合圖5說明。AES 120在步驟420接收到通知后,就在步驟422用這些新的值更新程序狀態(tài)310,再返回步驟402,繼續(xù)執(zhí)行程序。AES 120可以還更新數(shù)據(jù)袋的內(nèi)容,如果用戶提供了知道程序在以后的一些步驟還要用到的輸入的話。如果在步驟412確定語句不是READ語句,AES 120就在步驟422按需要處理其他語句后返回步驟402,繼續(xù)執(zhí)行程序。在一個優(yōu)化的實施例中,數(shù)據(jù)袋的全部內(nèi)容可能在某個時間耗盡(假設(shè)數(shù)據(jù)袋含有多于立即要求輸入的內(nèi)容),從而在需要時使用耗盡的輸入不必在每個程序執(zhí)行輸入連接點再檢查數(shù)據(jù)袋內(nèi)容。
圖5示出了在本發(fā)明的一個實施例中用戶與一個代理交互的步驟。用戶從APA 110發(fā)起一個狀態(tài)請求。這個請求由APA 110轉(zhuǎn)給web服務(wù)器的桌面型服務(wù)器114。然后,桌面型服務(wù)器114再將這個請求作為一個STATUS請求轉(zhuǎn)給初始編發(fā)這個代理的代理服務(wù)器的AES 120。在步驟502,AES 120接收到桌面型服務(wù)器114轉(zhuǎn)來的STATUS請求。接著在步驟504,AES 120從內(nèi)部狀態(tài)表檢索出代理狀態(tài)。于是在步驟506,AES 120確定這個代理是否仍在本處執(zhí)行。如果代理不再在本處執(zhí)行,AES 120就在步驟508檢查它的路由表,將STATUS請求轉(zhuǎn)給發(fā)送這個代理的位置(于是,在下一個機(jī)器上從步驟502開始重新繼續(xù)執(zhí)行)。
如果在步驟506確定代理當(dāng)前在本處執(zhí)行,AES 120就在步驟510對與代理狀態(tài)關(guān)聯(lián)的STDOUT緩存區(qū)306和STDIN緩存區(qū)308進(jìn)行檢索。如果STDIN緩存區(qū)不是空的,需要輸入,AES還指出代理的當(dāng)前邏輯地址。在步驟512,AES 120向含有STDOUT緩存區(qū)306和STDIN緩存區(qū)308的桌面型服務(wù)器114發(fā)送一個消息。如果STDIN是空的,AES120也在消息中發(fā)送出代理的當(dāng)前邏輯地址,這樣就可以正確地傳送用戶輸入。
在步驟514,桌面型服務(wù)器114接收到對STATUS請求的回答。桌面型服務(wù)器114從消息中提取STDOUT和STDIN緩存區(qū)的內(nèi)容。在步驟516,桌面型服務(wù)器114通過APA 110向用戶顯示STDOUT緩存區(qū)的內(nèi)容。如果STDIN緩存區(qū)不是空的,桌面型服務(wù)器114還請求用戶進(jìn)行輸入。接收到用戶輸入,桌面型服務(wù)器114就在步驟518向代理當(dāng)前所在的AES 120發(fā)送一個消息,將新的值通知代理,如果必要的話還更新緩存區(qū)。如圖4中所示,接收到通知后代理重新繼續(xù)執(zhí)行。
圖6a-d示出了本發(fā)明根據(jù)圖2所示的示例腳本執(zhí)行的具有代表性的處理流程。在圖6a中,處在位置P的用戶602將一個移動式腳本302從客戶機(jī)102a發(fā)送到覆蓋位置P、Q和R的通信網(wǎng)108上。代理服務(wù)器104a配置在位置Q。代理服務(wù)器104b和web服務(wù)器106配置在位置R。執(zhí)行某些運算后,移動式腳本302移動到位置Q。
在圖6b中,腳本在位置Q執(zhí)行PRINT語句。作為執(zhí)行結(jié)果,PRINT語句的輸出“I am at machine Q”(“我在機(jī)器Q處”)存入STDOUT緩存區(qū)。然后,腳本302執(zhí)行語句“READ A”。由于A值在數(shù)據(jù)袋中沒有,不可得到,因此腳本302可選地向用戶602發(fā)送通知,等待回答。通知用戶可以利用諸如報警器、尋呼機(jī)、電子郵件、智能電話或手持型便攜移動設(shè)備之類的技術(shù)實現(xiàn)。用戶檢驗?zāi)_本302的狀態(tài)(如結(jié)合圖5所作的說明那樣)后,用戶602向腳本302提供變量A的值。此外,在一種可選用的最佳化情況下,用戶也向腳本302提供變量B的值。接收到這些值后,腳本302繼續(xù)執(zhí)行,立即使用掉變量A的值。由于變量B的值腳本302還不需要,因此將它置入與腳本302關(guān)聯(lián)的數(shù)據(jù)袋內(nèi)(見圖6c)。然后,腳本302移動到在位置R處的代理服務(wù)器104b。
在圖6d中,腳本302在位置R執(zhí)行PRINT語句,從而產(chǎn)生輸出“I am at machine R”(“我在機(jī)器R處”)。然后,腳本302執(zhí)行語句“READ B”。由于變量B的值已在數(shù)據(jù)袋內(nèi),可以取得,因此程序從數(shù)據(jù)袋內(nèi)檢索出這個值,完成執(zhí)行,而不需要準(zhǔn)備和向用戶發(fā)送通知。顯然,用戶可以輸入多于一個的額外值,存入數(shù)據(jù)袋以備程序以后使用。
以上以優(yōu)選實施例為例對本發(fā)明作了說明,然而,對于熟悉本技術(shù)領(lǐng)域的人員來說各種修改和改進(jìn)都是顯而易見的。因此,可以理解,這個優(yōu)選實施例只是作為一個例子而不是限制。例如,隨著通知一起可以將STDOUT緩存區(qū)306的內(nèi)容發(fā)送給用戶設(shè)備,如果它能接收這種數(shù)據(jù)的話(例如是尋呼機(jī)或智能電話機(jī))。此外,一個使用本發(fā)明的系統(tǒng)的用戶也可以選擇通過電子郵件與一個特定的AES通信。本發(fā)明的專利保護(hù)范圍由所附權(quán)利要求書給出。
權(quán)利要求
1.一種使一個程序與一個用戶之間的交互能與位置無關(guān)并對位置透明的方法,所述程序已在一個第一位置處啟動并具有一個至少存儲程序狀態(tài)的程序狀態(tài)數(shù)據(jù)結(jié)構(gòu),所述方法包括下列步驟由用戶發(fā)起一個程序狀態(tài)請求;確定程序的當(dāng)前位置;檢查程序狀態(tài),確定程序狀態(tài);以及根據(jù)所述程序狀態(tài)與所述程序進(jìn)行交互。
2.權(quán)利要求1的方法,其中所述與所述程序交互包括從所述程序檢索出需向用戶顯示的輸出內(nèi)容;以及向所述用戶顯示輸出內(nèi)容。
3.權(quán)利要求1的方法,其中所述與所述程序交互包括請求所述用戶發(fā)送輸入變量;將任何接收到的輸入值發(fā)送到當(dāng)前位置;以及在所述程序狀態(tài)數(shù)據(jù)結(jié)構(gòu)中加入接收到的輸入值。
4.權(quán)利要求1的方法,其中所述程序是一個移動式代理。
5.權(quán)利要求1的方法,其中所述程序是一個移動式腳本。
6.權(quán)利要求1的方法,其中所述用戶是一個移動用戶。
7.權(quán)利要求2的方法,所述方法還包括維護(hù)一個輸出緩沖區(qū)的步驟,而其中所述檢索包括從所述輸出緩沖區(qū)檢索輸出內(nèi)容的步驟。
8.權(quán)利要求1的方法,其中所述發(fā)起請求的步驟包括下列步驟在一個客戶機(jī)上發(fā)起狀態(tài)請求;以及將狀態(tài)請求轉(zhuǎn)至所述程序被啟動的第一位置。
9.權(quán)利要求8的方法,其中所述程序包括一個在多個執(zhí)行服務(wù)器的每個執(zhí)行服務(wù)器上執(zhí)行其部分代碼的移動式程序,而其中所述確定步驟包括下列步驟將狀態(tài)請求發(fā)送給每個執(zhí)行了部分程序代碼的執(zhí)行服務(wù)器;以及在每個執(zhí)行服務(wù)器確定程序當(dāng)前是否在本機(jī)運行。
10.權(quán)利要求9的方法,其中所述多個執(zhí)行服務(wù)器各自都維護(hù)所述程序的路由信息,而其中所述確定步驟還包括下列步驟如果所述程序當(dāng)前不在本機(jī)運行,查詢所述路由信息,確定所述程序已傳送給的至少一個后繼的執(zhí)行服務(wù)器。
11.一種使一個用戶能向一個運行的程序在這個程序需要輸入值前提供輸入值的方法,所述方法包括下列步驟維護(hù)所述程序內(nèi)的一個存儲各變量/值對的數(shù)據(jù)袋緩存區(qū);接收來自用戶的包括輸入值的通信;以及將所述輸入值暫時存儲在所述數(shù)據(jù)袋緩存區(qū)內(nèi)。
12.權(quán)利要求11的方法,其中所述程序在向所述用戶請求輸入前先搜索數(shù)據(jù)袋緩存區(qū)的內(nèi)容,確定所需輸入值的位置。
13.權(quán)利要求2的方法,所述方法還包括維護(hù)所述程序內(nèi)的一個數(shù)據(jù)袋緩存區(qū)的步驟,而其中所述檢索步驟包括下列步驟在數(shù)據(jù)袋緩存區(qū)內(nèi)搜索與輸入變量關(guān)聯(lián)的輸入值;如果發(fā)現(xiàn),用輸入值更新輸入變量;如果沒有發(fā)現(xiàn),在一個輸入緩存區(qū)內(nèi)設(shè)置輸入變量;以及如果在數(shù)據(jù)袋緩存區(qū)內(nèi)沒有發(fā)現(xiàn)適當(dāng)值,可選擇地通過電子設(shè)備通知用戶。
14.權(quán)利要求13的方法,其中所述電子設(shè)備是一個尋呼機(jī)。
15.權(quán)利要求13的方法,其中所述電子設(shè)備是一個報警器。
16.權(quán)利要求13的方法,其中所述電子設(shè)備是一個電子郵件。
17.權(quán)利要求13的方法,其中所述電子設(shè)備是一個智能電話機(jī)。
18.一種計算機(jī)程序數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括一個輸出緩存區(qū),用來存儲需向一個用戶顯示的輸出值;一個輸入緩存區(qū),用來存儲要求用戶輸入變量的值;以及一個程序狀態(tài)緩存區(qū),用來存儲至少所述程序的當(dāng)前狀態(tài)。
19.權(quán)利要求18的數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)還包括一個數(shù)據(jù)袋緩存區(qū),用來存儲輸入變量。
20.權(quán)利要求19的數(shù)據(jù)結(jié)構(gòu),其中所述數(shù)據(jù)袋緩存區(qū)是一個數(shù)組數(shù)據(jù)結(jié)構(gòu)。
21.權(quán)利要求19的數(shù)據(jù)結(jié)構(gòu),其中所述數(shù)據(jù)袋緩存區(qū)是一個散列表數(shù)據(jù)結(jié)構(gòu)。
22.權(quán)利要求19的數(shù)據(jù)結(jié)構(gòu),其中所述數(shù)據(jù)袋緩存區(qū)是一個元組空間數(shù)據(jù)結(jié)構(gòu)。
23.一種移動式程序執(zhí)行外殼,所述執(zhí)行外殼包括一個路由件,用來維護(hù)有關(guān)所述移動式程序的路由信息;一個處理件,用來處理涉及所述程序的用戶狀態(tài)請求;以及一個執(zhí)行件,用來執(zhí)行所述程序的至少一個部分。
24.權(quán)利要求23的執(zhí)行外殼,所述執(zhí)行外殼還包括一個數(shù)據(jù)管理件,用來接收用戶輸入,將所接收的用戶輸入存儲在所述程序的至少一個數(shù)據(jù)結(jié)構(gòu)內(nèi)。
全文摘要
本發(fā)明所提出的系統(tǒng)和方法使移動用戶或與移動式程序交互的用戶能在任何時候發(fā)起程序狀態(tài)請求。程序狀態(tài)請求引發(fā)一系列事件,確定程序的當(dāng)前位置和/或使程序可以得到用戶的當(dāng)前位置而不必哪個實體改變位置。此外,程序的代理腳本維護(hù)一個復(fù)合數(shù)據(jù)結(jié)構(gòu),它包括:一個存儲輸入變量的輸入緩存區(qū),一個存儲需向用戶顯示的輸出值的輸出緩存區(qū),一個程序狀態(tài)數(shù)據(jù)結(jié)構(gòu),以及一個可選的暫時存儲程序在將來執(zhí)行的過程中要用到的輸入值的數(shù)據(jù)袋緩存區(qū)。
文檔編號G06F15/177GK1246757SQ9911051
公開日2000年3月8日 申請日期1999年7月21日 優(yōu)先權(quán)日1998年8月31日
發(fā)明者阿加·默因吉, 阿普拉蒂姆·普拉卡亞薩, 戴維·米切爾·紹菲, 威廉·哈羅德·特茲拉夫 申請人:國際商業(yè)機(jī)器公司