專利名稱:適應性基于內(nèi)容的發(fā)行/訂閱消息傳遞的制作方法
技術(shù)領域:
本發(fā)明涉及傳遞發(fā)行/訂閱消息領域。特別地,本發(fā)明涉及適應性基于內(nèi)容的發(fā)行/訂閱消息傳遞。
背景技術(shù):
發(fā)行訂閱處理模型是在其中信息的產(chǎn)生者(發(fā)行者)和同樣信息的消費者(訂閱者)彼此不直接連接的模型。雙方之間的信息通道由發(fā)行引擎或中介(broker)處理。發(fā)行引擎或中介的責任是將被發(fā)行的信息匹配給感興趣的一方。由于并非所有的訂閱者都必然想接收所有發(fā)行消息,因此基于主題(topic)和內(nèi)容路由的技術(shù)被用來控制訂閱者接收什么內(nèi)容。
基于主題的路由使用被實現(xiàn)為層級樹的簡單分類機構(gòu)。訂閱者可訂閱以在該樹的特定點處接收消息。該特定點可以是根部,從而接收所有的消息,或可以是葉節(jié)點,在該情況下,將僅接收發(fā)行給該葉節(jié)點的消息。
基于內(nèi)容的路由提供一種機構(gòu),由此訂閱者能夠提供過濾器表達式(filterexpression),其將被應用到匹配主題樹中被命名點的所有消息。該過濾器通常是類似結(jié)構(gòu)化查詢語言(SQL)的表達式,其將引用消息的標題或主題中的信息。如果過濾器條件估算為真,則發(fā)行消息將被寫到訂閱者隊列。如果其估算為假,則其將不被寫到訂閱者隊列。
基于內(nèi)容的過濾是有用的,因為其提供了額外的過濾機構(gòu)。在當前的實施方式中,僅提供一個過濾器表達式,盡管該表達式可以是復雜的表達式。盡管應用設計者或商業(yè)用戶可以仔細地考慮用于訂閱者的過濾器語句的構(gòu)造,但是這種一個過濾器是可用于控制接收的信息量唯一的機構(gòu),因為他們不能影響發(fā)行消息制作的速率。
當訂閱者指定的隊列排滿發(fā)行的消息時,在增加隊列大小、訂閱應用從隊列中消耗消息或操作員或自動命令從隊列中清除部分或全部消息之前,都不能再接收消息。
因此,在本技術(shù)領域中有解決上述問題的需要。發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,提供了一種用于發(fā)送發(fā)行/訂閱消息的方法,包括:發(fā)起訂閱,其包括指定訂閱隊列,與訂閱有關的發(fā)行消息將被放置到所述訂閱隊列;限定用于所述訂閱的多個基于內(nèi)容的過濾表達式,每個過濾表達式被限定用于所述訂閱隊列的給定利用(utilisation)。
根據(jù)本發(fā)明的第二方面,提供了一種傳遞發(fā)行/訂閱消息的方法,包括:接收與訂閱有關的發(fā)行消息;檢查所述訂閱中指定的訂閱隊列的利用;確定為所述訂閱隊列的給定利用所限定的基于內(nèi)容的過濾表達式;以及應用所述基于內(nèi)容的過濾表達式。
根據(jù)本發(fā)明的第三方面,提供了一種傳遞發(fā)行/訂閱消息的計算機程序產(chǎn)品,該產(chǎn)品包括計算機可讀存儲介質(zhì),其具有實施于其中的計算機可讀程序代碼,該計算機可讀程序代碼配置為:發(fā)起訂閱,其包括指定訂閱隊列,與訂閱有關的發(fā)行消息將被放置到所述訂閱隊列;限定用于所述訂閱的多個基于內(nèi)容的過濾表達式,每個過濾表達式被限定用于所述訂閱隊列的給定利用。
根據(jù)本發(fā)明的第四方面,提供了一種用于發(fā)行/訂閱消息傳遞的計算機軟件產(chǎn)品,該產(chǎn)品包括計算機可讀存儲介質(zhì),其具有實施于其中的計算機可讀程序代碼,該計算機可讀程序代碼配置為:接收與訂閱有關的發(fā)行消息;檢查所述訂閱中指定的訂閱隊列的利用;確定為所述訂閱隊列的給定利用所限定的基于內(nèi)容的過濾表達式;以及應用所述基于內(nèi)容的過濾表達式。
根據(jù)本發(fā)明的第五方面,提供了一種傳遞發(fā)行/訂閱消息的系統(tǒng),包括:發(fā)行引擎,包括訂閱機構(gòu),該訂閱機構(gòu)包括:訂閱隊列指定組件,用于指定訂閱隊列,與訂閱有關的發(fā)行消息將被放置到所述訂閱隊列;基于內(nèi)容的過濾器設置組件,用于為訂閱限定多個基于內(nèi)容的過濾表達式,所述過濾表達式的每個被限定給所指定的訂閱隊列的給定利用。
根據(jù)本發(fā)明的第六方面,提供了 一種傳遞發(fā)行/訂閱消息的系統(tǒng),包括:發(fā)行引擎,其包括:發(fā)行消息接收組件,用于接收與訂閱有關的發(fā)行消息;隊列利用檢查組件(153),用于檢查在所述訂閱中指定的訂閱隊列的利用;過濾器確定組件,用于確定為訂閱隊列的給定利用所限定的基于內(nèi)容的過濾表達式;以及過濾器應用組件,用于應用所述基于內(nèi)容的過濾表達式。
從又一個方面來看,本發(fā)明提供了一種存儲在計算機可讀介質(zhì)上并可加載到數(shù)字式計算機內(nèi)存中的計算機程序,其包括軟件代碼部分,在計算機上運行所述程序時,其用于執(zhí)行本發(fā)明的步驟。
在說明書的結(jié)束部分特別指出并明顯地提出了被認為是本發(fā)明的主題。本發(fā)明,作為操作的組織和方法,及其對象、特征和優(yōu)點,可通過在閱讀附圖時參考以下詳細描述時得到最佳理解,其中:
下面僅以舉例方式參照下圖中所圖釋的優(yōu)選實施例描述本發(fā)明:
圖1是根據(jù)本發(fā)明的系統(tǒng)的框圖2是其中實施本發(fā)明的計算機系統(tǒng)的框圖3是根據(jù)本發(fā)明一個方面的訂閱者登記的流程圖;以及
圖4是根據(jù)本發(fā)明一個方面的消息過濾的流程圖。
具體實施方式
應理解的是,為了描述的簡明起見,附圖中示出的元件不一定按比例繪制。例如,為了清楚起見,一些元件的尺寸可能相對于其他元件被夸大。此外,在認為適當?shù)那闆r下,可在附圖中重復參考標記以指示相應或類似的特征。
在以下詳細的描述中,闡述了許多特定的細節(jié)以提供對本發(fā)明的透徹理解。然而,本領域的技術(shù)人員應理解可不用這些特定細節(jié)而實現(xiàn)本發(fā)明。在其它情況下,沒有具體描述眾所周知的方法、過程和部件以便不會淹沒本發(fā)明。
傳統(tǒng)的基于主題和內(nèi)容的發(fā)行/訂閱處理沒有考慮隊列中(on queue)已有的數(shù)據(jù)量,并且可能更重要地是沒有考慮當前的隊列深度有多靠近隊列的容量。當訂閱者的隊列充滿(fill)時,通常會發(fā)生:如果該消息是持續(xù)且被處理(transacted),則發(fā)行引擎會退回(rollback)已發(fā)行的消息,或者如果該消息是非持續(xù)的,則該消息會丟失。因此,已發(fā)行的消息以不可預料的基礎被接收和處理,而這是不期望的。通常地,訂閱應用不具有在隊列極限開始迫近時改變過濾器表達式的能力。
作為訂閱者的用戶,例如商業(yè)用戶或應用設計者,很高興內(nèi)容過濾器在其知道隊列接近容量時變得更多約束(restrictive),而不是從隊列充滿的那點開始繼續(xù)開放(loose)所有發(fā)行消息。
對用戶而言有價值的是,當訂閱隊列充滿時,對保留什么和丟棄什么具有更多的影響,而不是具有由發(fā)行引擎的處理(transactional)行為所強加(impose)的條件。
所描述的系統(tǒng)和方法提供了一種機構(gòu),其允許用戶提供一系列過濾器用于基于內(nèi)容的發(fā)行/訂閱,以考慮更高的隊列利用。特定過濾器的執(zhí)行取決于單個訂閱隊列的利用。該利用由在發(fā)行消息時執(zhí)行的發(fā)行引擎和適當?shù)倪^濾器確定。訂閱隊列利用可包括:剩余的隊列容量、隊列使用率、隊列中當前的數(shù)據(jù)量,或測量該隊列使用Usage)的其它方法。
由于在過濾器表達式方面的更多約束,在已經(jīng)達到某個隊列利用時用戶能夠指定接受較少或甚至不再接受新消息。這給了用戶是否接受更多發(fā)行消息的權(quán)力,而不是將發(fā)行消息強加給他們,因為訂閱隊列已經(jīng)充滿了。
優(yōu)點是,訂閱應用實際上將在更長時間內(nèi)依然看到新發(fā)行消息,因為通過減少新發(fā)行的消息被接受到訂閱隊列中的速率,隊列充滿條件將在更長時間內(nèi)被避免(avert)。
在描述的方法和系統(tǒng)中,當提供過濾器用于基于內(nèi)容的發(fā)行/訂閱時,訂閱者指定過濾器表達式的集合以及隊列利用(或其它隊列閾值/特性),對該隊列利用應用每個過濾器表達式。
訂閱者提供過濾器但并不實施過濾器。發(fā)行引擎負責應用不同的過濾器。在對基于內(nèi)容的發(fā)行消息調(diào)用過濾器之前,發(fā)行引擎檢查該訂閱隊列的隊列利用并且然后應用適當?shù)倪^濾器。
僅訂閱用戶理解正被消費的信息的商業(yè)上下文,并且也僅該訂閱用戶能夠判斷其準備怎樣限制以便在試圖(try)并避免隊列充滿條件的同時看到盡可能多的新發(fā)行消息。
參照圖1,框圖示出用于適應性基于內(nèi)容的發(fā)行/訂閱消息傳遞的示例系統(tǒng)100。
發(fā)行引擎110作為發(fā)行者101和訂閱者102之間的中間媒介(intermediary)。訂閱者102向發(fā)行引擎110登記,發(fā)行引擎110在發(fā)行者101和訂閱者102之間提供路由和過濾。在一些情況下,可能有僅進行發(fā)行/訂閱處理的發(fā)行引擎。在另一情況下,發(fā)行/訂閱功能可作為多功能中介中許多個功能之一。術(shù)語發(fā)行引擎旨在包括包含消息中介的任何發(fā)行/訂閱處理機構(gòu)。
發(fā)行引擎110包括訂閱者機構(gòu)111,訂閱者102在訂閱者機構(gòu)111處登記訂閱。訂閱者機構(gòu)111包括訂閱者設置120,訂閱者設置120包括用于接收發(fā)行消息的訂閱隊列103的名稱121,以及訂閱者標準122。訂閱者標準122包括訂閱者感興趣的發(fā)行消息的一個或多個主題。
訂閱隊列103是發(fā)行引擎110發(fā)送與特定訂閱匹配的消息的目的地。當訂閱者102登記到某個主題時,其向發(fā)行引擎110指示其想要發(fā)行消息將被轉(zhuǎn)發(fā)到哪個隊列。一個隊列可由多個登記使用。該隊列在登記訂閱者命令的參數(shù)中一個參數(shù)中被指明。
此外,在描述的系統(tǒng)100中,訂閱者機構(gòu)111的訂閱者設置120包括基于內(nèi)容的過濾器設置123,所述基于內(nèi)容的過濾器設置123包括將被應用到不同訂閱隊列利用126、127的多個過濾器表達式124、125。
發(fā)行引擎110包括發(fā)行消息接收機構(gòu)130,用于從發(fā)行者101接收發(fā)行消息,并確定對發(fā)行消息的訂閱。該發(fā)行消息接收機構(gòu)130包括發(fā)行隊列131,用于接收發(fā)行引擎110處的發(fā)行消息。
訂閱者機構(gòu)111包括隊列組件150,用于保留(hold)要被放置到訂閱隊列103的消息。在示例實施中,留出(set aside)盤區(qū)用以為特定的隊列保留消息。當有可用的通信程序和鏈接時,消息將被轉(zhuǎn)發(fā)到訂閱隊列103。由于隊列組件150看到(see)對該隊列的包括消息中的字節(jié)數(shù)的所有寫請求和所有檢索請求,隊列組件150跟蹤訂閱隊列103的當前隊列深度。隊列利用檢查組件153在將消息放置到訂閱隊列104之前計算訂閱隊列103的利用。
在一個實施例中,發(fā)行引擎110、發(fā)行者101和訂閱者102可以可選地包括用于管理器本地隊列的隊列管理者。
提供基于內(nèi)容的過濾器機構(gòu)140,其包括過濾器表達式確定組件141和過濾應用組件142,過濾器表達式確定組件141用于基于由隊列利用檢查組件153確定的訂閱隊列103的利用來確定應用過濾器表達式124、125中的哪個。
過濾機構(gòu)140從發(fā)行者101接收發(fā)行消息,在訂閱者機構(gòu)111中標識出該消息對其有效的訂閱。隨后過濾機構(gòu)140獲取訂閱隊列103的名稱,并且在過濾應用組件142對在基于內(nèi)容的過濾器設置123中指定的所述隊列利用應用適當?shù)幕趦?nèi)容的過濾器設置之前,隊列利用檢查組件153檢查隊列的利用。
參照圖2,用于實現(xiàn)本發(fā)明的方面的示例性系統(tǒng)可包括適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)200,其包括至少一個處理器201,處理器201通過總線系統(tǒng)203直接或間接地耦接到存儲器元件。存儲器元件可以包括在程序代碼實際執(zhí)行期間所使用的本地存儲器、大容量儲存器以及高速緩存存儲器,該高速緩存存儲器提供至少一些程序代碼的臨時儲存,從而減少執(zhí)行期間必須從大容量儲存器取回代碼次數(shù)。
存儲器元件可包括具有只讀存儲器(R0M)204和隨機存取存儲器(RAM)205形式的系統(tǒng)存儲器202?;据斎?輸出系統(tǒng)(BIOS) 206可存儲在R0M204中。系統(tǒng)軟件207可存儲在包括操作系統(tǒng)軟件208的RAM205中。軟件應用210還可存儲在RAM205中。
系統(tǒng)200還可包括諸如磁硬盤驅(qū)動器的主存儲裝置211和諸如磁盤驅(qū)動器和光盤驅(qū)動器的次存儲裝置212。所述驅(qū)動器及其相關聯(lián)的計算機可讀介質(zhì)為系統(tǒng)200提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失性存儲。軟件應用可存儲在主和次存儲裝置211、212以及系統(tǒng)存儲器202上。
計算系統(tǒng)200可經(jīng)由網(wǎng)絡適配器216使用到一個或多個遠程計算機的邏輯連接在網(wǎng)絡化環(huán)境中操作。
輸入/輸出設備213可直接或通過中間的I/O控制器耦接到該系統(tǒng)。用戶可通過諸如鍵盤、定點設備或其它輸入設備(例如,麥克風、操縱桿、游戲墊(game pad)、碟狀衛(wèi)星天線、掃描儀等)的輸入設備來向系統(tǒng)200輸入命令和信息。輸出設備可包括揚聲器、打印機等。顯示設備214還經(jīng)由諸如視頻適配器215的接口連接到系統(tǒng)總線213。
數(shù)據(jù)處理系統(tǒng)的實現(xiàn)不一定具有所有的上述組件。有小型或微型中介運行在有限容量的設備上,該設備諸如是電話或管道監(jiān)視設備,其可使用描述的系統(tǒng)并且具有描述功能的有限集合。
參照圖3,流程圖300示出描述的方法和系統(tǒng)中訂閱者登記的實施例。發(fā)起301新訂閱。該訂閱指定302用于接收信息的訂閱隊列的名稱。該訂閱指定303主題。除基于主題的訂閱外還應用304內(nèi)容過濾器,并且內(nèi)容過濾器指定305具有相關聯(lián)的隊列利用的多個過濾器表達式。
參照圖4,流程圖400示出描述的方法和系統(tǒng)中發(fā)行機構(gòu)處消息過濾的實施例。接收401發(fā)行消息并標識402訂閱。該訂閱可用于所指明的主題。
對訂閱中指定的訂閱隊列檢查403其利用或容量。給定特定的隊列利用,根據(jù)預定義的過濾器表達式中確定404適當?shù)膬?nèi)容過濾器。
根據(jù)內(nèi)容過濾器確定405是否要將消息傳送到訂閱者。如果不要傳送該消息,則該處理進行循環(huán)以等待下一個消息。如果要傳送該消息,則將該消息放置407在訂閱隊列中并且該處理進行循環(huán)406以等待下一個消息。
用于表達發(fā)行引擎所需的用于基于內(nèi)容的過濾的邏輯的所允許的語言根據(jù)發(fā)行引擎的實現(xiàn)而改變。在一個示例中,消息選擇器可允許使用嵌入的SQL (ESQL)表達式以對整個的消息過濾。
內(nèi)容過濾需要一種指向要被發(fā)行的消息的標題和主體的部分的方法。在一個實施中,在用于基于內(nèi)容的過濾的過濾器中使用字段參考。為了參考過濾器中的字段,必須指定路徑。路徑的每個元件包括可能有索引的字段名稱。
以下為作為示例實施的示例字段名稱和相關性名稱標識符。這些標識符代表作為層級句法(syntax)元件樹的所有消息。每個路徑標識通過該樹的路線,其通向特定的句法元件,從指代(refer to)每個消息具有的固定點的預定的相關性名稱之一開始。表I中示出的以下相關性名稱被支持用于基于內(nèi)容的過濾。
表I
根部標識發(fā)行的 息的根部。_特性標識消息的標準特性所在的消息的那部分。_主體標識消息的根部的最后一個子,其通常但不總是跟隨任意標題的應用數(shù)據(jù)。_
表2中示出字段參考及其含義的一些示例。
Body.Person.Address指代消息主體中個人實體中的第一地址字段 Perperties.Topic指代消息的標準特性中的“主題”字段 Root.MQMD.UserIdentifier 指代消息的MQMD中的用戶標識符字段
表3中示出基于內(nèi)容過濾的一些例子。
權(quán)利要求
1.一種用于發(fā)送發(fā)行/訂閱消息的方法,包括以下步驟: 發(fā)起(301)訂閱,其包括指定訂閱隊列,與訂閱有關的發(fā)行消息將被放置到所述訂閱隊列; 限定(305)用于所述訂閱的多個基于內(nèi)容的過濾表達式,每個過濾表達式被限定用于所述訂閱隊列的給定利用。
2.根據(jù)權(quán)利要求1所述的方法,其中所述多個過濾表達式是為所述訂閱隊列的遞增利用所限定的愈加限制的過濾器。
3.根據(jù)權(quán)利要求1或2所述的方法,還包括步驟:限定為其限定了過濾表達式的訂閱隊列利用參數(shù)。
4.根據(jù)權(quán)利要求3所述的方法,其中所述訂閱隊列利用參數(shù)包括以下組的一個或多個:剩余的隊列容量、隊列使用率、隊列中當前的數(shù)據(jù)量。
5.一種傳遞發(fā)行/訂閱消息的方法,包括以下步驟: 接收(401)與訂閱有關的發(fā)行消息; 檢查(403)所述訂閱中指定的訂閱隊列的利用; 確定(404)為所述訂閱隊列的給定利用所限定的基于內(nèi)容的過濾表達式;以及 應用(405)所述基于內(nèi)容的過濾表達式。
6.一種傳遞發(fā)行/訂閱消息的計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括可由處理電路讀取計算機可讀存儲介質(zhì),并存儲用于由處理電路執(zhí)行的指令,用來進行根據(jù)權(quán)利要求1至5的任何一個所述的方法。
7.一種傳遞發(fā)行/訂閱消息的系統(tǒng),包括: 發(fā)行引擎(110 ),包括訂閱機構(gòu)(111),該訂閱機構(gòu)(111)包括: 訂閱隊列指定組件(121 ),用于指定訂閱隊列,與訂閱有關的發(fā)行消息將被放置到所述訂閱隊列; 基于內(nèi)容的過濾器設置組件(123),用于為訂閱限定多個基于內(nèi)容的過濾表達式(124,125),所述過濾表達式(126,127)的每個被限定給所指定的訂閱隊列的給定利用(126,127)。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其中所述多個過濾表達式(124,125)是為對訂閱隊列(103)的遞增利用所限定 的愈加限制的過濾器。
9.根據(jù)權(quán)利要求7或8所述的系統(tǒng),其中所述基于內(nèi)容的過濾器設置組件(123)還可操作用于限定為其限定過濾表達式(124,125)的訂閱隊列利用參數(shù)。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中所述訂閱隊列利用參數(shù)包括以下組的一個或多個:剩余的隊列容量、隊列使用率、隊列中當前的數(shù)據(jù)量。
11.一種傳遞發(fā)行/訂閱消息的系統(tǒng),包括: 發(fā)行引擎(110),包括: 發(fā)行消息接收組件(130),用于接收與訂閱有關的發(fā)行消息; 隊列利用檢查組件(153),用于檢查在所述訂閱中指定的訂閱隊列(103)的利用; 過濾器確定組件(141 ),用于確定為訂閱隊列(103)的給定利用(126,,17)所限定的基于內(nèi)容的過濾表達式(124,125);以及 過濾器應用組件(142),用于應用所述基于內(nèi)容的過濾表達式(124,125)。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述隊列利用檢查組件(153) 可操作用于通過看到對所述訂閱隊列(103)的所有寫請求和所有檢索請求而跟蹤所述訂閱隊列(103)的利用。
13.一種用于發(fā)行/訂閱消息傳遞的裝置,包括: 用于發(fā)起(301)訂閱的裝置,其包括用于指定訂閱隊列的裝置,與訂閱有關的發(fā)行消息將被放置到所述訂閱隊列;以及 用于為所述訂閱限定(305)多個基于內(nèi)容的過濾表達式的裝置,每個過濾表達式可被限定用于所述訂閱隊列的給定利用。
14.根據(jù)權(quán)利要求13所述的裝置,其中所述多個過濾表達式是為訂閱隊列的遞增利用所限定的愈加限制的過濾器。
15.根據(jù)權(quán)利要求13或14所述的裝置,還包括: 用于限定可為其限定過濾表達式的訂閱隊列利用參數(shù)的裝置。
16.根據(jù)權(quán)利要求15所述的裝置,其中訂閱隊列利用參數(shù)包括以下組的一個或多個:剩余的隊列容量、隊列使用率、隊列中當前的數(shù)據(jù)量。
17.一種傳遞發(fā)行/訂閱消息的裝置,包括: 用于接收(401)與訂閱有關的發(fā)行消息的裝置; 用于檢查(403)所述訂閱中指定的訂閱隊列的利用的裝置; 用于確定(404)可限定用于所述訂閱隊列的給定利用的基于內(nèi)容的過濾表達式的裝置;以及 用于應用(405 )所述基于內(nèi)容的過濾表達式的裝置。
18.一種存儲在計算機可讀介質(zhì)上并可加載到數(shù)字式計算機內(nèi)儲中的計算機程序,包括軟件代碼部分, 當所述程序在計算機上運行時用于執(zhí)行權(quán)利要求1至5的任何一個所述的方法。
全文摘要
本發(fā)明涉及一種傳遞發(fā)行/訂閱消息的方法、系統(tǒng)和計算機程序產(chǎn)品。該方法的包括發(fā)起訂閱,其包括指定將要放置與訂閱有關的發(fā)行消息的訂閱隊列;對該訂閱限定多個基于內(nèi)容的過濾器表達式,對訂閱隊列的給定利用限定每個過濾表達式。該方法的另一個方面包括接收與該訂閱有關的發(fā)行的消息;檢查該訂閱中指定的訂閱隊列的利用;確定對該訂閱隊列的給定利用而限定的基于內(nèi)容的過濾表達式;以及應用該基于內(nèi)容的過濾表達式。
文檔編號G06F17/30GK103154944SQ201180047415
公開日2013年6月12日 申請日期2011年8月17日 優(yōu)先權(quán)日2010年9月29日
發(fā)明者T.鄧恩 申請人:國際商業(yè)機器公司