專(zhuān)利名稱(chēng):在宿主程序界面中嵌入第三方界面的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及程序界面互相嵌入和交互技術(shù),尤其涉及一種在宿主程序界面中嵌入第三方界面的方法。
背景技術(shù):
在互聯(lián)網(wǎng)即時(shí)通訊工具(QQ)的業(yè)務(wù)伙伴(S-BUDDY)應(yīng)用中,由于S-BUDDY服務(wù)商數(shù)量眾多,且行業(yè)各不相同,因此S-BUDDY服務(wù)商對(duì)業(yè)務(wù)受理界面有很強(qiáng)的個(gè)性化定制,導(dǎo)致QQ在技術(shù)實(shí)現(xiàn)上需要支持嵌入第三方定義的程序界面,實(shí)現(xiàn)QQ與S-BUDDY服務(wù)商界面的無(wú)關(guān)性,從而將界面的定制能力交給用戶(hù)。
目前要在宿主程序(需要嵌入第三方界面的主程序)中實(shí)現(xiàn)嵌入第三方界面主要有以下三種方法方法一、在宿主程序的源代碼中調(diào)用由第三方的界面ActiveX控件第三方將其需要的界面封裝為一個(gè)獨(dú)立的ActiveX控件,并將該控件提供給宿主程序,由宿主程序調(diào)用該控件。下面以VC6為例說(shuō)明宿主程序調(diào)用ActiveX控件的方法1、在宿主程序中,新建一個(gè)對(duì)話(huà)框。
2、執(zhí)行圖1A所示的文件菜單Project->Add to Project->Components andControls。
3、選取第三方提供的控件,參閱圖1B。
4、被選中的ActiveX控件插入到對(duì)話(huà)框中,參閱圖1C,圖中右部份即為新插入的第三方界面。
5、宿主程序編譯執(zhí)行,顯示如圖1D所示界面。
該方法存在以下缺點(diǎn)
1、必須修改宿主程序的源代碼才能支持新的界面,雖在技術(shù)上可行,但在S-BUDDY中卻不具備實(shí)際應(yīng)用價(jià)值;2、第三方界面均需要一個(gè)獨(dú)立的ActiveX控件,系統(tǒng)消耗大,當(dāng)控件數(shù)量很多時(shí)管理很復(fù)雜;3、一旦ActiveX控件發(fā)布后,該界面就不能再修改,幾乎沒(méi)有用戶(hù)可定制性;4、新的ActiveX控件發(fā)布后,需要更新所有的宿主程序版本,而S-BUDDY分布在全國(guó)各地的個(gè)人用戶(hù)的機(jī)器上,統(tǒng)一更新十分困難,且會(huì)造成很大的網(wǎng)絡(luò)和設(shè)備壓力;5、ActiveX控件的編寫(xiě)復(fù)雜,需要有很強(qiáng)的技術(shù)功底,并利用編程工具才能編寫(xiě),起點(diǎn)高,造成普通用戶(hù)幾乎不可能制作出自己的界面;6、ActiveX控件封裝嚴(yán)密,宿主程序難以接管其所有其消息,因此其操作結(jié)果必須由ActiveX控件自身來(lái)返回給第三方,但第三方界面很多時(shí),協(xié)議接口十分復(fù)雜,很容易影響到整個(gè)系統(tǒng)的穩(wěn)定性。
方法二、宿主程序使用第三方界面插件(PlugIn)第三方將其需要的界面封裝為一個(gè)獨(dú)立的插件(PlugIn),并將該控件提供給宿主程序,由宿主程序調(diào)用該插件。下面以VC6本身使用插件的例子來(lái)說(shuō)明該方法1、宿主程序提供插件接口,所有的插件都必須嚴(yán)格遵守該接口;2、將所需要的功能封裝在獨(dú)立的插件內(nèi),并放置到宿主程序的插件目錄下;3、在VC6中配置該插件Tools->Customize...,顯示如圖2A所示配置界面;4、在界面上選中相應(yīng)的插件并確認(rèn),該插件將立即啟用,執(zhí)行效果如圖2B所示。
該方法存在以下缺點(diǎn)1、宿主程序需要支持復(fù)雜的插件加載、卸載、資源分配以及調(diào)用機(jī)制;2、由于插件必須安裝在宿主程序本地,當(dāng)插件數(shù)量很多時(shí)管理很復(fù)雜;
3、一旦插件發(fā)布后,該界面就不能再修改,幾乎沒(méi)有用戶(hù)可定制性;4、新插件發(fā)布后,需要將其同步到所有宿主程序的歸屬機(jī)器上,而S-BUDDY分布在全國(guó)各地的個(gè)人用戶(hù)的機(jī)器上,統(tǒng)一更新十分困難,且會(huì)造成很大的網(wǎng)絡(luò)和設(shè)備壓力;5、插件的編寫(xiě)復(fù)雜,需要有很強(qiáng)的技術(shù)功底,并利用編程工具才能編寫(xiě),起點(diǎn)高,造成普通用戶(hù)幾乎不可能制作出自己的界面;6、插件封裝嚴(yán)密,宿主程序難以接管其所有其消息,因此其操作結(jié)果必須由插件自身來(lái)返回給第三方,但第三方界面很多時(shí),協(xié)議接口十分復(fù)雜,很容易影響到整個(gè)系統(tǒng)的穩(wěn)定性。
方法三、宿主程序內(nèi)嵌HTML頁(yè)面第三方將其需要的界面寫(xiě)成對(duì)應(yīng)的HTML頁(yè)面,并發(fā)布到宿主程序可以訪(fǎng)問(wèn)的網(wǎng)絡(luò)(如Internet)上。宿主程序則在自己的界面上內(nèi)嵌HTML瀏覽器,宿主程序啟動(dòng)后顯示該HTML頁(yè)面,用戶(hù)在該HTML頁(yè)面上填寫(xiě)信息并提交。技術(shù)方案如圖3A1、在宿主程序的界面中插入HTML瀏覽器控件,見(jiàn)圖3B;2、編寫(xiě)相應(yīng)代碼來(lái)控制HTML瀏覽器控件,使之能夠顯示指定HTML頁(yè)面的能力;3、編譯執(zhí)行宿主程序,如圖3C。
該方法存在以下缺點(diǎn)1、宿主程序需支持HTML瀏覽器,在不同的操作系統(tǒng)下實(shí)現(xiàn)同一功能無(wú)法兼容;2、如果用戶(hù)在代理服務(wù)器后面還需要支持WEB代理,對(duì)宿主程序改動(dòng)很大;3、對(duì)第三方而言,需要有WEB SERVER,以便向宿主程序提供HTML頁(yè)面,并接受返回的用戶(hù)數(shù)據(jù)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種在宿主程序界面中嵌入第三方界面的方法,以解決現(xiàn)有技術(shù)中存在定制第三方界面技術(shù)要求高,更新和維護(hù)困難的缺點(diǎn)。
為解決上述問(wèn)題,本發(fā)明提供以下技術(shù)方案一種在宿主程序界面中嵌入第三方界面的方法,該方法為將描述第三方界面的描述文件傳送給宿主程序,宿主程序解析該描述文件并生成第三方界面。
根據(jù)上述方法宿主程序接收到描述文件后先生成相應(yīng)的動(dòng)態(tài)界面,再將描述文件傳送給該動(dòng)態(tài)界面,由動(dòng)態(tài)界面解析描述文件并生成第三方界面。
用戶(hù)操作完第三方界面后,將從第三方界面獲得的信息生成數(shù)據(jù)包傳遞給宿主程序并關(guān)閉第三方界面,然后由宿主程序?qū)?shù)據(jù)包傳送給第三方設(shè)備。
由第三方通過(guò)網(wǎng)絡(luò)將描述文件傳送給宿主程序。
傳送描述文件前先進(jìn)行壓縮處理,在解析描述文件時(shí)先進(jìn)行解壓縮處理。
宿主程序提供支持所述描述文件的控件能力集,當(dāng)接收到描述文件時(shí)通過(guò)執(zhí)行該能力集來(lái)生成動(dòng)態(tài)界面。
由獨(dú)立的插件提供支持所述描述文件的控件能力集,當(dāng)宿主程序接收到描述文件時(shí)調(diào)用該插件來(lái)生成動(dòng)態(tài)界面。
對(duì)第三方界面的描述中包含對(duì)屬性和動(dòng)作的描述。
采用可擴(kuò)展的標(biāo)記性語(yǔ)言(XML)、自定義文本文件、二進(jìn)制文件或資源文件描述第三方界面。
本發(fā)明具有以下有益效果1、實(shí)現(xiàn)了宿主程序和第三方界面的無(wú)關(guān)性通過(guò)提供XML界面能力集,使得第三方可以在此能力集范圍內(nèi)任意定義自己的專(zhuān)用界面,實(shí)現(xiàn)了宿主程序和第三方界面的無(wú)關(guān)性,完善地解決了S-BUDDY這類(lèi)業(yè)務(wù)的界面多樣化需求。
2、通過(guò)這種嵌入界面的方式給第三方提供了自己定制用戶(hù)界面并獲取用戶(hù)數(shù)據(jù)的能力。
3、降低了技術(shù)門(mén)檻,方便第三方定制能力集采用簡(jiǎn)單易懂的文本方式來(lái)描述界面,并提供了XML資源編輯工具,即時(shí)普通用戶(hù)也可迅速定制其界面。
4、可維護(hù)性好第三方的界面不需要安裝到宿主程序本地,因此不需要本地維護(hù),也不存在管理問(wèn)題,第三方界面的變動(dòng)也不需要更新宿主程序。
5、更新方便第三方更改其界面定義后,不需要同步到宿主程序本地,而是在實(shí)時(shí)交互中傳送給宿主程序,因此更新第三方界面十分方便。
圖1A、圖1B、圖1C和圖1D為現(xiàn)有技術(shù)中實(shí)施方法一的界面示意圖;圖2A、圖2B為現(xiàn)有技術(shù)中實(shí)現(xiàn)方法二的界面示意圖;圖3A、圖3B、圖3C為現(xiàn)有技術(shù)中實(shí)現(xiàn)方法三的界面示意圖;圖4為本發(fā)明中第三方界面在整個(gè)方案中的地位示意圖;圖5為說(shuō)明組合框控制的界面示意圖;圖6為產(chǎn)生的第三方界面示意圖。
具體實(shí)施例方式
本實(shí)施例主要以采用可擴(kuò)展標(biāo)記語(yǔ)言(XML)描述第三方界面為例對(duì)本發(fā)明進(jìn)行說(shuō)明。
在本發(fā)明中,第三方只需提供描述其界面的XML文本,宿主程序根據(jù)其腳本中的界面定義來(lái)生成第三方界面,并可將從該界面填寫(xiě)的結(jié)果以XML返回給第三方。
參閱圖4所示,在即時(shí)通訊(IM)中,網(wǎng)絡(luò)中間件在第三方設(shè)備和宿主程序之間進(jìn)行數(shù)據(jù)或文件傳送。
本發(fā)明的處理流程如下步驟①第三方利用XML資源編輯器或者手工編寫(xiě)XML界面文本;步驟②第三方設(shè)備收到該文本后,傳遞給網(wǎng)絡(luò)中間件;步驟③網(wǎng)絡(luò)中間件將XML文本傳給宿主程序;步驟④宿主程序生成XML對(duì)話(huà)框(也可為一般的窗口界面),并將XML界面文本傳遞給該對(duì)話(huà)框;
步驟⑤XML對(duì)話(huà)框根據(jù)收到的XML文本產(chǎn)生相關(guān)的界面(第三方界面);步驟⑥最終用戶(hù)在該界面上完成資料的填寫(xiě)后,點(diǎn)擊“提交”按鈕時(shí)XML對(duì)話(huà)框關(guān)閉,并將填寫(xiě)結(jié)果打包給宿主程序;步驟⑦宿主程序通過(guò)網(wǎng)絡(luò)中間件將結(jié)果傳送給第三方設(shè)備。
以下對(duì)上述處理流程進(jìn)行詳細(xì)說(shuō)明宿主程序提供XML控件能力集,支持靜態(tài)文本、文本編輯、組合框、列表框、單選按鈕群組、GroupBox、單選按鈕、復(fù)選按鈕、線(xiàn)條、圖像、進(jìn)程條等主要控件。
宿主程序支持可動(dòng)態(tài)擴(kuò)充的控件能力集,上述控件已覆蓋了一般程序所常用的絕大部分控件。當(dāng)現(xiàn)有控件能力集不夠用時(shí),還可動(dòng)態(tài)擴(kuò)充控件能力集,新擴(kuò)充的控件不影響到原來(lái)的第三方已經(jīng)定義好的界面。
宿主程序提供控件能力集的方式有兩種A、將控件能力集嵌入到主程序中,但需要升級(jí)宿主程序。
B、將控件能力集作為一個(gè)獨(dú)立的插件,宿主程序通過(guò)接口調(diào)用該插件。當(dāng)能力集增加新的控件后,升級(jí)該插件即可,完全與宿主程序無(wú)關(guān)。
控件能力集中的每種控件均可支持屬性(Property)和動(dòng)作(Action)。其中屬性描述了控件某個(gè)方面的特性,如標(biāo)題、位置、文本顏色、背景顏色、是否可見(jiàn)、是否使能等,由于每個(gè)控件的特性存在差異,因此其支持的屬性也各不相同。
動(dòng)作描述了控件的某個(gè)屬性發(fā)生變更后,其他控件的屬性發(fā)生跟隨性變化,如用戶(hù)選中組合框中的某項(xiàng)時(shí),某個(gè)編輯控件不能繼續(xù)讓用戶(hù)填寫(xiě),此時(shí)就可以定義對(duì)應(yīng)的動(dòng)作使得編輯控件隱藏或者禁止編輯。
參閱圖5,以XML FORM中的組合框控件(框1內(nèi)的控件)為例該控件的XML定義為<項(xiàng)目選擇 類(lèi)型=“COMBOBOX”坐標(biāo)=“15,323,135,414”使能=“TRUE”選中項(xiàng)=“無(wú)默認(rèn)項(xiàng)”必填=“TRUE”>
<選項(xiàng)清單>
<選項(xiàng) 項(xiàng)名=“第一項(xiàng)”/>
<選項(xiàng) 項(xiàng)名=“第二項(xiàng)”/>
<選項(xiàng) 項(xiàng)名=“第三項(xiàng)”/>
</選項(xiàng)清單>
<動(dòng)作清單>
<第[1]動(dòng)作 選中項(xiàng)=“第一項(xiàng)”類(lèi)型=“等于”控件名=“控制列表”屬性名=“選中項(xiàng)”屬性值=“第一項(xiàng)”/>
<第[2]動(dòng)作 選中項(xiàng)=“第二項(xiàng)”類(lèi)型=“等于”控件名=“控制列表”屬性名=“選中項(xiàng)”屬性值=“第二項(xiàng)”/>
<第[3]動(dòng)作 選中項(xiàng)=“第三項(xiàng)”類(lèi)型=“等于”控件名=“控制列表”屬性名=“選中項(xiàng)”屬性值=“第三項(xiàng)”/>
</動(dòng)作清單>
</項(xiàng)目選擇>
上面的定義中,為該組合框定義了如下屬性(1)控件名稱(chēng)項(xiàng)目選擇;(2)類(lèi)型COMBOBOX;(3)坐標(biāo)15,323,135,414;(4)使能TRUE;(5)選中項(xiàng)無(wú)默認(rèn)項(xiàng);(6)必填TRUE;(7)列表項(xiàng)清單第一項(xiàng)、第二項(xiàng)、第三項(xiàng)。
同時(shí),還為該組合框定義了如下動(dòng)作(“控制列表”是另外一個(gè)列表框控件)(1)當(dāng)選中“第一項(xiàng)”時(shí)控制列表也選中包含“第一項(xiàng)”文本的項(xiàng)目;(2)當(dāng)選中“第二項(xiàng)”時(shí)控制列表也選中包含“第二項(xiàng)”文本的項(xiàng)目;(3)當(dāng)選中“第三項(xiàng)”時(shí)控制列表也選中包含“第三項(xiàng)”文本的項(xiàng)目。
宿主程序能夠根據(jù)界面XML定義文本來(lái)動(dòng)態(tài)生成相關(guān)的界面,即實(shí)現(xiàn)第三方界面和宿主程序的無(wú)關(guān)性。如第三方界面定義如下
<?xml version=′1.0′encoding=′gb2312′?>
<XML表單FORM標(biāo)題=′用戶(hù)調(diào)查′FORM位置=′221,198,371,398′背景色=′212,208,200′字體大?。健?0′>
<普通按鈕 類(lèi)型=“BUTTON”標(biāo)題=“退出”坐標(biāo)=“15,142,135,166”使能=“TRUE”動(dòng)作=“COMMIT”/>
<文本編輯 類(lèi)型=“EDIT”標(biāo)題=“”坐標(biāo)=“15,65,135,87”使能=“TRUE”單行=“TRUE”必填=“TRUE”/>
<姓名 類(lèi)型=“STATIC”標(biāo)題=“您的姓名”坐標(biāo)=“15,41,135,61”使能=“TRUE”/>
</XML表單>
生成的第三方界面如圖6所示,宿主程序在用戶(hù)填寫(xiě)完該界面后,可將用戶(hù)的結(jié)果透?jìng)鹘o第三方,以便第三方實(shí)現(xiàn)自己的業(yè)務(wù)流程。
采用標(biāo)準(zhǔn)的XML文本,在IE中可解析,可支持GB2312中文編碼和英文編碼。因此,XML控件能力集屬性既可支持中文又可支持英文。
由于XML描述的第三方界面為文本方式,可有比較大的壓縮率,因此,將XML文本文件壓縮后再通過(guò)網(wǎng)絡(luò)傳送,這樣可大幅度降低網(wǎng)絡(luò)要求和對(duì)相關(guān)設(shè)備的要求。
本實(shí)施例雖然以采用XML描述第三方界面為例,但界面描述采用自定義文本文件、二進(jìn)制文件或者資源文件(如微軟公司Visual C++的.RC文件)來(lái)描述界面,也可達(dá)到用XML來(lái)描述界面相同的效果。
權(quán)利要求
1.一種在宿主程序界面中嵌入第三方界面的方法,其特征在于該方法為將描述第三方界面的描述文件傳送給宿主程序,宿主程序解析該描述文件并生成第三方界面。
2.如權(quán)利要求1所述的方法,其特征在于,宿主程序接收到描述文件后先生成相應(yīng)的動(dòng)態(tài)界面,再將描述文件傳送給該動(dòng)態(tài)界面,由動(dòng)態(tài)界面解析描述文件并生成第三方界面。
3.如權(quán)利要求2所述的方法,其特征在于,用戶(hù)操作完第三方界面后,將從第三方界面獲得的信息生成數(shù)據(jù)包傳遞給宿主程序并關(guān)閉動(dòng)態(tài)界面,然后由宿主程序?qū)?shù)據(jù)包傳送給第三方設(shè)備。
4.如權(quán)利要求1所述的方法,其特征在于,由第三方通過(guò)網(wǎng)絡(luò)將描述文件傳送給宿主程序。
5.如權(quán)利要求1或4所述的方法,其特征在于,傳送描述文件前先進(jìn)行壓縮處理,在解析描述文件時(shí)先進(jìn)行解壓縮處理。
6.如權(quán)利要求1或2所述的方法,其特征在于,宿主程序提供支持所述描述文件的控件能力集,當(dāng)接收到描述文件時(shí)通過(guò)執(zhí)行該能力集來(lái)生成動(dòng)態(tài)界面。
7.如權(quán)利要求6所述的方法,其特征在于,由獨(dú)立的插件提供支持所述描述文件的控件能力集,當(dāng)宿主程序接收到描述文件時(shí)調(diào)用該插件來(lái)生成動(dòng)態(tài)界面。
8.如權(quán)利要求1所述的方法,其特征在于,對(duì)第三方界面的描述中包含對(duì)屬性和動(dòng)作的描述。
9.如權(quán)利要求1所述的方法,其特征在于,采用可擴(kuò)展的標(biāo)記性語(yǔ)言(XML)、自定義文本文件、二進(jìn)制文件或資源文件描述第三方界面。
全文摘要
本發(fā)明公開(kāi)了一種在宿主程序界面中嵌入第三方界面的方法,該方法為將描述第三方界面的描述文件傳送給宿主程序;宿主程序生成動(dòng)態(tài)界面,并將從第三方接收到的界面描述文本傳遞給該動(dòng)態(tài)界面;所述動(dòng)態(tài)界面解析描述文件,生成相應(yīng)的第三方界面并接受用戶(hù)操作;當(dāng)用戶(hù)填寫(xiě)完并確認(rèn)操作完成后,動(dòng)態(tài)界面把從第三方界面獲得的信息生成數(shù)據(jù)包傳遞給宿主程序,并關(guān)閉所述動(dòng)態(tài)界面;以及由宿主程序?qū)⑺鰯?shù)據(jù)包透?jìng)魉徒o第三方設(shè)備。
文檔編號(hào)G06F9/44GK1629803SQ20031011743
公開(kāi)日2005年6月22日 申請(qǐng)日期2003年12月18日 優(yōu)先權(quán)日2003年12月18日
發(fā)明者柴銀輝 申請(qǐng)人:騰訊科技(深圳)有限公司