<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

程序與用戶之間交互的實現方法及其設備的制作方法

文檔序號:6416696閱讀:263來源:國知局
專利名稱:程序與用戶之間交互的實現方法及其設備的制作方法
技術領域
本發明與計算機程序的輸入和輸出功能有關。具體地說,本發明與使程序與用戶(其中一方或雙方是移動的)之間的交互與位置無關和對位置透明的技術有關。
為了支持一個用戶與一個程序之間的交互,當前的系統要求用戶和程序一直都知道對方的位置。如果諸如移動式代理程序(mobile agentprogram)那樣的一個程序移動到了一個不同的主機,那么它必需返回到用戶位置或通過在用戶位置的另一個程序進行通信,以便接收來自用戶的輸入或向用戶顯示輸出。這在用戶是移動用戶(例如用的是膝上型或手持型設備)時就成為一個問題,因為此時通常已不是發出這個程序的原來位置了。類似,如果一個用戶選擇移動到網絡的另一個位置,為了給這個程序提供輸入或從這個程序接收輸入,用戶必需訪問執行這個程序的機器。
在現有技術的系統中,程序與用戶之間的交互是利用標準的輸入和輸出結構處理的。例如,在C編程語言中,輸入結構是“scanf()”函數,而輸出結構是“prinf()”函數。在Java語言中,輸入是利用諸如“java.io.InputStreamReader”和“java.io.InputStream”那樣的類中的方法執行的,而輸出是利用諸如“java.io.PrintWrite”和“java.io.PrintStream”那樣的類中的方法執行的。對于這樣一些程序,用戶和程序雙方必需處在同一位置。
在傳統的移動式代理系統中,諸如在1997年2月11日頒布的美國專利No.5,603,031“網絡中過程的基于運動的分布計算、執行和交互的系統和方法”(“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)中所說明的那些,程序在一個主機位置執行它的部分代碼,然后移動到另一個主機位置,執行下一部分代碼,如此等等。在這樣一個系統中一個移動式代理與一個用戶之間的交互是通過在要向用戶顯示數據和/或從用戶接收輸入時使代理移動到用戶的機器執行來實現的。
這些傳統的系統具有以下三個主要缺點。第一,程序和用戶雙方必需始終知道對方的位置。第二,在一個程序必需移動到用戶位置執行的情況下,用戶的機器必需具備主機可利用的相應程序執行環境,并且在任何時候都能執行這個程序。第三,雖然有著在一個程序開始執行前向這個程序提供初始化參數的機制,但在程序開始執行后這些系統并沒有允許用戶在程序執行期間和/或在程序請求前確定程序的執行狀態和向程序提供輸入的機制。
本發明的一個目的是提供一種允許在用戶和程序兩個實體之間不需要一直知道對方實體的位置的情況下進行輸入和輸出的系統和方法。
本發明的另一個目的是提供一種允許在用戶和程序之間進行輸入和輸出而并不要求用戶的機器具備程序可運行的執行環境的系統和方法。
本發明的又一個目的是使用戶可以確定一個移動式程序在執行期間的狀態和向一個程序在執行期間和實際需要輸入前提供輸入。
本發明的這些和其他一些目的是通過本發明所提供的移動用戶或與移動式程序交互的用戶可以在任何時候發出一個程序狀態請求的系統和方法來實現的。這個程序狀態請求產生一系列事件,從而可以確定程序的當前位置和/或使程序可以得到用戶的當前位置,不必哪個實體改變位置。此外,程序的代理腳本維護一個復合數據結構,它包括一個存儲輸入變量的輸入緩存區,一個存儲需向用戶顯示的輸出值的輸出緩存區,一個程序狀態數據結構,以及一個可選的暫時存儲程序在將來執行的過程中要用到的輸入值的數據袋(bag)緩存區。通過維護這樣一個復合數據結構,保證了在一個程序位置能提供所有必要信息,無論程序或用戶是否已經改變了位置。
下面將結合附圖對本發明進行說明。在這些附圖中


