專利名稱:一種動態(tài)映射接口調用系統(tǒng)及方法
技術領域:
本發(fā)明涉及工程設計信息系統(tǒng)集成和異構多數據源互操作技術領域,尤其 涉及一種動態(tài)接口調用系統(tǒng)及方法。
技術背景隨著工程設計信息系統(tǒng)集成復雜度的急劇提高,系統(tǒng)中的異構多數據源操 作的互操作性要求不斷提高,特別是系統(tǒng)對于不同設備接入的要求越來越高, 典型的應用有如軌道交通自動售檢票系統(tǒng)中新型的檢票機、售票機的無縫接 入、出版系統(tǒng)中異種廣告代理系統(tǒng)的接入等應用場合,現有技術中,往往針對 異種系統(tǒng)及設備的接入需要修改大量程序,升級版本處理,這在大型分布式應 用中會帶來相當大的程序一致性風險?,F有技術中,申請?zhí)枮镃N1920837A,發(fā)明名稱為"面向復雜裝備多學科設 計軟件集成的參數映射方法",該發(fā)明提供了設計參數的辨識機制,正確識別 多學科設計軟件的輸入、輸出文件中每個參數的語義和語法,在多學科設計軟 件處理的非結構化數據和集成平臺處理的結構化數據之間建立動態(tài)映射。該發(fā) 明專利是將所有要處理的文件編號保存到數據庫的各分類表中,并且通過操作 者給出每個具體參^t的文件中的位置及控制信息,^_得變量定位對象屬性與數 據庫表中的字段值——對應。可以看出該專利重點在參數的辨識,而實際系統(tǒng) 中,接口與調用之間存在更大的差異,典型如接口函數有三個參數,boolbOpen =Open ( string sFilename, string sLocation, int32nMode), 而"i周用方只發(fā)送兩 個參數bool bOpend = OpenFile ( string sFilepath, short iMode )等。綜上所述,現有技術中異種系統(tǒng)及設備的接入需要修改大量程序,而且, 因參數缺省或參數合并造成異種系統(tǒng)參數非——對應不能進行函數調用。發(fā)明內容本發(fā)明涉及一種接口調用系統(tǒng)裝置及方法,用以解決現有技術中,異種系 統(tǒng)及設備的接入需要修改大量程序,因參數缺省或參數合并造成異種系統(tǒng)參數 非一一對應不能進行函數調用的問題。本發(fā)明實施例提供的一種動態(tài)接口調用的方法,包括 調用方發(fā)送調用函數給接口調用系統(tǒng);接口調用系統(tǒng)根據保存的映射配置信息,將所述調用函數轉換為被調用方 函數調用形式進行調用。本發(fā)明實施例提供的一種動態(tài)接口調用的系統(tǒng),包括接口調用系統(tǒng)和接 口,其中,所述接口,用于接收來自調用方的調用函數;所述接口調用系統(tǒng),用于根據保存的映射配置信息,將所述調用函數轉換 為被調用方函數調用形式進行調用。采用本發(fā)明實施例中的系統(tǒng)及方法,通過接口轉換的方式,實現了非—— 對應參數變換的缺省處理、參數合并計算處理等復雜應用情況,并且通過堆棧 有效保證調用返回參數的返回。本發(fā)明通過接口調用代理,實現基于代理的動 態(tài)映射接口調用,完成異構的系統(tǒng)接口之間的數據格式轉換與接口動態(tài)映射。
圖1為本發(fā)明實施例的接口調用系統(tǒng)調用方法流程圖;圖2為本發(fā)明實施例中存在返回值時返回方法流程圖;圖3是本發(fā)明實施例的基于代理的動態(tài)映射接口調用系統(tǒng)的結構圖;圖4是本發(fā)明實施例的基于代理的動態(tài)映射接口調用方法的流程圖。
具體實施方式
在本發(fā)明實施例中,調用方發(fā)送調用函數給接口調用系統(tǒng);接口調用系統(tǒng)根據保存的映射配置信息,將所述調用函數轉換為被調用方函數調用形式進行 調用。參見圖l所示,本發(fā)明實施例的流程如下步驟101:調用方將調用函數封裝為可序列化數據流,并發(fā)送給接口調用 系統(tǒng)。步驟102:保存該數據流調用,接口調用系統(tǒng)將所述可序列化數據流解封 裝為調用方函數形式的數據流。步驟103:根據映射配置信息將調用函數轉化為被調用方函數格式。所述映射配置信息可以包括接口模板以及數據格式轉換信息,所述接口模 板包括調用函數轉換前后的名稱及參數序的對應關系,所述接口轉換模板可以 由正則表達式構成??梢园凑杖缦路绞綄⑺稣{用函數轉換為被調用方函數調 用形式進行調用進行接口模板的匹配,按照所匹配的接口模板變更所述調用 函數的名稱及參數序,并且根據所述數據格式轉換信息轉換參數的數據類型;步驟104:對所述調用函數進行調用,并且可以按照名空間調用所述函數, 或進行遠程調用。對于某些調用不需要返回執(zhí)行結果,則流程執(zhí)行到步驟103結束;若需將 執(zhí)行結果返回調用方的操作,則根據圖2所示的流程返回執(zhí)行結果 步驟201:接口調用系統(tǒng)保存執(zhí)行結果。 步驟202:將被調用方函數轉換為調用方函數形式。 步驟203:根據返回值更新步驟102所述可序列化數據流的相應部分。 步驟204:接口調用代理返回執(zhí)行結果。在進行函數調用之后,所述接口調用系統(tǒng)可以根據數據格式轉換表,對調 用函數的執(zhí)行結果按照數據格式轉換表反向轉換參數的數據類型,并對參數進 行接口模板變更反向轉換;將接口調用后函數參數值和返回值返回給調用方。所述將接口調用后函數參數值和返回值返回給調用方的具體方式如下所述接口調用系統(tǒng)利用所述函數參數值和返回值修改所述可序列化數據流,并將修改后的所述可序列化數據流返回給所述調用方;所述調用方將所述 可序列化數據流轉換為調用函數的形式。參見圖3所示,本發(fā)明實施例的一種動態(tài)接口調用的系統(tǒng)包括接口調用 系統(tǒng)301和接口321,其中,所述接口 321,完成調用方與接口調用裝置之間 的通信交互,比如用于接收來自調用方的調用函數,將執(zhí)行結果返回給調用 方;當接口調用系統(tǒng)啟用時,調用方通過接口調用封裝模塊將調用函數封裝為 可序列化數據流發(fā)送給接口調用系統(tǒng)301進行處理;所述4妻口調用系統(tǒng)301 , 用于根據保存的映射配置信息,將所述調用函數轉換為被調用方函數調用形式 進行調用。所述接口調用系統(tǒng)301可以包括接口調用代理302、接口轉換模板管理 器306和數據格式轉化管理器305。其中,接口調用代理302,用于保存提供公開的統(tǒng)一接口調用函數與錯誤 獲取函數,接收并處理來自所述接口的函數調用;接口轉換模板管理器306, 用于進行接口模板的匹配,按照所匹配的接口模板更新所述調用函數的名稱及 參數序,包含函數參數與被調用的參數的非一一對應參數變換處理。數據格式 轉化管理器305,根據數據格式轉換信息實現調用函數與被調用函數參數數據 格式的轉換。所述接口調用系統(tǒng)還包括封裝模塊303,所述封裝模塊實現調用函數和 可序列化數據流之間的相互轉化。當來自調用方的調用函數為可序列化數據流 時,將所述可序列化數據流轉換為調用函數形式的it據流。進一步地,所述接口轉換模板管理器306,還用于根據數據格式轉換表, 對調用函數的執(zhí)行結果按照數據格式轉換表反向轉換參數的數據類型;所述數 據格式轉化管理器305,還用于并對參數進行接口模板變更反向轉換;將接口 調用后函數參數值和返回值返回給調用方;所述封裝^t塊303還用于,利用所 述函數參數值和返回值數據流返回給所述調用方。所述接口調用系統(tǒng)還可以包括接口注冊管理器304。封裝模塊303還可 以將數據流轉化為調用方函數的形式并發(fā)送給接口注冊管理器304,接口注冊 管理器304用于對所述調用函數進行登記注冊,并負責按照映射配置信息進行 接口轉換的時候調用接口轉換模板管理器和數據格式轉化管理器。所述接口調用系統(tǒng)還可以包括數據堆棧307,用于存儲函數調用過程中 使用到的函數參數名稱及相關數據。下面結合說明書附圖和具體實施方式
進行詳細描述。在本實施例中,調用方將調用函數封裝為可序列化數據流,接口調用代理 收到該可序列化數據流之后,將該數據流解封裝為被調用方調用函數的形式, 依據接口注冊登記的接口轉換模板進行參數序調整并對參數數據格式進行轉換,以符合被調用方函數形式,進行調用。以下結合本發(fā)明實施例提供的上述方法和裝置,以XML編程語言為例加 以說明上述系統(tǒng)的工作流程。調用方程序中定義函數為bool bOpen = Open(string sFilename, string sLocation, int32 nMode);被調用方程序中定義的相應函數為bool bOpened = OpenFile(string sFilepath, short openmode);纟克一4妻口 "i周用函凄t為string sRet = command(string sCommand)。在本實施例中,所述接口調用系統(tǒng),其被調用方動態(tài)調用的接口,必須能 夠通過名空間調用函數,并且與調用方使用相同的封裝模塊,允許與調用方處 于不同進程、不同設備上。如圖4所示,本實施例的具體處理過程如下步驟401:調用方的封裝模塊將調用方函數封裝為可序列化數據流,發(fā)送 給接口調用裝置的接口。調用方的封裝模塊將調用函數封裝為可序列結構化數據流,該調用封裝模塊與接口調用系統(tǒng)中的調用封裝模塊配置相同,對接口調用封裝為可序列化數 據流,主要用于跨進程空間以及遠程調用支持。本實施例中調用方的程序調用函數實例為Open ("book", "c:/books", 2),由 調用方的接口調用封裝模塊處理形成的可序列結構化數據流為下列XML格式 數據流< xml version="1.0" encoding="utf-8" >〈invokerxml xmlns:type="http://hold.foundersoft.com/invoke/type" 乂1111113="111^://1101<1£"01111<16^06:.(:0111^611^1316/">〃定義名空間屬'I"生 <fimctions><function name="Open" type="bool"> 〃定義功能名稱、返回值凄史量 <parelist><parameter name="sFilename " type="type:string"> book</parameter> 〈parameter name="sLocation " type="type:string">c:/books</parameter> <parameter name=" nMode " type="type:int32">2</parameter></parelist><returnlist>〈parameter name=" bOpen" type="type:int32"></parameter> </retumlist> </fUnction> </fimctions> </invokerxml>步驟402:接口調用系統(tǒng)的接口接收到可序列化數據流。步驟403:通過調用封裝模塊將所述可序列化數據流反解成為調用函數的 形式,并將該數據流調用壓棧。接口調用系統(tǒng)的接口接受到XML格式的數據流之后,由接口調用代理將 其形成統(tǒng)一才妄口調用函凄史表達式為string sRet = command(string sCommand), 同時將該數據流調用壓棧。通過調用封裝模塊將統(tǒng)一接口調用函數接受的sCommand可序列化數據流反解成為調用函數實例的形式即Open ("book","c:/books", 2)。步驟404:接口調用系統(tǒng)從接口注冊管理器中查找映射表。該查找映射表 中保存了被調用方的程序函數OpenFile登記到的接口注冊管理器中,此接口調用模 塊向外公開的調用接口形式為Open,同時配置了上述兩種函數相互映射的模 板及數據格式的轉換表,接口轉換模板由正則表達式構成。所述的接口調用系 統(tǒng)通過接口與調用方通訊,接口調用代理僅包含統(tǒng)一接口調用函數與錯誤獲取 函數。步驟405:按照匹配的接口模板變更函數名稱及參數序。 上述步驟中按照接口注冊管理器提供的匹配的接口模板變更調用函數名 稱及參數序,這里參數序變換一般通過正則表達式實現。接口函數之間的轉換 方式由接口轉換模板管理器管理,接口注冊管理器負責對接口轉換模板管理器 的調用。步驟406:依據數據格式轉換表轉換參數的數據類型。依據數據格式轉換表轉換參數的數據類型,這里數據一各式轉換表是針對不 同系統(tǒng)間數據類型定義差異以及參數類型差異的數據轉換。數據格式轉換表, 記錄系統(tǒng)間有P艮數據格式定義之間的轉換規(guī)則,典型如調用方nMode數據類 型為32位字節(jié)長度int類型,而被調用方nMode數據類型為數據類型為16位 字節(jié)長度short類型。接口注冊管理器負責對數據格式轉換表的調用,對于現 有系統(tǒng)而言,數據才各式轉換表管理的數據類型相對固定。本實施例中在接口注冊中查找映射表,進行參數和數據格式的轉換后的函 數實例格式為OpenFile ("c:/books/book", 2),從而轉化為被調用方定義的函數。步驟407:接口調用系統(tǒng)按照轉換后的被調用方的函數,按照名空間調用 函數執(zhí)行調用或者進行遠程調用;所述的接口調用系統(tǒng)在完成調用轉換后,按照名空間調用相應函數執(zhí)行調 用或者進行遠程函數調用,完成的OpenFile("c:/books/book", 2)指令打開指定路徑文件的操作。對于某些調用不需要返回結果,則到步驟407完成整個調用過程;若需將 執(zhí)行結果返回調用方的操作,則繼續(xù)執(zhí)行以下步驟,以返回執(zhí)行結果 步驟408:取得函數執(zhí)行結果并保存到數據堆棧中。本實施例中,運行后取得執(zhí)行結果,即返回值bOpened參數,若指定路徑 不存在此文件,則該參數返回false,將此執(zhí)行結果保存在堆棧中。步驟409:對堆棧中執(zhí)行結果依據數據格式轉換表反向轉換為調用參數的 數據類型。本實施例中,被調用方完成指定操作之后,需要將其執(zhí)行結果即bOpened 參數按照轉換表反向轉換為相應的bOpen參數的數據類型。 步驟410:對參數等進行接口模板變更反向轉換。本實施例中,對參數等進行接口模板變更反向轉換后函數轉化為原調用方 定義的函數bOpen = Open("book", "c:/books", 2)。步驟411:將步驟403中的數據流出棧修改可序列化數據流的接口調用的 返回值相應部分。步驟412:將執(zhí)行結果返回給調用方。步驟413:調用方接受到封裝數據流之后,調用接口調用封裝模塊還原成 為調用函數的形式,完成接口調用過程。本實施例中,通過接口模板轉換管理器的接口模板,可以實現接口函數參 數與調用的參數的非——對應參數變換處理,包括前者參數多的情況下的后者 增加缺省參數處理,以及前者參數少的情況下后者合并計算參數或者舍棄參數 的處理。采用本發(fā)明所述的系統(tǒng)及方法通過接口調用系統(tǒng),完成異構的系統(tǒng)接口之 間的數據格式轉換與接口動態(tài)映射,特別適用于分布式計算環(huán)境。本發(fā)明通過 接口轉換的方式,可以實現了非一一對應參數變換的缺省處理、參數合并計算 處理等復雜應用情況,并且通過堆棧有效保證調用返回參數的返回。員根據本發(fā)明的技術方案得出其他的實施方式,同樣屬于本發(fā)明的技術創(chuàng)新范 圍。顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā) 明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及 其等同技術的范圍之內,則本發(fā)明也意圖包含這些改動和變型在內。
權利要求
1、一種動態(tài)接口調用的方法,其特征在于,該方法包括以下步驟調用方發(fā)送調用函數給接口調用系統(tǒng);接口調用系統(tǒng)根據保存的映射配置信息,將所述調用函數轉換為被調用方函數調用形式進行調用。
2、 如權利要求1所述的方法,其特征在于,所述調用方發(fā)送調用函數給 調用系統(tǒng),包括所述調用方將調用函數封裝為可序列化數據流,并將所述可序列化數據流 發(fā)送給接口調用系統(tǒng);所述接口調用系統(tǒng)將所述可序列化數據流解封裝為調用函數形式的數據流o
3、 如權利要求2所述的方法,其特征在于,所述映射配置信息包括接口 模板以及數據格式轉換信息,所述接口模板包括調用函數轉換前后的名稱及參 數序的對應關系,則將所述調用函數轉換為被調用方函數調用形式進行調用,包括 進行接口模板的匹配,按照所匹配的接口模板變更所述調用函數的名稱及參數序,并且根據所述數據格式轉換信息轉換參數的數據類型;所述接口調用系統(tǒng)按照經過數據類型轉換后的調用函數,進行調用,其中 調用是按照名空間調用所述函數,或進行遠程調用。
4、 如權利要求3所述的方法,其特征在于,該方法進一步包括 所述接口調用系統(tǒng)根據數據格式轉換表,對調用函數的執(zhí)行結果按照數據格式轉換表反向轉換參數的數據類型,并對參數進行接口模板變更反向轉換; 將接口調用后函數參數值和返回值返回給調用方。
5、 如權利要求4所述的方法,其特征在于,所述將接口調用后函數參數 值和返回值返回給調用方,包括所述接口調用系統(tǒng)利用所述函數參數值和返回值修改所述可序列化數據流,并將修改后的所述可序列化數據流返回給所述調用方; 所述調用方將所述可序列化數據流轉換為調用函數的形式。
6、 如權利要求1所述的方法,其特征在于,所述接口轉換模板由正則表 達式組成的結構化數據構成。
7、 一種動態(tài)接口調用的系統(tǒng),其特征在于,該系統(tǒng)包括接口調用系統(tǒng) 和接口,其中,所述接口,用于接收來自調用方的調用函數;所述接口調用系統(tǒng),用于根據保存的映射配置信息,將所述調用函數轉換 為被調用方函數調用形式進行調用。
8、 根據權利要求7所述的系統(tǒng),其特征在于,所述接口調用系統(tǒng)包括 接口調用代理,用于提供公開的統(tǒng)一接口調用函數與錯誤獲取函數,接收并處理來自所述接口的函數調用。
9、 如權利要求7所述的系統(tǒng),其特征在于,所述接口調用系統(tǒng)還包括 接口注冊管理器,用于對所述調用函數進行登記注冊,并負責按照映射配置信息進行接口轉換的時候調用接口轉換模板管理器和數據格式轉化管理器; 接口轉換模板管理器,用于進行接口模板的匹配,按照所匹配的接口模板更新所述調用函數的名稱及參數序;數據格式轉化管理器,用于根據數據格式轉換信息轉換所述調用函數的參 數的數據類型。
10、 如權利要求7所述的系統(tǒng),其特征在于,所述接口調用系統(tǒng)還包括 封裝模塊,用于當來自調用方的調用函數為可序列化數據流時,將所述可序列化數據流轉換為調用函數形式的數據流。
11、 如權利要求7所述的系統(tǒng),其特征在于,所述接口調用系統(tǒng)還包括 數據堆棧,用于存儲函數調用過程中使用到的函數參數名稱及相關數據。
全文摘要
本發(fā)明公開了一種動態(tài)接口調用的系統(tǒng)與方法,屬于工程設計信息系統(tǒng)集成和異構多數據源互操作技術領域。本發(fā)明的方法包括調用方發(fā)送調用函數給接口調用系統(tǒng);接口調用系統(tǒng)根據保存的映射配置信息,將所述調用函數轉換為被調用方函數調用形式進行調用。本發(fā)明通過接口轉換的方式,實現了異種系統(tǒng)及模塊的接口調用的靈活配置與動態(tài)注冊,特別適用于分布式計算環(huán)境。
文檔編號G06F9/44GK101216760SQ200710304690
公開日2008年7月9日 申請日期2007年12月28日 優(yōu)先權日2007年12月28日
發(fā)明者戴笑濤, 健 龔 申請人:北京方正國際軟件系統(tǒng)有限公司