專利名稱:處理組件更新消息的方法和設備的制作方法
技術領域:
本發明涉及消息的處理,并且更特別地涉及在消息內的元素的定位。
背景技術:
在消息發送(messaging)環境中,消息產生者經由諸如來自IBM公司 的一個可用的消息發送系統向消息使用者發送消息。
一個或多個居間器(mediation)服務應用程序可以位于消息處理環境中。 所述居間器服務應用程序攔截和修改在產生者和使用者之間傳遞的消息。因 此,居間器可能產生輸入消息的稍微修改的版本作為輸出,其中修改可以是 關于消息的路由的上下文信息、消息內容、或者在記錄或監視居間器(處理 組件)的情況下是只讀的。
居間器實現需要對消息內容的某些部分的訪問,以便執行其功能。 一般 地,向居間器提供具有某種本地(native)或規范格式的完整消息,并留下以 對于其自身確定要讀取和修改消息的哪些部分。因此每一個居間器實現均敏 感于向其提供的消息的結構,并且可能必須具有處理來自不同源的消息的特 定代碼。這樣的代碼指示由特殊消息格式限定的每一個元素的位置。此外, 預先不知道居間器要求和/或更新哪些值。
居間器一般具有多種屬性,例如,為了執行其處理,可以設置以指示居 間器要求的信息的值。注入(injection)是覆蓋(cover)基于與所述居間器 相關聯的元數據,從由運行時間確定的值中設置居間器屬性的技術術語。通 常這些注入屬性代表對于居間器處理節點的運行時間創建的其他對象(如其 他企業JavaTM Beans )的配置參數或參考。(Java和所有基于Java的商標都 是美國或其他國家或兩者中SunMicrosyst ems公司的商才示)
Enterprise Bean Programming Model 2,0允許EJB對象包括可以檢索 (retrieve)或更新的多種屬性。EJB對象可以保持數據庫記錄的形式。對等 地,數據庫記錄可以重新構成EJB對象。目的是實現兩者之間的同步。然而, 不可能提前推斷出將要更新哪些EJB屬性。美國專利申請6,636855公開了用于處理數據流的系統。提供輸入映射, 用于提取值以用作針對存儲的過程的輸入參數。還提供輸出映射,其描述如 何利用從存儲的過程返回的輸出參數來補充消息。
發明內容
根據第一方面,提供了處理組件更新消息的方法,包括 接收用于由處理組件處理的消息;
從處理組件的聲明接口中推斷出將由處理組件更新一個或多個消息值作 為其處理的結果;
使用處理組件的接口以獲得一個或多個更新的值;并將該更新應用于消
自
例如,要更新的值可以從聲明接口的方法調用的名稱中推斷出,或者可 以從由聲明接口列出的額外信息中推斷出。
此外,優選地從處理組件的聲明接口中推斷出處理組件要求的一個或多 個消息值以便進行其處理。
優選地使用處理組件的接口以便從消息中獲取一個或多個所要求的值。
再一次,作為示例,所要求的值可以從聲明接口的方法調用中推斷出, 或者從由聲明接口列出的額外信息中推斷出。
根據優選實施例,與處理組件相關聯的元數據用于在消息中定位所要求 的值。
優選地,所定位的要求的值被傳遞到處理組件。 根據優選實施例,與處理組件相關聯的元數據用于在要更新的消息內定 位每一個消息。
優選地,確定消息的類型,并訪問適于消息類型的元數據。 根據一個實施例,使用處理組件將更新的一個或多個消息值的知識來確 定需要由處理組件本地地存儲消息的哪些元素。
根據第二方面,提供了處理組件更新消息的設備,包括 接收用于由處理組件處理的消息的部件;
從處理組件的聲明接口中推斷出將由處理組件更新一個或多個消息值作 為其處理結果的部件;
使用處理組件的接口,以獲得一個或多個更新的值的部件;以及將更新應用于消息的部件。
本發明可以以計算機軟件實現。
現在僅作為示例并參照附圖,描述本發明的優選實施例,在附圖中:
圖1圖解根據本發明的優選實施例的消息發送環境;
圖2a示出根據本發明的優選實施例的居間器;
圖2b提供根據本發明的優選實施例的示例性元數據;
圖2c圖解示例性QuoteResponse消息;以及
圖3圖解根據優選實施例的本發明的處理。
具體實施例方式
圖1提供了其中可以實現本發明的優選實施例的消息處理環境的示例。 消息產生者10經由消息發送系統20向消息使用者50發送消息。在消息發送 系統內,由消息移動組件(未示出)將消息從輸入隊列25傳遞到輸出隊列 30。
消息使用者50在輸出隊列30請求下一消息,并且消息發送系統將所述 消息向前轉送。處理節點35位于消息發送系統20與消息使用者50之間。這 包含居間器40 (處理組件),其攔截所述消息并使用在所述消息內包含的值 來進行一些額外處理。
僅作為示例,消息產生者10表示股票報價服務(stock quote service )。 消息使用者50請求當前IBM⑧股票價格。消息發送系統20向消息使用者50 轉送的消息可以是對于該請求的答復。
消息使用者50可以代表歐洲客戶,他感興趣與以美元對其進行出示 (produce)相對的歐元的當前IBM股票價格。因此居間器40可以提供將所 檢索到的股票價格轉換為歐元所需的功能。圖2a圖解根據本發明的優選實施 例的、更詳細的居間器40。居間器在其已聲明接口 (1/F)45列出"set"和 "get"方法的列表。set方法的存在表示居間器實現要求值,而get方法的存 在表示居間器實現修改值。在該示例中,貨幣類型(currency type )、量(amount) 和匯率(exchange rate )是所要求的值(經由set方法設置表示這些值的居間 器屬性)。amount也是居間器作為其包含的任何"do"處理的結果而更新的所接收到的消息中的字段(經由get方法檢索表示該值的居'間器'屬性的更新 值)。
某些元數據60與居間器40相關聯。如圖2b所示,該元數據表示由在居 間器的接口 45處列出的set和get方法要求的字段值的所接收到的消息內的 位置(對于特殊消息格式)。因此,所示的元數據表示Amount可以從被稱為 QuoteResponse的消息中檢索到,并且在位于y字段(反過來位于字段x內) 內的amount字,爻內。類4以;t也,Currency ^f立于QuoteResponse字l殳內,所述 QuoteResponse字^殳具有位于字段z內的currency字段。可以在站點 exchangerate.com/currencyx to euro (其是作為示例的、將請求的貨幣轉換為 歐元的站點)上找到exchange rate (匯率)。在圖2c中圖解示例性 QuoteResponse消息。
當配置或配備元數據時,優選地向其提供居間器。如上所述,這樣的元 數據將來自特殊格式(類型)的消息的特定字段映射到get和set方法。可以 通過指定XPath表達式來實現這樣的映射。
圖3示出根據優選實施例的本發明的處理。現在將聯系圖1的消息發送 環境、圖2a的示例性居間器、圖2b的元數據和圖2c的消息來讀該圖。
在步驟100,由處理節點30的運行時間(未示出)來接收圖2c的 QuoteResponse消息。運行時間從由居間器的接口的set方法限定的消息中提 取字段(步驟110)。元數據60用于確定所接收到的消息內必需的字段的位 置。在操作多種格式的消息的系統中,可能必須確定所接收到的消息的格式 (類型)以及后續要使用的合適的元數據。
在步驟120,由處理節點35的運行時間調用居間器40的set方法 (Currency, Amount, ExchangeRate )。這樣,將居間器40內的currency、 amount 和exchange rate變量(屬性)55設置為所提取的字段內包含的值。在該示例 中,currency是美元,amount是15,而用于將美元轉換為歐元的exchange rate (如/人www,exchangerate.com/currencyx_to_euros中才企索)是1.42。
所要求的變量的名稱(即,在居間器的"do"處理中使用并在元數據中 指定的那些)可以從在居間器的接口處列出的set和get方法的名稱中得到。 可選擇地,這樣的額外信息可以列出在接口本身。
在步驟130,運行時間使用"set"值(屬性)來調用居間器的"do"處 理。示例性do處理將amount( 15 )乘以對于所要求的currency的exchange rate
7(如歐元,1.42)。
然后,在步驟140調用任意get方法,以便提取作為do處理的結果而產 生的任意更新的值(屬性)。在該實例中,居間器的do處理已經返回對于 amount的新值(15*1.42=21.30)。因此,這是提取的值,并且在步驟150更 新相關消息字段(在這種情況下是amount字段)。元數據60用于直接定位 amount字段而無需分析整個消息。
在步驟160 ,向消息使用者50轉送QuoteResponse消息。
因此,連同居間器作為其"do"處理的結果而更新(經由get方法)的 屬性一起提供在居間器實現上的接口 ,其列出居間器將要求(經由set方法) 的屬性。然后,運行時間基礎設施可以連同分別指定的元數據一起、合適地 調用那些方法,其中該元數據將具有特殊具體消息格式(方案)的消息字段 映射到居間器屬性。這提供極其簡單的居間器編程模型,其允許居間器與消 息起源(格式)獨立地被編碼,并且還提供關于要訪問和/或修改哪個消息字 段的整個信息(這允許顯著的最優化)。不再需要分析整個消息。
由元數據使消息訪問分離并限定意味著可以利用不同元數據對于大量消 息再使用單個居間器實現。
可以提供基于輸入/輸出參數及其類型的限定組來產生基本(skeleton) 居間器實現的加工(tooling),然后居間器記錄器(writer)只需要處理居間 器邏輯,而沒有消息訪問/更新邏輯。
當然,將理解,以上給出的股票報價示例決不旨在限定。居間器具有多 種用途,包括變換、記錄(log)等。只要居間器需要更新消息內的值,本發 明均具有效用。還應該理解,居間器的位置可以在消息發送環境內的多個地 方之---如在消息發送系統本身或者與消息產生者或使用者共處。
所公開的解決方案特別有利性在于處理節點的運行時間不需要保持中 間消息元素的表示。因此,如果居間器屬性被映射到消息元素a/b/c/d/e/f,則 運行時間只需要創建f的表示。之前,需要存儲消息的完整表示,而這是低 效的。更詳細地進行解釋當讀取元素時,所述元素的值需要以某種形式保 存,并被提供到居間器組件。然而,當get方法的不存在表示居間器不更新 所述值時,不需要產生所述元素的副本。如果不利用所公開的解決方案,則 只要居間器更新任何值就調用居間器, 一般就需要產生整個消息的副本。
應該理解,本發明不限于其中居間器要求來自消息的一個或多個值并且還更新消息中的一個或多個值的系統。其中僅更新值的系統同樣也是可能的。 還應該理解,每次接收到消息時均可以訪問元數據,以便在消息內定位合適 的字,殳。可選擇地,當消息是頻繁4妄收類型之一時,處理節點可以記憶消息 內各字段的位置。
如上所討論的那樣,從居間器(處理組件)的聲明接口,可以推斷出將
要更新的消息值。作為示例,其有利性在于可以使用該知識來確定是否需 要存儲特定消息元素的副本及其值。例如,可能存在居間器鏈,并且不利用 該知識,則一般將需要本地地存儲對于每一居間器的完全信息的表示。現在, 需要本地地存儲所要求的特定消息元素(字^殳),并且僅在更新那個元素時。
可以將本發明的優選實施例總結如下
一種處理組件處理消息的方法,包括
使用處理組件的聲明接口以識別處理組件要求的那些消息值; 使用與處理組件相關聯的元數據以定位消息中所要求的值; 將那些值傳遞到處理組件; 使處理組件執行其功能;
使用處理組件的聲明接口以識別處理組件已經更新的那些消息值; 使用元數據以在消息內定位每一個消息值,所述消息與處理組件已經更 新的4直相對應;
并基于所述處理更新每一個消息值。
權利要求
1、一種處理組件更新消息的方法,包括接收用于由處理組件處理的消息;從該處理組件的聲明接口中推斷出將由該處理組件更新一個或多個消息值作為其處理結果;使用該處理組件的該接口獲得該一個或多個更新值;以及將該更新應用于該消息。
2、 根據權利要求1所述的方法,包括從該處理組件的該聲明接口中推斷出該處理組件要求的一個或多個消息 值以便進行其處理;使用該處理組件的該接口以從所述消息中獲得一個或多個所要求的值。
3、 根據權利要求2所述的方法,其中使用該處理組件的該接口以從所述 消息中獲得一個或多個所要求的值的步驟包括使用與所述處理組件相關聯的元數據來在所述消息中定位該所要求的值。
4、 根據權利要求3所述的方法,包括 將所定位的所要求的值傳遞到所述處理組件。
5、 根據上述任意一個權利要求所述的方法,其中將那些更新應用于所述 消息的步驟包括使用與所述處理組件相關聯的元數據來在要被更新的所述消息內定位每 一個消息值。
6、 根據權利要求3、 4或5所述的方法,包括 確定消息的類型;以及訪問適于所述消息類型的元數據。
7、 根據上述任意一個權利要求所述的方法,包括 使用所述處理組件將更新的該一個或多個消息值的知識來確定需要由所述處理組件本地地存儲消息的哪些元素。
8、 一種處理組件更新消息的設備,包括 接收用于由處理組件處理的消息的部件;從該處理組件的該聲明接口中推斷出將由該處理組件更新一個或多個消息值作為其處理結果的部件;使用該處理組件的該接口以獲得該一個或多個更新的值的部件;以及 將該更新應用于該消息的部件。
9、 根據權利要求8所述的設備,包括從該處理組件的該聲明接口中推斷出該處理組件要求的一個或多個消息 值以便進行其處理的部件;使用該處理組件的該接口以從該消息中獲得一個或多個所要求的值的部件。
10、 根據權利要求9所述的設備,其中使用該處理組件的該接口以從該 消息中獲得一個或多個所要求的值的部件包括使用與該處理組件相關聯的元數據以在該消息中定位所要求的值的部件。
11、 根據權利要求10所述的設備,包括 將所定位的要求的值傳遞到該處理組件的部件。
12、 根據權利要求8到11中任意一個所述的設備,其中將那些更新應用 于該消息的部件包括使用與該處理組件相關聯的元數據來在要被更新的該消息內定位每一個 消息值的部件。
13、 根據權利要求IO、 11或12所述的設備,包括 確定消息的類型的部件;以及訪問適于該消息類型的元教:據的部件。
14、 根據權利要求8到13中任意一個所述的設備,包括使用該處理組件將更新的 一個或多個消息的知識,以確定需要由該處理 組件本地地存儲消息的哪些元素的部件。
15、 一種計算機程序,包括程序代碼部件,適于當該程序在計算機上運 行時執行權利要求1到7中任意一個所述的方法。
全文摘要
公開了處理組件更新消息的方法、設備和計算機程序。接收由處理組件處理的消息。從處理組件的聲明接口中推斷出將由處理組件更新一個或多個消息值作為其處理結果。然后使用處理組件的接口以獲得一個或多個更新的值,然后將更新應用于消息。
文檔編號H04L12/56GK101442503SQ20081016568
公開日2009年5月27日 申請日期2008年9月24日 優先權日2007年11月21日
發明者格雷戈里·L·特魯蒂, 西蒙·A·霍爾茲沃思 申請人:國際商業機器公司