專利名稱::增強資源適配器的制作方法
技術領域:
:本發(fā)明一般涉及分布式計算機網(wǎng)絡中的客戶機-服務器、客戶機-主機、或服務器-服務器通信,并具體涉及適于方便這樣的通信的資源適配器的增強。
背景技術:
:存在很多老服務器應用程序,已經(jīng)并繼續(xù)向全世界組織提供有價值的信息處理服務器。作為多年開發(fā)結果的這些老服務器應用程序中的多數(shù)包括、存儲或訪問花費多年(有時幾十年)的數(shù)據(jù)。這些老應用程序現(xiàn)在正被迫變?yōu)榉植际綉贸绦?即,利用許多服務器和客戶機的服務和設備(facilities)的應用程序)的一部分。例如,在客戶機系統(tǒng)(例如個人計算機、個人數(shù)字助理等)上執(zhí)行的典型電子交易中,個人可能不知不覺地初始化交易,包括應用服務器(典型提供傳遞最新的信息所必須的數(shù)據(jù)或商業(yè)邏輯處理;另外地和典型地,應用服務器與用戶和數(shù)據(jù)庫與老應用程序一起存在或在兩者之間,并提供中間件粘合以使得基于瀏覽器的應用程序能鏈接到多個信息資源;對于基于Java的應用服務器,由Javaservlets(小服務器程序)、JavaServerPage和EnterpriseJavaBeans執(zhí)行該處理)和例如數(shù)據(jù)庫或老應用程序的其他后端系統(tǒng)。許多老系統(tǒng)向客戶傳遞基于文本的屏幕,該屏幕向客戶機/用戶提供信息并允許用戶輸入數(shù)據(jù)、修改數(shù)據(jù)或提交用于處理的交易。例如,老應用程序傳遞原始設計以由IBM3270終端顯示的數(shù)據(jù)。在該3270應用程序的例子中,屏幕包括多個區(qū)域,其中將數(shù)據(jù)呈現(xiàn)給用戶或由用戶將數(shù)據(jù)鍵入該區(qū)域。例如,屏幕可包括兩個區(qū)域,一個提示文本“Name(名稱)”,第二個區(qū)域包括人名或允許用戶鍵入人名。每一區(qū)域除了包括文本之外,還具有屬性,表示文本顏色、背景顏色(可與例如文本顏色、文本的背景顏色等的許多顏色相關屬性關聯(lián))、是否保護該區(qū)域、是否已修改了該文本等。與客戶機系統(tǒng)通信的兩個示例老應用程序是客戶信息控制系統(tǒng)(CICS)3270應用程序(其中CICS提供終端路由、密碼安全、用于錯誤恢復的事務處理記錄和用于其他特征中的性能分析的活動日志)和主機3270應用程序。現(xiàn)在的客戶機系統(tǒng)通常采用3270終端仿真產(chǎn)品(和協(xié)議)以呈現(xiàn)由該老應用程序發(fā)送的數(shù)據(jù)。該終端仿真產(chǎn)品允許用戶觀察個人計算機上的3270屏幕,而不是使用3270終端??商鎿Q地,對于這兩個示例老應用程序,可由應用服務器充當JavaTM2企業(yè)版(J2EE)連接器結構資源適配器(有時也稱為連接器)的主機。要求的主機(HOD)和來自IBM的CICS交易網(wǎng)關產(chǎn)品提供這樣的資源適配器。這些資源適配器從老3270應用程序接收數(shù)據(jù)流并且它們的每一個提供產(chǎn)品指定編程接口,允許應用程序對屏幕上的區(qū)域起作用。對于現(xiàn)今的更強大的圖形用戶接口,該應用程序可以用更有意義的方式顯示數(shù)據(jù),例如將幾個屏幕的內容合并在一個單一網(wǎng)絡瀏覽器(WebBrowser)頁面中。該3270數(shù)據(jù)流是描述屏幕圖像的高度優(yōu)化的流。資源適配器將以任何期望格式自由傳遞屏幕信息。當前資源適配器(例如CICS和HOD)發(fā)送代表X乘Y屏幕上的每一字節(jié)的流,用關于彌補區(qū)域的字節(jié)的額外信息修改不可見的屏幕字節(jié)(例如前景顏色、背景顏色)。當提供關于屏幕圖像的全信息時,由于其需要發(fā)送具有改變的多個X乘Y流到不可見字節(jié)以獲得全部可能屬性信息,所以與3270數(shù)據(jù)流相比,該機構效率非常低。這些資源適配器具有其他顯著的缺點。例如,這些資源適配器當前需要發(fā)送整個屏幕的數(shù)據(jù),其中可優(yōu)化其以發(fā)送修改區(qū)域的數(shù)據(jù)。另外,當開發(fā)應用程序以與資源適配器提供的數(shù)據(jù)流相互作用時,該屏幕圖像的公知常識是必須的,從而可利用這些區(qū)域和它們在屏幕上的位置。不幸的是,該屏幕圖像的公知常識并不總是可用的。而且,必須創(chuàng)建特定裝置(tooling)以開發(fā)利用由連接器或資源適配器提供的設備的應用程序。同樣地,給出以上例子,將不得不對于上述J2EE資源適配器的每一個創(chuàng)建不同加工。這效率低下。因此,理想的是,提供資源適配器可實現(xiàn)的一種接口,以至少部分克服上述缺點的一些或全部。
發(fā)明內容本發(fā)明一般涉及分布式計算機網(wǎng)絡中的客戶機-服務器、客戶機-主機、或服務器-服務器通信,并具體涉及適于方便這樣的通信的資源適配器的增強。本發(fā)明涉及作用于屏幕的增強資源適配器??珊喜⑷牖蚺c現(xiàn)有資源適配器通信的本發(fā)明的一些方面提供了一種用于處理關于屏幕圖像的數(shù)據(jù)的標準屏幕記錄。該標準屏幕記錄對已知該屏幕格式或布局的公知常識的情況和不了解該屏幕格式的情況提供支持。另外,該標準屏幕記錄提供描述區(qū)域及屏幕圖像本身的所有屬性的詳細數(shù)據(jù)。另外,本發(fā)明也提供對區(qū)域屬性數(shù)據(jù)的簡單存取。在一些實施例中,本發(fā)明的某些方面可包括接口,使得能開發(fā)工具(tooling),該工具然后用于開發(fā)利用本發(fā)明其他方面的功能的應用程序。該接口可提供工具的通用方式,以支持實現(xiàn)該接口的資源適配器。在本發(fā)明的一個實施例中,為了在面向對象環(huán)境中使用,由對象集合代表屏幕-包括區(qū)域對象的屏幕對象。另外,屏幕接口(screenableinterface)描述了呈現(xiàn)屏幕圖像的高度有效的方式,并且屏幕記錄用于向客戶機應用程序呈現(xiàn)該屏幕圖像。根據(jù)本發(fā)明的一個方面,提供了一種用于向第一應用程序提供描述屏幕圖像的數(shù)據(jù)的方法,該方法包括對于從第二應用程序接收的數(shù)據(jù),所接收的數(shù)據(jù)描述區(qū)域,用描述所述區(qū)域的所述數(shù)據(jù)填充數(shù)據(jù)結構,所述數(shù)據(jù)結構包括用于存取描述所述區(qū)域的所述數(shù)據(jù)的函數(shù)。根據(jù)本發(fā)明的另一方面,提供了一種用于向應用程序提供描述屏幕圖像的數(shù)據(jù)的數(shù)據(jù)結構,該數(shù)據(jù)結構包括用于描述所述屏幕圖像的區(qū)域的數(shù)據(jù)的存儲器;和用于存取所述數(shù)據(jù)的函數(shù)。根據(jù)本發(fā)明的另一方面,提供了一種包含數(shù)據(jù)和指令的計算機可讀介質,當被執(zhí)行時,這些數(shù)據(jù)和指令使計算機系統(tǒng)適于對于從第二應用程序接收的數(shù)據(jù),所接收的數(shù)據(jù)描述區(qū)域,用描述所述區(qū)域的所述數(shù)據(jù)填充數(shù)據(jù)結構,所述數(shù)據(jù)結構包括用于存取描述所述區(qū)域的所述數(shù)據(jù)的函數(shù)。通過結合附圖對本發(fā)明特定實施例的以下描述,對于本領域普通技術人員而言,本發(fā)明的其他方面和特點將變得明顯。圖1示意性圖示了表達本發(fā)明一些方面的計算機系統(tǒng);圖2更具體地示意性圖示了圖1的計算機系統(tǒng)一部分;圖3以功能塊形式圖示了圖1的一部分;和圖4以功能塊形式更具體地圖示了圖3的一部分。具體實施例方式圖1圖示了本發(fā)明的一個實施例,計算機系統(tǒng)100。為了示例目的而圖示為包括通用目的網(wǎng)絡計算裝置102的計算機網(wǎng)絡100通過網(wǎng)絡108與例如主機110的其他網(wǎng)絡計算裝置進行通信。本領域普通技術人員應明白,可利用傳統(tǒng)組網(wǎng)技術實現(xiàn)網(wǎng)絡108,并且網(wǎng)絡108可包括以下的一個或多個局域網(wǎng)、廣域網(wǎng)、內聯(lián)網(wǎng)、公共互聯(lián)網(wǎng)等。而且,網(wǎng)絡108可物理實現(xiàn)為任何類型網(wǎng)絡,包括電、光、無線或各種混合組合。而且,盡管將計算裝置102圖示為傳統(tǒng)臺式計算機,但也可附加和替換采用其他網(wǎng)絡計算裝置。這樣的網(wǎng)絡計算裝置可包括寫字板便攜式計算機、筆記本計算機、個人數(shù)字助理等。因此下文中,將計算裝置102稱為客戶機102。在示例實施例中,客戶機102和主機110的每一個包括與各種輸入裝置104、輸出裝置106和網(wǎng)絡108通信的處理系統(tǒng)102。示出了其中兩個的輸入裝置104可包括例如鍵盤、鼠標、掃描儀、成像系統(tǒng)(例如照相機等)等。類似地,輸出裝置106(僅圖示了其中之一)可包括顯示器、信息顯示單元打印機等。另外,組合輸入/輸出(I/O)裝置也可與處理系統(tǒng)102通信。傳統(tǒng)I/O裝置的例子包括可移動和固定可記錄的介質(例如軟盤驅動器、磁帶驅動器、CD-ROM驅動器、DVD-RW驅動器等)、觸摸屏顯示器等。圖2更詳細圖示了客戶機102和主機110的例子。如圖所示,客戶機102或主機110的每一個包括幾個組件-中央處理單元(CPU)202、存儲器204、網(wǎng)絡接口(I/F)208和I/OI/F210。每一組件按需要通過合適的通信總線206與其他組件通信。CPU202是一個適于這里所述操作的處理單元,例如IntelPentiumTM、IBMPowerPCTM、SunMicrosystemsUltraSparcTM處理器等。本領域普通技術人員應明白,處理系統(tǒng)102的其他實施例可使用替換CPU并可包括采用一個或多個CPU的實施例。CPU202可包括各種支持電路以能夠在其自己和客戶機102或主機110的其他組件之間分別通信。存儲器204包括易失和持久存儲器,用于存儲由CPU202、數(shù)據(jù)寄存器、應用程序存儲等所執(zhí)行的操作指令。存儲器204最好包括隨機存取存儲器(RAM)、只讀存儲器(ROM)和例如硬盤驅動器提供的持久存儲器的結合。網(wǎng)絡I/F208使得通過網(wǎng)絡108的客戶機102(或主機110)和其他網(wǎng)絡計算裝置(未示出)之間的通信成為可能??稍谝粋€或多個傳統(tǒng)通信裝置中實現(xiàn)網(wǎng)絡I/F208。傳統(tǒng)通信裝置的例子包括以太網(wǎng)卡、令牌環(huán)卡、調制解調器等。網(wǎng)絡I/F208也可使通過網(wǎng)絡108從或向遠程存儲介質或裝置恢復或發(fā)送CPU202執(zhí)行的指令成為可能。I/OI/F210使處理系統(tǒng)102和各種I/O裝置104、106之間的通信成為可能。I/OI/F210可包括例如視頻卡,用作與例如輸出裝置106的外部顯示器的接口。另外,I/OI/F210可使得處理系統(tǒng)102和可移動介質212之間的通信成為可能。盡管可移動介質212被圖示為傳統(tǒng)磁盤,但也可采用例如ZipTM驅動器、閃存卡、CD-ROM、靜態(tài)存儲裝置等的其他可移動存儲裝置??墒褂每梢苿咏橘|212以提供CPU202執(zhí)行的指令或作為可移動數(shù)據(jù)存儲裝置。在圖3中以功能塊形式圖示了存儲器204中存儲并由CPU202(因此適應這里所述的計算機系統(tǒng)100的操作)執(zhí)行的計算機指令/應用程序。本領域普通技術人員應明白,因為在替換實施例中,可由另一應用程序包含這里所述歸因于特定應用程序的各種操作,所以圖3中功能塊所示應用程序的各方面之間的敘述是任意的。在客戶機102和主機110的存儲器202中包括但未圖示操作系統(tǒng)(OS)和通信套件。該OS適于與所選CPU202和這里所述操作一起操作。在許多實施例中,優(yōu)選期望例如IBMAIXTM、MicrosoftWindowsNTTM、Linux等的多任務、多線程OS。通信套件通過與OS和網(wǎng)絡I/F208(圖2)的相互作用,而提供合適的通信協(xié)議使得通過網(wǎng)絡108(圖1)與其他網(wǎng)絡計算裝置的通信成為可能。該通信套件可包括例如TCP/IP、以太網(wǎng)、令牌環(huán)等的協(xié)議的一個或多個。在圖3所示的示例實施例中,客戶機102通過網(wǎng)絡連接108與主機110通信。作為計算裝置的客戶機102作為客戶機應用程序302、客戶機側資源適配器304和屏幕記錄306的主機。主機系統(tǒng)110作為通過網(wǎng)絡108與客戶機102通信的老應用程序310的主機。老應用程序310不需要任何修改或適應以與客戶機102上的應用程序302通信。當然,該資源適配器304提供必須的通信支持,使得老應用程序306和客戶應用程序302之間的通信成為可能。該屏幕記錄306提供應用程序以豐富功能與屏幕一起工作的普通方式。在該示例實施例中,在通信和使用該屏幕接口和實現(xiàn)類306的JavaTM2企業(yè)版(J2EE)連接器中實現(xiàn)資源適配器304。J2EE連接器提供編程接口(API)作為Java程序(例如客戶機應用程序302)和例如老應用程序310的老應用程序之間的接口。由此,可在企業(yè)JavaBean(EJB)中容易提供對老應用程序的訪問。盡管在該示例實施例中,資源適配器304是J2EE連接器,但可等同采用替換的資源適配器(例如符合來自IBM公司的公共連接器架構的連接器或其他)。如上所述,在該示例實施例中,客戶機應用程序302是以Java編寫的應用程序。然而,在替換實施例中可等同采用其他編程語言。關于該屏幕記錄306,資源適配器304可將從由主機系統(tǒng)110作主機的老應用程序310(通過網(wǎng)絡312)接收的數(shù)據(jù)流翻譯為能由客戶機應用程序302使用和理解的格式。類似地,該客戶機應用程序302產(chǎn)生的數(shù)據(jù)可通過屏幕記錄306而傳遞給該資源適配器。資源適配器304然后能處理從該屏幕記錄306接收的數(shù)據(jù)并將其發(fā)到主機110上的老應用程序310。如圖4所示,屏幕記錄306提供兩個接口屏幕記錄接口(用于在屏幕記錄306和客戶應用程序302之間的通信);和屏幕接口(用于在資源適配器304和屏幕記錄306之間的通信)。另外,圖4以功能塊形式圖示了屏幕記錄306的功能。如圖所示,該示例實施例提供在格式處理器(handler)404和屏幕記錄處理器402中廣泛分離的功能。格式處理器404提供屏幕記錄306的格式和翻譯服務。也就是說,由格式處理器404處理從資源適配器304接收的數(shù)據(jù)。類似地,去往資源適配器304的數(shù)據(jù)在分別發(fā)送到其目的地-客戶機應用程序302或資源適配器304之前,首先由格式處理器404處理。下表列出了具有簡短描述的接口。接口描述IScreenable由資源適配器304使用的接口,以從屏幕記錄306提供和檢索數(shù)據(jù)IScreenInfo由應用程序使用以查詢屏幕屬性。IFieldData由資源適配器304使用以建立區(qū)域。IFieldAttrInfo由應用程序使用以查詢區(qū)域的屬性和擴展屬性。ITextAttrInfo由應用程序使用以查詢區(qū)域中的文本屬性。IExtendedAttributes定義所述擴展屬性的常數(shù)。IFieldInfo由應用程序使用以檢索區(qū)域數(shù)據(jù),例如姓名、文本、或位置。(*)在一個替換實施例中,屏幕記錄306也可提供這些接口的實現(xiàn)。在屏幕記錄306采用預建立區(qū)域并用許多比特的信息組裝該區(qū)域的情況下,該替換實施例優(yōu)選??商鎿Q地,屏幕記錄306可通過創(chuàng)建該區(qū)域的不同機構而提供信息。IScreenable接口該IScreenable接口可由屏幕記錄306實現(xiàn)并可由資源適配器304檢測和使用。該IScreenable接口提供具有將信息傳遞到應用程序302的能力的資源適配器304。在以下偽代碼中,該IScreenable接口的示例實施例包括幾種方法(下面將更詳細描述)。一般來說,由屏幕記錄306實現(xiàn)的IScreenable接口使資源適配器能創(chuàng)建精確描述區(qū)域、區(qū)域屬性以及包括在其中的屏幕的剩余非區(qū)域部分和區(qū)域和數(shù)據(jù)(例如信息文本;屏幕顏色;文本類型、顏色、尺寸;等)的屏幕記錄(示例實施例中類ScreenRecord(屏幕記錄)的對象,但一般可包含在任何類型數(shù)據(jù)結構中-并非必須是面向對象環(huán)境中的對象)。每一屏幕記錄將與唯一標識符(ID)關聯(lián),從而可正確識別與屏幕記錄關聯(lián)的屏幕。通過該IScreenable接口提供的方法(或者當不用Java實現(xiàn)該接口、功能時),可設置或檢索該屏幕標識符。另外,該IScreenable接口提供,當調用時,使資源適配器304能從定義該屏幕圖像的區(qū)域檢索數(shù)據(jù)的方法。在該示例實施例中,可對于所有區(qū)域或僅對于修改的區(qū)域檢索關于這些區(qū)域的數(shù)據(jù)。而且,在示例實施例中,該IScreenable接口提供的方法使資源適配器304能在所有區(qū)域或僅在屏幕圖像中包括的修改區(qū)域內單步執(zhí)行(即反復移動)。如上所述,該示例實施例中的資源適配器304符合J2EE連接器架構。結果,以Java語言實現(xiàn)形成屏幕記錄306的屏幕記錄處理器402的一部分的以下偽代碼。可等同采用本發(fā)明替換實施例中的替換語言。/**<!--SIPO<DPn="7">--><dpn="d7"/>*資源適配器使用的屏幕接口。*/publicinterfaceIScreenable{/***表示區(qū)域建立處理的開始,提供關于該屏幕自己的信息。fullRefresh(全刷新)布爾值表示*資源適配器將提供關于該屏幕的所有信息*從而記錄可清除合適的信息如同其被完全刷新一樣*/voidbeginBuild(IScreenInfoScrInf,booleanfullerfresh);/***添加區(qū)域到該屏幕記錄。*/voidbuildField(IFieldDatafieldData,IFieldAttrInfofieldAttrs,ITextAttrInfotextAttrs)throwsScreenException;/***表示該區(qū)域建立處理的結束。*/voidendBuild();/***返回該屏幕記錄ID。*/StringgetScreenId();/***設置該屏幕ID。*/publicvoidsetScreenId(StringScreenId);/***返回該屏幕記錄中包括的區(qū)域的迭代程序。*/java.util.IteratorgetFields();/**<!--SIPO<DPn="8">--><dpn="d8"/>*返回該屏幕記錄中修改區(qū)域的迭代程序。*/java.util.IteratorgetModifiedFields();}如以上偽代碼所示,該IScreenable(可屏幕的)接口包括幾種方法beginBuild(開始構建);buildField(構建區(qū)域);endBuild(結束構建);setScreenId(設置屏幕識別符);getFields(獲取區(qū)域);和getModifiedFields(獲取修改的區(qū)域)。下面單獨描述這些方法。另外,利用IScreenInfo(屏幕信息)、IFieldData(區(qū)域數(shù)據(jù))、IFieldAttrInfo(區(qū)域屬性信息)、ITextAttrInfo(文本屬性信息)類所定義的對象來調用該IScreenable接口所提供的這些方法。下面也將詳細描述這些類。beginBuild該方法向屏幕記錄306表示將開始傳遞區(qū)域信息。資源適配器304將提供關于屏幕作為總體的信息的IScreenInfo對象傳遞到屏幕記錄306(下面在ScreenInfo(屏幕信息)接口部分更詳細描述)。該beginBuild方法具有標記(布爾值fullRefresh),向屏幕記錄306表示資源適配器304將提供屏幕還是已僅改變區(qū)域的子集的全面刷新。由資源適配器304確定該標記的設置,以及提供給屏幕記錄306的哪個信息(整個屏幕或其子集)??苫谑欠褚讯x了該屏幕記錄(在資源適配器304和屏幕記錄306之間傳遞的數(shù)據(jù)單元-在該示例實施例中,該屏幕記錄是類型ScreenRecord的對象-見用于實現(xiàn)該ScreenRecord對象類的偽代碼的附錄B)以包括該屏幕定義的所有數(shù)據(jù)區(qū)域(從而能夠支持記錄數(shù)據(jù)的子集的傳送)而作出該確定。如果已創(chuàng)建了包括該屏幕圖像中呈現(xiàn)的所有數(shù)據(jù)區(qū)域的記錄,則該記錄已被充分定義以僅支持更新。資源適配器僅對于該記錄中已存在的區(qū)域調用beginBuild-而不添加新區(qū)域。也就是說,當沒有現(xiàn)有ScreenRecord時,資源適配器能創(chuàng)建ScreenRecord,并建立(添加)所有必須的區(qū)域。如果沒有選擇FullRefresh,然后ScreenRecord必須已經(jīng)被填充(populated)。只能改變存在的區(qū)域,并且不能由資源適配器添加進新區(qū)域。在工具已預建立了該ScreenRecord并用存取程序和有意義的名稱定制它的情況下,該資源適配器將不重寫這些區(qū)域??捎僧a(chǎn)生的ScreenRecord完成它,而不管beginBuild和buildField方法的行為。huildField該buildField方法用于創(chuàng)建區(qū)域或填充屏幕記錄中的現(xiàn)有區(qū)域。當創(chuàng)建區(qū)域時,它被分配一個索引號。該示例實施例中的索引號開始于1,并對于buildField的每次調用而遞增。在該示例實施例中,資源適配器304按照如下順序在屏幕圖像中傳遞區(qū)域從左到右、和從上到下。(可替換采用其他順序或形式。)如以上偽代碼所示,buildField可拋出ScreenException(屏幕異常)并可被傳遞最多三種參數(shù)IFieldData;IFieldAttrInfo;和ITextAttrInfo。下面描述這三種可能參數(shù)的每一種。另外,在附錄A中提供偽代碼,用于對這三種可能參數(shù)的每一種而例示的這些類。endBuild該方法表示已結束了該建立處理。它表示不再創(chuàng)建或填充區(qū)域。沒有參數(shù)傳遞給該endBuild方法。getScreenId和setScreenId所述setScreenId和getScreenId方法分別提供用唯一標識符存取(即分別寫或讀)或檢索該唯一標識符的能力。該ScreenId標記允許資源適配器304標記提供用于接收輸出的ScreenRecord。如果然后將該ScreenRecord用于輸入,該資源適配器304可查看該標記(ScreenId)以確定它是否是用于輸出的最后一個。如果是,則作為性能優(yōu)化,資源適配器304可跳過該輸入記錄的確認,該確認否則將確認該輸入記錄匹配屏幕呈現(xiàn)的該數(shù)據(jù)。getFields使得能夠存取(該例中,讀的能力)該屏幕記錄中存儲的區(qū)域的該方法返回該記錄中所有區(qū)域的迭代程序。該getFields方法依賴于屏幕記錄(在該示例實施例中,由依次依賴于該FieldInfo接口的ScreenRecord類的實例實現(xiàn))。getModifiedFields被調用時,該方法也使得能夠存取該屏幕記錄中存儲的區(qū)域,返回已由該屏幕記錄處理器402標記為修改的所有區(qū)域的迭代程序。當該修改屬性值為真時,將區(qū)域標記為修改。這將發(fā)生在調用FieldRecord.setText(區(qū)域記錄設置文本)(字符串)方法時。如上所述,該IScreenable接口,尤其是beginBuild方法使用符合這些類的三種參數(shù)IFieldData(區(qū)域數(shù)據(jù));IFieldAttrInfo(區(qū)域屬性信息);和ITextAttrInfo(文本屬性信息)。下面描述這三種類。IFieldData在該示例實施例中,需要從該IFieldIData類例示的對象。該IFieldData類提供關于區(qū)域及其內容的基本信息。在附錄A中發(fā)現(xiàn)描述該類的實現(xiàn)的偽代碼。例如,在該示例實現(xiàn)中,該IFieldData類提供getPos方法,其返回一個絕對位置,從而能計算屏幕圖像中區(qū)域的行和列位置。IFieldAttrInfo該類(在該示例實現(xiàn)中為可選)提供關于特定區(qū)域屬性的信息。例如,在描述該類的一個示例實現(xiàn)的附錄A中發(fā)現(xiàn)的偽代碼提供例如背景顏色、前景顏色、字符集、高亮屬性等的信息。如果空值被傳遞給該buildField方法(上述),則該屏幕記錄306假設該區(qū)域不具有屬性。結果,如果將暴露區(qū)域屬性性質,則該屏幕記錄306可按需要提供缺省值。ITextAttrInfo在該示例實施例中,該類的使用是可選的。該ITextAttrInfo類提供關于文本的各個字符的屬性的信息。在附錄A中發(fā)現(xiàn)的示例ITextAttrInfo類的偽代碼闡明了該示例實施例提供關于文本顏色和其他擴展屬性的信息。應理解可在替換實施例中提供其他文本屬性(例如字體大小、字體特性-斜體、黑體、下劃線等)。如果空值傳遞給該IScreenable接口均buildField方法,則該屏幕記錄306假設沒有單獨屬性可用。結果,如果將暴露該文本屬性性質,則屏幕記錄306提供可能需要的任何缺省值。IScreenInfo接口該接口代表關于屏幕圖像的信息。由資源適配器304實現(xiàn)該ScreenInfo(屏幕信息)接口以傳遞信息到屏幕記錄306。附錄A中包括實現(xiàn)該ScreenInfo接口的示例實施例的偽代碼。在該示例實施例中,由ScreenInfo接口描述關于屏幕圖像的一般數(shù)據(jù)。該一般數(shù)據(jù)包括一般視覺特性,例如缺省顏色和字符集等。另外,該ScreenInfo接口提供描述行數(shù)(通過調用getDepth(獲得深度)方法而返回)、列數(shù)(通過調用getWidth(獲得寬度)方法而返回)和屏幕圖像中的區(qū)域數(shù)(通過調用getFieldCount(獲得區(qū)域計數(shù))而返回)的數(shù)據(jù)。本領域普通技術人員應明白,該ScreenInfo接口(在本發(fā)明的其他方面中)使得應用程序能無需老應用程序310(圖3)提供的屏幕圖像的詳細知識而被開發(fā)。利用該ScreenInfo接口,可在執(zhí)行期間由客戶機應用程序302確定關于屏幕圖像的重大或重要的細節(jié)。例如,執(zhí)行期間,客戶機應用程序302可利用該ScreenInfo接口來確定屏幕圖像的大小(列×行)和包括在其中的區(qū)域數(shù)。當與上述getFields方法聯(lián)合時,可查明關于每一區(qū)域的附加細節(jié)。這些特點為應用程序開發(fā)者提供了產(chǎn)生許多利益的非常強大的結合。IFieldInfo如上所述,由形成上述IScreenable接口的一部分的getFields方法依賴該FieldInfo接口。該FieldInfo接口代表資源適配器304可使用的信息,以確定哪一區(qū)域在該屏幕圖像的其內部表示中更新。由IScreenable接口內定義的、記錄實現(xiàn)的getFields或getModifiedFields方法返回的對象實現(xiàn)該接口。附錄A中發(fā)現(xiàn)了該IFieldInfo接口的實現(xiàn)的偽代碼例子。在該示例實現(xiàn)中,該IFieldInfo提供當被調用時,能提供描述區(qū)域名稱、區(qū)域的起始行和列、和該區(qū)域內包含的文本(例如名為“ADDRESS(地址)”的區(qū)域的個人地址)的數(shù)據(jù)的方法。IExtendedAttributes(擴展屬性)該IExtendedAttributes接口包括定義例如顏色、高亮和透明度的擴展屬性值的常數(shù)集合。區(qū)域記錄可實現(xiàn)該接口以將該常數(shù)加入其接口或類中。IFieldRecord(區(qū)域記錄)該FieldRecord接口包括用于存取區(qū)域和屏幕特性的方法,并由類似命名的類實現(xiàn)。附錄C中以偽代碼示出了該FieldRecord類。ScreenRecord(屏幕記錄)該類實現(xiàn)了ExtendedAttributes、Screenable和ScreenRecord接口。該屏幕記錄(由從該ScreenRecord類例示的對象實現(xiàn)-附錄B中以偽代碼示出)提供了在客戶機應用程序302和格式處理器306之間傳遞的基本記錄(圖3和4)。除了該資源適配器接口之外,在示例實施例中實現(xiàn)了一些接口,使得能開發(fā)工具。下表列出了由工具使用的接口和短描述。接口信息IFieldRecord由應用程序員使用以存取區(qū)域文本、屬性、和擴展屬性IScreenRecord由應用程序員使用以存取區(qū)域和屏幕特性類信息FieldRecord資源適配器能使用它以向ScreenRecord添加區(qū)域??捎蓱贸绦騿T在通用屏幕編程中使用它。ScreenRecord資源適配器能使用它以和屏幕一起工作??捎蓱贸绦騿T在通用屏幕編程中使用它。IScreenRecord接口該IScreenRecord接口包括用于存取區(qū)域和屏幕特性的方法,并示出如下。publicinterfaceIScreenRecord{IFieldRecordgetField(intindex)throwsScreenException;IFieldRecordgetField(Stringname)throwsScreenException;intgetFieldCount();java.util.IteratorgetFields();intgetScreenDepth();intgetScreenWidth();}作為上述屏幕記錄及其相關接口的結果,可開發(fā)客戶機應用程序302而無需老應用程序310產(chǎn)生和發(fā)送的屏幕圖像的任何公知常識。屏幕記錄306使無需公知常識的開發(fā)成為可能,它使應用程序能查詢屏幕圖像內包括的區(qū)域(和相關屬性)的屏幕記錄。有利的是,客戶機應用程序可確定已修改了這些區(qū)域中的哪一個,從而改善客戶機應用程序302的響應度。操作中,將由資源適配器304通過網(wǎng)絡發(fā)送描述屏幕圖像的來自老應用程序310的傳統(tǒng)數(shù)據(jù)(圖3)。利用上述接口,并尤其是屏幕接口,資源適配器304將使得創(chuàng)建(假設還沒有創(chuàng)建屏幕記錄)屏幕記錄306(在該示例實施例中,ScreenRecord類的實例)。然后用資源適配器304從老應用程序310接收的數(shù)據(jù)填充屏幕記錄306的數(shù)據(jù)結構。在資源適配器304先前創(chuàng)建該屏幕記錄的情況下(通過例示示例實施例中的類ScreenRecord的對象),將不創(chuàng)建新屏幕記錄306。當然,必要時修改現(xiàn)有屏幕記錄306中的各種數(shù)據(jù)結構(例如多個區(qū)域、區(qū)域或文本屬性等)。然而,當工具已預建立屏幕記錄306并用存取程序和有意義的名稱定制它的情況下,則該資源適配器304將不重寫這些區(qū)域。然后客戶機應用程序302被傳遞,或存取創(chuàng)建和填充的屏幕記錄306以按需要存取或修改其中的數(shù)據(jù)。修改的屏幕記錄306然后向回傳遞到資源適配器304。資源適配器304然后存取從屏幕記錄306中包含的數(shù)據(jù)產(chǎn)生數(shù)據(jù)流(將通過網(wǎng)絡312發(fā)送)所必須的數(shù)據(jù)。然后通過網(wǎng)絡312將具有老應用程序310能夠理解的格式的所產(chǎn)生的數(shù)據(jù)流發(fā)送到老應用程序310。本領域普通技術人員應明白在不脫離本發(fā)明精髓的情況下,可對上述實施例做出修改。例如,代替每一個單獨與許多文本屬性之一關聯(lián)的多個變量,在替換實施例中可使用比特域,其中每一比特將代表特定屬性。例如第一比特,當“開”(即設為“1”)時可表示該區(qū)域高亮。將該比特設置或改變?yōu)椤瓣P”(即設為“0”)時可表示該同一區(qū)域不高亮。還可替換的是,可修改存取該IScreenable接口中的區(qū)域的過程。在該示例實施例中,getFields方法使得能夠通過各種區(qū)域迭代??商鎿Q采用其他過程。例如可通過索引存取該區(qū)域。替換地,可通過區(qū)域名稱存取區(qū)域。還可替換的是,getFields使得能夠通過參考特定對象而存取區(qū)域(對象代表的每一區(qū)域)。還可替換的是,可通過列舉存取這些區(qū)域。可等同或替換采用其他可能的存取過程。還可替換的是,可采用資源適配器304和客戶機應用程序302之間的單一接口(本發(fā)明一個實施例定義的單一接口)作為IScreenable接口和屏幕記錄接口的代替。在該實施例中,該接口可提供信號到區(qū)域信息(描述屏幕和任何相關數(shù)據(jù))將開始的客戶機應用程序。其后,將傳遞描述屏幕中各區(qū)域的數(shù)據(jù)。當數(shù)據(jù)傳遞到該單一接口時,該資源適配器將能查詢所接收區(qū)域的全部或一些,并且另外確定特定區(qū)域是否需要任何處理(例如,如果已修改了區(qū)域,則需要處理)。本領域普通技術人員將明白,當落入所要求保護的發(fā)明的范圍之內時,可對本發(fā)明示例實施例中描述的各種類和接口進行修改。例如,可期望將某些接口/類合并到一起,或可替換地,將一個或多個接口/類的不同方法和變量打碎到具有不同于上述操作范圍的多于一個接口/類中。例如,可企圖在替換實施例中,合并IFieldAttrInfo和IExtendedAttributes接口。類似地,也可在相同或不同實施例中合并所述IFieldInfo和IFieldData接口。在替換實施例中,其他接口可類似合并或可替換地分開為多于一個接口。盡管已參考附圖和以上所述而圖示了本發(fā)明的一個(或多個)實施例,但本領域普通技術人員應明白,在不脫離本發(fā)明精髓的情況下,可做出改變和更改。應相信這樣的更改或改變落在所附權利要求定義的本發(fā)明的領域和范圍內。對于本領域普通技術人員而言,其他修改也是顯而易見的,所以,由權利要求限定本發(fā)明。附錄AIScreenInfo/***<p>*該接口定義了屏幕信息接口。這將允許*用戶查詢屏幕特性。*/publicinterfaceIScreenInfoextendsCloneable,java.io.Serializable{/***返回該屏幕的缺省背景顏色。*/publicintgetDefaultBackgroundColor();/***返回該屏幕的缺省字符集。*/publicintgetDefaultCharSet();/***返回該屏幕的缺省前景顏色。*/publicintgetDefaultForegroundColor();/***返回該屏幕的深度或行數(shù)。*/publicintgetDepth();/***返回該屏幕的區(qū)域數(shù)。*/publicintgetFieldCount();/***返回該屏幕的寬度或列數(shù)。*/<!--SIPO<DPn="16">--><dpn="d16"/>publicintgetWidth();/***返回屏幕是否支持擴展的高亮。*/publicbooleansupportsHighlighting();}IFieldData/***<p>*該接口定義了資源適配器所使用的區(qū)域數(shù)據(jù)接口。當該資源適配器建立區(qū)域時,該接口用于提供該區(qū)域的名稱、大小、位置、和文本。*/publicinterfaceIFieldDataextendsCloneable,java.io.Serializable{/***返回該區(qū)域的最大長度,包括任何屬性字節(jié)。*/publicintgetMaxLength();/***如果存在則返回區(qū)域名稱,否則返回空或“”。*/publicStringgetName();/***返回屏幕上該區(qū)域的位置。*/publicintgetPos();/***返回該區(qū)域的文本。不能為空。*/publicStringgetText();}<!--SIPO<DPn="17">--><dpn="d17"/>IFieldAttrInfo/***<p>*該接口定義了區(qū)域屬性接口。這將允許用戶查詢區(qū)域的屬性和擴展屬性。*/publicinterfaceIFieldAttrInfoextendsCloneable,java.io.Serializable{/***創(chuàng)建與該對象具有相同類的新對象。然后通過為它分配與該對象中的對應區(qū)域相同的值而初始化新對象區(qū)域的每一個。不調用構造符程序。@return(返回)初始化為與該對象相同狀態(tài)的新對象。*/publicObjectclone()throwsCloneNotSupportedException;/***該方法確定這兩個FieldAttInfo類型是否等同。如果該FieldAttrInfo類型與obj變量相同,則返回真(TRUN);否則返回假(FALSE)。@paramobj比較的參考對象。*/publicbooleanequals(Objectother);/***返回擴展背景屬性性質。*/publicintgetBackGroundColor();/***返回字符集擴展屬性。*/publicintgetCharacterSet();/***返回擴展前景屬性性質。*/<!--SIPO<DPn="18">--><dpn="d18"/>publicintgetForeGroundColor();/***返回擴展高亮屬性性質。*/publicintgetHighLight();/***返回擴展透明度屬性性質。*/publicintgetTransparency();/***返回基本顯示屬性性質。*/publicbooleanisDisplay();/***返回基本強度屬性性質。*/publicbooleanisHighIntensity();/***區(qū)域概括擴展屬性所需的左垂直線。*/publicbooleanisLeftline();/***來自區(qū)域確認擴展屬性的強制入口。*/publicbooleanisMandatoryEntry();/***來自區(qū)域確認擴展屬性的強制填充。*/publicbooleanisMandatoryFill();/***返回基本修改屬性性質。<!--SIPO<DPn="19">--><dpn="d19"/>*/publicbooleanisModified();/***返回基本數(shù)值屬性性質。*/publicbooleanisNumeric();/***用于區(qū)域概括擴展屬性所需的上劃線。*/publicbooleanisOverline();/***返回penDetectable性質。*/publicbooleanisPenDetectable();/***返回基本保護屬性性質。*/publicbooleanisProtected();/***區(qū)域概括擴展屬性所需的右垂直線。*/publicbooleanisRightline();/***來自區(qū)域確認擴展屬性的強制填充。*/publicbooleanisTrigger();ITextAttrInfo/***<p><!--SIPO<DPn="20">--><dpn="d20"/>*該接口定義文本屬性區(qū)域接口。這將允許用戶查詢區(qū)域文本中每一字符的顏色和擴展屬性。*/publicinterfaceITextAttrInfoextendsCloneable,java.io.Serializable{/***創(chuàng)建與該對象具有相同類的新對象。然后通過為它分配與該對象中的對應區(qū)域相同的值而初始化新對象區(qū)域的每一個。不調用構造符程序。@return(返回)初始化為該對象相同狀態(tài)的新對象。*/publicObjectclone()throwsCloneNotSupportedException;/***該方法確定這兩個TextAttrInfo類型是否等同。如果該TextAttrInfo類型與obj變量相同,則返回真;否則返回假。該對象參數(shù)是作比較的參考對象。*/publicbooleanequals(Objectother);/***返回文本顏色的字符陣列。*/publicchar[]getTextColors();/***返回擴展屬性的字符陣列。*/publicchar[]getTextExtAttrs();}IFieldRecordpublicinterfaceIFieldRecordextendsIFieldInfo{/***用于存取區(qū)域和屏幕特性的方法。<!--SIPO<DPn="21">--><dpn="d21"/>*/voidappendText(Stringtext)throwsScreenException;/***返回背景顏色數(shù)據(jù)。*/intgetBackGroundColor();/***返回前景顏色數(shù)據(jù)。*/intgetForeGroundColor();/***返回高亮數(shù)據(jù)。*/intgetHighlight();/***返回區(qū)域數(shù)據(jù)的最大長度。*/publicintgetMaxLength();/***返回透明度數(shù)據(jù)。*/intgetTransparency();/***返回表示是否顯示區(qū)域的數(shù)據(jù)。*/booleanisDisplay();/***返回表示區(qū)域是否是高強度的布爾值。*/booleanisHighIntensity();/**<!--SIPO<DPn="22">--><dpn="d22"/>*返回表示區(qū)域是否已修改的布爾值。*/booleanisModified();/***返回表示區(qū)域是否是數(shù)字的布爾值。*/booleanisNumeric();/***返回表示區(qū)域是否是圍欄的布爾值。*/booleanisPenDetectable();/***返回表示區(qū)域是否受保護的布爾值。*/booleanisProtected();voidsetText(Stringtext)throwsScreenException;}IFieldRecord/***<p>*該接口定義了應用程序使用的區(qū)域信息接口以獲得區(qū)域的名稱、起始列、起始行、起始位置、或文本。*/publicinterfaceIFieldInfo{/***返回該區(qū)域的名稱。*/StringgetName();/**<!--SIPO<DPn="23">--><dpn="d23"/>*返回該區(qū)域的起始列。*/intgetStartCol();/***返回該區(qū)域的起始位置。*/intgetStartPos();/***返回包括該區(qū)域的起始行。*/intgetStartRow();/***返回該區(qū)域的文本。*/StringgetText();}附錄BScreenRecord/***屏幕記錄支持與屏幕記錄一起工作的用戶和資源適配器接口。*/publicclassScreenRecordimplementsIExtendedAttributes,IScreenable,IScreenRecord,java.io.Serializable,javax.resource.cci.Record{/***用于在屏幕記錄的區(qū)域中單步執(zhí)行的迭代功能。*/protectedfinalclassFieldIteratorimplementsIterator{}/***基本數(shù)據(jù)結構。*/publicScreenRecord(){super();fields_=newjava.utl.HashMap();nameMap_=newjava.util.HashMap();fieldIndex_=0;name_=newString();description_=newString();depth_=[Screendepthinrows];width_=[Screenwidthincolumns];screenId_=“”;}/***將區(qū)域加入該屏幕記錄。*/voidaddField(FieldRecordfld,intfldIndex){}<!--SIPO<DPn="25">--><dpn="d25"/>/***從該屏幕記錄中去除所有區(qū)域。*/publicvoidbeginBuild(IScreenInfoscrInf,booleanclearRecord){}/***在該屏幕記錄中設置該屏幕圖像維數(shù)。*/protectedvoidsetScreenDimensions(intdepth,intwidth){}/***該方法創(chuàng)建屏幕記錄內的新區(qū)域或填充現(xiàn)有區(qū)域。對現(xiàn)有區(qū)域的參考是“名稱”屬性。資源適配器可對該屬性傳遞空以表示該區(qū)域沒有名稱。當創(chuàng)建區(qū)域時,分配索引號。該索引號開始于1,并對于每次createField的調用而遞增。該資源適配器從左到右、從上到下傳遞區(qū)域。*/publicvoidbuildField(IFieldDatafldInfo,IFieldAttrInfofieldAttributes,ITextAttrInfotextAttributes){}/***創(chuàng)建與該對象具有相同類的新對象。然后通過為它分配與該對象中的對應區(qū)域相同的值而初始化新對象區(qū)域的每一個。不調用構造符程序。新對象初始化為與該對象相同的狀態(tài)。*/publicObjectclone()throwsCloneNotSupportedException{}/***該方法確定FieldRecords是否等同。如果該FieldRecord與obj變量相同,則返回真;否則返回假。@paramobj做比較的參考對象。*/publicbooleanequals(Objectobj){<!--SIPO<DPn="26">--><dpn="d26"/>}/***返回該索引指定的區(qū)域。*/publicIFieldRecordgetField(intindex)throwsScreenException{}/***返回該名稱指定的區(qū)域。*/publicIFieldRecordgetField(Stringname)throwsScreenException{}/***返回屏幕中的區(qū)域數(shù)目。*/publicintgetFieldCount(){}/***返回getFields方法。*/publicjava.util.IteratorgetFields(){}/***getModifiedFields方法僅返回修改的區(qū)域。由布爾變量確定修改的區(qū)域??尚薷姆椒ㄒ詢H返回修改的和不受保護的區(qū)域(不允許受保護區(qū)域的修改)。*/publicjava.util.IteratorgetModifiedFields(){}/***getRecordName方法返回屏幕記錄名稱。*/publicStringgetRecordName(){<!--SIPO<DPn="27">--><dpn="d27"/>}/***getRecordShortDescription返回屏幕記錄的描述。*/publicStringgetRecordShortDescription(){}/***返回屏幕的行數(shù)(深度)。*/publicintgetScreenDepth(){}/***getScreenId方法返回屏幕記錄的唯一標識符(ID)。*/public.StringgetScreenId(){}/***返回列數(shù)(寬度)。*/publicintgetScreenWidth(){}/***setRecordName方法設置屏幕記錄的名稱。另一方法使得能夠存取該記錄名稱(在這種情況下,存取是寫或設置該值的能力)。*/publicvoidsetRecordName(Stringname){}/***setRecordShortDescription方法設置該屏幕記錄的描述。*/publicvoidsetRecordShortDescription(Stringdescription){<!--SIPO<DPn="28">--><dpn="d28"/>}/***setScreenId方法設置屏幕記錄的唯一標識符(ID)。*/publicvoidsetScreenId(StringscreenId){}}附錄CFieldRecordpublicclassFieldRecordimplementsIFieldRecord,java.io.Serializable{/***/protectedFieldRecord(){super();}/***FieldRecord提供描述區(qū)域特點和特性的方法和變量。*/publicFieldRecord(Stringname,intposition,introw,intcol,Stringtext,intmaximumLength,IFieldAttrInfofieldAttributes,ITextAttrInfotextAttributes){}/***將文本附加到區(qū)域的數(shù)據(jù)。如果區(qū)域受保護(即不能變更),則appendText方法拋出異常。*/publicvoidappendText(Stringtext)throwsScreenException{}/***創(chuàng)建與傳遞的對象具有相同類的新對象。該clone方法然后通過為它分配與傳遞的對象中對應區(qū)域相同的值而初始化新對象區(qū)域的每一個。不調用構造符程序。新對象初始化為與該對象相同的狀態(tài)。<!--SIPO<DPn="30">--><dpn="d30"/>*/publicObjectclone()throwsCloneNotSupportedException{}/***該equals方法確定FieldRecords是否等同。如果該FieldRecord與該obj變量相同,則返回真;否則返回假。該傳遞的參數(shù)obj是作比較的參考對象。*/publicbooleanequals(Objectobj){}/***返回表示背景顏色的值。*/publicintgetBackGroundColor(){}/***返回表示前景顏色的值。*/publicintgetForeGroundcolor(){}/***返回表示高亮的值。*/publicintgetHighlight(){}/***返回表示區(qū)域的最大長度的值。*/publicintgetMaxLength(){}/***返回表示區(qū)域名稱的值。<!--SIPO<DPn="31">--><dpn="d31"/>*/publicStringgetName(){}/***返回表示區(qū)域起始列的值。*/publicintgetStartCol(){}/***返回表示區(qū)域起始位置的值。*/publicintgetStartPos(){}/***返回表示區(qū)域起始行的值。*/publicintgetStartRow(){}/***返回表示與區(qū)域關聯(lián)的文本的值。*/publicStringgetText(){}/***返回表示區(qū)域文本的顏色屬性的值。*/publicchar[]getTextColors(){}/***返回擴展文本屬性。*/<!--SIPO<DPn="32">--><dpn="d32"/>publicchar[]getTextExtAttrs(){}/***返回表示區(qū)域的透明度屬性的值。*/publicintgetTransparency(){}/***返回表示是否將顯示區(qū)域的值。*/publicbooleanisDisplay(){}/***返回表示區(qū)域強度(顯示特性)的值。*/publicbooleanisHighIntensity(){}/***返回表示是否已修改區(qū)域的布爾值。*/publicbooleanisModified(){}/***返回表示區(qū)域所包含的數(shù)據(jù)類型的值。*/publicbooleanisNumeric(){}/***返回表示與區(qū)域關聯(lián)的數(shù)據(jù)是否受保護(即不可修改的)的值。*/publicbooleanisProtected(){}}權利要求1.一種用于向第一應用程序提供描述屏幕圖像的數(shù)據(jù)的方法,該方法包括對于從第二應用程序接收的數(shù)據(jù),所述接收的數(shù)據(jù)描述區(qū)域,用描述所述區(qū)域的所述數(shù)據(jù)填充數(shù)據(jù)結構,所述數(shù)據(jù)結構包括用于存取描述所述區(qū)域的所述數(shù)據(jù)的函數(shù)。2.根據(jù)權利要求1的方法,其中所述接收的數(shù)據(jù)還包括屬性數(shù)據(jù),所述屬性數(shù)據(jù)描述與所述區(qū)域關聯(lián)的屬性;并且所述方法還包括用所述屬性數(shù)據(jù)填充所述數(shù)據(jù)結構,所述數(shù)據(jù)結構還包括用于存取所述數(shù)據(jù)結構內的屬性數(shù)據(jù)的函數(shù)。3.根據(jù)權利要求2的方法,其中所述數(shù)據(jù)結構內的所述屬性數(shù)據(jù)識別是否已修改了描述所述區(qū)域的所述數(shù)據(jù)。4.根據(jù)前述任一權利要求的方法,其中所述數(shù)據(jù)結構是面向對象環(huán)境中的對象。5.根據(jù)權利要求2的方法,還包括利用用于存取描述所述區(qū)域的所述數(shù)據(jù)的所述函數(shù)來修改描述所述區(qū)域的所述數(shù)據(jù)。6.根據(jù)權利要求5的方法,還包括利用用于存取所述數(shù)據(jù)結構內的屬性數(shù)據(jù)的所述函數(shù)來表示已修改了描述所述區(qū)域的所述數(shù)據(jù)。7.根據(jù)權利要求5的方法,還包括將來自存儲所述修改的數(shù)據(jù)的所述數(shù)據(jù)結構的數(shù)據(jù)流發(fā)送到所述第二應用程序。8.根據(jù)權利要求7的方法,其中所述第一應用程序包括客戶機應用程序,而所述第二應用程序包括老應用程序。9.一種用于向應用程序提供描述屏幕圖像的數(shù)據(jù)的數(shù)據(jù)結構,該數(shù)據(jù)結構包括用于描述所述屏幕圖像的區(qū)域的數(shù)據(jù)的存儲器;和用于存取所述數(shù)據(jù)的函數(shù)。10.根據(jù)權利要求9的數(shù)據(jù)結構,還包括用于描述所述區(qū)域的屬性的數(shù)據(jù)。11.根據(jù)權利要求10的數(shù)據(jù)結構,其中所述函數(shù)包括讀取所述數(shù)據(jù)的函數(shù)和向所述存儲器寫入描述所述區(qū)域的數(shù)據(jù)的函數(shù)。12.根據(jù)權利要求11的數(shù)據(jù)結構,其中所述數(shù)據(jù)結構是面向對象環(huán)境中的對象,并且其中所述讀和寫函數(shù)包括所述對象的方法。13.根據(jù)權利要求12的數(shù)據(jù)結構,其中所述對象與資源適配器進行接口。14.根據(jù)權利要求13的數(shù)據(jù)結構,其中所述資源適配器包括Java(爪哇)2企業(yè)版連接器。15.一種包含數(shù)據(jù)和指令的計算機可讀介質,當被執(zhí)行時,這些數(shù)據(jù)和指令使計算機系統(tǒng)適于對于從第二應用程序接收的數(shù)據(jù),所述接收的數(shù)據(jù)描述區(qū)域,用描述所述區(qū)域的所述數(shù)據(jù)填充數(shù)據(jù)結構,所述數(shù)據(jù)結構包括用于存取描述所述區(qū)域的所述數(shù)據(jù)的函數(shù)。16.根據(jù)權利要求15的計算機可讀介質,其中所述接收的數(shù)據(jù)還包括屬性數(shù)據(jù),所述屬性數(shù)據(jù)描述與所述區(qū)域關聯(lián)的屬性;并且還包括數(shù)據(jù)和指令,當被執(zhí)行時,還使所述計算機系統(tǒng)適于用所述屬性數(shù)據(jù)填充所述數(shù)據(jù)結構,所述數(shù)據(jù)結構還包括用于存取所述數(shù)據(jù)結構內的屬性數(shù)據(jù)的函數(shù)。17.根據(jù)權利要求16的計算機可讀介質,其中所述數(shù)據(jù)結構內的所述屬性數(shù)據(jù)識別是否已修改了描述所述區(qū)域的所述數(shù)據(jù)。18.根據(jù)權利要求17的計算機可讀介質,其中所述數(shù)據(jù)結構是面向對象環(huán)境中的對象。19.根據(jù)權利要求16的計算機可讀介質,還包括數(shù)據(jù)和指令,當被執(zhí)行時,還使所述計算機系統(tǒng)適于利用用于存取描述所述區(qū)域的所述數(shù)據(jù)的所述函數(shù)來修改描述所述區(qū)域的所述數(shù)據(jù)。20.根據(jù)權利要求19的計算機可讀介質,還包括數(shù)據(jù)和指令,當被執(zhí)行時,還使所述計算機系統(tǒng)適于利用用于存取所述數(shù)據(jù)結構內的屬性數(shù)據(jù)的所述函數(shù)來表示已修改了描述所述區(qū)域的所述數(shù)據(jù)。21.根據(jù)權利要求19的計算機可讀介質,還包括數(shù)據(jù)和指令,當被執(zhí)行時,還使所述計算機系統(tǒng)適于將來自存儲所述修改的數(shù)據(jù)的所述數(shù)據(jù)結構的數(shù)據(jù)流發(fā)送到所述第二應用程序。全文摘要本發(fā)明一般涉及分布式計算機網(wǎng)絡中的客戶機-服務器、客戶機-主機、或服務器-服務器通信,并具體涉及適于方便這樣的通信的資源適配器的增強。本發(fā)明涉及增強與屏幕一起工作的資源適配器。可合并入或與現(xiàn)有資源適配器通信的本發(fā)明的某些方面提供了用于處理關于屏幕圖像的數(shù)據(jù)的標準屏幕記錄。該標準屏幕記錄對已知該屏幕格式或布局的公知常識的情況和不了解該屏幕格式的情況提供支持。另外,該標準屏幕記錄提供描述區(qū)域及屏幕圖像本身的所有屬性的詳細數(shù)據(jù)。另外,本發(fā)明也提供對區(qū)域屬性數(shù)據(jù)的簡單存取。在一些實施例中,本發(fā)明的某些方面可包括接口,使得能開發(fā)工具,該工具然后用于開發(fā)利用本發(fā)明其他方面的功能的應用程序。該接口可提供工具的通用方式,以支持實現(xiàn)該接口的資源適配器。文檔編號G06F13/38GK1589432SQ0282320公開日2005年3月2日申請日期2002年10月30日優(yōu)先權日2001年11月21日發(fā)明者約翰·格林,戴維·凱爾西申請人:國際商業(yè)機器公司