專利名稱:可訓(xùn)練的用戶接口翻譯器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于由一目標(biāo)計(jì)算機(jī)系統(tǒng)集積和翻譯軟件應(yīng)用程序用戶接口到一新的計(jì)算機(jī)系統(tǒng)而不改變基礎(chǔ)的應(yīng)用程序。
軟件開發(fā)人員,系統(tǒng)組合者,累計(jì)價(jià)值轉(zhuǎn)售方以及最終用戶均渴望采用發(fā)展中的手持式計(jì)算機(jī)和便攜式數(shù)據(jù)收集終端。但將這些新裝置引入已有的軟件系統(tǒng)被證明是很困難的,主要是因?yàn)檫\(yùn)行此應(yīng)用程序的計(jì)算機(jī)系統(tǒng)必須向用戶接口提供一最小限度功能。例如,一報(bào)表系統(tǒng)的用戶接口可能要求一能顯示24行×80字符的屏幕。但一便攜終端僅提供4行×40字符,因此不可能直接運(yùn)行此應(yīng)用程序。由于手持式或便攜式終端一般都不具備所要求的最低限度功能,所以它們均不能運(yùn)行大部分當(dāng)前的應(yīng)用程序。
傳統(tǒng)上解決此問題的辦法包括有改寫老的應(yīng)用程序,購買適應(yīng)此便攜終端的局限性的新的應(yīng)用軟件,或者是一客戶映象程序,此程序?qū)⑿畔⒔M、提示和響應(yīng)從它們?cè)谠鹊哪繕?biāo)計(jì)算機(jī)顯示器的各自的位置“映射”到可攜裝置上較適用的位置。改置老的應(yīng)用程序需要時(shí)間,花費(fèi)金錢并具有將故障帶進(jìn)已有系統(tǒng)的危險(xiǎn)。購買一新的應(yīng)用軟件涉及很大開銷和風(fēng)險(xiǎn)。
客戶映象程序的生產(chǎn)很昂貴且費(fèi)時(shí)間,而且使應(yīng)用程序的維護(hù)費(fèi)用增加,因?yàn)閼?yīng)用程序的改變可能需要客戶映象程序中的再次改變。此外,客戶映象程序還可能產(chǎn)生同步問題。當(dāng)考慮到一差錯(cuò)消息未被一在繼續(xù)進(jìn)行鍵入(輸入)的操作員發(fā)現(xiàn)的影響時(shí)要加以同步的需要就很顯見了。因此,客戶映象程不是這一問題的令人滿意的解決措施。
本發(fā)明解決這一問題是通過作為一在已有應(yīng)用程序與一新計(jì)算機(jī)系統(tǒng)間的智能型的可訓(xùn)練的接口的作用。所得結(jié)果是本發(fā)明使得能以并非原先設(shè)計(jì)的硬件來應(yīng)用已有的計(jì)算機(jī)軟件。具體說,它提供一種裝置與已有程序接口,處理來自該已有程序的顯示屏的數(shù)據(jù),并以不同的狀態(tài)和/或格式將這些數(shù)據(jù)向用戶呈現(xiàn)。同樣地,它從用戶接收數(shù)據(jù),在需要時(shí)將數(shù)據(jù)加以重新格式化,并將此經(jīng)重新格式化的數(shù)據(jù)提交到已有的應(yīng)用程序。
本發(fā)明的一個(gè)目的是提供一種系統(tǒng),它能翻譯、或變換一已有的軟件應(yīng)用程序的用戶接口以便能在新的計(jì)算機(jī)系統(tǒng)上運(yùn)行。另外,本發(fā)明的一目的是提供一種采用簡單的方案來“教化”、即訓(xùn)練系統(tǒng)翻譯一已有軟件應(yīng)用程序的用戶接口的系統(tǒng)。本發(fā)明的再一個(gè)目的是提供使一便攜裝置的操作與一已有的軟件應(yīng)用程序的操作同步的同步機(jī)制。本發(fā)明的一附加目的是提供對(duì)應(yīng)用程序差錯(cuò)的完善的差錯(cuò)處理方法。
依靠本發(fā)明,已有的應(yīng)用程序軟件可在一不具備所需水平的用戶接口功能的系統(tǒng)上加以利用。
本發(fā)明揭示一種用于翻譯一已有的軟件應(yīng)用程序的用戶接口的可訓(xùn)練的設(shè)備。此設(shè)備包括一適于與一主計(jì)算機(jī)和客戶計(jì)算機(jī)兩者通信的計(jì)算機(jī)。此設(shè)備截取主機(jī)的輸入/輸出流并將應(yīng)用程序用戶接口翻譯成一在客戶計(jì)算機(jī)上利用的客戶接口。此計(jì)算機(jī)另外還適于通過掩蓋由應(yīng)用程序用戶接口所傳送的重復(fù)任務(wù)和冗余信息來簡化用戶與應(yīng)用程序的交互作用。此計(jì)算機(jī)還適于使主應(yīng)用程序一致為單一的用戶接口。
還揭示了生成和訓(xùn)練此設(shè)備的方法。通過對(duì)一用戶與應(yīng)用程序的交互進(jìn)行監(jiān)視來訓(xùn)練此設(shè)備。此監(jiān)視過程產(chǎn)生該設(shè)備用來翻譯該應(yīng)用程序用戶接口的路徑規(guī)律。
對(duì)附圖的簡要說明
圖1為現(xiàn)有技術(shù)采用手持式或便攜式終端的計(jì)算機(jī)系統(tǒng)的方框圖;圖2表明一便攜式終端與一應(yīng)用程序的目標(biāo)終端間的功能差異。
圖3為一采用本發(fā)明與便攜終端接口的計(jì)算機(jī)系統(tǒng)的方框圖;圖4為在教化過程期間產(chǎn)生的虛擬用戶路徑的方框圖;和圖A-KK為本發(fā)明一實(shí)施例的屏幕打印輸出。
圖1表示一采用一便攜終端的現(xiàn)有技術(shù)計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)10運(yùn)行一專門為一便攜終端16設(shè)計(jì)的應(yīng)用程序12。此應(yīng)用程序12通過便攜終端16與用戶14交互作用。應(yīng)用程序12通過通訊媒介18例如紅外、射頻或者直接連線與該便攜終端16通信。便攜終端16向用戶14顯示要求特定信息的提示。用戶14響應(yīng)這些要求將應(yīng)答輸入進(jìn)便攜終端16。
如果應(yīng)用程序不是被設(shè)計(jì)來在此便攜終端上運(yùn)行的,用戶就不能與此應(yīng)用程序?qū)υ?交互作用)。例如參考圖2,應(yīng)用程序可能要求一帶有包含功能鍵的實(shí)際大小的鍵盤21的終端20,此鍵盤是與能在便攜終端22上運(yùn)用的鍵盤23不同的。應(yīng)用程序也可能要求一終端24其屏幕尺寸大于便攜終端22上的屏幕25。在這兩種情況下,如果不對(duì)系統(tǒng)作某種形式的改變,此應(yīng)用程序就將不能在此便攜終端上運(yùn)行。
圖3表示一采用本發(fā)明的計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)30運(yùn)行一并不是設(shè)計(jì)為便攜終端應(yīng)用的應(yīng)用程序32。本發(fā)明34被安置在應(yīng)用程序32與便攜終端36之間。應(yīng)用程序32通過通訊媒介33與本發(fā)明34通信,而本發(fā)明34再通過一通訊媒介38與便攜終端36通信。便攜終端36仍然向用戶39顯示要求特定信息的提示,但這些提示是由本發(fā)明34而不是由基本應(yīng)用程序32產(chǎn)生的。用戶響應(yīng)這些提示將回答輸入進(jìn)便攜終端36,但這些回答仍然為本發(fā)明34所俘獲而不一定直接被傳送至應(yīng)用程序32。
本發(fā)明可以與基本應(yīng)用程序駐存在同一計(jì)算機(jī)系統(tǒng)中,或者可以駐存在一獨(dú)立的計(jì)算機(jī)系統(tǒng)中而通過一網(wǎng)絡(luò)與應(yīng)用程序通信。在此二種情況下,本發(fā)明截取I/O流并翻譯用戶接口以在便攜終端上應(yīng)用。本發(fā)明還可用來簡化對(duì)一已有程序或程序組的訪問,即使訪問是經(jīng)過與該已有程序同一計(jì)算機(jī)系統(tǒng)的。
為了在一已有的應(yīng)用程序與一便攜終端間進(jìn)行接口和翻譯,本發(fā)明生成一虛擬用戶(VU,Virtual User)。一個(gè)VU對(duì)此已有應(yīng)用程序則表現(xiàn)為一真實(shí)的用戶。VU被訓(xùn)練得就象一實(shí)際用戶那樣運(yùn)行已有的應(yīng)用程序,并以與一便攜終端兼容的格式將數(shù)據(jù)提供給實(shí)際用戶。
VU在應(yīng)用于最終的系統(tǒng)中之前,通過監(jiān)視一人類用戶在運(yùn)行該應(yīng)用程序期間的交互作用來產(chǎn)生。據(jù)此,本發(fā)明將產(chǎn)生一“路徑文件(path file)”,VU將用此來自動(dòng)地通過該應(yīng)用程序中的特定任務(wù)。此路徑文件由一系列在訓(xùn)練過程期間產(chǎn)生的自動(dòng)發(fā)生的“步驟”構(gòu)成,以后VU將按線性的或分枝的順序來執(zhí)行這些步驟以便沿此應(yīng)用程序行動(dòng)。一應(yīng)用程序中的每一光標(biāo)停止均在VU的監(jiān)察中,至少一個(gè)步驟,很可能為一系列步驟,與此停止有關(guān)。
本發(fā)明提供三個(gè)促使產(chǎn)生此VU的特點(diǎn)。第一,本發(fā)明利用一菜單驅(qū)動(dòng)的接口來促進(jìn)生成VU的過程,使此過程為交互式而不是“聯(lián)機(jī)”的。不要求用戶進(jìn)行傳統(tǒng)意義上的編程,而僅只是與應(yīng)用程序進(jìn)行對(duì)話。
第二,此VU能生成和利用基本應(yīng)用程序不具備的功能。因?yàn)楸景l(fā)明僅只是遵循一組預(yù)先定義的步驟,人們所能輸入的任何鍵入組合、—VU也能實(shí)現(xiàn)。這就使VU能被訓(xùn)練、亦即被教化得能在整個(gè)應(yīng)用程序中通行,進(jìn)入和退出不同的應(yīng)用程序,以及甚至訪問和退出不同的主機(jī)。例如,一應(yīng)用程序可能具有二個(gè)菜單選項(xiàng)第一菜單列舉現(xiàn)有項(xiàng)目的量,而第二菜單列舉項(xiàng)目的地點(diǎn)。一典型的用戶對(duì)應(yīng)用程序的直接訪問必須進(jìn)入第一菜單選項(xiàng)得到數(shù)量,退出第一菜單選項(xiàng),進(jìn)入第二菜單選項(xiàng)以得到其地點(diǎn),僅僅為得到此二個(gè)信息。此VU可被訓(xùn)練來執(zhí)行此相同步驟,但提供給用戶的是具有此二者信息的一個(gè)屏幕顯示。因此,本發(fā)明能為用戶產(chǎn)生新的功能,這些功能在早先那樣“直接按照所編寫的”運(yùn)行一特定應(yīng)用程序中是不可能的。
第三,本發(fā)明提供使VU能將其本身與應(yīng)用程序相同步的流監(jiān)視。VU必須在向主機(jī)發(fā)送回任何鍵入信號(hào)之前與每一應(yīng)用程序的光標(biāo)停止同步。采用流監(jiān)視就使VU能“識(shí)別”當(dāng)前的光標(biāo)位置并因而能確定其“正在審閱中”的應(yīng)用程序的那個(gè)屏面顯示。
生成和教化虛擬用戶為了翻譯一應(yīng)用程序用戶接口,必須生成VU并加以教化。
下面為在教化過程中能由本發(fā)明的菜單條i\的FILE、VARS、HOST、CLIENT和MISC選項(xiàng)中訪問的所有命令的列表。FILE MENUSave path file保存已對(duì)路徑文件(path file)生成的步驟,不退出Save&Exit 保存路徑文件并退出Quit 退出不保存Save Window 允許保存任何屏幕圖象作以后打印VARS MENUDeclare Variable 宣告一欲在將生成的路徑文件中使用的變量Set Variable 將已宣告的變量初始化到起始值Branch on Variable定義當(dāng)一變量等于這里所定義提出的“to match”時(shí)程序?qū)⑥D(zhuǎn)移到的路徑名。注“No”選擇路徑中的步驟號(hào)(step#)HOST MENU(第一次)Connect Local(PTY) 定義對(duì)主應(yīng)用程序的連接方法為對(duì)VU運(yùn)行中的同一計(jì)算機(jī)的偽終端訪問(pseudoterminal access)Connect Local (Pipe)定義對(duì)主應(yīng)用同程序的連接方法為通過一同軸通信線至VU運(yùn)行中的同一計(jì)算機(jī)Connect via TELNET 定義連接到主應(yīng)用程序的方法為通過通信網(wǎng)絡(luò),在此情形下應(yīng)用程序在與VU不同的計(jì)算機(jī)上運(yùn)行Connect via Serial 定義對(duì)主應(yīng)用程序的連接方法為通過VU運(yùn)行中的計(jì)算機(jī)的串行端口(serial port)HOST MENUSend to HOST 將鍵入信號(hào)的任一組合發(fā)送至主機(jī)Wait for HOST 同步步驟,保證在一給定時(shí)刻VU和主應(yīng)用程序與一給定的應(yīng)用程序處于相同的字符Save Host Screen Data保存主屏幕顯示的特定窗口,常被用于存貯每一時(shí)刻在屏幕同一行上所出現(xiàn)的差錯(cuò)消息Bypass Virtual User 允許中止交互式訓(xùn)練和將數(shù)據(jù)直接鍵入主應(yīng)用程序CLIENT MENUClear Screen發(fā)送清除屏幕的命令序列Sound Tone 發(fā)送響鈴的命令序列Move Cursor 發(fā)送使光標(biāo)移動(dòng)到客戶屏幕的特定X,Y坐標(biāo)上Send Message發(fā)送字符串給客戶進(jìn)行顯示Get Reply 請(qǐng)求客戶回答(掃描器或鍵盤輸入)MISC MENUStart New Path定義當(dāng)前步驟為路徑的起始,用作在利用下面的連接語句時(shí)的連接點(diǎn)End Path 定義路徑結(jié)束Connet(Loop) 使程序流能改向到利用上述“StartNew Path”選項(xiàng)指定的路徑標(biāo)號(hào)Exec Procedure 使程序控制能轉(zhuǎn)到對(duì)TerminalMode,Logon等可行的預(yù)先定義的一個(gè)或多個(gè)過程通過從如上定義的菜單條中選擇不同的選項(xiàng),就可以訪問VU為之訓(xùn)練的應(yīng)用程序。在訪問此應(yīng)用程序之后,可交互式地訓(xùn)練VU對(duì)應(yīng)用程序中的提示作恰當(dāng)?shù)姆磻?yīng)。
一個(gè)重要的概念是應(yīng)用程序流。應(yīng)用程序流是必須被跟隨以用于一特定應(yīng)用程序的數(shù)據(jù)輸入提示序列。這些提示包括有菜單選擇,數(shù)據(jù)和時(shí)間輸入,以及其他為運(yùn)行一應(yīng)用程序所需的輸入。本發(fā)明提供一種預(yù)先定義和存貯某人(例如一虛擬用戶)與一應(yīng)用程序的對(duì)話情況的方法。
利用任一應(yīng)用程序的第一步是要對(duì)如何與此應(yīng)用程序進(jìn)行對(duì)話加以訓(xùn)練。而該VU可被訓(xùn)練來記憶被重復(fù)的鍵入序列,訪問系統(tǒng)的時(shí)間和數(shù)據(jù)信息,決不會(huì)忘記如何進(jìn)行。必須訓(xùn)練VU如何響應(yīng)應(yīng)用程序所作的光標(biāo)停止。在被訓(xùn)練如何對(duì)光標(biāo)停止/提示進(jìn)行響應(yīng)之后,VU將能自己執(zhí)行該應(yīng)用程序中同樣的功能。
為促成數(shù)據(jù)輸入,必須訓(xùn)練VU來提供醒客戶的數(shù)據(jù)輸入??蛻?Client)為一操作人員將輸入數(shù)據(jù)處的終端(RF手提機(jī),常規(guī)終端等)。VU簡化一應(yīng)用程序的運(yùn)行而無需作該應(yīng)用程序上的變更編程。VU做到這一點(diǎn)是通過使絕大部分應(yīng)用程序光標(biāo)停止/提示自動(dòng)化和僅使當(dāng)前的特定任務(wù)所需求的信息通往該客戶。在應(yīng)用程序的每一光標(biāo)停止中均有一選項(xiàng)提醒客戶提供數(shù)據(jù)或進(jìn)行該菜單條允許的任一其他功能。這一選項(xiàng)使VU改變其對(duì)一給定的應(yīng)用程序光標(biāo)停止的響應(yīng)。這樣,本發(fā)明就保證執(zhí)行步驟中能進(jìn)行轉(zhuǎn)移。
下面為典型的虛擬用戶訓(xùn)練期間的基本步驟表。
1)主機(jī)連接/注冊(cè)/應(yīng)用程序訪問2)客戶菜單
3)主應(yīng)用程序訪問4)自動(dòng)化導(dǎo)航訪問菜單5)提醒客戶輸入數(shù)據(jù)6)基于客戶數(shù)據(jù)的轉(zhuǎn)移和出錯(cuò)指令7)再次啟動(dòng)客戶任務(wù)的循環(huán)或返回客戶菜單為希望執(zhí)行的任一功能重復(fù)這些部分就可對(duì)便攜終端操作者生成簡化的用戶輸入屏幕顯示。因?yàn)閂U只不過是以人們所要求的僅以66MHz(計(jì)算機(jī)的時(shí)鐘速度)通行穿過一應(yīng)用程序,所以可以將其訓(xùn)練來完成并不期望人們及時(shí)完成的任務(wù)。這一簡單的概念就使得能將來自一應(yīng)用程序(甚至數(shù)個(gè)不同的應(yīng)用程序)的數(shù)個(gè)菜單選項(xiàng)的功能匯合在一起、生成一在原始應(yīng)用程序中甚至不可能存在的單一的操作人員屏幕信息。
通過下面的示例訓(xùn)練過程將會(huì)更清楚了解這些步驟每一個(gè)的細(xì)節(jié)。應(yīng)注意的是,在下例被引用的圖形表明三個(gè)重要區(qū)間。各圖形均表示本發(fā)明的訓(xùn)練屏幕。這些圖形的上部為一用來訪問上述的功能菜單的菜單條,如圖A-a所說明的。這些圖的中間為一標(biāo)記為“CLIENT”的范樣客戶窗,反映客戶計(jì)算機(jī)系統(tǒng)上屏幕的大小和形狀,如圖A-a中所表明的。這一屏幕在規(guī)格文件(specfile)中加以定義。規(guī)格文件的舉例是附錄B。最后,一標(biāo)記為“HOST”的“主窗口影線(Host window shade)”在需要時(shí)將上托來表示由主機(jī)發(fā)送的消息和提示。這在圖I-C中作出說明。此CLIENT、HOST和發(fā)明菜單表明此教化過程中的系統(tǒng)狀態(tài)。在當(dāng)教化過程結(jié)束時(shí),所完成的VU就將按所訓(xùn)練的那樣運(yùn)行。
示例虛擬用戶訓(xùn)練/教化過程下面為一經(jīng)實(shí)際用戶運(yùn)行的簡單應(yīng)用程序例,用來說明VU的生成。在整個(gè)下文中,[]被用來表示欲利用下拉菜單選擇的選項(xiàng),或表示要按壓的實(shí)際鍵。例如,選擇[Start New Path]就是指要增亮一下拉菜單中的選項(xiàng)“Start New Path”,按壓[end]是指按下結(jié)束鍵。
步驟0(圖A-a~A-d)訪問Misc菜單,選取[Start New Path]。必須定義要起動(dòng)的路徑(path)名,這對(duì)于循環(huán)和轉(zhuǎn)移控制是很重要的。此路徑名指定用于轉(zhuǎn)移和循環(huán)訪問的路徑中的點(diǎn)。在此例中選擇名稱[main-menu],因?yàn)橹鞑藛螌⒃谶@一點(diǎn)顯示。步驟1(圖B-a~B-b)訪問Client菜單并選取[Move Cursor]。這將設(shè)置光標(biāo)在客戶窗中的位置。缺省設(shè)置行1和列1已被選定。結(jié)果客戶窗中光標(biāo)移到x,y位置,或1,1。步驟2(圖C-a~C-b)訪問Client菜單并選擇[Clear Screen]。結(jié)果客戶屏幕被清除。步驟3(圖D-a~D-h)訪問Client菜單并選取[Send Message]。顯示一子菜單。訪問Type子菜單并選取[Text],輸入欲在客戶屏幕上顯示的消息。在此例中輸入消息“[Do you want to run the program y/n]”?,F(xiàn)在在客戶屏幕上顯示出正文“Do you wantto run the program y/n”,分成適應(yīng)于客戶屏幕的恰當(dāng)長度的行?,F(xiàn)在系統(tǒng)準(zhǔn)備由客戶得到回答。步驟4(圖Ea~Ec)訪問Vars菜單并選取[Declare Variable]??尚嬉蛔兞看尜A來自客戶對(duì)步驟3中問題的響應(yīng)。輸入變量名[answer]。步驟5(圖Fa~F-b)訪問Client菜單并選取[Get Reply]。輸入[answer][tab][1]以輸入“answer”作為將存儲(chǔ)來自客戶的響應(yīng)的變量,并設(shè)置最大長度等于一字符。注意,[backspace]現(xiàn)在作為通常為刪改錯(cuò)誤所期望的動(dòng)作。步驟6(圖G)有二個(gè)選項(xiàng)需加以定義。第一個(gè)是對(duì)“y”即肯定響應(yīng),一般一典型的訓(xùn)練過程將通過運(yùn)行該應(yīng)用程序所需的“正常”路徑。在這種情況下正常就是指“y”,所以將以“y”作響應(yīng),而后在此例中對(duì)“n”的訓(xùn)練可被輸入。步驟7(圖H-a~H-c)訪問Vars并選取[Branch on Variable]。鍵入[answer][tab][y][tab][start -rw][tab]。這定義動(dòng)作如果變量“answer”等于值“y”則以名為“start -rw”的路徑前進(jìn)。在下一菜單選擇[d]以宣告一路徑名。此時(shí),“n”動(dòng)作也可加以定義。鍵入[n][tab][exit][tab][d],在“answer”等于“n”時(shí)促使路徑“exit”運(yùn)行。
現(xiàn)在名為“start-rw”的路徑被生成。
主機(jī)連接/注冊(cè)/應(yīng)用程序訪問對(duì)此訓(xùn)練示例將在同一主機(jī)上運(yùn)行應(yīng)用程序和本發(fā)明兩者。因此此應(yīng)用程序被認(rèn)為是在一本地主機(jī)上運(yùn)行而不是在一不同的或遠(yuǎn)地主機(jī)上運(yùn)行。下面的指令用來僅在一本地主機(jī)上的偽終端(pty)訪問一應(yīng)用程序。為運(yùn)行本發(fā)明必須在本地主機(jī)上加以登記,因此,通過這種連接方法,在訪問應(yīng)用程序前,無需在主機(jī)中登記。參照對(duì)其他連接方法的可應(yīng)用部分。PATH NAMEstart -rw步驟0(圖I-a~I(xiàn)-c)訪問HOST菜單選項(xiàng)。一旦“進(jìn)入”菜單條就可利用箭頭鍵移動(dòng)。利用向下箭頭“下拉”HOST窗影線。以增亮來選擇[Connect Local(PTY)]并按下[enter]。將提示一命令(Command)輸入通常用來訪問應(yīng)用程序的鍵,對(duì)于Real World型為[go-rw],可讓Argument行空,按壓[end]完成這一步驟,將注意到當(dāng)按壓[end]時(shí),虛擬用戶將此鍵入信號(hào)作為一命令行輸入發(fā)送到主機(jī)?,F(xiàn)在將看到終端(中央)窗口中的Real World應(yīng)用程序的屏幕顯示。替換使用[Exec Procedure]步驟0訪問Misc菜單并選取[Exec Procedure]。鍵入[go-rw][end]。
自動(dòng)化導(dǎo)航訪問菜單現(xiàn)在準(zhǔn)備訓(xùn)練虛擬用戶如何通過應(yīng)用程序。將會(huì)看到,在光標(biāo)停止(Cursor stops)時(shí)執(zhí)行的第一步是“等待主機(jī)(Wait for Host)”步驟。這一操作確保虛擬用戶與主應(yīng)用程序相互同步。如欲發(fā)送信息至主機(jī)就將首先執(zhí)行一“Wait for Host”。提示客戶輸入的次序可任意確定,這一個(gè)別指導(dǎo)服從同樣的基本指南。PATH NAMEnav-menus步驟0(圖J-a~J-c)訪問Misc菜單并選取[Start New Path][enter]。鍵入[nav-menus][end]。注“nav-menus”被選作一個(gè)名稱是因?yàn)檫@一路徑將通過訪問所希望業(yè)務(wù)所需要的菜單。名稱中需要有下劃線,不允許有空格。步驟1(圖K-a~K-c)訪問HOST菜單并選取[Wait for Host]。按壓[enter]并利用向下箭頭選擇[automatic],按[enter][enter]?,F(xiàn)在已確認(rèn)對(duì)字符串“o continue,or Esc to exit”出現(xiàn)在主機(jī)屏幕的底部的自動(dòng)主機(jī)同步化。步驟2(圖L-a~L-c)
訪問HOST菜單并選取[Send to Host]。在子菜單中選擇[Special Char (s)]。按[enter],將在窗口看到<cr>,按[][enter],在需要時(shí)應(yīng)用[tab]作編輯,按[end]激活這一步驟。將在下一屏幕看到應(yīng)用程序?qū)Υ薞U的回車的的響應(yīng),現(xiàn)在輸入有關(guān)者的首字母。步驟3(圖M)可容易地利用步驟2中的順序來“硬編碼(hard code)”一組首字母,或者可提示客戶作“用戶首字母”,為提示客戶作用戶首字母,過程如下。訪問客戶菜單,利用向下箭頭選擇[Clear Screen]??蛻羝聊滑F(xiàn)在就成為空的,由于老的提示“Real World (y/n)?”被隱蔽在終端窗口之后所以不能看到任何變化。PATH NAMEitem-transfer步驟0(圖N-a~N-c)訪問Misc菜單并選擇[Start New Path]。鍵入[item-transfer]作為路徑名。此路徑將向客戶提示客戶為完成一項(xiàng)傳輸業(yè)務(wù)的信息。程序?qū)⒔o出連接最后路徑“access”至新的路徑“item-transfer”的連接的選項(xiàng)。按[n]以選擇“l(fā)ink to NewPath”步驟1(圖O)如前面的步驟,清除屏幕。訪問Client菜單并選擇[Clear Screen]?,F(xiàn)在客戶屏幕就成為空的。步驟2(圖P)如上述,訪問Client菜單并選取[Move Cursor]。選擇行1和列1。光標(biāo)現(xiàn)在將在客戶屏幕上1,1的X,Y位置處閃爍。步驟3(圖Q-a~Q-b)訪問Client菜單并選擇[Send Message]。在子菜單中選擇[Text]?,F(xiàn)在輸入欲在客戶屏幕上顯示的消息。輸入[item],在客戶屏幕上出現(xiàn)提示“item”。
步驟4(圖R)如前所述,訪問Vars菜單并選擇[Declare Variable]?,F(xiàn)在宣告用于存放客戶對(duì)此item提示的響應(yīng)的變量。名稱[item]被輸入為此變量名。步驟5(圖S-a~S-b)訪問Client菜單并選取[Get Reply]。現(xiàn)在輸入來自客戶的回答并存入變量“item”。鍵入[it.em][tab][10]以輸入“item”作為客戶的響應(yīng)的變量,并允許最大10個(gè)字符的長度。菜單條將被Waiting for Client Input at Client orhere來代替。現(xiàn)在可輸入一有效項(xiàng)號(hào)。PATH NAMEupdate-host步驟0(圖T)訪問Misc菜單并選擇[Start New Path]。鍵入[update-host]作為這一序列步驟的新路徑名。此路徑將以在“item-transfer”路徑下接收到的響應(yīng)來更新主機(jī)。步驟1(圖U)如前,訪問Client菜單并選擇[Clear Screen]以清除此時(shí)的屏幕。步驟2(圖V)如前,訪問Client菜單并選擇[Move Cursor]。選擇行1和列1作為新地點(diǎn)?,F(xiàn)在客戶窗口中的光標(biāo)將位于1,1的X,Y地點(diǎn)上。步驟3(圖W)
如前,訪問Client菜單并選擇[Send Message]。在子菜單中選擇[Text]?,F(xiàn)在輸入欲在客戶屏幕上顯示的消息。輸入[Processing Data]?,F(xiàn)在在客戶屏幕上顯示提示“ProcessingData”。步驟4(圖X-a~X-b)訪問HOST菜單并選擇[Wait for Host]。選擇[automatic]?,F(xiàn)在將自動(dòng)同步主機(jī)與客戶。應(yīng)指出,出錯(cuò)處理將在“Noneof the above”的路徑“item-error”中提供,暫停被設(shè)定為100×0.1sec=10秒。因此,在一出錯(cuò)情況中,如果經(jīng)過10秒鐘而無反應(yīng),即執(zhí)行item-error。步驟5(用Y-a~Y-b)訪問主機(jī)菜單并選取[Send to Host]?,F(xiàn)在發(fā)送變量“item”到主機(jī)。由子菜單選取[Variable]并鍵入[item]作為送往主機(jī)的變量。由子菜單選擇[Special Char (s)]并輸入一[cr]。這將傳送一回車至主機(jī)。PATH NAMEitem-error步驟0(圖Z-a~Z-b)因?yàn)閿?shù)據(jù)的輸入使得應(yīng)用程序進(jìn)入其差錯(cuò)處理子程序,光標(biāo)不再處于第二提示“warehouse”旁的其正常的“next entry”位置。而是處于具有消息“Press ENTER or F8”的屏幕的右下角。應(yīng)指出,出錯(cuò)消息“Item not on file”顯示在屏幕的左下角。如果“none of the above”條件為真,“update-host”的步驟4就具有一按所用路徑定義的名為“item-error”的差錯(cuò)處理子程序。因此,控制就被傳到“item-error”以處理出錯(cuò)情況。訪問主機(jī)菜單并選擇[Wait for Host]?,F(xiàn)在可確認(rèn)自動(dòng)主機(jī)同步化。步驟1(圖AA)
如前,訪問Vars菜單并選擇[Declare Variable]。這一變量將存放當(dāng)前在主機(jī)屏幕上的“出錯(cuò)窗口(error window)”中的主機(jī)數(shù)據(jù)。鍵入[item-error]以宣告將在下一步驟中應(yīng)用的變量“item-error”。步驟2(圖BB)選擇主機(jī)窗口影線并選擇“save host data”。輸入步驟1中宣告的變量并利用箭頭鍵在屏幕上將“窗口(window)”移到出錯(cuò)消息上。。利用移動(dòng)“+”或“-”鍵增加或減少“save host screen data”框中方括號(hào)所確定的“window”的大小。步驟3(圖CC)如前,訪問Client菜單并選擇[Clear Screen]??蛻羝聊粚⒈磺宄?。步驟4(圖DD)如前,訪問Client菜單并選擇[Move Cursor]。設(shè)定行為1和列為1。光標(biāo)將移到客戶屏幕中的1,1的X,Y位置。步驟5(圖EE)由Client菜單選擇[Sound Tone]。將向客戶發(fā)出一聲音信號(hào)以通知用戶發(fā)生差錯(cuò)。步驟6(圖FF)如前,訪問Client菜單并選擇[Send Message]。在子菜單中選取[Variable]。輸入“item-error”作為變量名并選擇[Special Char(s)],并確定一回車和進(jìn)行(line feed)以使下一行正文不致疊寫在出錯(cuò)信息上。選擇[Text]并輸入希望在客戶屏幕上顯示的消息。選擇[Special Char(s)]并輸入一回車、進(jìn)行和欲顯示的消息的最后部分。在此例中,為正文“<CR><lf>Press ENTER to <cr><lf>continue”。步驟7(圖GG)如上述步驟所示,宣告一新的變量“answer”以從客戶得到ENTER鍵以便繼續(xù)進(jìn)行。步驟8(圖HH)如前面步驟所描述的,取得客戶的回答。步驟9(圖II)等待客戶對(duì)提示的響應(yīng)。步驟10(圖JJ)在發(fā)送剛由客戶輸入的“answer”之前等候主機(jī)。步驟11(圖KK-a~KK-b)主機(jī)回到項(xiàng)目輸入提示。訪問Misc菜單并選擇[Loop]并將此出錯(cuò)路徑連接到item-transfer的起始點(diǎn)以再次向客戶提示輸入一項(xiàng)目號(hào)。應(yīng)指出,利用這一技術(shù)可處理任何差錯(cuò)情況。利用Wait for Host對(duì)話框的任一“Possible Response”區(qū)間都同樣是正確的。因此,5個(gè)附加的“已知的”響應(yīng)可以上述同樣的方式加以宣告并“訓(xùn)練”。如果僅要求對(duì)所有情況都采用一個(gè)出錯(cuò)反應(yīng)來訓(xùn)練VU,則“none of the above”選項(xiàng)是合適的。
圖4表明上述示例中描述的各不同路徑的相互連接。如上所述被訓(xùn)練的VU現(xiàn)在準(zhǔn)備用作此示例應(yīng)用程序與一便攜終端間的接口。路徑文件基元(Path File Primitives)路徑文件指定在VU的教化過程中俘獲的步驟和命令的序列。附錄A含有用于上述示例VU的路徑文件。下列基元被用于記錄主程序的工況和與人類操作員的交互作用Sendact 結(jié)束路徑文件$cl-connect 建立到客戶的連接$cl-clear清除客戶屏幕$cl-tone 對(duì)客戶響鈴$cl-move 定位客戶光標(biāo)$cl-send 向客戶發(fā)送數(shù)據(jù)$cl-get 從客戶得到數(shù)據(jù)$cl-discon 斷開與客戶的連接$host-send 發(fā)送數(shù)據(jù)至主應(yīng)用程序$host-connect建立到主應(yīng)用程序的連接$host-djscon 斷開與主應(yīng)用程序的連接$host-save 存貯來自仿真區(qū)的數(shù)據(jù)$host-sync 監(jiān)視主機(jī)操作并與工況數(shù)據(jù)庫進(jìn)行比較$declare 宣告一存貯變量$param 作系統(tǒng)參數(shù)修正$set 改變一變量值$pipe建立客戶與主應(yīng)用程序間的透明連接$nen-path開始新操作序列
$loop 傳送控制$done 結(jié)束一路徑$vbranch 按變量值作條件轉(zhuǎn)移$exec 執(zhí)行一程序過程規(guī)格文件基元(Spec File Primitives)規(guī)格(spec)文件俘獲系統(tǒng)有關(guān)信息供VU應(yīng)用。附錄B包含用于上述VU例的規(guī)格文件。下面的基元為“程序級(jí)”接口所支持nop無操作mark 標(biāo)明程序地址label 標(biāo)明程序地址begin 開始一程序結(jié)構(gòu)end結(jié)束一程序結(jié)構(gòu)write 輸出數(shù)據(jù)到主機(jī)或客戶display輸出數(shù)據(jù)到客戶send 輸出數(shù)據(jù)到主機(jī)file-write 輸出數(shù)據(jù)到磁盤文件get從客戶輸入數(shù)據(jù)read 輸入數(shù)據(jù)find 定位仿真器屏幕上數(shù)據(jù)if 條件執(zhí)行else 條件執(zhí)行endif 條件執(zhí)行declare宣告存貯變量param 設(shè)定系統(tǒng)組態(tài)set設(shè)定變量值eof結(jié)束規(guī)格文件connect建立至客戶或主機(jī)的連接disconnect 斷開連接monitor監(jiān)視來自主機(jī)或客戶的數(shù)據(jù)并與期望值進(jìn)行比較pipe 在主機(jī)或客戶與監(jiān)視器間傳送數(shù)據(jù)configure 設(shè)定仿真、客戶I/O、或主機(jī)I/O組態(tài)sleep 延時(shí)capture輸入訓(xùn)練模式include插入來自子文件的命令declare-action處理和存貯一路徑文件run-action 執(zhí)行路徑文件
file-open 打開一磁盤文件file-close 關(guān)閉一磁盤文件spawn 執(zhí)行一系統(tǒng)命令作為一子過程goto流程控制loop流程控制breale 流程控制exit流程控制gosub 流程控制return 流程控制next流程控制then流程控制如上述示例中所描示的,已有程序的操作是依靠一虛擬用戶程序而不是一實(shí)際用戶進(jìn)行的。于是就支持下列功能1、由實(shí)際用戶得到的數(shù)據(jù)的序列和格式可以與原始程序所需求的不同。
2、可將用戶數(shù)據(jù)與其他來源的數(shù)據(jù)相結(jié)合提供給現(xiàn)有應(yīng)用程序。
3、可根據(jù)一單個(gè)主機(jī)上的一給定應(yīng)用程序或多個(gè)應(yīng)用程序的多個(gè)功能,或者甚至根據(jù)多個(gè)主計(jì)算機(jī)組合數(shù)據(jù)來提供給用戶。還可借助或不借助用戶的交互作用將數(shù)據(jù)由一主應(yīng)用程序傳送給另一應(yīng)用程序。這就使得可能生成新的、更復(fù)雜的功能向無需編寫新的應(yīng)用程序。
4、虛擬用戶以一交互式的實(shí)時(shí)的菜單驅(qū)動(dòng)方式進(jìn)行訓(xùn)練。本發(fā)明監(jiān)視目標(biāo)主應(yīng)用程序的實(shí)際工況并將這種工況的細(xì)節(jié)加以存貯供未來參考。主程序工況的許多方面被加以記錄,包括實(shí)際數(shù)據(jù)流的關(guān)鍵成分以及仿真的屏幕顯示的內(nèi)容。這一工況數(shù)據(jù)庫為VU模式用來成功地運(yùn)行主程序(包括出錯(cuò)情況的檢測(cè)和解釋)以及被用作一數(shù)據(jù)源以提供給人類操作員和/或傳送給應(yīng)用程序和/或不同的主應(yīng)用程序中的不同數(shù)據(jù)輸入屏幕。
5、VU模式能檢測(cè)主程序所未期望的動(dòng)作并將它們作為例外情況報(bào)告給操作人員和/或獲得工況經(jīng)驗(yàn)和所需響應(yīng)。
本發(fā)明已以ANSI C編程語言實(shí)現(xiàn)。本發(fā)明在一運(yùn)行在486級(jí)工作站上的SCO Unix操作系統(tǒng)(Santa Cruz,CA)下運(yùn)行。客戶便攜終端為能夠運(yùn)行一ANSI或VT100終端仿真程序的任何裝置。這樣的一個(gè)裝置為Janus J2010 Handheld (Everett,WA)。
本技術(shù)領(lǐng)域中的普通熟練人員將會(huì)理解,本發(fā)明可以其它特定形式來實(shí)現(xiàn)而不背離其精神實(shí)質(zhì)和基本特點(diǎn)。因而現(xiàn)在所揭示的實(shí)施例僅被作為說明用而不是限定。
<pre listing-type="program-listing"><![CDATA[// Example Path File//DECVAR answerDECVAR item_errorDECVAR itemNEW_PATH "main_menu"ACTION $new_path "main_menu" 0ACTION $cl_move "main_menu" 11 1ACTION $cl_clear "main_menu" 2YACTION $cl_send "main_menu" 3N "Do you want to run";<cr><lf>;"the program (y/n)"ACTION $cl_get "main_menu" 4answer N 1ACTION $vbranch "main_menu"5answer 5Y O "start rw" Y "y"Y O "exit" Y "n"N NN NN NEDISPATCHNEW_PATH "start_rw"ACTION $new_Path "start_rw" 0ACTION $h_pty "start_rw" 1"go_rw";""ACTION $loop "start_rw" 2Y O "nav_menus"NEW PATH "exit"ACTION $new_path "exit" 0NEW_PATH "nav menus"ACTION $new_path "nav_menus" 0ACTION $host_sync "nav_menus" 1D 0 NN 2 10 1 "H_" <esc> "[24;42H" 24 14 26 "o continue, or ESC to exit" 1 1 0EDISPATCHACTION $host_send "nav_menus" 2N <cr>ACTION $loop "nav_menus" 3 Y 0 "item_transfer"NEW_PATH "item_transfer"ACTION $new_path "item_transfer" 0ACTION $cl_clear "item_transfer" 1 YACTION $cl_move "item_transfer" 2 1 1ACTION $cl_send "item_transfer" 3 N "item"ACTION $cl_get "item_transfer" 4 item N 10ACTION $loop "item_transfer" 5 Y 0 "update_host"NEW_PATH "update_hoat"ACTION $new_path "update_host" 0ACTION $cl_clear "update_host" 1 YACTION $cl_move "update_host" 2 1 1ACTION $cl_send "update_host" 3 N "Processing Data"ACTION $host_sync "update_host" 4 D O N N 1 10 2 " " <esc> "[3;27H 0 0 0 0 0 0EDISPATCHACTION $host_send "update_host" 5 N item; <cr>ACTION $loop "update_host" 6 Y O "item_errorr"NEW_PATH "item_error"ACTION $new_path "item_error" 0ACTION $host_sync "item_error" 1 D O N N 1 10 1 " "<esc> "[24;79H" 0 0 0 0 0 0EDISPATCHACTION $host_save "item_error" 2 item_error 24 2 16ACTION $cl_clear "item_error" 3 YACTION $cl_move "item_error" 4 1 1ACTION $cl_tone "item_error" 5 YACTION $cl_send "item_error" 6 N item_error; <cr> <lf>;"Press ENTER to"; <cr> <lf>′ "continue"ACTION $cl_get "item_error"7 answer N 32ACTION $host_sync "item_error" 8 D O N N 1 10 1 " " <^G><esc> "[24;79H" 0 0 0 0 0 0ACTION $host_send "item_error" 9 Y 0 "item_transfer"END_ACTIONEOF]]></pre>
權(quán)利要求
1.一設(shè)備,用于將一在主計(jì)算機(jī)上運(yùn)行的預(yù)先存在的應(yīng)用程序的第一用戶接口翻譯成在一客戶計(jì)算機(jī)上運(yùn)行的第二用戶接口,其特征是包括有一計(jì)算機(jī),適于監(jiān)視并俘獲使用在所述主計(jì)算機(jī)上運(yùn)行的所述應(yīng)用程序的用戶的交互作用,而且還適于對(duì)所述交互作用加以變換,以使所述交互作用能在所述客戶計(jì)算機(jī)上表現(xiàn);第一通訊裝置,用于在所述計(jì)算機(jī)與所述主計(jì)算機(jī)之間進(jìn)行通信;和第二通訊裝置,用于在所述計(jì)算機(jī)與所述客戶計(jì)算機(jī)之間進(jìn)行通信;由此所述第一用戶接口被變換以在所述第二用戶接口上應(yīng)用。
全文摘要
一種用于將在一主計(jì)算機(jī)上運(yùn)行的已有應(yīng)用程序所用的第一用戶接口變換為在一客戶計(jì)算機(jī)上應(yīng)用的第二用戶接口的設(shè)備和方法。此設(shè)備從主機(jī)截取提示和輸入請(qǐng)求,將它們變換成適于在客戶計(jì)算機(jī)上應(yīng)用的形式,并將經(jīng)變換的提示和請(qǐng)求傳送給客戶。此設(shè)備可存貯在以后的提示或請(qǐng)求中應(yīng)用的信息,按存貯值轉(zhuǎn)移以改變路徑執(zhí)行,并處理由不正確輸入產(chǎn)生的差錯(cuò)。
文檔編號(hào)G06F9/00GK1150488SQ95193161
公開日1997年5月21日 申請(qǐng)日期1995年4月18日 優(yōu)先權(quán)日1994年4月19日
發(fā)明者尼爾·?;? 羅伯特·W·安東尼, 塞思·A·斯皮勒 申請(qǐng)人:奧奇德系統(tǒng)有限公司