專利名稱:產(chǎn)生顯示控制信息的方法和計(jì)算機(jī)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于產(chǎn)生控制指令從而以適合于一個(gè)由用戶和結(jié)構(gòu)使用的終端的形式顯示文件等的方法和機(jī)構(gòu),特別涉及用于以適合于用戶使用的各種終端的各種屬性、例如顯示屏的尺寸和/或通信速度等的形式輸出HTML(超文本標(biāo)記語言)文件等的方法和機(jī)構(gòu),其中各種終端可以為PDA(個(gè)人數(shù)字助手)、個(gè)人計(jì)算機(jī)(PC)、電視機(jī)或具有信息顯示功能的蜂窩電話。
此外,本發(fā)明涉及與動態(tài)產(chǎn)生一頁的設(shè)備一起用于詳細(xì)控制就一個(gè)終端的歷史機(jī)構(gòu)而論的鑒別和重新執(zhí)行的設(shè)備。
本發(fā)明特別涉及一種設(shè)備,在必需嚴(yán)格的用戶鑒別的諸如更新數(shù)據(jù)庫或顯示一頁的事務(wù)處理中,即使一頁是動態(tài)產(chǎn)生的,也可以容易地指定諸如抑制重新執(zhí)行或重新鑒別這樣的過程,并從一個(gè)應(yīng)用程序執(zhí)行該過程。
隨著基于Web的技術(shù)變得越來越普遍,應(yīng)用Web瀏覽器作為用戶界面并在Web服務(wù)器(應(yīng)用服務(wù)器)執(zhí)行應(yīng)用程序的所謂的瘦客戶類型的系統(tǒng)正得到越來越廣泛的應(yīng)用。在這種情況下,從服務(wù)器發(fā)向客戶機(jī)的信息是一個(gè)包括一個(gè)形式的HTML文件,并且只要Web瀏覽器工作在客戶機(jī)終端的情況下,可以運(yùn)行應(yīng)用程序,而不必提前把它分布或安裝到每個(gè)客戶機(jī)。并且,一般來說,可以通過應(yīng)用與應(yīng)用程序運(yùn)行在客戶機(jī)一端的情況相比具有較低總處理能力的硬件來操作客戶機(jī)一端。
在常規(guī)上已經(jīng)將低檔PC用于這樣的客戶機(jī)終端。然而,近來,Web瀏覽器已經(jīng)在具有更低處理能力和低成本的硬件上操作,例如PDA、手持PC、機(jī)頂盒和汽車導(dǎo)航系統(tǒng)等,并且已經(jīng)開發(fā)了新的終端設(shè)備,例如帶有Web瀏覽器部件的蜂窩電話。因此,相當(dāng)?shù)偷氖褂眯阅芤呀?jīng)出現(xiàn),例如,一個(gè)正好顯示在帶有大顯示區(qū)域的PC上的網(wǎng)頁在帶有小顯示區(qū)域的PDA上需要頻繁滾動操作。
在日本公開未審專利申請No.Hei 10-133973中描述的方法解決了這個(gè)問題,即提前提供了多個(gè)HTML文件和其他對應(yīng)于客戶終端的所有可能類型的附屬資源,并通過確定終端的類型對于來自客戶的每個(gè)請求返回合適的HTML文件。然而,在這種情況下存在的缺點(diǎn)是需要生成大量數(shù)據(jù),并且系統(tǒng)開發(fā)的工作負(fù)荷變得很龐大。新類型的客戶終端的工作負(fù)荷也很大。
還提出了另一種方法,即只為PC提供標(biāo)準(zhǔn)的HTML文件,并根據(jù)客戶終端的能力修改他們的內(nèi)容。例如,在終端帶有小顯示區(qū)域的情況下,產(chǎn)生縮小的圖像,并發(fā)送給客戶一個(gè)修改的HTML文件,以引用縮小的圖像。上述的日本公開未審專利申請No.Hei 10-133973還提到變換一個(gè)HTML文件,以使其適應(yīng)多個(gè)終端。然而,沒有提到關(guān)于這種變換的具體方法。
另外,日本公開未審專利申請No.Hei 10-21165公開了一種通信系統(tǒng),該系統(tǒng)轉(zhuǎn)換從服務(wù)器獲得的編輯之后的超文本,使它們的數(shù)據(jù)尺寸和數(shù)據(jù)布局適合于接收它們的客戶的物理環(huán)境和用戶生活場景。這種物理環(huán)境包括通信線的類型、終端的性能(例如是一個(gè)工作站或蜂窩電話)、顏色數(shù)和可顯示圖像的大小,等等。用戶生活場景包括諸如用戶在去辦公室的路上、出差、上班、度假等的數(shù)據(jù)。這個(gè)應(yīng)用公開了將物理環(huán)境和用戶生活場景用于選擇轉(zhuǎn)換的信息,但它沒有公開關(guān)于屏幕結(jié)構(gòu)的任何特定信息。
另外,T.W.Bickmore等的“匯編與設(shè)備無關(guān)的對萬維網(wǎng)的訪問”(http//www.fxpal.xerox.com/papers/bic97)描述了這樣一種方法,當(dāng)代理程序接收到對于一個(gè)HTML文件的請求時(shí),它從一個(gè)指定的HTTP(超文本傳輸協(xié)議)服務(wù)器取出文件,將該HTML文件分析成一個(gè)AST(抽象語法樹),并在AST上執(zhí)行預(yù)先確定的變換操作,從而生成一個(gè)新的HTML文件。在該匯編中,HTTP服務(wù)器必須首先生成一個(gè)在生成AST時(shí)需要的HTML文件。并且,由于變換的AST本身被轉(zhuǎn)換成一個(gè)HTML文件,則在生成一個(gè)HTML文件時(shí)AST本身不執(zhí)行控制。
關(guān)于一頁的重新執(zhí)行,或者可以向一個(gè)URL或HTTP標(biāo)題信息(所謂的Cookies)增加識別信息或一個(gè)對話的狀態(tài)(例如,參見Servlet功能(SUN,Java Servlet API說明書2.1版本),IBMWebSphere的對話跟蹤等)。然而,這些只能識別和恢復(fù)一個(gè)狀態(tài),而不包括控制一頁的重新執(zhí)行,而這正是本發(fā)明的一個(gè)目的。
關(guān)于在數(shù)據(jù)庫的事務(wù)處理中控制一頁的重新執(zhí)行,公知的是一種給URL編號以便限制已經(jīng)顯示的一頁的重新執(zhí)行的技術(shù)(例如,在RFC2068 HTTP 1.1說明書的13.13歷史清單中介紹的“僅有一次”URL)。然而,如果對重新執(zhí)行的鑒別狀態(tài)或控制是由對終端的應(yīng)用或相異性的處理動態(tài)改變的,則編程變得復(fù)雜(可能出現(xiàn)的情況是,僅以基本功能進(jìn)行靈活處理是不可能的,并且所有原來可重新執(zhí)行的部分不能被重新執(zhí)行)。
另外,由于網(wǎng)頁未被組織,在這樣的處理程序中的網(wǎng)頁的說明變得如此復(fù)雜,以至于在添加或刪除網(wǎng)頁的情況下出現(xiàn)了全部修改的必要,從而降低了軟件的生產(chǎn)率/可維護(hù)性和可靠性。在由終端自動分開一個(gè)網(wǎng)頁的系統(tǒng)的情況下,以這種方法很難進(jìn)行控制。
本發(fā)明的一個(gè)目的是動態(tài)產(chǎn)生文件或顯示控制信息,用于根據(jù)每個(gè)客戶終端的性能為各種性能的客戶終端提供用戶界面。
本發(fā)明的另一目的是提供一種用于使一個(gè)服務(wù)器上運(yùn)行的應(yīng)用程序與使用其處理結(jié)果的任何客戶終端無關(guān)的機(jī)構(gòu)。
另外,本發(fā)明的又一目的是將在一個(gè)服務(wù)器上運(yùn)行的應(yīng)用程序的處理和顯示處理結(jié)果的文件的生成分離,以使得即使在出現(xiàn)各種新的客戶終端時(shí),也只有文件生成部分需要改變。
本發(fā)明的又一目的是,對于應(yīng)用一個(gè)終端的歷史記錄機(jī)構(gòu)在一個(gè)過去網(wǎng)頁上的操作和請求,提供一個(gè)用于控制其重新執(zhí)行和/或重新鑒別的機(jī)構(gòu)以及一個(gè)用于容易地控制一個(gè)應(yīng)用程序的機(jī)構(gòu)。
此外,又一目的是使該控制機(jī)構(gòu)可根據(jù)終端或甚至在由一個(gè)應(yīng)用程序動態(tài)產(chǎn)生一個(gè)網(wǎng)頁時(shí)保持可操作。
另外,又一目的是從一個(gè)應(yīng)用程序消除動態(tài)產(chǎn)生一個(gè)網(wǎng)頁或應(yīng)用的任何影響,以便有可能容易地指定該控制。
本發(fā)明是一種用于產(chǎn)生顯示控制信息(例如,HTML文件)以便以一種適合于用戶使用的終端的形式顯示的方法。該方法包括下列步驟從所述終端接收一個(gè)顯示請求;響應(yīng)于該顯示請求,產(chǎn)生一組關(guān)于顯示內(nèi)容的數(shù)據(jù)對象,其中,該組數(shù)據(jù)對象是與所述終端無關(guān)的;通過利用該組數(shù)據(jù)對象和關(guān)于終端屬性的信息,產(chǎn)生一組用于產(chǎn)生顯示控制信息的查看對象;以及,通過參考關(guān)于終端屬性的信息,由該組查看對象產(chǎn)生顯示控制信息。因此,由于與任何終端無關(guān)地產(chǎn)生一組數(shù)據(jù)對象,因此即使一個(gè)新終端輸出一個(gè)顯示請求,產(chǎn)生該組數(shù)據(jù)對象的部分也不必被改變。另外,只要請求內(nèi)容相同,該組數(shù)據(jù)對象本身也不需改變。同時(shí),終端可以是諸如普通PC、PDA、電視機(jī)和帶有瀏覽器的蜂窩電話等設(shè)備。
此外,還可以包括下列步驟從所述終端接收終端(類型)識別信息;并從該終端識別信息獲得關(guān)于終端屬性的信息。為了獲得關(guān)于終端屬性的信息,可以采取許多方法,例如提前成對存儲終端類型識別信息和關(guān)于終端屬性的信息,并在第一次訪問時(shí)輸入關(guān)于終端屬性的信息,等等。
上述產(chǎn)生一組查看對象的步驟還可以包括下列步驟產(chǎn)生該組查看對象的一個(gè)根對象;并由根對象產(chǎn)生子對象。根對象還可以具有通過參考關(guān)于終端屬性的信息產(chǎn)生子對象的方法。若需要這些子對象生成第三代對象。
數(shù)據(jù)對象可以保留用于產(chǎn)生相應(yīng)的查看對象以及由查看對象產(chǎn)生顯示控制信息的指令信息。指令信息包括對象的優(yōu)先級、是否是可以分開的信息以及是否是可以概括的信息,等等。另外,關(guān)于終端屬性的信息包括終端的屏幕尺寸、通信速度、高寬比和顏色數(shù)。此外,雖然在這些實(shí)施例中的顯示控制信息是超文本標(biāo)記語言(HTML)的形式,它還可以為其他任何標(biāo)記語言。
上述產(chǎn)生顯示控制信息的步驟還可以包括一個(gè)通過參考關(guān)于終端屬性的信息從該組查看對象的根對象開始順序地產(chǎn)生可響應(yīng)部分的顯示控制信息的步驟。根對象為整個(gè)網(wǎng)頁產(chǎn)生顯示控制信息,子對象為網(wǎng)頁內(nèi)容產(chǎn)生顯示控制信息。由于查看對象參考了關(guān)于終端屬性的信息,所以即使這些查看對象相同,也可能產(chǎn)生不同的顯示控制信息。
在本發(fā)明中,如果來自相同終端的顯示請求與前一個(gè)顯示請求相關(guān),可以進(jìn)一步執(zhí)行下列步驟響應(yīng)于來自終端的顯示請求,判定是否需要根據(jù)該請求產(chǎn)生一組新的數(shù)據(jù)對象;如果不需要產(chǎn)生一組新的數(shù)據(jù)對象,則用該組查看對象中的相關(guān)查看對象產(chǎn)生相應(yīng)于該顯示請求的顯示控制信息。如果不需要改變數(shù)據(jù)對象,則查看對象可以新產(chǎn)生響應(yīng)于新請求的顯示控制信息。然而,在有些情況下,雖然不需要新生成一組數(shù)據(jù)對象,但可能必須生成所需的查看對象。
如上所述,由于數(shù)據(jù)對象和查看對象是根據(jù)需要產(chǎn)生的,所以在產(chǎn)生它們之前存在于服務(wù)器中的是下列模塊一個(gè)響應(yīng)于終端的顯示請求產(chǎn)生一組關(guān)于顯示內(nèi)容的數(shù)據(jù)對象的模塊,其中該組數(shù)據(jù)對象與終端無關(guān);一個(gè)利用該組數(shù)據(jù)對象和關(guān)于終端屬性的信息產(chǎn)生一個(gè)根查看對象的模塊,其中根查看對象用于產(chǎn)生顯示控制信息;以及一個(gè)用于命令根查看對象產(chǎn)生其子查看對象的模塊;以及一個(gè)用于命令根查看對象產(chǎn)生顯示控制信息的模塊。
服務(wù)器還可以包括一個(gè)用于從終端所接收的終端(類型)識別信息產(chǎn)生關(guān)于終端屬性的信息。
上述的子查看對象可以具有一個(gè)用于產(chǎn)生其子對象的方法,并且根查看對象命令其子查看對象產(chǎn)生顯示控制信息。另外,查看對象還可以包括一個(gè)根查看對象和子查看對象,其中該查看對象具有一個(gè)通過參考關(guān)于終端屬性的信息產(chǎn)生顯示控制信息的方法。
如果上述說明的本發(fā)明在一個(gè)程序內(nèi)實(shí)施,則程序可以存儲在例如CD-ROM和FD(軟盤)的存儲介質(zhì)中。
為了控制歷史記錄中的網(wǎng)頁的重新執(zhí)行、重新鑒別等,在開發(fā)一個(gè)應(yīng)用時(shí)將網(wǎng)頁定義集合成組。這個(gè)組可以進(jìn)一步包括另一個(gè)子組,從而整個(gè)網(wǎng)頁定義形成一個(gè)樹結(jié)構(gòu)。這些網(wǎng)頁定義可以被包括在一個(gè)用于產(chǎn)生顯示控制信息的指令信息中。對這個(gè)指令信息中的網(wǎng)頁定義執(zhí)行分組。因此,有可能僅僅通過指定一個(gè)任意組名來容易靈活地指定一組網(wǎng)頁,這將在后面提到,它們的重新執(zhí)行被禁止,或者它們的鑒別狀態(tài)被改變。
在執(zhí)行時(shí),除了產(chǎn)生顯示控制信息的步驟,還包括下列步驟判定是否已經(jīng)執(zhí)行了歷史記錄中的一個(gè)網(wǎng)頁的重新執(zhí)行;如果該網(wǎng)頁被重新執(zhí)行了,并且存在處理狀態(tài)的高速緩存,則恢復(fù)處理狀態(tài);處理一個(gè)應(yīng)用,并在此時(shí)將處理狀態(tài)存儲進(jìn)一個(gè)高速緩存;根據(jù)處理一個(gè)應(yīng)用的結(jié)果,清除對應(yīng)于由該組網(wǎng)頁定義所指定網(wǎng)頁的處理狀態(tài)。
此外,除了產(chǎn)生顯示控制信息和控制在歷史記錄中的網(wǎng)頁的重新執(zhí)行的步驟,還包括下列步驟檢查在歷史記錄中的一個(gè)網(wǎng)頁是否需要鑒別以及它的鑒別狀態(tài)是什么;在需要鑒別時(shí)確保進(jìn)行鑒別;根據(jù)處理一個(gè)應(yīng)用的結(jié)果,修改歷史記錄中的一個(gè)網(wǎng)頁的鑒別狀態(tài)。然而,就象在控制重新執(zhí)行中一樣,鑒別狀態(tài)的修改可以由一個(gè)應(yīng)用程序開發(fā)者通過指定一組網(wǎng)頁定義而容易地指定。
圖1是顯示本發(fā)明的整個(gè)系統(tǒng)的方框圖。
圖2是HTTP服務(wù)器100內(nèi)的功能方框圖。
圖3是圖2中的控制器的功能方框圖。
圖4是說明HTTP服務(wù)器100的處理的流程圖。
圖5是顯示處理概況的一個(gè)例子的示意圖。
圖6是說明圖4中所示步驟1070的處理的流程圖。
圖7是說明圖6中所示步驟1072的處理的流程圖。
圖8是說明圖6中所示步驟1075的處理的流程圖。
圖9是顯示處理概況的一個(gè)例子的示意圖。
圖10是顯示處理概況的一個(gè)例子的示意圖。
圖11是顯示處理概況的一個(gè)例子的示意圖。
圖12是顯示關(guān)于終端屬性的信息內(nèi)容的一個(gè)例子的示意圖。
圖13是用于產(chǎn)生數(shù)據(jù)對象的功能方框圖。
圖14是顯示應(yīng)用定義文件的一個(gè)例子的示意圖。
圖15是顯示指定對圖14的應(yīng)用定義文件的重新執(zhí)行控制的一個(gè)例子的示意圖。
圖16是圖15的一個(gè)餐館的例子,特別顯示了在預(yù)約處理過程的部分中的網(wǎng)頁定義樹。
圖17是顯示包含一個(gè)數(shù)據(jù)庫規(guī)定的定義文件的例子的示意圖。
圖18是顯示一組數(shù)據(jù)對象的例子的示意圖。
圖19是顯示由應(yīng)用對象定義的屬性的例子的示意圖。
圖20是用于說明為大屏幕產(chǎn)生查看對象的處理的示意圖。
圖21是用于說明為大屏幕產(chǎn)生查看對象的處理的示意圖。
圖22是用于說明為大屏幕產(chǎn)生查看對象的處理的示意圖。
圖23是表示一組用于大屏幕的查看對象的示意圖。
圖24是用于說明對圖23中的查看對象組的處理以輸出一個(gè)HTML文件的示意圖。
圖25是用于說明對圖23中的查看對象組的處理以輸出一個(gè)HTML文件的示意圖。
圖26是用于說明對圖23中的查看對象組的處理以輸出一個(gè)HTML文件的示意圖。
圖27是用于說明為小屏幕產(chǎn)生查看對象的處理的示意圖。
圖28是用于說明為小屏幕產(chǎn)生查看對象的處理的示意圖。
圖29是表示一組用于小屏幕的查看對象的示意圖。
圖30是用于說明對圖23中的查看對象組的處理以輸出一個(gè)HTML文件的示意圖。
圖31是沿時(shí)間順序說明本發(fā)明的操作的示意圖,通過將餐館的預(yù)約處理作為一個(gè)例子,描述一個(gè)與處理相結(jié)合來控制一個(gè)網(wǎng)頁的重新執(zhí)行的設(shè)備。
圖32是應(yīng)用餐館的預(yù)約處理例子說明如何禁止重新執(zhí)行的示意圖。
圖33是一個(gè)餐館的預(yù)約處理的例子的示意圖,說明即使屏幕結(jié)構(gòu)(由于終端屬性)動態(tài)改變,一個(gè)重新執(zhí)行控制設(shè)備也會不出現(xiàn)任何問題地工作。100HTTP服務(wù)器110網(wǎng)絡(luò)120-150客戶終端210控制器220數(shù)據(jù)服務(wù)設(shè)備230HTML發(fā)生器240DB250終端DB本發(fā)明能夠動態(tài)地產(chǎn)生文件或顯示控制信息,以便向各種性能的客戶終端提供用戶接口。
另外,能夠成功地提供一種機(jī)構(gòu),以使一個(gè)應(yīng)用在服務(wù)器上與使用該應(yīng)用的處理結(jié)果的客戶終端無關(guān)地執(zhí)行。
此外,在服務(wù)器上執(zhí)行的應(yīng)用的處理可以成功地與產(chǎn)生表示處理結(jié)果的顯示文件相分離,以便即使新出現(xiàn)了各種客戶終端,也只有產(chǎn)生顯示文件這部分被改變。
另外,對于應(yīng)用終端的瀏覽器的屏幕重新顯示功能對歷史記錄中的網(wǎng)頁進(jìn)行的重新執(zhí)行,可以通過來自應(yīng)用程序的簡單說明根據(jù)應(yīng)用處理成功地實(shí)現(xiàn)靈活的重新執(zhí)行和鑒別控制。還可以成功地表示出,該個(gè)說明方便地將一個(gè)應(yīng)用處理描述為一個(gè)網(wǎng)頁組,在動態(tài)組成一個(gè)網(wǎng)頁時(shí)它也很有效。
首先,通過圖1說明了與本發(fā)明相關(guān)的整個(gè)系統(tǒng)。圖1顯示了與本發(fā)明相關(guān)的Web服務(wù)器100、普通PC 120、電視機(jī)130、便攜式計(jì)算機(jī)140和帶有內(nèi)裝Web瀏覽器的蜂窩電話150,所有這些都通過網(wǎng)絡(luò)110相連。PC 120、電視機(jī)130和便攜式計(jì)算機(jī)140具有一個(gè)Web瀏覽器,并從HTTP服務(wù)器100獲得信息??蛻艚K端可以是具有Web瀏覽器的其他設(shè)備。由于蜂窩電話150是與網(wǎng)絡(luò)110無線相連的,它通過圖1中的虛線與網(wǎng)絡(luò)110相連。因此,與網(wǎng)絡(luò)110相連的計(jì)算機(jī)在它們的顯示屏尺寸、通信速度、吞吐量和可操作性方面是各自不同的。因此,要在各個(gè)顯示器上顯示的文件最好是適合于各個(gè)終端的容量的。使顯示文件適合于一個(gè)終端的方法可以包括在終端一邊解決這個(gè)問題。然而,依據(jù)本發(fā)明,在下面的說明中設(shè)計(jì)了HTTP服務(wù)器100。
圖2顯示了這個(gè)HTTP服務(wù)器100的功能方框圖。
圖3顯示了在HTTP服務(wù)器100的功能方框圖中的控制器210的子功能的詳細(xì)方框圖。
如圖2所示,HTTP服務(wù)器100包括控制器210、DB 240、數(shù)據(jù)服務(wù)設(shè)備220、HTML發(fā)生器230和終端DB 250。它可以不包括DB240。
控制器210從客戶終端120至150接收各種參數(shù),并返回對應(yīng)于這些參數(shù)的合適的HTML文件。為此,它控制數(shù)據(jù)服務(wù)設(shè)備220和HTML發(fā)生器230的操作。在Web應(yīng)用中,來自同一客戶終端的一系列請求常常是要處理的一個(gè)單元。因此,需要從多個(gè)請求中識別來自同一客戶的請求,并且,即使當(dāng)HTML文件的產(chǎn)生完成時(shí),也需要作為一個(gè)應(yīng)用繼續(xù)操作,而不釋放資源并保持它們的狀態(tài),以便為下一次訪問作準(zhǔn)備。
在這里,客戶終端的一系列訪問被稱為一個(gè)對話。因此,控制器210管理一個(gè)對話,并判定一個(gè)請求是否屬于一個(gè)現(xiàn)有的對話或者是否應(yīng)該啟動一個(gè)新的對話。還可以訪問終端DB 250,以便從可從客戶終端120至150獲得的識別信息來獲得關(guān)于終端屬性的信息,并向HTML發(fā)生器230輸出關(guān)于終端屬性的信息。數(shù)據(jù)服務(wù)設(shè)備220和HTML發(fā)生器230還可以分別訪問終端DB 250。
如圖3所示,為了控制一個(gè)網(wǎng)頁的重新執(zhí)行和鑒別等,控制器210包括對話識別設(shè)備211、網(wǎng)頁管理器212、網(wǎng)頁管理DB 213、應(yīng)用處理設(shè)備214和網(wǎng)頁重新執(zhí)行控制器215的詳細(xì)功能。
對話識別設(shè)備211分析從一個(gè)終端發(fā)送的一個(gè)參數(shù),并識別哪一個(gè)對話引起來自一個(gè)終端的請求,以便識別出對于一個(gè)對話唯一的數(shù)據(jù)。同樣,它分析一個(gè)參數(shù),以確定瀏覽器的歷史記錄中的一個(gè)網(wǎng)頁是否被重新執(zhí)行以及/或該網(wǎng)頁是否需要鑒別,以使得網(wǎng)頁管理器212識別一個(gè)必需的網(wǎng)頁并從網(wǎng)頁管理DB 213取出必需的信息,以恢復(fù)鑒別和/或重新執(zhí)行所需的過去處理狀態(tài)。如果網(wǎng)頁管理器212的處理結(jié)束或者如果不需要這種處理,則處理轉(zhuǎn)到應(yīng)用處理設(shè)備214。
應(yīng)用處理設(shè)備214執(zhí)行對一個(gè)Web應(yīng)用唯一的處理。例如,在一個(gè)銀行應(yīng)用中,執(zhí)行實(shí)際的銀行業(yè)務(wù)。在這個(gè)處理結(jié)果的基礎(chǔ)上,網(wǎng)頁重新執(zhí)行控制器215更新網(wǎng)頁管理DB 213。也就是說,如果一個(gè)處理禁止過去網(wǎng)頁的重新執(zhí)行,則它從網(wǎng)頁管理DB 213中除去重新執(zhí)行一個(gè)過程所需的狀態(tài)高速緩存。
由于數(shù)據(jù)服務(wù)設(shè)備220必須執(zhí)行諸如來自客戶終端120至150的檢索請求等處理請求,它包括一個(gè)用于根據(jù)需要訪問DB 240以便產(chǎn)生一組數(shù)據(jù)對象的部分以及該組數(shù)據(jù)對象本身,該組數(shù)據(jù)對象本身訪問DB 240以代表它們的內(nèi)容并處理一個(gè)對話。這組數(shù)據(jù)對象是為每個(gè)對話產(chǎn)生的,在這個(gè)實(shí)施例中根據(jù)網(wǎng)頁的文件結(jié)構(gòu)被構(gòu)造為一個(gè)樹結(jié)構(gòu),其根是一個(gè)代表整個(gè)處理的對象。對應(yīng)于葉的對象是一些對應(yīng)于諸如字符串和圖象的數(shù)據(jù)的對象。但其并不限于樹結(jié)構(gòu)。
HTML發(fā)生器230包括一個(gè)利用來自一組數(shù)據(jù)對象和終端DB 250的信息產(chǎn)生一組查看對象的部分以及該組查看對象本身。如果一個(gè)根查看對象從控制器210接收到產(chǎn)生一個(gè)HTML文件的命令,該組查看對象從根查看對象開始順序地輸出一個(gè)HTML文件。從終端DB 250獲得的信息也用在這個(gè)HTML文件輸出中。從一組數(shù)據(jù)對象產(chǎn)生的一組查看對象的結(jié)構(gòu)根據(jù)從終端DB 250獲得的信息而改變,并且由一組查看對象輸出的HTML文件也改變。也就是說,即使產(chǎn)生了相同組的數(shù)據(jù)對象,該組查看對象的結(jié)構(gòu)也可能改變,并且即使該組查看對象相同,輸出的HTML文件也可能不同。如果產(chǎn)生了一整個(gè)HTML文件,將其從控制器210傳輸?shù)秸埱笤撐募目蛻艚K端120至150。用于產(chǎn)生一組查看對象的部分和該組查看對象本身還可以參考后面將要提到的其他參數(shù)。
在當(dāng)前的HTTP服務(wù)器100中,利用被稱為CGI(公共網(wǎng)關(guān)接口)或小服務(wù)程序(參見Sun微系統(tǒng)公司的Java,JDK 1.2,“http//jserv.javasoft.com/products/java-server/servlets/”)的機(jī)構(gòu)動態(tài)產(chǎn)生一個(gè)HTML文件。下面描述一個(gè)應(yīng)用小服務(wù)程序?qū)嵤┑睦?。這是因?yàn)楦鶕?jù)需要為一個(gè)Web應(yīng)用連續(xù)保存數(shù)據(jù)是很容易的,并且滿足本發(fā)明的下述要求。但也可以用一個(gè)CGI實(shí)施。在這種情況下,為了執(zhí)行與一個(gè)由CGI激活的處理的處理間通信,應(yīng)用一個(gè)后臺處理。還可以以Web代理服務(wù)器的形式實(shí)施本發(fā)明所需的部分。
下面參考圖4說明HTTP服務(wù)器100的整個(gè)處理。首先,從客戶終端120至150接收一個(gè)顯示請求(步驟1005)。這個(gè)顯示請求采用例如包含在一個(gè)URL(統(tǒng)一資源定位器)和一個(gè)HTTP標(biāo)題中的用戶代理字段。例如,一個(gè)URL是“http//aServer/servlet/RestaurantDemo”,一個(gè)HTTP標(biāo)題的用戶代理字段是“deviceID”。用戶代理字段用于從終端DB 250獲得以后要使用的關(guān)于終端屬性的信息。然后,從URL判定是否是一個(gè)新對話(步驟1010)。如果是一個(gè)新對話,則由于URL不包含對話=對話號,轉(zhuǎn)移到步驟1020。另一方面,如果不是一個(gè)新對話,由于URL包含對話=對話號,則采用該對話號。
在新對話的情況下,數(shù)據(jù)訪問設(shè)備220首先產(chǎn)生一組與所請求顯示內(nèi)容相關(guān)的數(shù)據(jù)對象(步驟1020)。后面將說明產(chǎn)生數(shù)據(jù)對象的過程。
接著,由HTML發(fā)生器230產(chǎn)生一個(gè)根查看對象(步驟1030)。這個(gè)查看對象具有一個(gè)產(chǎn)生子查看對象的方法(或請求子查看對象發(fā)生器生成子查看對象的方法)和一個(gè)產(chǎn)生HTML文件的方法。在一個(gè)表中登記一對根查看對象和對話號。這個(gè)表在步驟1010使用。然后,利用產(chǎn)生的一組數(shù)據(jù)對象和關(guān)于終端屬性的信息順序地產(chǎn)生根查看對象之后的查看對象。這個(gè)過程在后面用一個(gè)例子進(jìn)行說明。當(dāng)所需的查看對象組產(chǎn)生時(shí),由控制器210命令根查看對象產(chǎn)生一個(gè)HTML文件(步驟1050)。已經(jīng)接收到這個(gè)命令的根查看對象產(chǎn)生其職責(zé)內(nèi)的一個(gè)HTML文件,然后請求其子查看對象產(chǎn)生HTML文件的一部分。然后,子查看對象和那些跟在其后的子查看對象產(chǎn)生它們的職責(zé)內(nèi)的HTML文件的一部分(步驟1060)??刂破?10將產(chǎn)生的HTML文件傳輸給客戶終端(步驟1065)。
圖5以圖解的方式顯示了至此的處理。首先,控制器210接收HTTP的用戶代理字段和一個(gè)URL。然后,數(shù)據(jù)服務(wù)設(shè)備220由從控制器210接收的URL信息產(chǎn)生一組數(shù)據(jù)對象。另一方面,利用用戶代理字段獲得關(guān)于終端屬性的信息。然后,控制器210命令HTML發(fā)生器230產(chǎn)生一個(gè)根查看對象,HTML發(fā)生器230參考該組數(shù)據(jù)對象的根對象和關(guān)于終端屬性的信息,產(chǎn)生一個(gè)根查看對象。對于根查看對象之外的對象,一個(gè)父查看對象參考該組數(shù)據(jù)對象和關(guān)于終端屬性的信息,產(chǎn)生子查看對象。如果產(chǎn)生的根查看對象被控制器210命令產(chǎn)生一個(gè)HTML文件,則由接著根查看對象的每個(gè)查看對象產(chǎn)生如圖5所示的HTML文件,所述文件被輸出給一個(gè)客戶終端。
如果不是一個(gè)新對話,由于對話號存在于URL中,則將接收到的參數(shù)輸出給一個(gè)對應(yīng)于這個(gè)對話號的根查看對象(步驟1070)。然后,從對話號之外的參數(shù)判定是否已經(jīng)產(chǎn)生所必需的查看對象(步驟1080)。這可以在接收到參數(shù)時(shí)由根查看對象本身或由根查看對象之后的任何查看對象來判定。如果已經(jīng)產(chǎn)生所必需的查看對象,轉(zhuǎn)到步驟1060(或步驟1050)。也就是說,每個(gè)查看對象應(yīng)用關(guān)于終端屬性的信息輸出其所負(fù)責(zé)的一個(gè)HTML文件的一部分,并將產(chǎn)生的HTML文件傳輸給客戶終端。
下面將參考圖6進(jìn)一步說明步驟1070。進(jìn)一步將步驟1070分成用于網(wǎng)頁控制,例如一個(gè)過去網(wǎng)頁鑒別和重新執(zhí)行控制,的幾個(gè)子步驟。首先,分析從終端發(fā)送的一個(gè)參數(shù),判定是否需要網(wǎng)頁控制(步驟1071),如果需要,執(zhí)行網(wǎng)頁管理控制(步驟1072)。例如,如果由用戶重新執(zhí)行瀏覽器的歷史記錄中的一個(gè)網(wǎng)頁,由于嵌在一個(gè)請求的URL或HTTP標(biāo)題中的網(wǎng)頁識別設(shè)備可以顯示出一個(gè)過去的網(wǎng)頁被重新執(zhí)行,應(yīng)用識別符作為密鑰從網(wǎng)頁管理DB恢復(fù)該網(wǎng)頁被顯示時(shí)的處理狀態(tài)。同樣,還可以通過在需要鑒別的網(wǎng)頁的URL或HTTP標(biāo)題中嵌入一個(gè)鑒別標(biāo)志來執(zhí)行對這樣一個(gè)網(wǎng)頁的鑒別。
下面參考圖7進(jìn)一步說明步驟1072。作為步驟1072的網(wǎng)頁管理控制,具體地為一個(gè)網(wǎng)頁的鑒別或過去網(wǎng)頁的重新執(zhí)行做好準(zhǔn)備。上述附圖代表了這些子步驟。首先,分析從終端發(fā)送的一個(gè)參數(shù),確定在瀏覽器的歷史記錄中的某網(wǎng)頁是否已經(jīng)被使用(步驟107201)。在這里,如果使用了在歷史記錄中不存在的新網(wǎng)頁,則不進(jìn)行這個(gè)子流程,從而進(jìn)行到下一個(gè)過程。如果是歷史記錄中的過去網(wǎng)頁,則參考網(wǎng)頁管理DB 213,以便檢查是否有過去處理狀態(tài)的一個(gè)高速緩存(步驟017202)。如果沒有高速緩存,這意味著重新執(zhí)行被禁止,則跳轉(zhuǎn)到一個(gè)適當(dāng)?shù)腻e(cuò)誤處理(步驟107206)。如果有高速緩存,則應(yīng)用其恢復(fù)一個(gè)處理狀態(tài)(步驟107203)。接著,應(yīng)用一個(gè)樹結(jié)構(gòu)來判定該網(wǎng)頁是否需要鑒別(步驟107204)。這個(gè)判定是通過應(yīng)用樹結(jié)構(gòu)檢查該網(wǎng)頁是否屬于一個(gè)需要鑒別的網(wǎng)頁組來執(zhí)行的。如果不需要鑒別,則進(jìn)行到子流程中的下一個(gè)過程。如果需要鑒別,根據(jù)一個(gè)包括在從終端發(fā)送的一個(gè)參數(shù)中或網(wǎng)頁管理DB 213中的鑒別標(biāo)志上是否檢查網(wǎng)頁鑒別無效,以便確定鑒別是否有效(步驟107205)。如果鑒別有效,進(jìn)行到下一過程。如果無效,跳轉(zhuǎn)到在步驟107206的一個(gè)錯(cuò)誤處理。
下面再參考圖6。
接著,執(zhí)行一個(gè)應(yīng)用的初始過程(1073)。例如,在一個(gè)銀行應(yīng)用的情況下,執(zhí)行指定的銀行業(yè)務(wù)。此時(shí),將執(zhí)行該應(yīng)用之后的狀態(tài)高速緩存進(jìn)網(wǎng)頁管理DB,以備瀏覽器的歷史記錄中的網(wǎng)頁的重新執(zhí)行所使用。此外,在這個(gè)處理結(jié)果的基礎(chǔ)上,判定網(wǎng)頁控制是否已經(jīng)改變(1074),并且如果需要的話更新網(wǎng)頁管理DB。例如,如果數(shù)據(jù)庫被提交,則必須禁止數(shù)據(jù)庫的一個(gè)更新過程網(wǎng)頁的重新執(zhí)行。也就是說,清除網(wǎng)頁管理DB的處理狀態(tài)中的一個(gè)適當(dāng)?shù)母咚倬彺?。作為另一個(gè)例子,如果一個(gè)處理結(jié)果被鑒別(或直到鑒別被舍棄前),更新網(wǎng)頁管理DB的適當(dāng)部分。
下面參考圖8進(jìn)一步說明步驟1075。隨著步驟1075中的網(wǎng)頁管理DB的更新,重新執(zhí)行網(wǎng)頁鑒別無效或禁止一個(gè)過去網(wǎng)頁。上述附圖表示了這些子步驟。首先,檢查在步驟1075之前的一個(gè)步驟(1073)執(zhí)行一個(gè)應(yīng)用程序的結(jié)果,以便根據(jù)該執(zhí)行結(jié)果判定是否禁止一特定網(wǎng)頁組的重新執(zhí)行(步驟107501)。如果必須禁止重新執(zhí)行,則根據(jù)在一個(gè)應(yīng)用程序中指定的網(wǎng)頁組名和網(wǎng)頁定義的樹結(jié)構(gòu)計(jì)算該網(wǎng)頁組(步驟107502)。接著,從網(wǎng)頁管理DB 213除去對應(yīng)于屬于該適當(dāng)網(wǎng)頁組的一個(gè)網(wǎng)頁的處理狀態(tài)的高速緩沖存儲(步驟107503)。如果不必禁止重新執(zhí)行,則跳過步驟107502和107503。類似地,從一個(gè)應(yīng)用的處理結(jié)果判定鑒別是否應(yīng)該被無效(步驟107504)。如果必須將鑒別無效,同樣根據(jù)網(wǎng)頁定義的樹結(jié)構(gòu)計(jì)算其鑒別應(yīng)該被無效的網(wǎng)頁組(步驟107505)。在步驟107506,使屬于該適當(dāng)?shù)木W(wǎng)頁組的網(wǎng)頁的鑒別無效。如果不必使鑒別無效,則跳過步驟107505和107506。
下面再參考圖4。
另一方面,如果判定出必須的查看對象還未產(chǎn)生,則判定是否需要新的數(shù)據(jù)對象(步驟1090)。如果需要新數(shù)據(jù),則由于該數(shù)據(jù)可能不能從在此之前產(chǎn)生的數(shù)據(jù)對象中得到,所以在需要時(shí)請求數(shù)據(jù)服務(wù)設(shè)備220產(chǎn)生數(shù)據(jù)對象(轉(zhuǎn)到步驟1020)。如果相同的對話需要新數(shù)據(jù)對象,由于這意味著產(chǎn)生原始數(shù)據(jù)對象的子樹,則不執(zhí)行在步驟1030登記一個(gè)對話號的過程。此后,產(chǎn)生對應(yīng)于新產(chǎn)生的數(shù)據(jù)對象的查看對象,并且查看對象產(chǎn)生一個(gè)HTML文件。
如果在步驟1090不需要產(chǎn)生新的數(shù)據(jù)對象,則一個(gè)查看對象參考一組數(shù)據(jù)對象和關(guān)于終端屬性的信息產(chǎn)生所必須的子查看對象,并轉(zhuǎn)到步驟1060(或步驟1050)(步驟1100)。也就是說,每個(gè)查看對象應(yīng)用關(guān)于終端屬性的信息輸出其所負(fù)責(zé)的HTML文件的一部分,并將產(chǎn)生的HTML文件傳輸給一個(gè)客戶終端。
下面采用圖5的例子部分地說明在步驟1070之后的處理。圖9顯示了用戶從圖5的HTML文件選擇出ABC的情況。以HTTP的用戶代理字段顯示的設(shè)備ID與在圖5中一樣使用。另一方面,URL例如變?yōu)椤癶ttp//aServer/servlet/RestaurantDemo?session=1 & ABC=selected”,從部分session=1它被識別為與圖5相同的對話。另外,從部分ABC=selected可以了解到選擇了圖5的ABC,同時(shí)判定查看對象需要新的數(shù)據(jù)對象。因此,數(shù)據(jù)服務(wù)設(shè)備220新產(chǎn)生一組數(shù)據(jù)對象。然后,應(yīng)用關(guān)于終端屬性的信息產(chǎn)生一組查看對象。在這個(gè)例子中,在產(chǎn)生一個(gè)HTML文件時(shí),在該組查看對象中只有被虛線包圍的查看對象通過參考關(guān)于終端屬性的信息輸出一個(gè)HTML文件。然后,在底部顯示產(chǎn)生的HTML文件。在這種情況下,產(chǎn)生一個(gè)“下一頁”按鈕(或超鏈接)。
圖10顯示了用戶命令圖9中的“下一頁”的情況。以相同方式處理HTTP的用戶代理字段。URL例如是“http//aServer/servlet/RestaurantDemo?session=1 & next=pressed”,從部分session=1它被識別為與圖5相同的對話。另外,從部分next=pressed可以了解到圖9的“下一頁”按鈕被按下。然而,判定出現(xiàn)有的查看對象已足夠了。在這種情況下,數(shù)據(jù)對象和查看對象不作任何改變,在該查看對象組中用虛線顯示的部分輸出一個(gè)HTML文件。這個(gè)HTML文件包含一個(gè)“前一頁”按鈕(或超鏈接)和一個(gè)“下一頁”按鈕(或超鏈接)。
下面是“下一頁”按鈕(或用于返回前一頁的“前一頁”按鈕)的例子。<a href=”/servlet/Restaurant?session=1 & next=pressed”>
Next</a>
在亮點(diǎn)標(biāo)簽中,不僅可以指定一個(gè)僅由字符組成的字符串,還可以指定一個(gè)按鈕圖象。作為亮點(diǎn)標(biāo)簽的一個(gè)屬性值,描述帶有一個(gè)參數(shù)的URL。如果用戶點(diǎn)擊這個(gè)超鏈接,從終端傳輸這個(gè)URL,將參數(shù)傳遞給本發(fā)明的一個(gè)控制器,并將next=pressed參數(shù)傳遞給用對話參數(shù)指定的一組查看對象。從next=pressed檢測到“下一頁”按鈕被按下之后,查看對象的HTML發(fā)生程序在下一網(wǎng)頁上輸出一個(gè)HTML文件。
圖11顯示了用戶進(jìn)一步命令圖10中的“下一頁”的情況。以相同方式處理HTTP的用戶字段。URL例如是“http//aServer/servlet/RestaurantDemo?session=1 & next=pressed”,從部分session=1它被識別為與圖5相同的對話。另外,從部分next=pressed和查看對象的內(nèi)部狀態(tài)可以了解到圖10的“下一頁”按鈕被按下。在這里判定該組查看對象需要新的查看對象。在這種情況下,參考以前產(chǎn)生的數(shù)據(jù)對象組和關(guān)于終端屬性的信息產(chǎn)生所必須的查看對象。在這里,除了根查看對象之外的由虛線顯示的部分是新產(chǎn)生的。然后,在由虛線顯示的部分中的查看對象組在參考關(guān)于終端屬性的信息的同時(shí)產(chǎn)生一個(gè)HTML文件。
下面說明在前面未詳細(xì)描述的關(guān)于終端屬性的信息。在圖5至圖11的例子中,關(guān)于終端屬性的信息是從包含在HTTP用戶代理字段中的設(shè)備ID獲得的,與包括在終端DB 250中的信息相對應(yīng)。例如,提供了一個(gè)對應(yīng)表,在表中,這種關(guān)于終端屬性的信息可以從設(shè)備ID獲得。關(guān)于終端屬性的信息可以包括圖12中所示的內(nèi)容。例如,ScreenSize(屏幕尺寸)、ScreenRatio(高寬比)、ScreenQuality(屏幕細(xì)度)、ColorDepth(顏色數(shù))、ModemSpeed(通信速度)、Image(圖象是否可用)、Table(表是否可用)、Frame(幀是否可用)、ScrollBar(是否可以滾動)、PointingDevice(指點(diǎn)設(shè)備是否可用),等等。圖12的右列顯示了相應(yīng)值的例子。同時(shí),不必為所有設(shè)備ID指定所有項(xiàng)。并且,每行的值還可以采用其他值。
此外,還可以執(zhí)行進(jìn)一步階段的處理。也就是說,提供了一個(gè)終端屬性的規(guī)則庫,以便從如圖12中的用于變換顯示結(jié)構(gòu)和產(chǎn)生顯示指令的終端特征值產(chǎn)生更通用的終端屬性。還可以例如通過確定一單個(gè)參數(shù)的范圍而不是一個(gè)具體的數(shù)字值來對其進(jìn)行分類,例如在ModemSpeed小于14.4K情況下的低通信速度,在ModemSpeed大于56K情況下的高通信速度,在其他情況下的中間速度,等等,并從多個(gè)參數(shù)產(chǎn)生終端屬性,例如由于無指點(diǎn)設(shè)備和慢通信速度等造成的慢顯示圖象順序表示。
另外,上面只解釋了一個(gè)對話的開始,如果有結(jié)束指令的話,由用戶的明確的結(jié)束指令來結(jié)束一個(gè)對話,如果沒有明確的結(jié)束指令,在從上一次訪問經(jīng)過一預(yù)定時(shí)間后結(jié)束對話。如果一個(gè)對話結(jié)束,釋放由一組數(shù)據(jù)對象和一組查看對象使用的資源。
下面是對如何產(chǎn)生一個(gè)數(shù)據(jù)對象的簡要說明。一個(gè)Web應(yīng)用內(nèi)容生成器生成應(yīng)用定義文件300(圖13)。應(yīng)用定義文件300是用一種定義語言描述的。這種語言可以被定義為一種獨(dú)特的標(biāo)記語言,例如采用XML(W3C,“可擴(kuò)充標(biāo)記語言(XML)1.0”,http//www.w3.org/TR/1998/REC-xml-19980210)??梢詫D14的描述作為關(guān)于餐館服務(wù)的例子。
在這種情況下,這里要定義的餐館信息服務(wù)包括(對應(yīng)于顯示器上的網(wǎng)頁的)兩個(gè)過程檢索餐館和顯示餐館信息,顯示餐館信息的過程還包括餐館信息的顯示項(xiàng)和返回檢索頁的鏈接。同樣,餐館信息項(xiàng)包括在其以下級別的顯示項(xiàng)。在圖14中進(jìn)行了部分省略。在生成這樣一個(gè)定義文件中,內(nèi)容生成器或者可以應(yīng)用一個(gè)文本編輯器對其直接進(jìn)行描述,或者可以應(yīng)用一個(gè)具有布局功能的編輯工具,例如字處理器。
下面將利用圖15進(jìn)一步說明為圖14的應(yīng)用定義語言指定重新執(zhí)行控制的例子。
對于圖14的應(yīng)用定義語言,增加了一個(gè)處理餐館預(yù)約的過程,如圖15所示。在這個(gè)預(yù)約處理中,有幾個(gè)粗略的用于顯示預(yù)約狀態(tài)和用于輸入一個(gè)預(yù)約申請和接收一個(gè)預(yù)約的顯示項(xiàng)。關(guān)于這些顯示項(xiàng),根據(jù)描述,它們作為一個(gè)屬性屬于一個(gè)被稱為“在預(yù)約接受之后禁止重新處理”的網(wǎng)頁組(pageGrp=使用的關(guān)鍵詞)。另外,將其指定為一個(gè)用于執(zhí)行預(yù)約處理的判決按鈕的屬性,即,如果接受了一個(gè)預(yù)約,則不重新處理屬于這個(gè)網(wǎng)頁組的顯示項(xiàng)(invGrp=使用的關(guān)鍵詞)。
因此,在由瀏覽器處理根據(jù)該描述產(chǎn)生的顯示控制信息的顯示屏上,在用戶按下一個(gè)判決按鈕之后,由本發(fā)明的一個(gè)設(shè)備禁止對這些顯示項(xiàng)和更低層的任何顯示項(xiàng)的重新處理(接受顯示和預(yù)約改變)。在接受了一個(gè)預(yù)約之后,如果用戶想用瀏覽器的一個(gè)后退按鈕返回“預(yù)約狀態(tài)顯示”的顯示項(xiàng)(頁)并重新調(diào)用它,則不顯示,以防重復(fù)訂座。
由于一個(gè)網(wǎng)頁的重新執(zhí)行控制還與一個(gè)動態(tài)產(chǎn)生的屏幕相適應(yīng),所以應(yīng)用一個(gè)網(wǎng)頁定義樹定義一個(gè)網(wǎng)頁組。上述圖16是圖15中餐館的一個(gè)例子,特別顯示了用于處理預(yù)約的過程的網(wǎng)頁定義樹。用于處理預(yù)約的過程具有三個(gè)顯示項(xiàng),即預(yù)約狀態(tài)顯示、預(yù)約接受屏幕和預(yù)約接受結(jié)果屏幕。此外,預(yù)約狀態(tài)顯示具有兩種類型的子顯示項(xiàng),即預(yù)約時(shí)間和它的空閑信息。對于預(yù)約接受屏幕也是如此。
這些顯示項(xiàng)是根據(jù)終端的顯示能力作為一頁動態(tài)顯示的,并且預(yù)先不確定哪一層是一頁。例如,在大尺寸顯示屏例如PC的情況下,預(yù)約狀態(tài)顯示或預(yù)約接受屏幕應(yīng)該是以一頁為單位,而在帶有較小屏幕的PDA等的情況下,單個(gè)子顯示項(xiàng)、即預(yù)約時(shí)間和空閑信息可以占一頁。
這里,在圖15的應(yīng)用定義語言的情況下,僅僅在兩個(gè)顯示項(xiàng)、即預(yù)約狀態(tài)顯示和預(yù)約接受屏幕的定義中指定被稱為“在預(yù)約接受之后禁止重新處理”的一個(gè)網(wǎng)頁組,而一個(gè)網(wǎng)頁定義樹的子枝也屬于該網(wǎng)頁組。即,被稱為“在預(yù)約接受之后禁止重新處理”的網(wǎng)頁組具有在上述附圖的虛線中(即,一頁)的顯示項(xiàng)作為其成員。
下面再參考圖13。
定義語言分析器310分析以這種語言寫成的文件。這種分析器的一個(gè)例子是用于Java的IBM XML(http//www.alphaworks.ibm.com/formula/xml)。分析器將其分析結(jié)果傳送給一個(gè)數(shù)據(jù)對象發(fā)生器。如同W3C,“文件對象模型說明書”(http//www.w3.org/TR/WD-DOM-1998-0416)中所提到的,分析結(jié)果是以樹結(jié)構(gòu)對象表示的數(shù)據(jù),仿佛一個(gè)標(biāo)簽結(jié)果被制成一個(gè)對象(嵌套中的一個(gè)標(biāo)簽對象是一個(gè)子對象)。
一個(gè)數(shù)據(jù)對象發(fā)生器根據(jù)作為分析結(jié)果的一個(gè)樹結(jié)構(gòu)產(chǎn)生數(shù)據(jù)對象。一般地,通過從分析結(jié)果的一個(gè)對象確定一個(gè)數(shù)據(jù)對象的分類來產(chǎn)生一個(gè)對象。其結(jié)構(gòu)也是如此。
這種信息內(nèi)容可以從現(xiàn)有的數(shù)據(jù)庫中檢索出,而不必將所有信息寫在一個(gè)應(yīng)用定義文件中。在這種情況下,在定義文件中有關(guān)于一個(gè)指定的用于數(shù)據(jù)庫檢索的方法和對檢索結(jié)果的參考的描述,并且根據(jù)這種規(guī)定,數(shù)據(jù)對象發(fā)生器通過被稱為數(shù)據(jù)庫連接器的與數(shù)據(jù)庫系統(tǒng)的通信設(shè)備向數(shù)據(jù)庫進(jìn)行查詢。隨著數(shù)據(jù)庫檢索結(jié)果通過數(shù)據(jù)庫連接器的回送,數(shù)據(jù)對象發(fā)生器產(chǎn)生數(shù)據(jù)對象,該數(shù)據(jù)對象根據(jù)檢索結(jié)果的參考規(guī)定反映來自數(shù)據(jù)庫的結(jié)果。此時(shí)的結(jié)構(gòu)是由指定數(shù)據(jù)庫的一個(gè)定義文件的標(biāo)簽來確定的。作為這種包含數(shù)據(jù)庫的規(guī)定的定義文件的一個(gè)例子(圖17),采取圖14的情況,在這里餐館信息是從一個(gè)數(shù)據(jù)庫動態(tài)檢索出的。
圖18顯示了通過執(zhí)行這種處理產(chǎn)生的一組數(shù)據(jù)對象的例子。在這里,需要輸出的“餐館詳情頁”包括兩個(gè)對象,“餐館信息”和用于返回檢索屏的“到搜索頁的鏈接”。此外,餐館信息具有用戶所需的餐館的各種信息,在這里將其分成三類“屬性”、“指南”和“菜單”。在每個(gè)類目下,產(chǎn)生對應(yīng)于所需信息的對象。
在本發(fā)明中,用一個(gè)數(shù)據(jù)對象定義圖19中所示屬性。將它們進(jìn)行如下定義如果子對象存在,子對象作為一組;以數(shù)字表示的數(shù)據(jù)的數(shù)字優(yōu)先權(quán);是否總是顯示對象數(shù)據(jù),即使它被一個(gè)開關(guān)(邏輯值)分開;對象數(shù)據(jù)是否可以以一種用開關(guān)分開的方式顯示;在圖象的情況下,它是否能用一個(gè)開關(guān)畫出輪廓;以及,以任何需要的形式出現(xiàn)的該應(yīng)用獨(dú)有的任何數(shù)據(jù)。這是在產(chǎn)生對應(yīng)的查看對象和由查看對象產(chǎn)生顯示控制信息時(shí)所使用的指令信息。
下面是當(dāng)這些數(shù)據(jù)對象產(chǎn)生時(shí)產(chǎn)生什么樣的查看對象和產(chǎn)生什么樣的HTML文件的兩個(gè)典型的例子。
(1)變換成用于PC等的大屏幕的顯示結(jié)構(gòu)和HTML文件輸出在上述例子中,從從用戶終端接收到的HTTP用戶代理字段取出設(shè)備ID,以獲得對應(yīng)的關(guān)于終端屬性的信息。下面的說明是在已經(jīng)獲得了這個(gè)關(guān)于終端屬性的信息的假設(shè)上進(jìn)行的。在這個(gè)例子中,該信息包括“大屏幕”信息(更專業(yè)的說,一個(gè)客戶終端包括一個(gè)顯示器,其分辨率可以被分類成大屏幕)。
首先,產(chǎn)生一個(gè)對應(yīng)于一個(gè)作為數(shù)據(jù)對象的樹結(jié)構(gòu)的根對象的對象的查看對象(圖20)。執(zhí)行這個(gè)生成的HTML發(fā)生器230通過應(yīng)用一個(gè)根數(shù)據(jù)對象的分類(在該例子中為“網(wǎng)頁分類”)、對一個(gè)應(yīng)用字段唯一的知識(例如,“一個(gè)餐館顯示在一頁上”)和關(guān)于終端屬性的信息(在這種情況下為“大屏幕”)作為參數(shù)確定查看對象的類別(用于顯示大屏幕的一頁的查看對象類別)和一個(gè)用于產(chǎn)生對象的初始參數(shù),并在實(shí)際上產(chǎn)生根查看對象。
因此,一旦確定了對應(yīng)于一個(gè)根數(shù)據(jù)對象的根查看對象,就可以使查看對象從根查看對象開始一個(gè)接一個(gè)地產(chǎn)生其子查看對象。即,查看對象具有一個(gè)產(chǎn)生子對象的方法或一個(gè)請求產(chǎn)生子查看對象的公用方法、以產(chǎn)生一個(gè)子查看對象的方法。
然后,如果用于為大屏幕顯示一頁的查看對象被請求產(chǎn)生一個(gè)子查看對象,則對“用于餐館詳情顯示頁的數(shù)據(jù)對象”進(jìn)行查詢,以便從子數(shù)據(jù)對象產(chǎn)生它自己的子查看對象。在這個(gè)產(chǎn)生過程中,一般根據(jù)一個(gè)查看對象分類和一個(gè)初始參數(shù)產(chǎn)生一個(gè)對象。查看對象的分類是從它自己的分類(在這種情況下是“用于為大屏幕顯示一頁的查看分類)、數(shù)據(jù)對象分類、對一個(gè)應(yīng)用字段唯一的知識(如果已經(jīng)定義)和關(guān)于終端屬性的信息確定的。
例如,如圖21所示,在作為“餐館詳情顯示頁”的數(shù)據(jù)對象的一個(gè)子對象的“餐館信息”的情況下,從作為“餐館信息”和關(guān)于終端屬性的信息即“大屏幕”信息的分類的“一般項(xiàng)”將“顯示各項(xiàng)的二維布局”分類確定為一個(gè)查看對象分類。顯示各項(xiàng)的二維布局的查看對象是一種想要通過采用大終端屏幕二維地布置輸出對象、以便增強(qiáng)顯示效果的查看對象。類似地,在作為“餐館詳情顯示頁”數(shù)據(jù)對象的另一個(gè)子對象的“到搜索頁的鏈接”的情況下,從該分類(“超鏈接”)產(chǎn)生一個(gè)被稱為“鏈接對象”的查看對象。
如果產(chǎn)生了子查看對象,一個(gè)父查看對象請求每個(gè)子查看對象以與以前請求的相同的方式產(chǎn)生一個(gè)子查看對象。即,如圖22所示,通過應(yīng)用它是各項(xiàng)的二維布局顯示這個(gè)事實(shí)產(chǎn)生“屬性列表顯示”查看對象,“屬性信息分類”是“餐館信息”的一個(gè)子數(shù)據(jù)對象,它顯示一個(gè)屬性列表等。類似地,從“指南信息分類”產(chǎn)生“屬性選擇顯示”查看對象?!皩傩赃x擇顯示”用于從用戶請求或關(guān)于終端屬性的信息選擇一個(gè)最合適的顯示項(xiàng)。對于“菜單”數(shù)據(jù)對象,通過以相同方式將關(guān)于終端屬性的信息“大屏幕”作為餐館信息使用,再次產(chǎn)生用于顯示各項(xiàng)的二維布局的查看對象。另外,對于餐館信息,通過使用對于“餐館名字作為一個(gè)標(biāo)題很重要”這個(gè)字段唯一的信息,增加一個(gè)查看對象,作為將餐館名字顯示為一個(gè)標(biāo)題的子對象。
有四個(gè)子查看對象,即“餐館名字顯示”、“屬性列表顯示”、“屬性選擇顯示”和“菜單項(xiàng)的二維布局”,被請求產(chǎn)生子查看對象。例如,如果“屬性列表顯示”查看對象被請求產(chǎn)生一個(gè)子查看對象,它通過掃描對應(yīng)的“屬性信息分類”的子數(shù)據(jù)對象產(chǎn)生一對查看對象,該對查看對象為一個(gè)可變名字和一個(gè)值(用于顯示一對屬性名字和值的查看對象)。對于“屬性選擇顯示”查看對象,從“指南信息分類”數(shù)據(jù)對象(在這里,記載一個(gè)不帶映射功能的PC,并根據(jù)數(shù)據(jù)對象的優(yōu)先權(quán)選擇一個(gè)圖象引導(dǎo)映射)的子對象中選擇最合適的一個(gè),并產(chǎn)生與其對應(yīng)的查看對象。對于一個(gè)菜單也執(zhí)行相同的循環(huán)過程。最后產(chǎn)生的查看對象組的結(jié)構(gòu)如圖23所示。
如果對顯示一組數(shù)據(jù)對象的結(jié)構(gòu)的圖18和顯示一組查看對象的結(jié)構(gòu)的圖23進(jìn)行比較,則有三點(diǎn)不同首先,增加了餐館名字查看對象;其次,只有屬性選擇顯示查看對象的一個(gè)子查看對象,因?yàn)閷傩赃x擇顯示查看對象是根據(jù)“指南信息分類”數(shù)據(jù)對象產(chǎn)生的,而在“指南信息分類”數(shù)據(jù)對象下存在四個(gè)子數(shù)據(jù)對象;第三,由于其重要性,增加了菜單名字查看對象。如上所示,數(shù)據(jù)對象在它們的結(jié)構(gòu)上不直接對應(yīng)于查看對象。
一旦產(chǎn)生了所有查看對象,則請求每個(gè)查看對象產(chǎn)生一個(gè)HTML文件。即,指示一個(gè)根查看對象產(chǎn)生一個(gè)HTML文件,并且大屏幕頁顯示查看對象產(chǎn)生指令來控制在最后輸出中的一個(gè)HTML網(wǎng)頁,同時(shí)它請求在網(wǎng)頁內(nèi)容上是子對象的“各項(xiàng)的二維布局”查看對象和“超鏈接”對象。所請求的子查看對象通過進(jìn)一步請求它們自己的子查看對象,繼續(xù)產(chǎn)生整個(gè)HTML文件。
圖24顯示了由圖23的一組查看對象產(chǎn)生HTML的略圖。用于各項(xiàng)的二維布局顯示的查看對象是大屏幕顯示查看對象的子對象,它產(chǎn)生一個(gè)HTML文件,以便最后進(jìn)行二維布局。如下所述,在這個(gè)產(chǎn)生HTML文件的階段,可以通過進(jìn)一步參考關(guān)于終端屬性的信息改變HTML輸出。在圖24中,各項(xiàng)的二維布局顯示的查看對象的子查看對象輸出一個(gè)HTML文件,以便如圖所示進(jìn)行二維布局。雖然在圖中未顯示屬性列表顯示查看對象的子查看對象和各項(xiàng)的二維布局顯示的查看對象的子查看對象,但它們都輸出一個(gè)HTML文件,以便顯示在由每個(gè)父查看對象得到的區(qū)域中。
另一方面,在作為屬性選擇顯示查看對象的子查看對象的圖象顯示查看對象方面,如果有關(guān)于終端屬性的信息,則輸出一個(gè)未改變的圖象,其中關(guān)于終端屬性的信息可以被解釋為表明圖象顯示速度足夠快(參見圖25)。由通信速度和制圖性能確定圖象顯示速度足夠快這樣的終端屬性。但可以僅僅因?yàn)橥ㄐ潘俣瓤於鴪?zhí)行上述過程。
另一方面,如果有可以被解釋為表明圖象顯示速度慢的關(guān)于終端屬性的信息,則圖象顯示查看對象不輸出圖象,而是輸出一個(gè)到圖象的鏈接(參見圖26)。如果用戶指定這個(gè)圖象,它將傳輸這個(gè)圖象。
對于一個(gè)二維布局的方法,還可以通過考慮屏幕尺寸、高寬比等為每個(gè)客戶終端對其進(jìn)行調(diào)整。因此,可以通過使HTML文件適合于關(guān)于終端屬性的信息,例如“終端屏幕大”或“圖象顯示速度慢”來產(chǎn)生HTML文件。
(2)變換成用于例如PDA的小屏幕的顯示結(jié)構(gòu)和HTML文件輸出當(dāng)每次要顯示的信息量被限制在一個(gè)小屏幕、例如PDA屏幕上時(shí),查看對象的構(gòu)造及其樹結(jié)構(gòu)必須與其相適合。關(guān)于終端屬性的信息包括被解釋為一個(gè)小屏幕的數(shù)據(jù)。
數(shù)據(jù)對象如圖18所示。首先,與大屏幕的情況一樣,HTML發(fā)生器230應(yīng)用根數(shù)據(jù)對象的分類和關(guān)于終端屬性的信息(在這種情況下為“屏幕為小屏幕”)產(chǎn)生用于為小屏幕顯示分開頁的查看對象(參見圖27)。在產(chǎn)生了根查看對象之后,與大屏幕的情況一樣,產(chǎn)生子查看對象。
然而,在這種情況下,由于可以顯示在一個(gè)屏幕上的信息量有限,并且信息被分開,不能一次顯示出來,所以產(chǎn)生的不是一個(gè)執(zhí)行二維布局的查看對象,而是一個(gè)以重要性為順序顯示信息的查看對象。當(dāng)這個(gè)查看對象進(jìn)一步產(chǎn)生子對象時(shí),它將其子對象產(chǎn)生為不是形成適合于二維布局的類別結(jié)構(gòu),而是形成考慮顯示內(nèi)容的重要性的行結(jié)構(gòu)。
因此,如圖28所示,考慮對應(yīng)于餐館信息數(shù)據(jù)對象的優(yōu)先級來產(chǎn)生線性顯示查看對象。與圖21的情況一樣產(chǎn)生一個(gè)鏈接對象。
當(dāng)考慮了優(yōu)先級的線性顯示查看對象產(chǎn)生一個(gè)子查看對象時(shí),它通過強(qiáng)調(diào)應(yīng)該立即顯示給用戶的部分和一個(gè)容易分頁的行結(jié)構(gòu),形成一個(gè)與當(dāng)用戶終端具有大屏幕時(shí)完全不同的樹結(jié)構(gòu)(參見圖29)。在這個(gè)例子中,此時(shí)也產(chǎn)生實(shí)際顯示的查看對象之外的查看對象,但可能在由用戶指定時(shí)產(chǎn)生它們。在圖29中,它們以這樣一種形式存在,其中,所需子查看對象與考慮了優(yōu)先級的線性顯示查看對象并行連接。在該圖中,距離線性顯示查看對象越近,優(yōu)先級越高。還可以以一些方式確定這個(gè)反映用戶喜好的優(yōu)先級。
在產(chǎn)生了查看對象之后,與大屏幕的情況中一樣,從根查看對象開始順序地產(chǎn)生一個(gè)HTML文件。在各個(gè)頁之間導(dǎo)航的按鈕(“下一頁”和“前一頁”按鈕)也自動被產(chǎn)生,以便用戶能夠容易地在分開的頁之間漫游。此時(shí),可以應(yīng)用關(guān)于終端屬性的信息產(chǎn)生更適合于終端能力的輸出。
在圖30的情況下,從包括在關(guān)于終端屬性的信息中的信息“屏幕尺寸320×240點(diǎn)”,可以產(chǎn)生一個(gè)HTML文件,以便在一頁上按照優(yōu)先級順序顯示三個(gè)查看對象的信息。另外,如果有表明“屏幕尺寸240×180點(diǎn)”的關(guān)于終端屬性的信息,則由于屏幕更小,可以產(chǎn)生一個(gè)HTML文件,以便在一頁上輸出兩個(gè)查看對象的信息。
在上述附圖中,在一個(gè)HTML文件由Web瀏覽器解釋之后,屏幕被表示為一組查看對象的輸出。然而,一組查看對象輸出HTML的控制標(biāo)簽。
雖然上述例子是以HTML進(jìn)行說明的,但本發(fā)明并不限于此。例如,如果需要WML(無線標(biāo)記語言,無線應(yīng)用協(xié)議論壇有限公司,“無線應(yīng)用協(xié)議無線標(biāo)記語言說明書”版本1998-4-30)、XML等的輸出文件,應(yīng)該產(chǎn)生包括一個(gè)用于輸出這些文件的方法的查看對象,還應(yīng)該產(chǎn)生一組適合于WML和XML的特性的查看對象的結(jié)構(gòu)。
上述圖31是顯示本發(fā)明沿時(shí)間順序的操作的示意圖,其通過將餐館的預(yù)約處理作為一個(gè)例子,描述一個(gè)與處理相結(jié)合來控制一個(gè)網(wǎng)頁的重新執(zhí)行的設(shè)備。它同時(shí)顯示了一個(gè)終端的顯示屏、用戶操作(向服務(wù)器的請求的內(nèi)容)和網(wǎng)頁管理DB 213中的處理狀態(tài)高速緩存的內(nèi)容。首先,用戶發(fā)出一個(gè)顯示餐館的預(yù)約狀態(tài)的請求。這使本發(fā)明的控制器210開始工作,并由其中的網(wǎng)頁管理器212將其確定為一個(gè)新網(wǎng)頁。接著,執(zhí)行應(yīng)用處理設(shè)備214。在這里,由一個(gè)應(yīng)用程序檢查預(yù)約狀態(tài)。同時(shí),將此時(shí)的處理狀態(tài)存儲在一個(gè)狀態(tài)高速緩存中,以備重新執(zhí)行使用。由于在這個(gè)過程中不需要對重新執(zhí)行的控制,所以執(zhí)行作為下一過程的屏幕產(chǎn)生。其結(jié)果為,用于顯示預(yù)約處理狀態(tài)的顯示控制信息被發(fā)送給一個(gè)終端并顯示。預(yù)約接受屏幕同樣被處理,并將狀態(tài)存儲進(jìn)一個(gè)狀態(tài)高速緩存。
接著,假設(shè)用戶試圖應(yīng)用終端上的歷史記錄機(jī)構(gòu)重新顯示預(yù)約狀態(tài)屏幕。例如,由一個(gè)為瀏覽器常規(guī)提供的后退按鈕調(diào)用一個(gè)舊的預(yù)約狀態(tài)屏幕,并按下一個(gè)也是常規(guī)提供的重新加載按鈕。在這種情況下,由網(wǎng)頁管理器212判定這是對一個(gè)舊屏幕的處理。在這種情況下,由于它是歷史記錄中的一個(gè)網(wǎng)頁,則檢查一個(gè)狀態(tài)是否存儲在狀態(tài)高速緩存中。在這種情況下,由于它應(yīng)該如上所述地存儲在一個(gè)狀態(tài)高速緩存中,所以恢復(fù)處理狀態(tài),以處理一個(gè)應(yīng)用(預(yù)約狀態(tài)檢查)。確切地說,這個(gè)結(jié)果也存儲在一個(gè)狀態(tài)高速緩存中,但為了簡化,在附圖中將其省略了。最后,產(chǎn)生顯示控制信息,并發(fā)送給一個(gè)終端。
下面應(yīng)用上述的圖32進(jìn)一步說明其中重新執(zhí)行被禁止的餐館預(yù)約處理的一個(gè)例子。假設(shè)用戶輸入關(guān)于預(yù)約接受屏幕所需的內(nèi)容,并按下預(yù)約判決按鈕。這使本發(fā)明的控制器210開始操作,并由其中的網(wǎng)頁管理器212將其判定為一個(gè)新網(wǎng)頁。接著,執(zhí)行應(yīng)用處理設(shè)備214。在這里,由一個(gè)應(yīng)用程序執(zhí)行預(yù)約接受過程。同時(shí),將此時(shí)的處理狀態(tài)存儲在一個(gè)狀態(tài)高速緩存中,以備重新執(zhí)行使用。由于由這個(gè)過程中的預(yù)約接受指定關(guān)于預(yù)約的重新執(zhí)行控制,所以在由應(yīng)用定義語言中的invGrp指定的“在預(yù)約接受之后禁止重新執(zhí)行”的基礎(chǔ)上識別一個(gè)重新執(zhí)行被禁止的網(wǎng)頁。對于這個(gè)例子,在其上指定了應(yīng)用定義語言的一個(gè)顯示項(xiàng)屬性pageGrp的網(wǎng)頁“預(yù)約狀態(tài)顯示”和“預(yù)約接受屏幕”列入這一項(xiàng)下。接著,使對應(yīng)于這些網(wǎng)頁的狀態(tài)高速緩存無效,并產(chǎn)生預(yù)約接受結(jié)果屏幕。
接著,與前面一樣,假設(shè)用戶試圖應(yīng)用終端上的歷史記錄機(jī)構(gòu)重新顯示預(yù)約狀態(tài)屏幕。例如,用一個(gè)為瀏覽器常規(guī)提供的后退按鈕調(diào)用一個(gè)舊的預(yù)約狀態(tài)屏幕,并按下一個(gè)也是常規(guī)提供的重新加載按鈕。在這種情況下,由網(wǎng)頁管理器212判定這是一個(gè)對舊屏幕的處理。在這種情況下,因?yàn)槭菤v史記錄中的一個(gè)網(wǎng)頁,因此檢查是否有一個(gè)狀態(tài)存儲在狀態(tài)高速緩存中。與前面的情況不同,因?yàn)槿缟纤鲆粋€(gè)狀態(tài)高速緩存被無效了,因此結(jié)果是重新執(zhí)行被禁止。結(jié)果,產(chǎn)生一個(gè)公布一個(gè)錯(cuò)誤的顯示控制信息,并將其發(fā)送給一個(gè)終端,顯示錯(cuò)誤屏幕。
此外,應(yīng)用上述的圖33說明,在至此描述的餐館預(yù)約處理的例子中,即使屏幕結(jié)構(gòu)(由于終端屬性)動態(tài)改變,重新執(zhí)行控制設(shè)備也會沒有任何問題地進(jìn)行工作。在至此描述的例子中,因?yàn)闋顟B(tài)具有一個(gè)大屏幕,所以在一個(gè)屏幕上顯示預(yù)約狀態(tài)顯示。此時(shí)假設(shè)有一個(gè)帶有小屏幕的終端,HTML發(fā)生器230用預(yù)約狀態(tài)顯示的子對象項(xiàng),即“預(yù)約時(shí)間”和“空閑信息”,將一頁分開。因此,一個(gè)狀態(tài)高速緩存仍由這些子項(xiàng)中的每一個(gè)占據(jù)。在這里,與前面一樣,假設(shè)用戶輸入關(guān)于預(yù)約接受屏幕所必需的內(nèi)容,并按下預(yù)約判決按鈕。
這使本發(fā)明的控制器210開始操作,由其中的網(wǎng)頁管理器212將其判定為一個(gè)新網(wǎng)頁。接著,執(zhí)行應(yīng)用處理設(shè)備214。在這里,由一個(gè)應(yīng)用程序執(zhí)行預(yù)約接受過程。同時(shí),將此時(shí)的處理狀態(tài)存儲在一個(gè)狀態(tài)高速緩存中,以備重新執(zhí)行使用。由于由預(yù)約接受指定關(guān)于預(yù)約的重新執(zhí)行控制,所以在由應(yīng)用定義語言中的invGrp指定的“在預(yù)約接受之后禁止重新執(zhí)行”的基礎(chǔ)上識別一個(gè)重新執(zhí)行被禁止的網(wǎng)頁。對于這個(gè)例子,在其上指定了應(yīng)用定義語言的一個(gè)顯示項(xiàng)屬性pageGrp的網(wǎng)頁“預(yù)約狀態(tài)顯示”和“預(yù)約接受屏幕”列入這一項(xiàng)下。然而,一個(gè)預(yù)約狀態(tài)顯示網(wǎng)頁不直接存在于一個(gè)高速緩存中,因此根據(jù)一個(gè)網(wǎng)頁定義樹,通過應(yīng)用列入該項(xiàng)下的網(wǎng)頁,使對應(yīng)于作為預(yù)約狀態(tài)顯示子對象的“預(yù)約時(shí)間”和“空閑信息”的狀態(tài)高速緩存無效。
接著,與前面一樣,假設(shè)用戶試圖應(yīng)用終端上的歷史記錄機(jī)構(gòu)將一個(gè)預(yù)約時(shí)間和空閑信息頁作為預(yù)約狀態(tài)屏幕之一重新顯示。例如,用一個(gè)為瀏覽器常規(guī)提供的后退按鈕調(diào)用一個(gè)舊的預(yù)約狀態(tài)屏幕,并按下一個(gè)也是常規(guī)提供的重新加載按鈕。在這種情況下,由網(wǎng)頁管理器212判定這是一個(gè)對舊屏幕的處理。在這種情況下,因?yàn)槭菤v史記錄中的一個(gè)網(wǎng)頁,因此檢查是否有一個(gè)狀態(tài)存儲在狀態(tài)高速緩存中。與前面的情況相同,因?yàn)槿缟纤鲆粋€(gè)狀態(tài)高速緩存被無效了,因此結(jié)果是重新執(zhí)行被禁止。結(jié)果,產(chǎn)生一個(gè)公布一個(gè)錯(cuò)誤的顯示控制信息,并將其發(fā)送給一個(gè)終端,顯示錯(cuò)誤屏幕。
由于要顯示的網(wǎng)頁不是直接指定的,而是作為一個(gè)網(wǎng)頁組中的一個(gè)單元,因此即使在一個(gè)實(shí)際顯示的網(wǎng)頁被分開時(shí),也可以根據(jù)一個(gè)應(yīng)用的請求成功地實(shí)施正確的重新執(zhí)行控制。
權(quán)利要求
1.一種用于產(chǎn)生顯示控制信息以便以一種適合于用戶使用的終端的形式顯示的方法,包括下列步驟從所述終端接收一個(gè)顯示請求;響應(yīng)于所述顯示請求,產(chǎn)生一組關(guān)于顯示內(nèi)容的數(shù)據(jù)對象,所述數(shù)據(jù)對象的所述組是與所述終端無關(guān)的;通過采用所述組數(shù)據(jù)對象和關(guān)于終端一個(gè)屬性的信息,產(chǎn)生一組用于產(chǎn)生所述顯示控制信息的查看對象;以及,通過參考所述關(guān)于終端所述屬性的信息,由所述查看對象組產(chǎn)生所述顯示控制信息。
2.如權(quán)利要求1所述的方法,還包括下列步驟從所述終端接收終端識別信息;并從所述終端識別信息獲得所述關(guān)于終端所述屬性的信息。
3.如權(quán)利要求1所述的方法,其中,所述產(chǎn)生一組查看對象的步驟包括下列步驟產(chǎn)生所述查看對象組的一個(gè)根對象;并由所述根對象產(chǎn)生一個(gè)子對象。
4.如權(quán)利要求1所述的方法,其中,所述數(shù)據(jù)對象保留用于產(chǎn)生相應(yīng)的查看對象以及由查看對象產(chǎn)生所述顯示控制信息的指令信息。
5.如權(quán)利要求1所述的方法,其中,所述關(guān)于終端屬性的信息包括關(guān)于所述終端的屏幕尺寸的信息。
6.如權(quán)利要求1所述的方法,其中,所述顯示控制信息是超文本標(biāo)記語言形式的。
7.如權(quán)利要求1所述的方法,其中,所述產(chǎn)生顯示控制信息的步驟包括一個(gè)通過參考所述關(guān)于終端屬性的信息從所述查看對象組的一個(gè)根對象順序地產(chǎn)生其負(fù)責(zé)的各部分的顯示控制信息的步驟。
8.如權(quán)利要求1所述的方法,還包括下列步驟響應(yīng)于來自所述終端的顯示請求,判定是否需要根據(jù)所述顯示請求產(chǎn)生一組數(shù)據(jù)對象;如果不需要產(chǎn)生一組數(shù)據(jù)對象,則用所述查看對象組中的一個(gè)相關(guān)查看對象產(chǎn)生相應(yīng)于所述顯示請求的顯示控制信息。
9.如權(quán)利要求1所述的用于控制一個(gè)歷史網(wǎng)頁的重新執(zhí)行和/或重新鑒別的方法,所述方法包括下列步驟將網(wǎng)頁定義集合成組;將成組的網(wǎng)頁定義包含在用于產(chǎn)生所述顯示控制信息的指令信息中;判定是否已經(jīng)執(zhí)行了一個(gè)歷史網(wǎng)頁的重新執(zhí)行;如果存在一個(gè)被重新執(zhí)行過的并且處于一個(gè)處理狀態(tài)的高速緩存,恢復(fù)所述處理狀態(tài);處理一個(gè)應(yīng)用,并將此時(shí)的處理狀態(tài)存儲在一個(gè)高速緩存中;以及,根據(jù)一個(gè)應(yīng)用的處理結(jié)果,指定所述網(wǎng)頁定義組,并清除對應(yīng)于一個(gè)適當(dāng)網(wǎng)頁的處理狀態(tài)。
10.如權(quán)利要求9所述的方法,還包括下列步驟檢查一個(gè)歷史網(wǎng)頁是否需要鑒別及其鑒別狀態(tài);在需要鑒別時(shí)確保進(jìn)行鑒別;以及,根據(jù)一個(gè)應(yīng)用的處理結(jié)果,修改一個(gè)歷史網(wǎng)頁的鑒別狀態(tài)。
11.一種用于產(chǎn)生顯示控制信息以便以一種適合于用戶使用的終端的形式顯示的計(jì)算機(jī),包括用于完成下列步驟的模塊響應(yīng)于來自所述終端的一個(gè)顯示請求,產(chǎn)生一組關(guān)于顯示內(nèi)容的數(shù)據(jù)對象,所述數(shù)據(jù)對象的所述組是與所述終端無關(guān)的;通過利用所述數(shù)據(jù)對象組和關(guān)于終端的一個(gè)屬性的信息,產(chǎn)生一個(gè)用于產(chǎn)生所述顯示控制信息的根查看對象;命令所述根查看對象產(chǎn)生其子查看對象;以及,命令所述子查看對象產(chǎn)生所述顯示控制信息。
12.如權(quán)利要求11所述的計(jì)算機(jī),還包括一個(gè)用于從從所述終端接收的終端識別信息導(dǎo)出所述關(guān)于終端屬性的信息的模塊。
13.如權(quán)利要求11所述的計(jì)算機(jī),其中,所述子查看對象可以產(chǎn)生它的子對象。
14.如權(quán)利要求11所述的計(jì)算機(jī),其中,所述根查看對象可以命令所述子查看對象產(chǎn)生所述顯示控制信息。
15.如權(quán)利要求11所述的計(jì)算機(jī),其中,包括所述根查看對象和所述子查看對象的所述查看對象組通過參考所述關(guān)于終端屬性的信息產(chǎn)生所述顯示控制信息。
16.如權(quán)利要求11所述的計(jì)算機(jī),還包括一個(gè)用于完成下列步驟的模塊響應(yīng)于來自所述終端的一個(gè)顯示請求,判定是否需要根據(jù)所述顯示請求產(chǎn)生一組數(shù)據(jù)對象,如果不需要產(chǎn)生一組數(shù)據(jù)對象,向所述根查看對象輸出所述顯示請求。
17.如權(quán)利要求11所述的用于控制一個(gè)歷史網(wǎng)頁的重新執(zhí)行和/或重新鑒別的計(jì)算機(jī),所述計(jì)算機(jī)包括用于完成下列步驟的模塊將網(wǎng)頁定義集合成組;將成組的網(wǎng)頁定義包含在用于產(chǎn)生所述顯示控制信息的指令信息中;判定是否已經(jīng)執(zhí)行了一個(gè)歷史網(wǎng)頁的重新執(zhí)行;如果存在一個(gè)被重新執(zhí)行過的并且處于一個(gè)處理狀態(tài)的高速緩存,恢復(fù)所述處理狀態(tài);處理一個(gè)應(yīng)用,并將此時(shí)的處理狀態(tài)存儲在一個(gè)高速緩存中;以及,根據(jù)一個(gè)應(yīng)用的處理結(jié)果,指定所述網(wǎng)頁定義組,并清除對應(yīng)于一個(gè)適當(dāng)網(wǎng)頁的處理狀態(tài)。
18.如權(quán)利要求17所述的計(jì)算機(jī),還包括用于完成下列步驟的模塊檢查一個(gè)歷史網(wǎng)頁是否需要鑒別及其鑒別狀態(tài);在需要鑒別時(shí)確保進(jìn)行鑒別;以及,根據(jù)一個(gè)應(yīng)用的處理結(jié)果,修改一個(gè)歷史網(wǎng)頁的鑒別狀態(tài)。
19.一種用于存儲使一個(gè)計(jì)算機(jī)產(chǎn)生顯示控制信息以便以一種適合于用戶使用的終端的形式顯示的程序的存儲介質(zhì),所述程序使所述計(jì)算機(jī)執(zhí)行下列步驟響應(yīng)于來自所述終端的一個(gè)顯示請求,產(chǎn)生一組關(guān)于顯示內(nèi)容的數(shù)據(jù)對象,所述數(shù)據(jù)對象的所述組是與所述終端無關(guān)的;通過利用所述數(shù)據(jù)對象組和關(guān)于終端一個(gè)屬性的信息,產(chǎn)生一個(gè)用于產(chǎn)生所述顯示控制信息的根查看對象;命令所述根查看對象產(chǎn)生其子查看對象;以及,命令所述子查看對象產(chǎn)生所述顯示控制信息。
20.如權(quán)利要求19所述的用于存儲一個(gè)使計(jì)算機(jī)控制一個(gè)歷史網(wǎng)頁的重新執(zhí)行和/或重新鑒別的的程序的存儲介質(zhì),所述程序使所述計(jì)算機(jī)執(zhí)行下列步驟將網(wǎng)頁定義集合成組;將成組的網(wǎng)頁定義包含在用于產(chǎn)生所述顯示控制信息的指令信息中;判定是否已經(jīng)執(zhí)行了一個(gè)歷史網(wǎng)頁的重新執(zhí)行;如果存在一個(gè)被重新執(zhí)行過的并且處于一個(gè)處理狀態(tài)的高速緩存,恢復(fù)所述處理狀態(tài);處理一個(gè)應(yīng)用,并將此時(shí)的處理狀態(tài)存儲在一個(gè)高速緩存中;以及根據(jù)一個(gè)應(yīng)用的處理結(jié)果,指定所述網(wǎng)頁定義組,并清除對應(yīng)于一個(gè)適當(dāng)網(wǎng)頁的處理狀態(tài)。
全文摘要
為了動態(tài)產(chǎn)生文件或顯示控制信息,以便依照每個(gè)終端性能以用戶接口向客戶終端提供各種性能。一種用于產(chǎn)生顯示控制信息以便以適合于用戶使用的終端的形式顯示的方法,包括下列步驟:從終端接收一個(gè)顯示請求;響應(yīng)于該顯示請求,產(chǎn)生一組與顯示內(nèi)容有關(guān)的數(shù)據(jù)對象,其中該數(shù)據(jù)對象是與終端無關(guān)的;應(yīng)用該組數(shù)據(jù)對象和關(guān)于終端屬性的信息,產(chǎn)生一組用于產(chǎn)生顯示控制信息的查看對象;以及,通過參考關(guān)于終端屬性的信息,由該組查看對象產(chǎn)生顯示控制信息。
文檔編號G06F17/30GK1243288SQ9910698
公開日2000年2月2日 申請日期1999年6月4日 優(yōu)先權(quán)日1998年6月30日
發(fā)明者北山文彥, 廣瀨紳一 申請人:國際商業(yè)機(jī)器公司