圖1示出了可以采用本發明的一個聯網系統;圖2例示了一個帶有輸入和輸出語句的代理腳本;圖3示出了按本發明的一種情況構成的移動式代理腳本的相關數據結構的實施例;圖4示出了本發明用圖1系統的代理執行外殼處理輸入和輸出的邏輯的實施例;圖5示出了本發明處理用戶對狀態的請求的邏輯的實施例;以及圖6a、6b、6c和6d例示了用戶從一個地理位置發出腳本而在運動中不斷監視程序、觀察程序結果和按需要提供輸入值的情況。
下面列出了本說明中所使用的一些術語的定義。
主機(host或host machine)是一個可以執行程序的計算機系統,如大型計算機、桌面個人計算機、便攜型膝上計算機等。
網絡(network)是一個由一些物理和邏輯通信設施互聯的主機構成的集合體。
用戶(user)是網絡環境中的使用人員。
客戶機(client)是用戶的網絡接口,可以是計算機、手持便攜型設備等具有通信能力的設備。
程序(program)是一個在主機上執行的指令序列。
移動式程序(mobile program)是一個諸如移動式代理(mobileagent)那樣的程序,可以從一個主機移動到另一個主機,在每個主機上執行它的指令中的某些指令。
代理服務器(Agent Server)是一個具有執行移動式代理的環境的主機。
代理執行外殼(Agent Execution Shell AES)是移動式代理執行它的部分指令的主機的代理服務器的軟件子系統。
下面以程序是一個諸如移動式代理那樣的移動式程序為背景對本發明的優選實施例進行說明。
圖1示出了一個可以采用本發明的系統。聯網系統100將系統內的起著不同作用的計算機連接起來。能運行諸如OS/2、UNIX、AIX或Windows NT那樣的傳統的操作系統的計算機102、104a、104b和106通過通信網108和通信協議連接。通信協議可以是例如能按UDP/IP或TCP/IP運行的Sun Microsystems RPC。網絡108可以是一個LAN、互聯網或內部網。客戶機102和代理服務器104a和104b可以用諸如IBMPC那樣的傳統的個人計算機(PC)來實現。每個計算機都配有一個傳統的通信系統112,例如在操作系統內的TCP/IP堆棧,用來在網絡108上進行通信。或者,客戶機也可以是手持式便攜移動設備,如PalmPilot或智能型蜂窩電話機。這些移動設備可以利用蜂窩電話技術、紅外通信裝置或其他等效裝置運行專用操作系統,接到通信網108上。注意,客戶機102與代理服務器104a、104b之間的差別可以是邏輯上的或物理上的,客戶機不需要能提供有關程序的執行環境。
雖然圖1中只示出一個客戶機,但實際上在系統100內可以有許多客戶機。客戶機102利用一個稱為代理個人助理(Agent PersonalAssistant APA)110的子系統編發代理程序。除了編發代理以外,這個子系統還能調試、更新和檢驗代理狀態。這種子系統可參見1997年5月1日收編的Devarakonda等人的美國專利申請No.08/847,079“動態移動式代理”(“Dynamic Mobile Agents”)。在本發明中,推薦將APA 100作為一個帶web接口的應用加以實現。APA 110與web服務機106內的桌面型服務機114交互,執行這些任務。
系統100中可以有多個代理服務器。代理服務器104a、104b各支持一個包括一個稱為代理執行外殼(Agent Execution Shell AES)120的軟件子系統的執行環境。AES 120起著獨自協調代理執行的作用,維護一個含有所有當前有效代理的狀態的表。每個代理服務器還維護至少一個記錄各移動式代理的來去位置的路由表。
圖2示出了配合本發明使用的代理代碼的典型例子。在一臺機器上執行了某些運算后,代理移動到下一個主機Q(步驟200)。這個主機Q可以在代碼內加以規定,也可以如在上述專利申請中所說明的那樣動態地確定,該申請的內容列作本申請的參考。代理代碼可以含有提供輸出的結構PRINT和從機器Q讀輸入值的結構READ。如圖所示,在步驟202a,PRINT結構使代理能向用戶顯示結果;而在步驟204a,READ結構使代理能請求用戶進行輸入。按要求完成了諸如執行READ、PRINT或其他指令的運算后,在步驟206,代理移動到機器R。同樣,代理代碼可以含有PRINT結構和READ結構,分別在步驟202b和204b執行。在步驟208,代碼完成執行。
圖3示出了按照本發明與代理腳本302配合在網絡108內移動的復合數據結構。雖然復合數據結構各成分的內容隨著代理腳本的移動改變,但數據結構各成分,如數據袋304、STDOUT 306、STDIN 308和程序狀態310,始終是保持著的。“數據袋”304是一個緩存區,用來存儲預置或根據以后程序需要動態輸入的一組變量名/值對。在程序需要輸入時,代理腳本對數據袋的內容進行檢查,確定變量的值的位置,檢索出這些值。對于一個具體變量名的值可能是一組要依次返回的值,供以后對這個變量名的請求使用。如果數據袋中沒有所需變量的值,代理腳本就會暫停,等待用戶輸入所需數據。數據袋緩存區可以設計成一個數組、散列表、元組空間或其他等效的數據結構。“STDOUT”緩存區306存有一個代理產生的所有輸出。STDOUT緩存區306的內容在受到請求時向用戶顯示。“STDIN”緩存區308存有一個代理等待用戶輸入值的變量名。STDIN緩存區308由AES 120用來將輸入變量的值通知代理腳本。最后,還有程序、堆棧和變量數據結構,用來表示代理腳本的程序狀態310。
圖4示出了AES 120的一個實施例在執行代理的程序語句時所完成的方法步驟。圖4中只示出與本發明有關的語句。在步驟402,AES 120檢查下一個需執行的語句。在步驟404,AES確定這個語句是否為END語句。如果是END語句,AES在步驟406終止執行代理。如果不是END語句,AES在步驟408確定這個語句是否為PRINT語句。如果是PRINT語句,AES 120在步驟410從程序狀態310檢索出PRINT語句變元的值,按預定格式將這些值存入STDOUT緩存區306。每個代理都配有一個STDOUT緩存區306。然后,AES 120返回步驟402,繼續執行代理。
如果在步驟408確定這個語句不是PRINT語句,AES 120就在步驟412確定這個語句是否為READ語句。如果是READ語句,AES 120就在步驟424所需的變量值是否在數據袋304內。如果這些值從數據袋304內可以得到,就在步驟426從數據袋304中取出這些值。變量更新后,AES 120返回步驟402,繼續執行程序。如果在步驟424確定得不到這些值,AES 120就在步驟414將READ語句的變元名寫入STDIN緩存區308。然后,按需要AES 120在步驟416可以通過諸如尋呼機/報警器/電子郵件之類的電子裝置通知用戶需要輸入。通知方式可由用戶在編發代理腳本時規定。
在步驟418,AES 120暫停執行程序,等待輸入值可以取得的通知。將輸入值通知AES 120的邏輯將在下面結合圖5說明。AES 120在步驟420接收到通知后,就在步驟422用這些新的值更新程序狀態310,再返回步驟402,繼續執行程序。AES 120可以還更新數據袋的內容,如果用戶提供了知道程序在以后的一些步驟還要用到的輸入的話。如果在步驟412確定語句不是READ語句,AES 120就在步驟422按需要處理其他語句后返回步驟402,繼續執行程序。在一個優化的實施例中,數據袋的全部內容可能在某個時間耗盡(假設數據袋含有多于立即要求輸入的內容),從而在需要時使用耗盡的輸入不必在每個程序執行輸入連接點再檢查數據袋內容。
圖5示出了在本發明的一個實施例中用戶與一個代理交互的步驟。用戶從APA 110發起一個狀態請求。這個請求由APA 110轉給web服務器的桌面型服務器114。然后,桌面型服務器114再將這個請求作為一個STATUS請求轉給初始編發這個代理的代理服務器的AES 120。在步驟502,AES 120接收到桌面型服務器114轉來的STATUS請求。接著在步驟504,AES 120從內部狀態表檢索出代理狀態。于是在步驟506,AES 120確定這個代理是否仍在本處執行。如果代理不再在本處執行,AES 120就在步驟508檢查它的路由表,將STATUS請求轉給發送這個代理的位置(于是,在下一個機器上從步驟502開始重新繼續執行)。
如果在步驟506確定代理當前在本處執行,AES 120就在步驟510對與代理狀態關聯的STDOUT緩存區306和STDIN緩存區308進行檢索。如果STDIN緩存區不是空的,需要輸入,AES還指出代理的當前邏輯地址。在步驟512,AES 120向含有STDOUT緩存區306和STDIN緩存區308的桌面型服務器114發送一個消息。如果STDIN是空的,AES120也在消息中發送出代理的當前邏輯地址,這樣就可以正確地傳送用戶輸入。
在步驟514,桌面型服務器114接收到對STATUS請求的回答。桌面型服務器114從消息中提取STDOUT和STDIN緩存區的內容。在步驟516,桌面型服務器114通過APA 110向用戶顯示STDOUT緩存區的內容。如果STDIN緩存區不是空的,桌面型服務器114還請求用戶進行輸入。接收到用戶輸入,桌面型服務器114就在步驟518向代理當前所在的AES 120發送一個消息,將新的值通知代理,如果必要的話還更新緩存區。如圖4中所示,接收到通知后代理重新繼續執行。
圖6a-d示出了本發明根據圖2所示的示例腳本執行的具有代表性的處理流程。在圖6a中,處在位置P的用戶602將一個移動式腳本302從客戶機102a發送到覆蓋位置P、Q和R的通信網108上。代理服務器104a配置在位置Q。代理服務器104b和web服務器106配置在位置R。執行某些運算后,移動式腳本302移動到位置Q。
在圖6b中,腳本在位置Q執行PRINT語句。作為執行結果,PRINT語句的輸出“I am at machine Q”(“我在機器Q處”)存入STDOUT緩存區。然后,腳本302執行語句“READ A”。由于A值在數據袋中沒有,不可得到,因此腳本302可選地向用戶602發送通知,等待回答。通知用戶可以利用諸如報警器、尋呼機、電子郵件、智能電話或手持型便攜移動設備之類的技術實現。用戶檢驗腳本302的狀態(如結合圖5所作的說明那樣)后,用戶602向腳本302提供變量A的值。此外,在一種可選用的最佳化情況下,用戶也向腳本302提供變量B的值。接收到這些值后,腳本302繼續執行,立即使用掉變量A的值。由于變量B的值腳本302還不需要,因此將它置入與腳本302關聯的數據袋內(見圖6c)。然后,腳本302移動到在位置R處的代理服務器104b。
在圖6d中,腳本302在位置R執行PRINT語句,從而產生輸出“I am at machine R”(“我在機器R處”)。然后,腳本302執行語句“READ B”。由于變量B的值已在數據袋內,可以取得,因此程序從數據袋內檢索出這個值,完成執行,而不需要準備和向用戶發送通知。顯然,用戶可以輸入多于一個的額外值,存入數據袋以備程序以后使用。
以上以優選實施例為例對本發明作了說明,然而,對于熟悉本技術領域的人員來說各種修改和改進都是顯而易見的。因此,可以理解,這個優選實施例只是作為一個例子而不是限制。例如,隨著通知一起可以將STDOUT緩存區306的內容發送給用戶設備,如果它能接收這種數據的話(例如是尋呼機或智能電話機)。此外,一個使用本發明的系統的用戶也可以選擇通過電子郵件與一個特定的AES通信。本發明的專利保護范圍由所附權利要求書給出。
權利要求
1.一種使一個程序與一個用戶之間的交互能與位置無關并對位置透明的方法,所述程序已在一個第一位置處啟動并具有一個至少存儲程序狀態的程序狀態數據結構,所述方法包括下列步驟由用戶發起一個程序狀態請求;確定程序的當前位置;檢查程序狀態,確定程序狀態;以及根據所述程序狀態與所述程序進行交互。
2.權利要求1的方法,其中所述與所述程序交互包括從所述程序檢索出需向用戶顯示的輸出內容;以及向所述用戶顯示輸出內容。
3.權利要求1的方法,其中所述與所述程序交互包括請求所述用戶發送輸入變量;將任何接收到的輸入值發送到當前位置;以及在所述程序狀態數據結構中加入接收到的輸入值。
4.權利要求1的方法,其中所述程序是一個移動式代理。
5.權利要求1的方法,其中所述程序是一個移動式腳本。
6.權利要求1的方法,其中所述用戶是一個移動用戶。
7.權利要求2的方法,所述方法還包括維護一個輸出緩沖區的步驟,而其中所述檢索包括從所述輸出緩沖區檢索輸出內容的步驟。
8.權利要求1的方法,其中所述發起請求的步驟包括下列步驟在一個客戶機上發起狀態請求;以及將狀態請求轉至所述程序被啟動的第一位置。
9.權利要求8的方法,其中所述程序包括一個在多個執行服務器的每個執行服務器上執行其部分代碼的移動式程序,而其中所述確定步驟包括下列步驟將狀態請求發送給每個執行了部分程序代碼的執行服務器;以及在每個執行服務器確定程序當前是否在本機運行。
10.權利要求9的方法,其中所述多個執行服務器各自都維護所述程序的路由信息,而其中所述確定步驟還包括下列步驟如果所述程序當前不在本機運行,查詢所述路由信息,確定所述程序已傳送給的至少一個后繼的執行服務器。
11.一種使一個用戶能向一個運行的程序在這個程序需要輸入值前提供輸入值的方法,所述方法包括下列步驟維護所述程序內的一個存儲各變量/值對的數據袋緩存區;接收來自用戶的包括輸入值的通信;以及將所述輸入值暫時存儲在所述數據袋緩存區內。
12.權利要求11的方法,其中所述程序在向所述用戶請求輸入前先搜索數據袋緩存區的內容,確定所需輸入值的位置。
13.權利要求2的方法,所述方法還包括維護所述程序內的一個數據袋緩存區的步驟,而其中所述檢索步驟包括下列步驟在數據袋緩存區內搜索與輸入變量關聯的輸入值;如果發現,用輸入值更新輸入變量;如果沒有發現,在一個輸入緩存區內設置輸入變量;以及如果在數據袋緩存區內沒有發現適當值,可選擇地通過電子設備通知用戶。
14.權利要求13的方法,其中所述電子設備是一個尋呼機。
15.權利要求13的方法,其中所述電子設備是一個報警器。
16.權利要求13的方法,其中所述電子設備是一個電子郵件。
17.權利要求13的方法,其中所述電子設備是一個智能電話機。
18.一種計算機程序數據結構,所述數據結構包括一個輸出緩存區,用來存儲需向一個用戶顯示的輸出值;一個輸入緩存區,用來存儲要求用戶輸入變量的值;以及一個程序狀態緩存區,用來存儲至少所述程序的當前狀態。
19.權利要求18的數據結構,所述數據結構還包括一個數據袋緩存區,用來存儲輸入變量。
20.權利要求19的數據結構,其中所述數據袋緩存區是一個數組數據結構。
21.權利要求19的數據結構,其中所述數據袋緩存區是一個散列表數據結構。
22.權利要求19的數據結構,其中所述數據袋緩存區是一個元組空間數據結構。
23.一種移動式程序執行外殼,所述執行外殼包括一個路由件,用來維護有關所述移動式程序的路由信息;一個處理件,用來處理涉及所述程序的用戶狀態請求;以及一個執行件,用來執行所述程序的至少一個部分。
24.權利要求23的執行外殼,所述執行外殼還包括一個數據管理件,用來接收用戶輸入,將所接收的用戶輸入存儲在所述程序的至少一個數據結構內。
全文摘要
本發明所提出的系統和方法使移動用戶或與移動式程序交互的用戶能在任何時候發起程序狀態請求。程序狀態請求引發一系列事件,確定程序的當前位置和/或使程序可以得到用戶的當前位置而不必哪個實體改變位置。此外,程序的代理腳本維護一個復合數據結構,它包括:一個存儲輸入變量的輸入緩存區,一個存儲需向用戶顯示的輸出值的輸出緩存區,一個程序狀態數據結構,以及一個可選的暫時存儲程序在將來執行的過程中要用到的輸入值的數據袋緩存區。
文檔編號G06F15/177GK1246757SQ9911051
公開日2000年3月8日 申請日期1999年7月21日 優先權日1998年8月31日
發明者阿加·默因吉, 阿普拉蒂姆·普拉卡亞薩, 戴維·米切爾·紹菲, 威廉·哈羅德·特茲拉夫 申請人:國際商業機器公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韩国伦理电影