專利名稱:動態(tài)對象連接接口和過程的制作方法
發(fā)明領域本發(fā)明涉及計算機軟件集成并更具體地涉及一種在多個不同的,獨立的軟件應用程序的軟件對象之間共享和操作軟件對象的方法。
1992年微軟公司發(fā)布了一種協(xié)議,對象鏈接和嵌入(OLE),使得一個應用程序可以通過一個幾乎透明的接口來使用其它應用程序的服務。OLE協(xié)議允許支持這種協(xié)議的應用程序結合含有至其它應用程序的鏈接的對象。這里使用的對象這個詞能夠包含文本,圖表,圖形,電子表格,位圖圖像,矢量圖,聲音數(shù)據(jù),視頻剪輯,程序和幾乎所有可被軟件應用程序顯示,控制或操作的東西。
在OLE協(xié)議中,包含鏈接或嵌入對象的對象被稱為容器對象。容器對象包含仍然連接至創(chuàng)建它們的原始應用程序的其它對象,其中的連接可以是鏈接連接或嵌入連接。鏈接連接是與被包含的對象相關的實際數(shù)據(jù)駐留在另一個,分立的對象中的連接。在這種情況下,建立和保持鏈接連接所需的信息只是被包含的對象的一個引用。另一方面,嵌入連接是與被包含對象相關的實際數(shù)據(jù)駐留在容器對象中的連接。在任一情況下,被包含對象只能被原始創(chuàng)建它的應用程序所編輯。
OLE和OLE類型的集成策略使用戶集中在當前的手中任務上,而不需要對完成任務所需的應用程序的明確知識或控制。在OLE的情況下,進行給定任務所需的應用程序在需要時以最好的格式或內(nèi)容交給用戶。而且,當采用了鏈接類型的應用程序集成策略時,文件趨向于更緊湊,因為對象的鏈接使得應用程序數(shù)據(jù)文件可以反映所鏈接文件的信息而不需要將對象的數(shù)據(jù)在該數(shù)據(jù)文件中物理地存儲和維護。
OLE和OLE類型的集成策略向各種獨立軟件應用程序的高效集成邁出了一大步。但是,這些類型的集成策略要求某些數(shù)據(jù)與鏈接或嵌入的對象一起被存儲,因而提供將被鏈接或嵌入的對象回溯到原始應用程序的信息。更具體地說,嵌入和傳統(tǒng)的鏈接兩者都在被鏈接/嵌入的對象和原始創(chuàng)建對象的應用程序之間創(chuàng)建“硬”鏈接。即,連接是到特定的應用程序的并不會改變。這樣,被鏈接/嵌入的對象需要至外部應用程序的預先定義的連接路徑。
從用戶的角度,希望有一個更靈活的結構,一個對象和應用程序之間的連接不需要預先定義的結構。因此,需要有一種當對象和計算機操作系統(tǒng)內(nèi)定義的任何其它應用程序之間沒有預先定義的連接時能夠高效運行的應用程序集成方法。
圖2是帶有本發(fā)明的動態(tài)對象鏈接接口部件的操作系統(tǒng)的簡化的方框圖。
圖3是運行環(huán)境的圖形用戶界面的簡化示意圖。
圖4是本發(fā)明的一個實施例的基本流程圖。
發(fā)明詳述
圖1以簡化方框圖的形式示出一個實現(xiàn)本發(fā)明的對象鏈接接口的計算機系統(tǒng)10。計算機系統(tǒng)10包括一個中央處理單元12,它根據(jù)存儲在它的存儲器14中的指令進行操作。輸入/輸出(I/O)電路16是中央處理單元12與一個或多個輸入設備18和輸出設備20連接的接口。輸入設備18可以包括,例如,鍵盤,小鍵盤,紅外發(fā)射器,聲音檢測器,光筆,鼠標,觸摸屏或其他適合的設備或用于向計算機輸入命令的設備。輸出設備20可以包括,例如,顯示器或其他通過I/O電路16中的I/O口連接的外圍設備。計算機系統(tǒng)10還可以含有海量存儲設備22,例如硬盤驅(qū)動器,軟盤驅(qū)動器,PCMCIA閃存驅(qū)動器,或光盤驅(qū)動器。
計算機系統(tǒng)10根據(jù)存儲在存儲器14中的程序運行。在計算機系統(tǒng)10上運行的程序一般可以分為操作系統(tǒng)程序或用戶應用程序。操作系統(tǒng)程序是控制和協(xié)調(diào)計算機系統(tǒng)10中的硬件和軟件的運行的一套程序。操作系統(tǒng)程序指揮用戶應用程序的執(zhí)行,數(shù)據(jù)的定位,存儲,和讀取,并將計算機系統(tǒng)10的資源分配給運行的不同任務。另一方面,用戶應用程序,也被稱為用戶應用程序或簡稱為應用程序是在用戶的指揮下進行復雜任務的程序。用戶應用程序的例子包括字處理程序,數(shù)據(jù)庫程序,電子表格程序,和個人信息管理器。
一套接口指令,包括操作系統(tǒng)程序,作為一起組成計算機系統(tǒng)10的硬件和軟件之間的最低層接口。這些接口指令一起被稱為操作系統(tǒng)100。DOS,UNIX和OS-9都是在一般商用計算機系統(tǒng)10上實現(xiàn)的一般的操作系統(tǒng)100。圖2示出操作系統(tǒng)100。適于本發(fā)明的一個操作系統(tǒng)是由Iowa州Des Moines的Microware公司研制的OS-9000內(nèi)核。
用戶可以選擇通過操作系統(tǒng)100或在操作系統(tǒng)100級與計算機系統(tǒng)10直接交互。但是,幾十年來的趨勢是使用用戶與操作系統(tǒng)100之間的緩沖區(qū),一般稱為運行環(huán)境30。視窗和視窗95是運行環(huán)境30的一般的例子。這些環(huán)境趨向于面向圖形化,和總體定義用戶界面的外觀。
現(xiàn)參考圖3,示出了計算機系統(tǒng)10上運行的一個用戶應用程序的運行環(huán)境30的顯示部分。圖3中的用戶應用程序是一個字處理應用程序。但是,應當理解,本發(fā)明可以用于幾乎所有類型的用戶應用程序而不限于字處理程序。運行環(huán)境30在計算機顯示輸出設備20的屏幕上顯示給用戶。
運行環(huán)境30包括窗口32,窗口32頂端有一個標題欄34。標題欄按鈕36位于標題欄34的右邊。這些按鈕36用于關閉,最大化和最小化窗口32。按鈕36使用“指向并點擊”鼠標的方式被激活。這些按鈕對于視窗95或視窗NT的用戶來說是熟悉的。在窗口32下端有一個為用戶顯示消息或圖標的狀態(tài)欄56。
在標題欄34的下方是菜單欄38。菜單欄38包括一個標簽條40,它帶有幾個標簽42。菜單按鈕44被放置在標簽帶40上。與說明本發(fā)明相關的一個菜單按鈕44是動態(tài)鏈接控制菜單按鈕45。菜單按鈕44的不同的組可以通過在標簽42上“點擊”鼠標而被選擇。應當理解,在本領域中在選擇一個選項或?qū)ο髸r有許多與點擊鼠標相同的方法,例如使用觸摸屏,遙控指示器,或聲音命令;所有這些方法都包含在點擊鼠標一詞中。菜單按鈕44同樣用鼠標“點擊”菜單按鈕44來被選擇。
菜單欄38下方的區(qū)域是工作區(qū)46,在此為用戶顯示由用戶應用程序操作的對象。在該工作區(qū)46中顯示一個由鼠標移動的光標48。不同的應用程序?qū)ο?9被包含在在工作區(qū)46中,包括正在被操作的對象,如被選擇的對象50。
應注意,上述的運行環(huán)境30只是可以實施本發(fā)明的動態(tài)對象鏈接系統(tǒng)的運行環(huán)境30的一個例子。使得用戶可以與計算機系統(tǒng)10交互的任何數(shù)量的運行環(huán)境30可以用本發(fā)明的動態(tài)對象鏈接系統(tǒng)來建立和實現(xiàn)。
近年來,已經(jīng)有很多將由一個用戶應用程序創(chuàng)建的應用程序?qū)ο?9鏈接到另一個用戶應用程序的需要。應用程序?qū)ο?9是由用戶應用程序創(chuàng)建和/或操作的任何對象。例如,在字處理程序中,應用程序?qū)ο?9可以是由這個文件,文件的一頁,文件的一段,文件中的一個單詞,或文件中的一個字母組成。在圖形程序中,應用程序?qū)ο?9可以是整個圖畫,或圖畫種的特定圖形或線條。在數(shù)據(jù)庫程序中,應用程序?qū)ο?9可以是數(shù)據(jù)表,查詢,表格或報告。這個應用程序?qū)ο?9的清單不是窮舉的。
如上所述,希望將由用戶應用程序創(chuàng)建的應用程序?qū)ο?9鏈接至第二個用戶應用程序。例如,可能希望將一個字處理文件中駐留的圖形鏈接至一個能夠操作圖形對象的應用程序。當前,處理這個問題的一個方法包括使用對象鏈接和嵌入(OLE)協(xié)議。OLE提供了一種協(xié)議,通過它應用程序之間可以通信和交換鏈接或嵌入對象的信息。但是,OLE需要在被鏈接或嵌入的對象與創(chuàng)建該對象的應用程序之間維護明確預定義的鏈接。
本發(fā)明使得一個用戶應用程序中的應用程序?qū)ο?9能夠動態(tài)地與另一個用戶應用程序相關聯(lián)而不需要維護對象與其他應用程序之間的明確的鏈接。這個方法被稱為動態(tài)對象鏈接,與其相關的接口被稱為動態(tài)對象鏈接接口。為了引用方便,所討論的對象駐留的應用程序被稱為主應用程序64。對象被動態(tài)關聯(lián)的其他應用程序被稱為補充應用程序68。來自主應用程序64被動態(tài)鏈接的應用程序?qū)ο?9將被稱為目標對象70。
本發(fā)明的計算機系統(tǒng)10包括一個對象映射器120以標識計算機上可用的那些應用程序,它們更可能適合于操作目標對象70。在對象映射器120上注冊的每個應用程序與一個方法測試器85相關,方法測試器85確定相關的應用程序處理目標對象70的適合性。當被對象映射器120查詢時,每個方法測試器85返回一個分數(shù)至對象映射器120,這里被稱為“可能性分數(shù)”,它表示相關應用程序適合處理目標對象70的程度。目標映射控制器分析由方法測試器85提供的可能性分數(shù)并基于該可能性分數(shù)選擇一個補充應用程序68。一般地,補充應用程序68是有最高可能性分數(shù)的應用程序,表示它是最適合處理目標對象70的應用程序?;蛘呤?,提供一個備選補充應用程序68的清單供用戶選擇,最好是有它們的可能性分數(shù)的指示。
參考圖2,組成本發(fā)明的動態(tài)對象鏈接接口的軟件部件包括操作系統(tǒng)100,運行環(huán)境30,和多個用戶應用程序60。特別與運行環(huán)境30相關的是對象映射器120,應用程序封裝注冊矢量125,和動態(tài)鏈接控制器110。在圖2中示出的還有主應用程序64,它含有多個應用程序?qū)ο?9,包括目標對象70。目標對象70的選擇可以通過多個本領域熟知的方法實現(xiàn),例如雙擊鼠標。
在運行環(huán)境30中駐留的是多個應用程序,總的用數(shù)字60表示。每個應用程序60包括主應用程序?qū)ο?3,和獨立的應用程序封裝對象80。主應用程序83包含編碼信息和應用程序60完成它的任務所需的數(shù)據(jù)。編碼信息和與主應用程序83相關的數(shù)據(jù)一般不裝入系統(tǒng)內(nèi)存14并且直到用戶直接或間接請求應用程序60時才被激活。例如,在典型的圖形用戶界面類型的環(huán)境中,非活動應用程序60在視頻顯示屏上顯示為一個小的圖標。為了請求或啟動特定應用程序60,用戶只是簡單地使用鼠標類型的指示設備在所需的圖標上雙擊。一旦雙擊后,相關的主應用程序83被調(diào)入到系統(tǒng)內(nèi)存14中而執(zhí)行。
應用程序封裝80作為運行環(huán)境30和與之相關的主應用程序83之間的接口。應用程序封裝80可以被看作是與之相關的主應用程序83的預報器。應用程序封裝80當運行環(huán)境30被引導時被調(diào)入并在后臺運行。如圖4所示,應用程序封裝80與它相關的主應用程序83和對象映射器120通信。
此外,如圖4所示,應用程序封裝80最好包括方法測試器85。方法測試器85包含與確定與應用程序封裝80相關的應用程序60可以有效地處理任何給定的目標對象70的可能性相關的信息。
應用程序60當與應用程序封裝80相關的方法測試器85已被對象映射器120識別和確認時被認為被“注冊”。注冊過程一般在應用程序被安裝時進行,此時與新的應用程序60相關的應用程序封裝80查詢系統(tǒng)以找到對象映射器120并提供它出現(xiàn)的通知。在響應中,對象映射器120將新的應用程序封裝80的一個引用增加到應用程序封裝注冊矢量125中。
圖4示出已被定義并駐留在運行環(huán)境30中的不同對象間數(shù)據(jù)的基本流程。圖4中示出的配置假定一個應用程序60,主應用程序64,被用戶激活和占用。為了說明的目的,假設用戶與之交互的主應用程序64是字處理器。在主應用程序64包含的是多個對象,包括目標對象70。目標對象70可以是,例如,圖3所示的包含在被編輯的文本文件中的七位數(shù)字。
一旦目標對象70被選定,用戶通過點擊動態(tài)鏈接控制菜單按鈕44激活動態(tài)鏈接控制110。激活后,動態(tài)鏈接控制110查詢主應用程序64并請求目標對象70的一個拷貝。主應用程序64通過將目標對象70的一個拷貝傳遞到動態(tài)鏈接控制110。然后,動態(tài)鏈接控制110把目標對象70的一個拷貝傳遞到對象映射器120而響應。之后,對象映射器120又系統(tǒng)地查詢在應用程序封裝注冊矢量125中列出的所有應用程序封裝80。
如圖4所示,在查詢過程中,應用程序封裝80被傳遞一個目標對象70的拷貝以測定。與應用程序封裝80相關的方法測試器85使用目標對象70的拷貝計算可能性分數(shù),可能性分數(shù)表示目標對象70可能被與封裝80相關的應用程序60有效處理的可能性。
存在很多不同的方法測試器85計算可能性分數(shù)的算法。所使用的算法取決于方法測試器85和應用程序封裝80相關的用戶應用程序60。作為一個例子,一個電話撥號程序可以首先確定目標對象70是否有一個適合的對象類型。如果目標對象70既不是數(shù)字也不是字符串類型,則可能性分數(shù)會非常低或是零。如果目標對象70是數(shù)字或字符串類型,則方法測試器85將繼續(xù)進行一系列模式匹配以確定適合的可能性分數(shù)值。例如,如果目標對象70的模式是一個7位整數(shù),可能性分數(shù)將會很高,是最大值或接近最大值,例如1。如果目標對象70模式是一個長度為8的字符串,包含七個數(shù)字和一個短劃線,則可能性分數(shù)將同樣很高。但是,如果目標對象70模式是非整數(shù)7位數(shù)字,則可能性分數(shù)將是一個中間值,例如0.15。如本領域的技術人員可以理解的,電話號碼可以以不同的方式表示,特別是當電話號碼是是國際電話時。模式匹配的目的是識別目標對象70是那些表達之一的可能性??赡苄栽礁?,產(chǎn)生的可能性分數(shù)越高。
如同電話撥號方法測試器85,其它用戶應用程序60的方法測試器85是應用程序,或至少是應用程序類型。這種方法測試器85中的特定算法被做成識別目標對象70可能被與每個這種方法測試器85相關的應用程序60處理的可能性。每個方法測試器85中采用的特定測試的編程是本領域的技術人員所熟知的。
方法測試器85產(chǎn)生的可能性分數(shù)被從應用程序封裝80傳遞回對象映射器120,在此它被暫時存儲并與從被查詢的其它注冊的應用程序封裝80接收的可能性分數(shù)進行比較。一旦在應用程序封裝注冊矢量125中列出的所有應用程序封裝80被對象映射器120查詢,對象映射器120采用一種判斷算法以確定哪個應用程序60被認定為補充應用程序68。這種判斷算法之一是高分取勝類型的判斷算法。其它實用的判斷算法的例子包括,選擇高于一定閾值的最高可能性分數(shù),或在分數(shù)相等的情況下提示用戶選擇應用程序60。應注意,沒有可能性分數(shù)高到可以表示有其它任何一個應用程序60可以適合處理目標對象70的情況是可能的;在這種情況下,動態(tài)對象鏈接可能會失敗。
通過判斷算法對應用程序60的選擇識別一個補充應用程序68。對象映射器120使補充應用程序68激活并接收目標對象70的一個拷貝。最好是,對象映射器120指示應用程序封裝80激活它相關的主應用程序83,即補充應用程序68的主應用程序83,并給它傳遞目標對象70的一個拷貝。應用程序封裝80可以在產(chǎn)生另一個之前首先檢查它的相關主應用程序83是否已經(jīng)被激活。之后,補充應用程序68處理,并可能修改,目標對象70的拷貝。
例如,假設由對象映射器120識別的補充應用程序68是一個電話撥號應用程序,而目標對象70如前所述是可被解釋成電話號碼的7位數(shù)字文本串。一旦被激活,電話撥號應用程序接收7位電話號碼并嘗試撥號并與建立該電話號碼方的連接。
補充應用程序68還允許改變或修改目標對象70的拷貝。為說明這一點,考慮另一種可能的情況,電話撥號應用程序接收了7位數(shù)字文本串對象后,搜索關于商業(yè)客戶信息和他們相關的電話號碼的客戶聯(lián)系數(shù)據(jù)庫。對數(shù)據(jù)庫的搜索表明與目標對象70電話號碼串相關的客戶最近有一個新的電話號碼。在作出這個評定后,電話撥號應用程序嘗試撥打新的電話號碼并建立與相關客戶的聯(lián)系。之后,電話撥號應用程序還修改目標對象70以反映電話號碼的修改。
當被選的應用程序完成了它的任務后,被潛在修改的目標對象70的拷貝被傳遞到動態(tài)鏈接控制110。為了引用方便,這個被潛在修改的目標對象70的拷貝稱為返回對象75。之后,動態(tài)鏈接控制110傳遞返回對象70至主機激活應用程序,在此返回對象75替換目標對象70。
以上的討論假設方法測試器85被包含在應用程序封裝80中。但是,應注意方法測試器85可以存在在應用程序封裝80以外。如果是這樣,本發(fā)明的動態(tài)對象鏈接接口的運行不需要有應用程序封裝80。取而代之的是,對象映射器120可以直接查詢方法測試器85和啟動補充應用程序68。但是,本發(fā)明的最佳實施例包括應用程序封裝80。
還應注意,不是所有的應用程序60都向?qū)ο笥成淦?20注冊。如果一個應用程序60沒有注冊,則不可使用該應用程序的動態(tài)對象鏈接。
這個動態(tài)對象鏈接接口策略的結構是功能很強且非常靈活的,因為它可以與任意對象一起運行并不需要或要求對象與應用程序之間的預定義鏈接。該動態(tài)對象鏈接接口結構還允許第三方應用程序開發(fā)者提供他們自己的評估他們的應用程序可以操作一個對象的可能性的算法,因而使系統(tǒng)可以支持較復雜的推理能力。
當然本發(fā)明可以以與上述不同的方式實現(xiàn)而不背離本發(fā)明的精神和實質(zhì)。因而本發(fā)明的實施例在任何方面都是解釋性的而不是限制本發(fā)明,而且所有包含在權利要求
書的意義和等效范圍中的所有變化都包含在本發(fā)明中。
權利要求
1.一種在有多個用戶應用程序的計算機系統(tǒng)中將來自主應用程序的目標對象動態(tài)地鏈接到另一個用戶應用程序的過程,包括a)用方法測試器為多個用戶應用程序計算可能性分數(shù),每個可能性分數(shù)表示相應的用戶應用程序處理目標對象的適合程度;b)基于所述可能性分數(shù)在對象映射器中標識一個補充應用程序;并且c)從所述方法測試器傳遞所述目標對象至所述補充應用程序。
2.如權利要求
1的過程,進一步包括啟動所述補充應用程序的一個實例。
3.如權利要求
1的過程,進一步包括由所述補充應用程序修改目標對象以產(chǎn)生一個返回對象。
4.如權利要求
3的過程,進一步包括其后傳遞所述返回對象至主應用程序。
5.如權利要求
1的過程,其中補充應用程序的所述標識包括比較所述多個所述可能性分數(shù)以標識最高的所述可能性分數(shù)。
6.如權利要求
1的過程,其中標識一個補充應用程序包括標識多個候選應用程序,提示用戶選擇所述候選應用程序之一并基于所述用戶的輸入而選擇所述候選應用程序之一作為補充應用程序。
7.一種在有多個用戶應用程序的計算機系統(tǒng)中將來自主應用程序的目標對象動態(tài)地鏈接到另一個用戶應用程序的過程,包括a)由一個對象映射器獲得目標對象的一個拷貝;b)從所述對象映射器傳遞目標對象的一個拷貝至多個方法測試器,每個方法測試器與一個相應的用戶應用程序相關聯(lián);c)由所述方法測試器計算多個可能性分數(shù),每個可能性分數(shù)表示相應的用戶應用程序處理目標對象的適合程度;d)基于所述可能性分數(shù)在對象映射器中標識一個補充應用程序;e)從所述方法測試器傳遞所述目標對象的一個拷貝至補充應用程序。
8.如權利要求
7的過程進一步包括a)由補充應用程序基于目標對象產(chǎn)生一個返回對象;b)傳遞所述返回對象至主應用程序。
9.如權利要求
7的過程,其中補充應用程序的所述標識包括比較所述多個所述可能性分數(shù)以標識最高的所述可能性分數(shù)。
10.如權利要求
7的過程,其中標識一個補充應用程序包括標識多個候選應用程序,提示用戶選擇所述候選應用程序之一并基于所述用戶輸入而選擇所述候選應用程序之一作為補充應用程序。
11.一種由有多個用戶應用程序的計算機系統(tǒng)實現(xiàn)的對象鏈接接口,用于將主應用程序中的一個目標對象動態(tài)地鏈接至所述計算機上可用的一個補充應用程序,包括a)一個或多個方法測試器,每個與一個相應的用戶應用程序相關聯(lián),用于測試目標對象并產(chǎn)生一個表示相關的用戶應用程序處理目標對象的適合程度的可能性分數(shù);和b)一個對象映射器,用于查詢所述方法測試器,基于所述可能性分數(shù)識別一個補充應用程序,并傳遞所述目標對象至所述補充應用程序;和c)動態(tài)鏈接由用戶激活的控制以初始化對象映射器。
12.如權利要求
11的對象鏈接接口,其中所述對象映射器傳遞所述目標對象至所述方法測試器。
13.如權利要求
12的對象鏈接接口,其中動態(tài)鏈接控制獲得從主應用程序所述目標對象并傳遞所述目標對象至所述對象映射器。
14.一種由計算機實現(xiàn)的對象鏈接接口,用于將一個目標對象動態(tài)地鏈接至所述計算機上可用的一個補充應用程序,包括a)一個由用戶激活的動態(tài)鏈接控制,用于獲得目標對象的一個拷貝;b)一個對象映射器,用于從動態(tài)鏈接控制接收目標對象并補充一個補充應用程序處理所述目標對象;c)一個或多個應用程序封裝,每個通過應用程序封裝注冊矢量與相應的應用程序相關聯(lián),從對象映射器接收目標對象,所述應用程序封裝包括一個方法測試器,用于測試目標對象并產(chǎn)生一個表示相關用戶應用程序處理目標對象的適合程度的可能性分數(shù);和d)所述對象映射器用于查詢每個所述方法測試器以獲得所述可能性分數(shù),以識別一個補充應用程序,用于處理所述目標對象,并傳遞目標對象至所述補充應用程序。
15.如權利要求
14的對象鏈接接口,其中應用程序封裝控制相關應用程序的配置,啟動和終止。
專利摘要
一種對象鏈接接口,用于計算機系統(tǒng)動態(tài)地鏈接主應用程序中的被選目標對象和第二個用戶應用程序。運行環(huán)境包括多個方法測試器,每個與特定的用戶應用程序相關,和一個對象映射器。方法測試器被傳遞一個目標對象的拷貝并測試相關的應用程序處理目標對象的適合程度并產(chǎn)生一個相應的可能性分數(shù)。對象映射器查詢每個方法測試器以獲得可能性分數(shù)并基于所述可能性分數(shù)識別一個或多個適合處理該目標對象的應用程序。
文檔編號G06F9/46GKCN1118751SQ98808998
公開日2003年8月20日 申請日期1998年8月20日
發(fā)明者B·G·莫恩, B·班克勒爾 申請人:艾利森公司導出引文BiBTeX, EndNote, RefMan