專利名稱:動態(tài)組合數(shù)據(jù)流處理應用程序的制作方法
技術(shù)領域:
本發(fā)明的實施例主要涉及信息技術(shù),并且更具體地涉及數(shù)據(jù)流處理。
背景技術(shù):
流處理計算范式包括以流的形式同化來自軟件或硬件傳感器集合的數(shù)據(jù)讀數(shù) (也就是說,無限的元組集合承載了由外部數(shù)據(jù)源生成的信息),分析數(shù)據(jù),然后可能也是以流格式生成可指導行動的結(jié)果。流處理應用程序可以包括多個組件,每一個組件均可生成可以由應用程序中的另一個組件調(diào)用的數(shù)據(jù)流。例如,在交通管理系統(tǒng)中,可以設想攜帶手機的每一位駕駛員都會變成向擁堵控制系統(tǒng)中輸送關于其位置和速度信息的數(shù)據(jù)源。在這樣的情況下,分布式交通管理平臺的數(shù)據(jù)收集部分可以將其關注點集中在訂閱所有可用的數(shù)據(jù)源(例如特定區(qū)域內(nèi)所有攜帶手機的駕駛員)以提高其可能做出的擁堵預測的準確度。因此,對于提供數(shù)據(jù)源的自動路由存在需求。在上述情況下,這可能會包括將捕獲駕駛員速度和位置的瞬時讀數(shù)以及交通事故的位置和道路養(yǎng)護方案路由至數(shù)據(jù)使用者(在該示例中是交通和擁堵管理系統(tǒng)平臺)。通常,流處理應用程序可以包括幾十到幾百個解析操作點,配置在架設了很多其他可能互聯(lián)的流應用程序的系統(tǒng)上,分布在大量的處理節(jié)點中。在現(xiàn)有的方法中,實現(xiàn)可以互聯(lián)應用程序或者允許集成多個應用程序的流程圖通常是通過硬編碼應用程序內(nèi)和應用程序間連接或者是通過依靠發(fā)布-訂閱或企業(yè)服務總線型的機制以特定方式完成的,具有很多關于可擴展性問題方面的缺點。由生成者產(chǎn)生的數(shù)據(jù)相對于應用程序的執(zhí)行可以是間歇性的。例如,在基礎設施監(jiān)控領域內(nèi)發(fā)展起來的大規(guī)模分布式應用程序(例如交通管理系統(tǒng)、能量分布系統(tǒng)、大零售商供應鏈管理系統(tǒng)、分布式欺詐和異常檢測系統(tǒng)、監(jiān)視系統(tǒng)等)往往是長期運行的應用程序,被設計為除了周密計劃好的維護停機期間以外可能都要保持連續(xù)運行。而且,這些應用程序經(jīng)常被設計為在它們內(nèi)部互相協(xié)作,例如,通過使交通傳感器驅(qū)動自動交通控制以用于減少擁堵。在很多情況下,為現(xiàn)有應用程序輸送數(shù)據(jù)的原始數(shù)據(jù)源可能會以變化的時間間隔 (也就是從幾秒到幾天)連續(xù)地變?yōu)榭捎煤筒豢捎?,原因就在于這些來源中的一部分是暫時性的。在此情況下,平臺中的數(shù)據(jù)收集部分可以將其關注點集中在訂閱所有可用的原始數(shù)據(jù)源。因此,需要對于向數(shù)據(jù)使用者提供數(shù)據(jù)源的自動路由?,F(xiàn)有的方法包括發(fā)布/訂閱系統(tǒng)。但是,發(fā)布/訂閱系統(tǒng)是以由生產(chǎn)者生成的各個數(shù)據(jù)項的間隔來描述數(shù)據(jù)特性,而不是以生產(chǎn)者的間隔。這樣的方法并不實用,原因在于與以數(shù)據(jù)源的間隔進行注釋相比的注釋各個數(shù)據(jù)項相關聯(lián)的低效率。
發(fā)明內(nèi)容
本發(fā)明的原理和實施例提供了用于動態(tài)組合數(shù)據(jù)流處理應用程序的技術(shù)。根據(jù)本發(fā)明的一種應用,一種用于在基于組件的數(shù)據(jù)流處理應用程序中動態(tài)修改多個組件之間互聯(lián)的示范性方法(可以用計算機實現(xiàn))可以包括以下步驟針對要在一個或多個處理器上執(zhí)行的軟件應用程序內(nèi)的多個輸出端口中的每一個輸出端口接收數(shù)據(jù)生產(chǎn)者檔案,其中應用程序包括多個組件,每一個組件都包括生成數(shù)據(jù)流的輸出端口和調(diào)用數(shù)據(jù)流的輸入端口,并且其中每一份數(shù)據(jù)生產(chǎn)者檔案都描述了由對應輸出端口生成的數(shù)據(jù)特征,針對應用程序多個組件的一個或多個輸入端口中的每一個輸入端口接收數(shù)據(jù)訂閱檔案,其中每一份數(shù)據(jù)訂閱檔案都描述了由輸入端口調(diào)用的數(shù)據(jù)特征,根據(jù)接收的數(shù)據(jù)生產(chǎn)者檔案和接收的數(shù)據(jù)訂閱檔案的比較,在應用程序內(nèi)多個組件的輸出端口和輸入端口之間建立一個或多個連接,在一個或多個處理器上執(zhí)行數(shù)據(jù)流處理應用程序以處理一個或多個數(shù)據(jù)流,在執(zhí)行應用程序期間接收新的數(shù)據(jù)生產(chǎn)者檔案或新的數(shù)據(jù)訂閱檔案之一或兩者都接收,并根據(jù)接收的包括一個或多個新數(shù)據(jù)檔案的數(shù)據(jù)檔案的修正比較,在輸出端口和輸入端口之間建立至少一個新連接。本發(fā)明的一個或多個實施例或者其要素能夠以一種計算機產(chǎn)品的形式實現(xiàn),包括實體的計算機可讀取存儲介質(zhì)以及用于執(zhí)行上述方法步驟的計算機可用程序代碼。而且, 本發(fā)明的一個或多個實施例或者其要素能夠以一種設備的形式實現(xiàn),包括存儲器以及連接至存儲器并且可操作用于完成示范性方法步驟的至少一個處理器。再進一步地,在另一種應用中,本發(fā)明的一個或多個實施例或者其要素能夠以一種用于實現(xiàn)本文中所述的一個或多個方法步驟的裝置的形式實現(xiàn);該裝置可以包括(i) 一種或多種硬件模塊,(ii) 一種或多種軟件模塊和/或組件,或者(iii)硬件和軟件模塊/組件的組合;(i)-(iii)中的任意一種均可實現(xiàn)本文中所闡述的具體技術(shù),并且軟件模塊/組件被存儲在實體的計算機可讀取存儲介質(zhì)(或多個這樣的介質(zhì))中。根據(jù)以下對本發(fā)明說明性實施例的詳細介紹,本發(fā)明上述以及其他的目標、特征和優(yōu)點將會變得顯而易見,應結(jié)合附圖閱讀所述實施例。
圖1是示出了根據(jù)本發(fā)明的實施例的在基于組件的應用程序中動態(tài)修改多個組件之間的一種或多種互聯(lián)的示意圖;圖2是示出了根據(jù)本發(fā)明的實施例的用于基于XPATH的組合機制的示范性語法的示意圖;圖3是示出了用于實施本發(fā)明的一個或多個實施例的多組件設備的示范性組織的示意圖;圖4是示出了根據(jù)本發(fā)明的實施例的與由應用程序生成的流相關聯(lián)的可擴展標記語言(XML-)編碼檔案在通過檔案管理器組件保存時的示范性列表;圖5是示出了根據(jù)本發(fā)明的實施例的在建立新的生產(chǎn)者和/或使用者的流連接時新應用程序的配置如何在流程圖中觸發(fā)修改的流程圖;圖6是示出了根據(jù)本發(fā)明的實施例的在切斷新的生產(chǎn)者和/或使用者的流連接時新應用程序的終止如何在流程圖中觸發(fā)修改的流程圖;圖7是示出了根據(jù)本發(fā)明的實施例的在建立和/或切斷新的生產(chǎn)者和/或使用者的流連接時描述流的相關性質(zhì)的流檔案的修改如何在流程圖中觸發(fā)修改的流程圖;圖8是示出了根據(jù)本發(fā)明的實施例的在建立和/或切斷新的生產(chǎn)者和/或使用者的流連接時與組件輸入端口相關聯(lián)的訂閱表達式的修改如何在流程圖中觸發(fā)修改的流程圖;圖9是示出了根據(jù)本發(fā)明的實施例的在建立和/或切斷新的生產(chǎn)者和/或使用者的流連接時與組件輸入端口相關聯(lián)的訂閱函數(shù)的修改如何在流程圖中觸發(fā)修改的流程圖;圖10是示出了根據(jù)本發(fā)明的實施例的在建立和/或切斷新的生產(chǎn)者和/或使用者的流連接時與組件輸入端口相關聯(lián)的訂閱評價標準的修改如何在流程圖中觸發(fā)修改的流程圖;圖11是示出了根據(jù)本發(fā)明的實施例的用于在基于組件的數(shù)據(jù)流處理應用程序中動態(tài)修改多個組件之間互聯(lián)的技術(shù)流程圖;圖12是一種示范性計算機系統(tǒng)的系統(tǒng)示意圖,本發(fā)明的至少一個實施例能夠在該示范性計算機系統(tǒng)上實施。
具體實施例方式本發(fā)明的原理包括基于檔案的動態(tài)應用程序組合。高性能、分布式計算的流處理中間軟件能夠支持同時運行多種應用程序,其中每一種應用程序都可能包括有用作數(shù)據(jù)源 (生產(chǎn)者)和用作數(shù)據(jù)宿(使用者)的若干組件。本發(fā)明一個或多個實施例提供的技術(shù)用于描述由這樣的應用程序以生產(chǎn)者的間隔生成的數(shù)據(jù)特征,用于描述每一個使用者所需的數(shù)據(jù)特征,以及用于從適當?shù)氖褂谜呦蚴褂谜邉討B(tài)匹配和路由數(shù)據(jù)。本文中詳細介紹的技術(shù)包括通過確定應用程序中不同組件之間的數(shù)據(jù)流結(jié)構(gòu)并為數(shù)據(jù)交換建立必備的物理路由和連接。另外,所述技術(shù)包括用于動態(tài)操作(例如查詢、插入、刪除和/或改變)生產(chǎn)者的等級特征(或性質(zhì))、基于生產(chǎn)者性質(zhì)的使用者訂閱以及將匹配每一個使用者的生產(chǎn)者按優(yōu)先順序排列的評價功能的方法。在大規(guī)模分布式應用程序中,本發(fā)明的一個或多個實施例包括以對應用程序有意義的方式定位數(shù)據(jù)源,允許邏輯訂閱規(guī)范,其中并不是僅僅依賴于數(shù)據(jù)源的名稱(數(shù)據(jù)源名稱通常直到配置時間之前可能都是未知的),而是可以使用更加豐富的性質(zhì)集合來推斷并建立生產(chǎn)者/使用者的關系。另外,在處理可能是大型的數(shù)據(jù)源集合時,本文中介紹的技術(shù)提供了可擴展性。本發(fā)明的一個或多個實施例包括用于將數(shù)據(jù)生產(chǎn)者連接至數(shù)據(jù)使用者的組合機制,其具有內(nèi)置機制以應對能夠滿足數(shù)據(jù)訂閱表達式的大量數(shù)據(jù)源。而且,本文中詳細介紹的技術(shù)包括評價并約束應該被動態(tài)連接至數(shù)據(jù)使用者的數(shù)據(jù)源數(shù)量。這樣的評價機制也可以是可以用程序描述的,因此使用數(shù)據(jù)的應用程序能夠根據(jù)特定于應用程序的標準按優(yōu)先順序排列要使用哪一個源。而且,數(shù)據(jù)使用者經(jīng)常在它們能夠攝取的數(shù)據(jù)數(shù)量方面具有預算(例如通過最大合計攝取速率限制要處理的源數(shù)量)以及在它們能夠處理的數(shù)據(jù)質(zhì)量方面具有閾值(例如通過數(shù)據(jù)源特定的噪聲等級或其他專用領域的質(zhì)量量度篩選數(shù)據(jù)源)。因此,本發(fā)明的一個或多個實施例將使用者連接至生產(chǎn)者有助于為使用者提供選項以同樣地根據(jù)這些屬性來選擇建立和評價連接。另外,本文中介紹的技術(shù)有助于根據(jù)數(shù)據(jù)特性的改變來自我修正(長期運行的) 應用程序行為。該修正有可能會發(fā)生在例如內(nèi)容方面(例如交通的突然減慢可以觸發(fā)從特定位置調(diào)用視頻數(shù)據(jù)以評估最近是否發(fā)生了交通事故)。應用程序可以長期運行,而數(shù)據(jù)源則可以在分布式系統(tǒng)中連續(xù)地到達和離開。本發(fā)明的一個或多個實施例包括自動建立數(shù)據(jù)源和相關使用者之間的必備連接。另外,系統(tǒng)內(nèi)的數(shù)據(jù)源數(shù)量有可能會十分巨大。因此,是基于邏輯謂語的數(shù)據(jù)訂閱而不是明確地命名每一個使用者處的數(shù)據(jù)源導致可擴展的應用程序設計,這代替了繁瑣的人力密集型設計。而且,由每一個源生成的數(shù)據(jù)的數(shù)量和質(zhì)量有可能會改變。本發(fā)明的一個或多個實施例使應用程序能夠根據(jù)數(shù)據(jù)特征的改變以及正在進行的分析的改變來修改其行為。本文中介紹的技術(shù)還為應用程序中的不同組件和/或多種應用程序提供了共生和協(xié)作環(huán)境以在分布式系統(tǒng)中共存。本發(fā)明的一個或多個實施例還包括實現(xiàn)應用程序的參數(shù)化。也就是說,應用程序行為可以根據(jù)數(shù)據(jù)的性質(zhì)被參數(shù)化。作為示例,可以復制數(shù)據(jù)處理的某一部分用于不同的數(shù)據(jù)源。如本文中詳細介紹的那樣,本發(fā)明的一個或多個實施例包括用于在分布式應用程序中將數(shù)據(jù)的生產(chǎn)者和使用者動態(tài)互聯(lián)的機制。數(shù)據(jù)源可以根據(jù)由生產(chǎn)者生成的數(shù)據(jù)性質(zhì)以及其他的生產(chǎn)者特定性質(zhì)(例如涉及在何處以及如何配置生產(chǎn)者的性質(zhì),由運行時的環(huán)境推斷出的性質(zhì)等)進行描述。而且,數(shù)據(jù)訂閱可以根據(jù)邏輯條件和/或過程函數(shù)構(gòu)建,過程函數(shù)對這些性質(zhì)進行運算并最終評估為真或假以指示是否應該建立生產(chǎn)者/使用者的關系。例如,訂閱可以是基于表達式的,也就是說,它可以采用陳述性表達式的形式利用可擴展標記語言(XML) 基于路徑語言(XPATH)的語法來表達訂閱謂語,或者也可以是關于性質(zhì)的布爾表達式。圖1是示出了根據(jù)本發(fā)明的實施例的在基于組件的應用程序中動態(tài)修改多個組件之間的一種或多種互聯(lián)的示意圖。作為圖解,圖1示出了生產(chǎn)者(數(shù)據(jù)源)102以及使用者(數(shù)據(jù)宿)116。生產(chǎn)者102包括輸出端口(例如輸出端口 104)和流檔案(例如流檔案 106)。生產(chǎn)者還可以包括流性質(zhì)(例如稱為“熵”的流性質(zhì))以及流性質(zhì)的值。使用者116包括輸入端口(例如輸入端口 110)以及在主機上運行的實現(xiàn)應用程序邏輯的處理單元(例如處理單元11 。使用者還可以包括流訂閱表達式(例如流訂閱表達式114 “熵< 15”)。圖1還示出了生產(chǎn)者和使用者之間的流連接(例如流連接108)。圖2是示出了根據(jù)本發(fā)明的實施例的用于基于XML路徑語言(XPATH)的組合機制的示范性語法的示意圖。圖2示出了包括具有三種性質(zhì)的流檔案的數(shù)據(jù)生產(chǎn)者應用程序 202,以及包括基于XPATH的輸入訂閱表達式的數(shù)據(jù)使用者應用程序204。圖2示出了包括應用程序中的數(shù)據(jù)流表示的框圖。另外,本發(fā)明的一個或多個實施例包括能夠被用于評估與訂閱匹配的各個數(shù)據(jù)源重要性的評價技術(shù)。這樣的評價機制使得能夠約束可以針對特定使用者物理地建立的生產(chǎn)者/使用者關系的最大數(shù)量。如上所述,本文中詳細介紹的技術(shù)包括通過將應用程序邏輯與源于其他組件和應用程序的數(shù)據(jù)流解耦使應用程序能夠增量配置,以及響應于數(shù)據(jù)質(zhì)量、容量、可用性以及施加在系統(tǒng)上的總負荷等因素的改變使應用程序能夠進化和動態(tài)自適應。本發(fā)明一個或多個實施例中的每一個數(shù)據(jù)生產(chǎn)者都與數(shù)據(jù)檔案相關聯(lián)。例如,考慮在流計算系統(tǒng)內(nèi)實現(xiàn)基于檔案的應用程序組合(例如由紐約Armonk的IBM公司提供的 INFOSPHERE STEAMS中間軟件應用程序)。在這樣的包括處理單元(PE)的應用程序中,每一個處理單元都具有多個輸入和輸出端口,其中每一個輸出端口生成單個流,數(shù)據(jù)檔案與每一個輸出端口相關聯(lián)。數(shù)據(jù)檔案可以包括用于與其相關聯(lián)的生產(chǎn)者的唯一標識符,并且它還可以包括表達由生產(chǎn)者生成的數(shù)據(jù)特征的性質(zhì)集合。這些性質(zhì)可以屬于幾種預先確定的數(shù)據(jù)類型(既有簡單的,也有復雜的)之一。例如,在流計算系統(tǒng)中,數(shù)據(jù)性質(zhì)可以是字符串型、雙精度浮點數(shù)型、長整數(shù)型、字符串列表型、雙精度浮點數(shù)列表型和長整數(shù)列表型 (最后三個是數(shù)組型)。每一個檔案性質(zhì)都有名稱,并且特定檔案內(nèi)的兩種性質(zhì)不能具有相同的名稱。另外,每一個使用者都利用訂閱表達式描述其感興趣的生產(chǎn)者集合。訂閱表達式是關于數(shù)據(jù)檔案性質(zhì)的任意布爾表達式。其檔案性質(zhì)滿足給定表達式的所有生產(chǎn)者都是使用者可能的候選。而且,其他的正則因素可以判定生產(chǎn)者是否需要被連接至訂閱者,分別包括安全性、生產(chǎn)者和訂閱者的范圍以及生產(chǎn)者和使用者的兼容性、輸出和輸入數(shù)據(jù)的格式等。作為示例,在流計算系統(tǒng)(例如系統(tǒng)S)中,訂閱表達式可以利用XPATH語法定義。例如,表達式流[位置="約克鎮(zhèn)"][標簽[成員="視頻"]]匹配所有這樣的數(shù)據(jù)檔案 所述數(shù)據(jù)檔案包含被稱為位置的其值為"約克鎮(zhèn)"的字符串性質(zhì),并且包含被稱為標簽的字符串列表性質(zhì),其中包含被稱為"視頻"的成員。而且,本發(fā)明的一個或多個實施例包括在生產(chǎn)者和使用者之間動態(tài)確定并建立互聯(lián)的邏輯,該邏輯可以包括例如三個子組件。一個子組件可以包括檔案管理器,這是一種用于儲存數(shù)據(jù)檔案的可靠的數(shù)據(jù)結(jié)構(gòu)。它提供了用于在運行時操作和查詢數(shù)據(jù)檔案的API。 在流計算系統(tǒng)中,檔案管理器可以利用可擴展標記語言(XML)的樹形表示以及用于操作和查詢數(shù)據(jù)檔案的應用程序編程接口(API)來實現(xiàn)。第二個子組件可以包括匹配技術(shù),該技術(shù)通過檢查哪一份檔案匹配哪一個訂閱表達式(可能是為了使匹配效率最大而被工程化和優(yōu)化)來計算生產(chǎn)者和使用者之間的匹配 (或連接)。在應用程序啟動期間以及無論何時要修改檔案或訂閱表達式時還有在處理單元(例如流計算系統(tǒng)內(nèi)的運行時分析容器)進出時執(zhí)行該技術(shù)。作為示例,可以使用下層的XML引擎將檔案管理器內(nèi)的檔案與基于XPATH的訂閱表達式進行匹配。另一個子組件可以包括用于檔案和訂閱操作的API。這樣的API能夠使應用程序在運行時修改檔案性質(zhì)和訂閱表達式。在本發(fā)明的一個或多個實施例中,上述子組件可以駐留在提取圖管理器(DGM)模塊中。本文中詳細介紹的技術(shù)還包括編程語言的等級特征,它在應用程序開發(fā)時提供了定義和初始化數(shù)據(jù)檔案和訂閱表達式的能力。這樣的通過編程語言初始化的檔案和訂閱在應用程序啟動時生效。在本發(fā)明的一個或多個實施例中,編程語言(例如SPADE)提供了實現(xiàn)上述內(nèi)容的特征。Gedik 等人在〃 SPADE The System S Declarative Stream Processing Engine" SIGMOD Conference 2008 :1123-1134 —文中更加完整地介紹了 SPADE編程模型。如本文中所述,本發(fā)明的一個或多個實施例能夠在作為通用數(shù)據(jù)流處理中間軟件(例如數(shù)據(jù)流處理系統(tǒng),譬如分別是INFOSPHERE STREAMS和SPADE編程語言)的一部分開發(fā)的分布運行時基礎結(jié)構(gòu)和編程模型的示范性背景下具體實現(xiàn)。這樣支持結(jié)構(gòu)化和非結(jié)構(gòu)化分布式數(shù)據(jù)流處理應用程序能夠覆蓋大量的計算節(jié)點。另外,這樣的中間軟件能夠執(zhí)行大量的作為一個或多個應用程序一部分的長期運行應用程序。這些應用程序可以作為單個應用程序或者可能采用了復雜數(shù)據(jù)流圖形式的相關應用程序組的一部分而交互。數(shù)據(jù)流圖可以包括由數(shù)據(jù)流連接的處理單元組(例如運行時的執(zhí)行單元),其中每一個數(shù)據(jù)流都帶有一系列的元組。處理單元是裝有實施數(shù)據(jù)流分析的操作點的容器并且分布在計算節(jié)點上。計算節(jié)點可以被組織為例如工作站的不共享集群或者大型的超級計算機。處理單元通過它們的由數(shù)據(jù)流連接的輸入和輸出端口彼此通信。處理單元端口以及數(shù)據(jù)流能夠使用應用程序確定的類型系統(tǒng)加以歸類(通常是通過組合系統(tǒng)支持的基本類型而建立,基本類型的范圍從數(shù)值型例如八位整數(shù)到復雜類型例如基本類型元素的列表)。處理單元也可以使用在編譯時定義的硬編碼流連接而被顯式地連接或者可以借助本文中介紹的機制通過依賴于數(shù)據(jù)流性質(zhì)的流(例如“攜帶來自位于建筑物A內(nèi)攝像頭的監(jiān)視視頻的流”)而被動態(tài)地連接。要注意的是這些連接是動態(tài)的(也就是說在運行時根據(jù)匹配訂閱表達式的流的可用性而建立),并且因此允許中間軟件支持增量式的應用程序開發(fā)和配置。表述語言(例如SPADE語言)被用于編寫應用程序供這些中間軟件使用,正如例如在圖2中所示的那樣。這種語言提供了包括多種特點的快速應用程序開發(fā)前端。一種特點可以包括用于靈活組合并行和分布式數(shù)據(jù)流圖的語言。該語言可以由編程人員直接使用,或者可以被用于任務專用的較高等級編程工具(例如用于查詢,映射簡化流程等)和較低等級的編程接口(API)之間。表述語言的另一種特點可以包括基于支持增加通用類型流處理操作點的新工具包的可擴展性。另外,表述語言的又一種特點可以包括用于從外部來源攝取數(shù)據(jù)以及向外部使用者發(fā)布結(jié)果的大范圍邊緣適配器(例如網(wǎng)絡套接字、數(shù)據(jù)庫、 文件系統(tǒng)、自主平臺等)。編程語言也可以提供以流為中心的基于操作點的編程模型以及語法結(jié)構(gòu),由此應用程序就能夠通過本文中介紹的例如由圖2示出的機制從其他應用程序接收數(shù)據(jù)或者向其他應用程序輸出數(shù)據(jù)。以流為中心的設計意味著一種其基本構(gòu)建模塊是流的語言。換句話說,應用程序作者簡單地通過列舉流的流程并聲明用哪一個操作點生成了個體流就能夠快速地將數(shù)據(jù)流從框圖譯為描述源代碼的應用程序。基于操作點的程序設計則將焦點集中在通過推導用于輸送應用程序被設計執(zhí)行的計算所必須的可行的最小構(gòu)建模塊來設計應用程序。如本文中所述,在本發(fā)明的一個或多個實施例中,多個應用程序可以通過使用和生成跨越應用程序邊界的流來交互操作。應用程序的組合允許開發(fā)動態(tài)拓撲結(jié)構(gòu),其中不同的應用程序可以在不同的時間被配置并且它們之間的生產(chǎn)者-使用者關系可以在運行時建立。換句話說,每一次初始化新的應用程序時,數(shù)據(jù)流管理組件都會評估新應用程序是否產(chǎn)生并輸出了任何其他正在運行的應用程序可能會感興趣的流。類似地,數(shù)據(jù)流管理組件檢查已經(jīng)在運行的應用程序并驗證其中是否有任何一個產(chǎn)生并輸出了新配置的應用程序感興趣的流。一旦發(fā)現(xiàn)新的生產(chǎn)者-使用者關系,數(shù)據(jù)流管理組件就指示生產(chǎn)者連接至使用者。這些連接是暫時的,意思就是說,一旦其中一方(生產(chǎn)者或使用者)終止、訂閱被改變和/或數(shù)據(jù)源性質(zhì)被改變并且可能不再匹配訂閱,那么連接就會被自動刪除。也可以(通過精心設定的API)給操作點開發(fā)人員提供編程的方式以改變操作點的輸入端口訂閱、與流檔案相關聯(lián)的流性質(zhì)以及與操作點訂閱相關聯(lián)的評價標準。而且,通過調(diào)用特定API以實現(xiàn)這些改變所造成的變化可以在運行時隨著新的流連接的建立和/或切斷而觸發(fā)數(shù)據(jù)流拓撲結(jié)構(gòu)的修改。圖3是示出了用于實施本發(fā)明的一個或多個實施例的多組件設備的示范性結(jié)構(gòu)的示意圖。作為圖解,圖3示出了數(shù)據(jù)流管理組件302,其包括應用程序編程接口(API) 304、 檔案管理器306、訂閱表達式管理器308、觸發(fā)管理器310、數(shù)據(jù)流管理器312和數(shù)據(jù)流圖拓撲結(jié)構(gòu)表示314。API 304能夠被用于查詢、插入、刪除和/或修改與通過輸出端口、輸入端口的訂閱表達式、輸入端口的評價標準和輸入端口的訂閱函數(shù)而生成的流相關聯(lián)的流檔案。檔案管理器306用作可靠的存儲器,用于儲存與每一個數(shù)據(jù)流(或者等價地是與生成數(shù)據(jù)流的操作點的輸出端口)相關聯(lián)的質(zhì)量和數(shù)量性質(zhì)。具體地,每一個流的特征都在于包括性質(zhì)集合的唯一數(shù)據(jù)檔案。這些性質(zhì)中的每一個都具有分類的性質(zhì)名稱(例如作為單精度浮點數(shù)給出的與音頻流相關聯(lián)的平均噪聲水平)并且具有具體的數(shù)值。在處理系統(tǒng)內(nèi)的檔案管理器的一種示范性實施方式中,流性質(zhì)可以被定義為由編程語言支持的任何數(shù)據(jù)類型的保留值。流檔案的集合可以由檔案管理器以XML樹的形式內(nèi)部儲存,其中樹的節(jié)點構(gòu)成了檔案性質(zhì)。圖4中示出了檔案管理器中的流檔案和內(nèi)部內(nèi)容圖解的示例。圖4是示出了根據(jù)本發(fā)明的實施例的與由應用程序生成的流相關聯(lián)的XML-編碼檔案402在通過檔案管理器組件保存時的示范性列表。作為圖解,圖4還示出了性質(zhì)名稱 404、性質(zhì)類型406、性質(zhì)值408以及用于示范性HealthCareBargains流的基于性質(zhì)的檔案 410。訂閱表達式管理器(圖3中的組件308)是一種與檔案管理器互補的組件。訂閱表達式管理器用作可靠的存儲器,用于容納流使用者(或者等價地是用于攝取匹配其訂閱以及評價標準的數(shù)據(jù)流的輸入端口)的訂閱表達式。具體地,使用例如基于表達式的流訂閱機制的每一個輸入端口都與唯一的布爾訂閱表達式相關聯(lián)。該表達式明確了流檔案內(nèi)包含的性質(zhì)為了使其被對應的輸入端口使用所必須滿足的邏輯條件。處理系統(tǒng)(例如系統(tǒng)S) 內(nèi)的訂閱表達式管理器的一種示范性實施方式允許將任意的布爾XPATH表達式(包括流檔案性質(zhì))作為使用者的訂閱。在此情況下,每一個輸入端口都與其中包括特定表達式和評價方法的端口描述相關聯(lián),并且端口描述符的集合被儲存在數(shù)據(jù)流管理器內(nèi)。訂閱表達式管理器還提供了一種用于登記訂閱函數(shù)的方式。訂閱函數(shù)為特定的使用者提供了一種非常強大的、定制的和程序性的計算匹配的方式。換句話說,用于確定將由輸出端口生成的哪些流被路由至該使用者的邏輯就駐留在訂閱函數(shù)自身當中。這些函數(shù)可以是例如由各個訂閱者(在其初始化時)用訂閱表達式管理器登記。檔案管理器以及訂閱表達式管理器使其他組件能夠通過API對其進行編程查詢。 這些API也可以在運行時由通過編程語言(例如SPADE)定義的流處理操作點調(diào)用。在本發(fā)明的一個或多個實施例中,存在兩種用于通過建立新操作點(例如在工具包內(nèi)組織)擴展編程語言以適應特定的應用領域例如金融工程或雷達數(shù)據(jù)處理的機制。這些API也可以由應用程序編程人員通過外部程序調(diào)用以用于瀏覽系統(tǒng)內(nèi)當前配置的不同流中的檔案以及用于在應用程序開發(fā)時檢查輸入端口的訂閱表達式。具體地,API可以允許檢索例如與由操作點的輸出端口生成的特定流相關聯(lián)的檔案或者與來自通過應用程序當前在系統(tǒng)中配置的操作點的所有輸出端口相關聯(lián)的檔案。 API還可以允許檢索訂閱表達式或函數(shù)以及與特定輸入端口相關聯(lián)的可選的評價標準或者與來自通過應用程序當前在系統(tǒng)中配置的操作點的所有輸出端口相關聯(lián)的可選的評價標準。而且,API可以允許檢索匹配給定訂閱表達式的流檔案以及匹配給定流檔案的表達式。 除了查詢類型的API以外,檔案管理器和訂閱表達式管理器還可以包含用于建立、刪除和修改流檔案、各個檔案性質(zhì)、使用者訂閱表達式、訂閱函數(shù)以及訂閱評價標準的API。數(shù)據(jù)流管理器(圖3中的組件312)調(diào)用其匹配的技術(shù)用于確定哪些輸出端口必須被連接至哪些輸入端口。如果與由輸出端口生成的流相關聯(lián)的檔案性質(zhì)滿足與操作點的輸入端口相關聯(lián)的訂閱表達式(或函數(shù)),那么該流就是該輸入端口可能的匹配。除了滿足該條件以外,數(shù)據(jù)流管理器還可以針對輸出端口連接至輸入端口實施其他必要的條件。例如,由輸入端口調(diào)用的元組內(nèi)存在的屬性集合可以被規(guī)定為完全匹配由輸出端口生成的元組內(nèi)存在的屬性。換句話說,元組屬性結(jié)構(gòu)必須匹配輸入端口的計劃。而且,輸入端口可以被規(guī)定為具有足夠大的范圍和安全性特權(quán),目的是為了調(diào)用來自該輸入端口的元組。通常,在上述條件滿足之后,輸入端口就能夠與多個輸出端口匹配 (反之亦然)。本發(fā)明的一個或多個實施例包括數(shù)據(jù)流管理器在處理系統(tǒng)內(nèi)利用具有功能性支持的庫來針對流檔案估算基于XPATH的使用者訂閱。本文中介紹的基本表達式估算能力可以如下詳細介紹的那樣被數(shù)據(jù)流管理器擴展。例如,數(shù)據(jù)流管理器可以調(diào)用語法引擎和本體(ontology),目的是為了增強其表達式估算和匹配的功能性。作為示例,考慮輸入端口的訂閱表達式尋找其“原產(chǎn)地”性質(zhì)的值為“紐約”的所有流。如果存在其檔案包含被稱為“出處”的值為“Westchester”的性質(zhì)的流,那么語法引擎在本體管理框架的幫助下將會自動確定該流實際上就是針對該使用者的匹配, 原因在于Westchester鎮(zhèn)和紐約州之間能夠推出的本體關系。另外,數(shù)據(jù)流管理器還能夠調(diào)用評價引擎,其僅選擇匹配訂閱表達式的流的子集, 并僅將該子集連接至使用者。評價引擎可以提供各種類型的評價機制例如評價可以針對某些檔案性質(zhì)的取值進行(例如,如果流的“質(zhì)量”是一種這樣的性質(zhì))。評價機制也可以被提供一個任意的優(yōu)化目標以用于選擇流的子集以及針對所選擇流的速率、數(shù)量以及其他相關量的約束;各個使用者也可以提供任意的評價函數(shù),評價函數(shù)可以用數(shù)據(jù)流管理器登記并且在無論何時需要評價與該使用者相匹配的流時加以應用。而且,數(shù)據(jù)流管理器也可以調(diào)用由各個使用者提供的用戶定義的訂閱函數(shù),目的是為了向這些使用者提供任意的、定制的并且更加完善的匹配能力。除了提供上述的匹配和評價功能以外,數(shù)據(jù)流管理器還可以用作可靠的存儲器, 以用于與動態(tài)應用程序組合相關聯(lián)的不同的數(shù)據(jù)對象。這可以包括例如包含有其訂閱表達式或訂閱函數(shù)的輸入端口描述符的集合。另外,輸出端口和輸入端口之間存在的現(xiàn)有連接集合也可以出于可靠性和查詢效率的原因而被儲存為數(shù)據(jù)流管理器的一部分。觸發(fā)管理器(圖3中的組件310)負責用于在任何需要重新計算輸出和輸入端口之間的連接時調(diào)用數(shù)據(jù)流管理器內(nèi)的匹配和評價技術(shù)以及用于在任何要在處理系統(tǒng)上配置新的應用程序(及其操作點的輸出和輸入端口)或者要刪除或修改現(xiàn)有的應用程序(及其操作點的輸出和輸入端口)時更新檔案管理器和訂閱表達式管理器。本發(fā)明的一個或多個實施例中不同組件之間涉及的交互(或API的調(diào)用順序)可以包括如下所述的內(nèi)容可以包括新應用程序(例如系統(tǒng)S的應用程序)的初始化。注意這樣的應用程序由處理單元(PE)的集合構(gòu)成,每一個處理單元都包含攝取流的輸入端口集合以及生成輸出流的輸出端口集合。在將新應用程序提交至系統(tǒng)運行時間用于初始化時 (例如圖5所示),系統(tǒng)運行時間就調(diào)用觸發(fā)管理器API用于應用程序登記,將應用程序內(nèi)包含的PE列表以及每一個PE的輸入和輸出端口的描述符集合作為參數(shù)傳遞。對于應用程序內(nèi)包含的每一個輸出端口,觸發(fā)管理器依次調(diào)用檔案管理器API以建立新的流檔案(并確保用將要被初始化的應用程序中的新流的性質(zhì)正確填充檔案管理器)。類似地,對于應用程序內(nèi)的每一個輸入端口,觸發(fā)管理器調(diào)用訂閱表達式管理器API 以建立新的輸入端口描述符,其也包含有訂閱表達式或者指向與該輸入端口相關聯(lián)的訂閱函數(shù)的指針。而且,觸發(fā)管理器調(diào)用數(shù)據(jù)流管理器內(nèi)的匹配技術(shù),其針對包括屬于將要被初始化的應用程序中的操作點的新輸入端口在內(nèi)的所有輸入端口重新計算可能匹配的流的集合。這可以在調(diào)用評價技術(shù)之后進行,從而確定用于每一個輸入端口的匹配流的最終集合。另外,數(shù)據(jù)流管理器可以發(fā)起對路由組件的調(diào)用,目的是為了物理地建立起已經(jīng)通過上述過程計算出的連接,并且去除在上述過程之后已經(jīng)不再是有效匹配的物理連接。如上所述,圖5是示出了根據(jù)本發(fā)明的實施例的在建立新的生產(chǎn)者和/或使用者的流連接時新應用程序的配置如何在流程圖中觸發(fā)修改的流程圖。步驟502包括通過數(shù)據(jù)流管理器向處理平臺(例如系統(tǒng)幻的運行時間提交新應用程序。步驟504包括觸發(fā)管理器接納包括在處理單元(PE)內(nèi)分組的操作點集合的應用程序。另外,觸發(fā)管理器能夠執(zhí)行以下操作。作為示例,對于每一個輸出端口,用關于應用程序內(nèi)每一個輸出流性質(zhì)的信息填充檔案管理器。而且,對于每一個輸入端口,用關于每一個訂閱表達式和/或函數(shù)以及評價標準的信息填充訂閱表達式管理器。步驟506包括觸發(fā)管理器調(diào)用匹配技術(shù)。觸發(fā)管理器可以進一步執(zhí)行以下操作。 對于新應用程序的每一個輸入端口,可以找到匹配訂閱表達式和/或函數(shù)的流。而且,觸發(fā)管理器應用評價標準并挑選出列表以包括最大數(shù)量的滿足由評價標準施加的約束的流。而且,對于每一個屬于其他應用程序的輸入端口,觸發(fā)管理器可以參照新應用程序的評價標準評估新應用程序的輸出流是否匹配其他應用程序的訂閱表達式和/或函數(shù)。步驟508包括更新數(shù)據(jù)流管理器的內(nèi)部拓撲數(shù)據(jù)流圖。另外,步驟510包括數(shù)據(jù)流管理器向要互聯(lián)的應用程序發(fā)出路由通知,在生產(chǎn)者和使用者之間建立物理路由。本發(fā)明的一個或多個實施例還包括在通過對數(shù)據(jù)流管理器的請求而終止現(xiàn)有的應用程序時在本文中所述的不同組件之間涉及的步驟或API調(diào)用順序(例如圖6所示)。 系統(tǒng)運行時間可以調(diào)用觸發(fā)管理器API用于應用程序登記,將要終止的應用程序作為參數(shù)傳遞。對于要終止的應用程序內(nèi)的操作點的每一個輸出端口,觸發(fā)管理器發(fā)出API請求以用于從檔案管理器中刪除對應的流檔案,并從這些輸出端口中通知流的使用者關于生產(chǎn)者即將終止的信息。對于要終止的應用程序內(nèi)的操作點的每一個輸入端口,訂閱管理器發(fā)出 API請求以用于移除對應的訂閱表達式(或函數(shù)),并且通知它們的生產(chǎn)者關于使用者即將
14終止的信息。而且,數(shù)據(jù)流管理器可以通過移除將要被移除的連接來更新其內(nèi)部的數(shù)據(jù)流圖拓撲結(jié)構(gòu)。另外,對于在上述過程中已經(jīng)失去一個或多個生產(chǎn)者的每一個剩余的使用者來說, 數(shù)據(jù)流管理器會重新應用評價技術(shù)以確保為該使用者選擇最優(yōu)的流集合。如上所述,圖6是示出了根據(jù)本發(fā)明的實施例的在切斷新的生產(chǎn)者和/或使用者的流連接時新應用程序的終止如何在流程圖中觸發(fā)修改的流程圖。步驟602包括通過請求數(shù)據(jù)流管理器查詢要終止的應用程序。步驟604包括觸發(fā)管理器執(zhí)行輸出端口和輸入端口的操作。例如,對于要終止的應用程序內(nèi)的操作點的每一個輸出端口,清理檔案管理器并由數(shù)據(jù)流管理器通知使用者關于生產(chǎn)者即將終止的信息。對于要終止的應用程序內(nèi)的操作點的每一個輸入端口,清理訂閱表達式管理器并由數(shù)據(jù)流管理器通知生產(chǎn)者關于使用者即將終止的信息。另外,對于剩余操作點的每一個輸入端口,如果輸入端口的生產(chǎn)者集合內(nèi)有改變,那么數(shù)據(jù)流管理器就會重新應用評價技術(shù),目的是為該輸入端口重新計算正確的流集
I=I O進而,步驟606包括通過移除生產(chǎn)者和/或使用者的連接來更新數(shù)據(jù)流管理器內(nèi)部的拓撲數(shù)據(jù)流圖。本發(fā)明的一個或多個實施例還包括在通過生成流的操作點、其他操作點或者通過管理平臺在外部修改流檔案時(也就是在流檔案中添加、刪除或者修改性質(zhì)),在本文中所述的不同組件之間涉及的步驟或API調(diào)用的順序(例如圖7所示)。數(shù)據(jù)流管理器用其檔案要被修改的特定輸出端口的標識符(ID)來調(diào)用觸發(fā)管理器。觸發(fā)管理器調(diào)用檔案管理器并確保實現(xiàn)對流檔案的適當修改。而且,觸發(fā)管理器在所有的使用者集合上都調(diào)用匹配技術(shù)以檢查被修改的流是不是使用者可能的匹配,并且對先前(檔案被修改之前)訂閱該流或者現(xiàn)在(重新應用匹配技術(shù)之后)訂閱該流的使用者重新應用評價函數(shù)。而且,數(shù)據(jù)流管理器可對其內(nèi)部的數(shù)據(jù)流圖拓撲結(jié)構(gòu)進行必要的更新。數(shù)據(jù)流管理器能夠另外向要互聯(lián)的應用程序發(fā)出路由通知,在必要時建立或移除生產(chǎn)者和相關使用者之間的物理路由。如上所述,圖7是示出了根據(jù)本發(fā)明的實施例的在建立和/或切斷新的生產(chǎn)者和 /或使用者的流連接時描述流的相關性質(zhì)的流檔案的修改如何在流程圖中觸發(fā)修改的流程圖。步驟702包括通過應用程序編程接口(API)(例如用生成流的操作點、其他操作點或者用管理控制臺外部地)調(diào)用數(shù)據(jù)流管理器來修改流檔案(例如新性質(zhì)、性質(zhì)刪除或性質(zhì)更新)。步驟704包括觸發(fā)管理器調(diào)用匹配技術(shù)并執(zhí)行評估操作。作為示例,對于屬于其他應用程序的每一個輸入端口,觸發(fā)管理器評估其檔案被改變的輸出流相對于它們的評價標準現(xiàn)在是否與其訂閱表達式和/或函數(shù)相匹配。步驟706包括更新數(shù)據(jù)流管理器內(nèi)部的拓撲數(shù)據(jù)流圖。另外,步驟708包括數(shù)據(jù)流管理器向要互聯(lián)的應用程序發(fā)出路由通知信息,必要時在該生產(chǎn)者以及新發(fā)現(xiàn)和/或移除的使用者之間建立和/或移除物理路由。另外,本發(fā)明的一個或多個實施例還包括在通過API由擁有輸入端口的操作點調(diào)用數(shù)據(jù)流管理器來修改訂閱表達式時在本文中所述的不同組件之間涉及的步驟或API調(diào)用的順序(例如圖8所示)。數(shù)據(jù)流管理器用其訂閱表達式正在被修改的特定輸入端口的 ID來調(diào)用觸發(fā)管理器。觸發(fā)管理器調(diào)用訂閱表達式管理器并確保實現(xiàn)對訂閱表達式的適當修改。而且,觸發(fā)管理器對該使用者調(diào)用匹配技術(shù)以找到匹配該使用者的所有流集合, 并且應用評價技術(shù)以選擇流中滿足由使用者施加的評價約束的優(yōu)化子集。另外,數(shù)據(jù)流管理器能夠?qū)ζ鋬?nèi)部的數(shù)據(jù)流圖拓撲結(jié)構(gòu)進行必要的更新。數(shù)據(jù)流管理器還能夠向要互聯(lián)的應用程序發(fā)出路由通知,建立或移除相關生產(chǎn)者和使用者之間的物理路由。如上所述,圖8是示出了根據(jù)本發(fā)明的實施例的在建立和/或切斷新的生產(chǎn)者和 /或使用者的流連接時與組件輸入端口相關聯(lián)的訂閱表達式的修改如何在流程圖中觸發(fā)修改的流程圖。步驟802包括通過應用程序編程接口(API)通過擁有輸入端口的操作點調(diào)用數(shù)據(jù)流管理器修改流的訂閱表達式(Page 23)。步驟804包括觸發(fā)管理器調(diào)用訂閱表達式管理器以在訂閱表達式中做出適當?shù)母淖儭2襟E806包括觸發(fā)管理器調(diào)用匹配技術(shù)并執(zhí)行流操作。作為示例,觸發(fā)管理器能夠找到與新的訂閱表達式相匹配的流。另外,觸發(fā)管理器能夠應用評價標準并選出列表以包含流中滿足由評價標準施加的約束的優(yōu)化子集。步驟808包括更新數(shù)據(jù)流管理器內(nèi)部的拓撲數(shù)據(jù)流圖。另外,步驟810包括數(shù)據(jù)流管理器向要互聯(lián)的應用程序發(fā)出路由通知,在新發(fā)現(xiàn)和/或移除的生產(chǎn)者以及該使用者之間建立和/或移除物理路由。本發(fā)明的一個或多個實施例還可以包括在通過API調(diào)用數(shù)據(jù)流管理器由擁有輸入端口的操作點修改訂閱表達式時,在本文中所述的不同組件之間涉及的步驟或API調(diào)用順序(例如圖9所示)。數(shù)據(jù)流管理器用其訂閱表達式正在被修改的特定輸入端口的標識符來調(diào)用觸發(fā)管理器。觸發(fā)管理器調(diào)用訂閱表達式管理器并確保登記新的訂閱函數(shù)。而且,觸發(fā)管理器對該使用者調(diào)用匹配技術(shù)以找到匹配該使用者的所有流集合, 并且應用評價技術(shù)以選擇流中滿足由使用者施加的評價約束的優(yōu)化子集。另外,數(shù)據(jù)流管理器能夠?qū)ζ鋬?nèi)部的數(shù)據(jù)流圖拓撲結(jié)構(gòu)進行必要的更新。數(shù)據(jù)流管理器還能夠向要互聯(lián)的應用程序發(fā)出路由通知,建立或移除相關生產(chǎn)者和使用者之間的物理路由。圖9是示出了根據(jù)本發(fā)明的實施例的在建立和/或切斷新的生產(chǎn)者和/或使用者的流連接時與組件輸入端口相關聯(lián)的訂閱函數(shù)的修改如何在流程圖中觸發(fā)修改的流程圖。 步驟902包括通過API調(diào)用數(shù)據(jù)流管理器由擁有輸入端口的操作點修改流的訂閱函數(shù)。步驟904包括觸發(fā)管理器調(diào)用匹配技術(shù)并執(zhí)行流操作。例如,觸發(fā)管理器能夠找到與新的訂閱函數(shù)相匹配的流,并且能夠應用評價標準并選出列表以包含最大數(shù)量的滿足由評價標準所施加約束的流。步驟906包括更新數(shù)據(jù)流管理器內(nèi)部的拓撲數(shù)據(jù)流圖。另外,步驟908包括數(shù)據(jù)流管理器向要互聯(lián)的應用程序發(fā)出路由通知,在新發(fā)現(xiàn)和/或移除的生產(chǎn)者以及該使用者之間建立和/或移除物理路由。本發(fā)明的一個或多個實施例能夠另外包括在通過API調(diào)用數(shù)據(jù)流管理器由擁有輸入端口的操作點修改評價標準時,在本文中所述的不同組件之間涉及的步驟或API調(diào)用順序(例如圖10所示)。數(shù)據(jù)流管理器應用新的評價標準以選擇流中滿足由該評價標準施加的約束的優(yōu)化子集。而且,數(shù)據(jù)流管理器能夠?qū)ζ鋬?nèi)部的數(shù)據(jù)流圖拓撲結(jié)構(gòu)進行必要的更新,并且向要互聯(lián)的應用程序發(fā)出路由通知,建立或移除相關生產(chǎn)者和使用者之間的物理路由。
如上所述,圖10是示出了根據(jù)本發(fā)明的實施例的在建立和/或切斷新的生產(chǎn)者和 /或使用者的流連接時與組件輸入端口相關聯(lián)的訂閱評價標準的修改如何在流程圖中觸發(fā)修改的流程圖。步驟1002包括通過API調(diào)用數(shù)據(jù)流管理器由擁有輸入端口的操作點修改流的訂閱評價標準。步驟1004包括數(shù)據(jù)流管理器應用新的評價標準以選出流中滿足由評價標準所施加約束的優(yōu)化集合。步驟1006包括更新數(shù)據(jù)流管理器內(nèi)部的拓撲數(shù)據(jù)流圖。另外,步驟1008包括數(shù)據(jù)流管理器向要互聯(lián)的應用程序發(fā)出路由通知,在新發(fā)現(xiàn)和/或移除的生產(chǎn)者以及該使用者之間建立和/或移除物理路由。圖11是示出了根據(jù)本發(fā)明的實施例的用于在基于組件的數(shù)據(jù)流處理應用程序中動態(tài)修改多個組件之間互聯(lián)的技術(shù)流程圖。該應用程序可以包括分布式應用程序(也就是在不同的計算機上運行不同的片段)以及由不同組件構(gòu)成的應用程序(也就是多個組件的分布項目)。步驟1102包括針對要在一個或多個處理器上執(zhí)行的軟件應用程序內(nèi)的多個輸出端口中的每一個輸出端口接收數(shù)據(jù)生產(chǎn)者檔案,其中應用程序包括多個組件,每一個組件都包括生成數(shù)據(jù)流的輸出端口和使用數(shù)據(jù)流的輸入端口,并且其中每一份數(shù)據(jù)生產(chǎn)者檔案都描述了由對應輸出端口生成的數(shù)據(jù)特征。該步驟例如可以使用本文介紹的不同軟件組件中的一個或多個實現(xiàn)。針對軟件應用程序內(nèi)的多個輸出端口中的每一個輸出端口接收數(shù)據(jù)生產(chǎn)者檔案可以包括這些檔案在應用程序開發(fā)時的規(guī)范(例如在SPADE編程語言中使用的結(jié)構(gòu)),或者通過運行時API的使用規(guī)范。而且,由輸出端口生成的數(shù)據(jù)特征可以包括例如形式為檔案的特征,其應用于由數(shù)據(jù)源攜帶的所有數(shù)據(jù)(例如流處理系統(tǒng)內(nèi)的流)。步驟1104包括針對應用程序多個組件的一個或多個輸入端口中的每一個輸入端口接收數(shù)據(jù)訂閱檔案,其中每一份數(shù)據(jù)訂閱檔案都描述了由輸入端口使用的數(shù)據(jù)特征。該步驟例如可以使用本文介紹的不同軟件組件中的一個或多個實現(xiàn)。針對應用程序多個組件的一個或多個輸入端口中的每一個輸入端口接收數(shù)據(jù)訂閱檔案可以包括在應用程序開發(fā)期間的訂閱表達式規(guī)范(例如在SPADE語言中使用XPATH訂閱機制),或者通過使用運行時 API的規(guī)范。而且,由輸入端口使用的數(shù)據(jù)的特征可以包括例如根據(jù)一個或多個數(shù)據(jù)源檔案性質(zhì)定義的表述訂閱表達式、過程性訂閱技術(shù)和/或邏輯謂語(例如每個使用者一個)。步驟1106包括根據(jù)接收的數(shù)據(jù)生產(chǎn)者檔案和接收的數(shù)據(jù)訂閱檔案的比較,在應用程序內(nèi)多個組件的輸出端口和輸入端口之間建立一個或多個連接。該步驟例如可以使用本文介紹的不同軟件組件中的一個或多個實現(xiàn)。本發(fā)明的一個或多個實施例還包括使用 API以允許查詢和更新檔案,允許動態(tài)物理重構(gòu)應用程序間的互聯(lián)。步驟1108包括在一個或多個處理器上執(zhí)行數(shù)據(jù)流處理應用程序以處理一個或多個數(shù)據(jù)流。該步驟例如可以使用本文介紹的不同軟件組件中的一個或多個實現(xiàn)。處理一個或多個數(shù)據(jù)流可以包括在系統(tǒng)中不同的處理節(jié)點處配置處理單元并運行它們。步驟1110包括在執(zhí)行應用程序期間接收新的數(shù)據(jù)生產(chǎn)者檔案或新的數(shù)據(jù)訂閱檔案之一或兩者都接收。該步驟例如可以使用本文介紹的不同軟件組件中的一個或多個實現(xiàn)。步驟1112包括根據(jù)接收的包括一個或多個新數(shù)據(jù)檔案的數(shù)據(jù)檔案的修正比較, 在輸出端口和輸入端口之間建立至少一個新連接。該步驟例如可以使用本文介紹的不同軟件組件中的一個或多個實現(xiàn)。在輸出端口和輸入端口之間建立新連接可以包括使用編程語言結(jié)構(gòu)以及運行時的應用程序編程接口以分別在應用程序配置時間和運行時間建立每一個生產(chǎn)者和使用者之間的動態(tài)數(shù)據(jù)連接。而且,在輸出端口和輸入端口之間建立新連接可以另外包括根據(jù)一個或多個數(shù)據(jù)生產(chǎn)者檔案特征以及一個或多個數(shù)據(jù)訂閱檔案特征之間的匹配所確定的,將應用程序內(nèi)的輸出端口以及外部數(shù)據(jù)源動態(tài)互聯(lián)至應用程序內(nèi)的輸入端口。本發(fā)明的一個或多個實施例可以包括在運行時操作數(shù)據(jù)生產(chǎn)者檔案和數(shù)據(jù)訂閱檔案(包括例如建立、刪除和修改檔案性質(zhì))。在運行時操作數(shù)據(jù)生產(chǎn)者檔案例如可以包括根據(jù)由每一個輸出端口生成的每一個數(shù)據(jù)項的值動態(tài)地操作數(shù)據(jù)生產(chǎn)者檔案性質(zhì)(例如建立、刪除和/或修改),根據(jù)每一個輸出端口生成的每一個數(shù)據(jù)項的容量動態(tài)地操作數(shù)據(jù)生產(chǎn)者檔案性質(zhì)(例如建立、刪除和 /或修改);以及查詢檔案管理器(其可以包括例如評價和篩選機制)。在運行時操作數(shù)據(jù)訂閱檔案可以包括例如修改流訂閱表達式,并且修改訂閱函數(shù)。而且,在輸出端口和輸入端口之間建立連接可以進一步包括在數(shù)據(jù)流模塊中儲存計算的路由,并且在數(shù)據(jù)檔案和/或數(shù)據(jù)訂閱每一次發(fā)生改變時都更新儲存在數(shù)據(jù)流模塊中的信息。圖11示出的技術(shù)還可以包括在應用程序運行期間接收對現(xiàn)有數(shù)據(jù)檔案和/或現(xiàn)有訂閱表達式的修改。而且,在本發(fā)明的一個或多個實施例中,訂閱機制可以由以下步驟之一或其組合實現(xiàn)??梢酝ㄟ^將表述訂閱表達式應用于流的具有性質(zhì)集合并評估性質(zhì)是否滿足謂語來計算匹配。而且,還可以通過應用訂閱函數(shù)來計算匹配,所述訂閱函數(shù)能夠過程性地查詢檔案管理器和實現(xiàn)額外的計算例如評價、篩選等并且返回表明哪些流滿足函數(shù)的布爾結(jié)果。本發(fā)明的一個或多個實施例可以另外包括動態(tài)地改變使用者訂閱(例如在訂閱者不再對原始數(shù)據(jù)感興趣時或者訂閱者的興趣已經(jīng)轉(zhuǎn)移到其他方面時),以及動態(tài)地改變由輸出端口生成的輸出數(shù)據(jù)特征的輸出說明(也就是流檔案)。而且,圖11中示出的技術(shù)可以包括建立和修改由數(shù)據(jù)使用者采用的用于約束要被連接至使用者的數(shù)據(jù)源集合的評價標準(例如,其中訂閱者可以根據(jù)某些預定標準來評價源)。而且,本發(fā)明的一個或多個實施例可以包括使用觸發(fā)機制來動態(tài)地計算流匹配。 計算流匹配可以包括登記每一個訂閱表達式和每一個訂閱函數(shù),根據(jù)關于新登記的流的每一個訂閱表達式和/或每一個訂閱函數(shù)來評估觸發(fā)條件;根據(jù)流性質(zhì)的改變來評估觸發(fā)條件,以及根據(jù)訂閱表達式和/或每一個訂閱函數(shù)中的改變來評估觸發(fā)條件。圖11中示出的技術(shù)也可以如本文中所述在系統(tǒng)上運行,其中該系統(tǒng)包括不同的軟件組件和/或模塊,不同的軟件組件中的每一種都可以在實體的計算機可讀取可記錄存儲介質(zhì)上實體化。不同的軟件組件可以包括在硬件處理器上運行的應用程序編程接口組件、檔案管理器組件、訂閱表達式管理器組件、觸發(fā)管理器組件和數(shù)據(jù)流組件。另外,圖11中示出的技術(shù)可以通過計算機程序產(chǎn)品實現(xiàn),其包括儲存在數(shù)據(jù)處理系統(tǒng)內(nèi)計算機可讀取存儲介質(zhì)中的計算機可用程序代碼,并且其中計算機可用程序代碼可以用網(wǎng)絡從遠程數(shù)據(jù)處理系統(tǒng)下載。而且,在本發(fā)明的一個或多個實施例中,計算機程序產(chǎn)品可以包括儲存在服務器數(shù)據(jù)處理系統(tǒng)內(nèi)的計算機可讀取存儲介質(zhì)中的計算機可用程序代碼,并且其中計算機可用程序代碼可以在網(wǎng)絡上下載到遠程數(shù)據(jù)處理系統(tǒng)中以使用遠程系統(tǒng)在計算機可讀取存儲介質(zhì)中使用。使用專用硬件、通用處理器、固件、軟件或其組合的各種技術(shù)可以應用于實現(xiàn)本發(fā)明或其組件。本發(fā)明的一個或多個實施例或其要素可以用計算機產(chǎn)品的形式實施,包括用于實現(xiàn)上述方法步驟的具有計算機可用程序代碼的計算機可用介質(zhì)。而且,本發(fā)明的一個或多個實施例或其要素可以用包括存儲器和至少一個處理器的裝置的形式實施,至少一個處理器被耦合至存儲器并且可操作用于執(zhí)行示范性的方法步驟。一個或多個實施例可以使用在通用計算機或工作站上運行的軟件。參照圖12,這樣的實施方式可以采用例如處理器1202、存儲器1204、例如由顯示器1206和鍵盤1208構(gòu)成的輸入/輸出接口。本文中所用的術(shù)語“處理器”應被理解為包括任意的處理設備例如包括CPU(中央處理器)和/或其他形式處理電路的處理設備。而且,術(shù)語“處理器”可以表示多于一個的獨立處理器。術(shù)語“存儲器”應被理解為包括與處理器或CPU相關聯(lián)的存儲器,例如RAM(隨機存取存儲器)、R0M(只讀存儲器)、固定存儲設備(例如硬盤)、可移除存儲設備(例如磁盤)、閃存等。另外,本文中所用的短語“輸入/輸出接口”應被理解為包括例如用于向處理單元輸入數(shù)據(jù)的一種或多種機制(例如鼠標),以及用于提供與處理單元相關結(jié)果的一種或多種機制(例如打印機)。處理器1202、存儲器1204以及輸入/輸出接口例如顯示器1206和鍵盤1208可以通過例如作為數(shù)據(jù)處理單元1212 —部分的總線1210 互聯(lián)。例如通過總線1210的適當互聯(lián)也可以被設置用于網(wǎng)絡接口 1214,例如能夠被設置用于連接計算機網(wǎng)絡的網(wǎng)卡,以及介質(zhì)接口 1216,例如能夠被設置用于連接介質(zhì)1218的磁盤或CD-ROM驅(qū)動器。因此,如本文中所述包括用于實現(xiàn)本發(fā)明方法的指令或代碼的計算機軟件可以被儲存在一個或多個相關聯(lián)的存儲設備(例如ROM、固定或可移除存儲器)中,并且在準備要使用時部分或整體載入(例如載入到RAM內(nèi))并由CPU執(zhí)行。這樣的軟件可以包括但不限于固件、常駐軟件、微代碼等。而且,本發(fā)明可以采用能從計算機可用或計算機可讀取介質(zhì)(例如介質(zhì)1218)存取的計算機程序產(chǎn)品的形式,提供程序代碼用于由計算機或任意指令執(zhí)行系統(tǒng)使用或與之結(jié)合使用。對于本說明書而言,計算機可用或計算機可讀取介質(zhì)可以是用于由指令執(zhí)行系統(tǒng)、裝置或設備使用或與之結(jié)合使用的任何裝置。介質(zhì)可以儲存程序代碼以執(zhí)行本文中闡述的一個或多個方法步驟。介質(zhì)可以是電、磁、光、電磁、紅外或半導體系統(tǒng)(或裝置或設備)或傳播介質(zhì)。實體計算機可讀取存儲介質(zhì)的示例包括半導體或固態(tài)存儲器(例如存儲器1204)、磁帶、可移除計算機磁盤(例如介質(zhì)1218)、隨機存取存儲器(RAM)、只讀存儲器(ROM)、剛性磁盤和光盤(但是傳播介質(zhì)除外)。光盤的現(xiàn)有示例包括高密度磁盤-只讀存儲器(CD-ROM)、高密度磁盤-讀/寫(CD-R/W)和DVD。適用于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)可以包括通過系統(tǒng)總線1210直接或間接地連接至存儲元件1204的至少一個處理器1202。存儲器元件可以包括在實際執(zhí)行程序代碼期間使用的局部存儲器、大容量存儲器以及為了在執(zhí)行期間減少必須從大容量存儲器中獲取的時間碼數(shù)量而提供至少部分程序代碼臨時儲存的高速緩沖存儲器。輸入/輸出或I/O設備(包括但不限于鍵盤1208、顯示器1206、點擊設備等)可以被直接連接(例如通過總線1210)至系統(tǒng)或者通過中介I/O控制器(為了清楚而省略) 連接至系統(tǒng)。網(wǎng)絡適配器例如網(wǎng)絡接口 1214也可以被連接至系統(tǒng)以使數(shù)據(jù)處理系統(tǒng)能夠中介的私有或公用網(wǎng)絡被連接至其他的數(shù)據(jù)處理系統(tǒng)或遠程打印機。調(diào)制解調(diào)器、線纜調(diào)制解調(diào)器和以太網(wǎng)卡僅僅是現(xiàn)有可用類型的網(wǎng)絡適配器中的幾種。如本文包括權(quán)利要求中所用,“服務器”包括運行服務器程序的物理數(shù)據(jù)處理系統(tǒng) (例如圖12中所示的系統(tǒng)1212)。應該理解這樣的物理服務器可以包括也可以不包括顯示器和鍵盤。用于實現(xiàn)本發(fā)明操作的計算機程序帶脈可以用一種或多種編程語言的任意組合編寫,包括面向?qū)ο蟮木幊陶Z言例如Java、Smalltalk, C++等以及成規(guī)的過程編程語言例如“C”編程語言或類似的編程語言。這些程序代碼可以完全在用戶的計算機上運行、部分在用戶的計算機上并且部分在遠程計算機上運行或者完全在遠程計算機或服務器上運行。 在后面的情況下,遠程計算機可以通過任意類型的網(wǎng)絡連接至用戶的計算機,包括局域網(wǎng) (LAN)或廣域網(wǎng)(WAN),或者連接也可以對外部計算機進行(例如通過使用了互聯(lián)網(wǎng)服務提供商的互聯(lián)網(wǎng))。已經(jīng)參照方法流程圖和/或框圖、裝置(系統(tǒng))和計算機程序產(chǎn)品在本文中介紹了本發(fā)明的實施例。應該理解流程圖和/或框圖中的每一個模塊以及流程圖和/或框圖中的模塊組合均可通過計算機程序指令實現(xiàn)。這些計算機程序指令可以被提供給通用計算機、專用計算機或用于生成機械的其他可編程數(shù)據(jù)處理裝置的處理器以使得通過計算機或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令建立起用于實現(xiàn)流程圖和/或框圖的一個或多個模塊中明確的功能/動作的方式。這些計算機程序指令也可以被儲存在能夠引導計算機或其他可編程數(shù)據(jù)處理裝置以特定方式工作的實體計算機可讀取介質(zhì)中,以使得儲存在計算機可讀取介質(zhì)中的指令生成包括指令方式的加工主題,實現(xiàn)流程圖和/或框圖的一個或多個模塊中明確的功能/ 動作。計算機程序指令還可以被載入計算機或其他可編程數(shù)據(jù)處理裝置以使一系列的操作步驟得以在計算機或其他可編程數(shù)據(jù)處理裝置上執(zhí)行,從而形成計算機實現(xiàn)過程,以使計算機或其他可編程數(shù)據(jù)處理裝置上執(zhí)行的指令提供用于實現(xiàn)流程圖和/或框圖的一個或多個模塊中明確的功能/動作的過程。附圖中的流程圖和框圖根據(jù)本發(fā)明的不同實施例示出了系統(tǒng)、方法和計算機程序產(chǎn)品的可行實施方式的結(jié)構(gòu)、功能和操作。在此,流程圖或框圖中的每一個模塊都可以表示組件、程序塊、程序段或一部分代碼,其包括用于實現(xiàn)一個或多個特定邏輯函數(shù)的一條或多條可執(zhí)行指令。還應該注意的是,在某些可選的實施方式中,模塊中注明的函數(shù)可以不以附圖中所示的順序進行。例如,依次示出的兩個模塊實際上可以基本上同時執(zhí)行,或者模塊有時根據(jù)涉及的功能還可以按相反的順序執(zhí)行。還應該注意的是框圖和/或流程圖中的每一個模塊以及框圖和/或流程圖中的模塊組合可以由實現(xiàn)特定功能或動作的基于硬件的專用系統(tǒng)實現(xiàn),或者由專用硬件和計算機指令的組合實現(xiàn)。而且,應該注意到的是本文中介紹的任何方法都可以包括提供一種包括不同軟件組件的系統(tǒng)的附加步驟,軟件組件在實體的計算機可讀取存儲介質(zhì)上實現(xiàn);組件可以包括圖3中示出的任意或全部組件。隨后方法步驟就可以如上所述利用在硬件處理器上運行的系統(tǒng)中不同的軟件組件和/或子組件來實現(xiàn)。而且,計算機程序產(chǎn)品可以包括實體的計算機可讀取存儲介質(zhì)以及適用于執(zhí)行以實現(xiàn)本文中所述的一個或多個方法步驟的代碼,包括為系統(tǒng)提供不同的軟件組件。在任何情況下,都應該理解本文中介紹的組件可以用各種形式的硬件、軟件或其組合實施,例如應用程序?qū)S眉呻娐?ASICS)、功能電路、一臺或多臺適當編程的具有相關存儲器的通用數(shù)字計算機等。根據(jù)本文中提供的本發(fā)明的教導,相關領域的普通技術(shù)人員將能夠設想出本發(fā)明中組件的其他實施方式。本發(fā)明的至少一個實施例可以提供一種或多種有利效果例如以生產(chǎn)者的間隔描述由應用程序生成的數(shù)據(jù)特征。應該意識到并且應該理解本發(fā)明上述的示范性實施例可以用多種不同的方式實現(xiàn)。根據(jù)本文中提供的本發(fā)明的教導,本領域技術(shù)人員就能夠設想出本發(fā)明其他的實施方式。實際上,盡管已經(jīng)在本文中參照附圖介紹了本發(fā)明的說明性實施例,但是應該理解本發(fā)明并不局限于這些明確的實施例,并且可以由本領域技術(shù)人員進行各種其他的修改和變形而并不背離本發(fā)明的保護范圍或?qū)嵸|(zhì)。
權(quán)利要求
1.一種用于在基于組件的數(shù)據(jù)流處理應用程序中動態(tài)修改多個組件之間互聯(lián)的系統(tǒng), 包括處理器;耦合至處理器的存儲器;儲存在存儲器上的檔案管理器模塊,針對要在一個或多個處理器上執(zhí)行的軟件應用程序內(nèi)的多個輸出端口中的每一個輸出端口接收數(shù)據(jù)生產(chǎn)者檔案,其中應用程序包括多個組件,每一個組件都包括生成數(shù)據(jù)流的輸出端口和使用數(shù)據(jù)流的輸入端口,并且其中每一份數(shù)據(jù)生產(chǎn)者檔案都描述了由對應輸出端口生成的數(shù)據(jù)的特征;儲存在存儲器上的訂閱表達式管理器模塊,針對應用程序的多個組件的一個或多個輸入端口中的每一個輸入端口接收數(shù)據(jù)訂閱檔案,其中每一份數(shù)據(jù)訂閱檔案都描述了由對應輸入端口使用的數(shù)據(jù)的特征;儲存在存儲器上的數(shù)據(jù)流模塊,根據(jù)每一份數(shù)據(jù)生產(chǎn)者檔案和每一份數(shù)據(jù)訂閱檔案的比較,在應用程序內(nèi)的多個組件的輸出端口和輸入端口之間建立一個或多個連接。
2.如權(quán)利要求1所述的系統(tǒng),其中處理器操作用于執(zhí)行數(shù)據(jù)流處理應用程序以處理一個或多個數(shù)據(jù)流,檔案管理器模塊進一步操作用于在執(zhí)行數(shù)據(jù)流處理應用程序期間接收新的數(shù)據(jù)生產(chǎn)者檔案,并且數(shù)據(jù)流模塊進一步操作用于根據(jù)接收的包括新數(shù)據(jù)生產(chǎn)者檔案的數(shù)據(jù)檔案的修正比較,在輸出端口和輸入端口之間建立至少一個新連接。
3.如權(quán)利要求1所述的系統(tǒng),其中處理器操作用于執(zhí)行數(shù)據(jù)流處理應用程序以處理一個或多個數(shù)據(jù)流,訂閱表達式管理器模塊進一步操作用于在執(zhí)行數(shù)據(jù)流處理應用程序期間接收新的數(shù)據(jù)訂閱檔案,并且數(shù)據(jù)流模塊進一步操作用于根據(jù)接收的包括新數(shù)據(jù)訂閱檔案的數(shù)據(jù)檔案的修正比較,在輸出端口和輸入端口之間建立至少一個新連接。
4.如權(quán)利要求1所述的系統(tǒng),其中耦合至存儲器的、操作用于在輸出端口和輸入端口之間建立至少一個新連接的至少一個處理器進一步操作用于將應用程序內(nèi)的一個或多個輸出端口以及一個或多個外部數(shù)據(jù)源動態(tài)地互聯(lián)至由一個或多個數(shù)據(jù)生產(chǎn)者檔案特征以及一個或多個數(shù)據(jù)訂閱檔案特征之間的一個或多個匹配確定的應用程序內(nèi)的一個或多個輸入端口。
5.如權(quán)利要求1所述的系統(tǒng),其中耦合至存儲器的至少一個處理器進一步操作用于建立和修改由數(shù)據(jù)使用者采用的評價標準,用于約束將被連接至使用者的一個或多個數(shù)據(jù)源的集合。
6.一種用于在基于組件的數(shù)據(jù)流處理應用程序中動態(tài)修改多個組件之間互聯(lián)的方法, 所述方法包括針對要在一個或多個處理器上執(zhí)行的軟件應用程序內(nèi)的多個輸出端口中的每一個輸出端口接收數(shù)據(jù)生產(chǎn)者檔案,其中應用程序包括多個組件,每一個組件都包括生成數(shù)據(jù)流的輸出端口和使用數(shù)據(jù)流的輸入端口,并且其中每一份數(shù)據(jù)生產(chǎn)者檔案都描述了由對應輸出端口生成的數(shù)據(jù)的特征;針對應用程序的多個組件的一個或多個輸入端口中的每一個輸入端口接收數(shù)據(jù)訂閱檔案,其中每一份數(shù)據(jù)訂閱檔案都描述了由輸入端口使用的數(shù)據(jù)的特征;根據(jù)接收的數(shù)據(jù)生產(chǎn)者檔案和接收的數(shù)據(jù)訂閱檔案的比較,在應用程序內(nèi)的多個組件的輸出端口和輸入端口之間建立一個或多個連接;在一個或多個處理器上執(zhí)行數(shù)據(jù)流處理應用程序以處理一個或多個數(shù)據(jù)流;在執(zhí)行應用程序期間接收新的數(shù)據(jù)生產(chǎn)者檔案或新的數(shù)據(jù)訂閱檔案之一或兩者都接收;以及根據(jù)接收的包括一個或多個新數(shù)據(jù)檔案的數(shù)據(jù)檔案的修正比較,在輸出端口和輸入端口之間建立至少一個新連接。
7.如權(quán)利要求6所述的方法,進一步包括在執(zhí)行應用程序期間接收對現(xiàn)有數(shù)據(jù)檔案和現(xiàn)有訂閱表達式中的至少一種進行的一個或多個修改。
8.如權(quán)利要求6所述的方法,其中針對軟件應用程序內(nèi)的多個輸出端口中的每一個輸出端口接收數(shù)據(jù)生產(chǎn)者檔案包括在應用程序開發(fā)期間的數(shù)據(jù)檔案的規(guī)范以及由應用程序在執(zhí)行期間通過一個或多個運行時應用程序編程接口使用的數(shù)據(jù)檔案的編程規(guī)范中的至少一種。
9.如權(quán)利要求6所述的方法,其中針對應用程序的多個組件的一個或多個輸入端口中的每一個輸入端口接收數(shù)據(jù)訂閱檔案包括在應用程序開發(fā)期間的訂閱的規(guī)范以及由應用程序在執(zhí)行期間通過一個或多個運行時應用程序編程接口使用的訂閱的編程規(guī)范中的至少一種。
10.如權(quán)利要求6所述的方法,其中處理一個或多個數(shù)據(jù)流包括在系統(tǒng)的一個或多個處理節(jié)點上配置一個或多個處理單元并且運行一個或多個處理單元。
11.如權(quán)利要求6所述的方法,其中在輸出端口和輸入端口之間建立至少一個新連接包括分別在應用程序配置時和在運行時使用一種或多種編程語言結(jié)構(gòu)和運行時應用程序編程接口在每一個生產(chǎn)者和使用者之間建立一個或多個動態(tài)數(shù)據(jù)連接。
12.如權(quán)利要求6所述的方法,其中在輸出端口和輸入端口之間建立至少一個新連接進一步包括將應用程序內(nèi)的一個或多個輸出端口以及一個或多個外部數(shù)據(jù)源動態(tài)互聯(lián)至由一個或多個數(shù)據(jù)生產(chǎn)者檔案特征和一個或多個數(shù)據(jù)訂閱檔案特征之間的一個或多個匹配確定的應用程序內(nèi)的一個或多個輸入端口。
13.如權(quán)利要求12所述的方法,進一步包括在運行時操作一個或多個數(shù)據(jù)生產(chǎn)者檔案以及一個或多個數(shù)據(jù)訂閱檔案。
14.如權(quán)利要求13所述的方法,其中在運行時操作一個或多個數(shù)據(jù)生產(chǎn)者檔案包括根據(jù)每一個輸出端口生成的每一個數(shù)據(jù)項的一個或多個值,動態(tài)地操作一個或多個數(shù)據(jù)生產(chǎn)者檔案性質(zhì);根據(jù)每一個輸出端口生成的每一個數(shù)據(jù)項的容量,動態(tài)地操作一個或多個數(shù)據(jù)生產(chǎn)者檔案性質(zhì);以及查詢檔案管理器。
15.如權(quán)利要求13所述的方法,其中在運行時操作一個或多個數(shù)據(jù)訂閱檔案包括修改流訂閱表達式;以及修改訂閱函數(shù)。
16.如權(quán)利要求6所述的方法,其中在輸出端口和輸入端口之間建立一個或多個連接進一步包括在數(shù)據(jù)流模塊中儲存計算的路由;以及在數(shù)據(jù)檔案和數(shù)據(jù)訂閱中的至少一種每一次發(fā)生改變時都更新儲存在數(shù)據(jù)流模塊中的信息。
17.如權(quán)利要求6所述的方法,其中由輸出端口生成的數(shù)據(jù)的特征包括應用于由數(shù)據(jù)源攜帶的所有數(shù)據(jù)的檔案形式的特征。
18.如權(quán)利要求6所述的方法,其中由輸入端口使用的數(shù)據(jù)的特征包括針對一個或多個數(shù)據(jù)源檔案性質(zhì)定義的表述訂閱表達式、過程性訂閱技術(shù)和邏輯謂語。
19.如權(quán)利要求6所述的方法,進一步包括動態(tài)地改變使用者訂閱。
20.如權(quán)利要求6所述的方法,進一步包括動態(tài)地改變由輸出端口生成的輸出數(shù)據(jù)的輸出特征描述。
21.如權(quán)利要求6所述的方法,進一步包括建立和修改由數(shù)據(jù)使用者采用的評價標準, 用于約束將被連接至使用者的一個或多個數(shù)據(jù)源的集合。
22.如權(quán)利要求6所述的方法,進一步包括利用觸發(fā)機制來動態(tài)地計算一個或多個流匹配,其中計算一個或多個流匹配包括登記每一個訂閱表達式和每一個訂閱函數(shù);根據(jù)關于一個或多個新登記流的每一個訂閱表達式和每一個訂閱函數(shù)中的至少一種來評估一個或多個觸發(fā)條件;根據(jù)一個或多個流性質(zhì)的一個或多個改變來評估一個或多個觸發(fā)條件;以及根據(jù)一個或多個訂閱表達式以及一個或多個訂閱函數(shù)中的至少一種的一個或多個改變來評估一個或多個觸發(fā)條件。
23.如權(quán)利要求6所述的方法,其中所述方法在一種系統(tǒng)上運行,其中所述系統(tǒng)包括一個或多個不同的軟件組件,一個或多個不同的軟件組件中的每一個都可以在實體的計算機可讀取可記錄存儲介質(zhì)上實現(xiàn),并且其中一個或多個不同的軟件模塊包括在硬件處理器上運行的應用程序編程接口模塊、檔案管理器模塊、訂閱表達式管理器模塊、觸發(fā)管理器模塊和數(shù)據(jù)流模塊。
24.一種計算機程序產(chǎn)品,包括實體的計算機可讀取可記錄存儲介質(zhì),包含有計算機可用程序代碼,用于在基于組件的數(shù)據(jù)流處理應用程序中動態(tài)地修改多個組件之間的互聯(lián), 所述計算機程序產(chǎn)品包括計算機可用程序代碼,用于針對要在一個或多個處理器上執(zhí)行的軟件應用程序內(nèi)的多個輸出端口中的每一個輸出端口接收數(shù)據(jù)生產(chǎn)者檔案,其中應用程序包括多個組件,每一個組件都包括生成數(shù)據(jù)流的輸出端口和使用數(shù)據(jù)流的輸入端口,并且其中每一份數(shù)據(jù)生產(chǎn)者檔案都描述了由對應輸出端口生成的數(shù)據(jù)的特征;計算機可用程序代碼,用于針對應用程序的多個組件的一個或多個輸入端口中的每一個輸入端口接收數(shù)據(jù)訂閱檔案,其中每一份數(shù)據(jù)訂閱檔案都描述了由對應輸入端口使用的數(shù)據(jù)的特征;計算機可用程序代碼,用于根據(jù)接收的數(shù)據(jù)生產(chǎn)者檔案和接收的數(shù)據(jù)訂閱檔案的比較,在應用程序內(nèi)的多個組件的輸出端口和輸入端口之間建立一個或多個連接;計算機可用程序代碼,用于在一個或多個處理器上執(zhí)行數(shù)據(jù)流處理應用程序以處理一個或多個數(shù)據(jù)流;計算機可用程序代碼,用于在執(zhí)行應用程序期間接收新的數(shù)據(jù)生產(chǎn)者檔案或新的數(shù)據(jù)訂閱檔案之一或兩者都接收;以及計算機可用程序代碼,用于根據(jù)接收的包括一個或多個新數(shù)據(jù)檔案的數(shù)據(jù)檔案的修正比較,在輸出端口和輸入端口之間建立至少一個新連接。
25.如權(quán)利要求24所述的計算機程序產(chǎn)品,進一步包括計算機可用程序代碼,用于在執(zhí)行應用程序期間接收對現(xiàn)有數(shù)據(jù)檔案和現(xiàn)有訂閱表達式中的至少一種進行的一種或多種修改。
26.如權(quán)利要求M所述的計算機程序產(chǎn)品,其中用于在輸出端口和輸入端口之間建立至少一個新連接的計算機可用程序代碼包括用于分別在應用程序配置時和運行時使用一種或多種編程語言結(jié)構(gòu)和運行時應用程序編程接口在每一個生產(chǎn)者和使用者之間建立一個或多個動態(tài)數(shù)據(jù)連接的計算機可用程序代碼。
27.如權(quán)利要求M所述的計算機程序產(chǎn)品,其中用于在輸出端口和輸入端口之間建立至少一個新連接的計算機可用程序代碼進一步包括用于將應用程序內(nèi)的一個或多個輸出端口以及一個或多個外部數(shù)據(jù)源動態(tài)互聯(lián)至由一個或多個數(shù)據(jù)生產(chǎn)者檔案特征和一個或多個數(shù)據(jù)訂閱檔案特征之間的一個或多個匹配確定的應用程序內(nèi)的一個或多個輸入端口的計算機可用程序代碼。
28.如權(quán)利要求M所述的計算機程序產(chǎn)品,進一步包括用于建立和修改由數(shù)據(jù)使用者采用的評價標準的計算機可用程序代碼,評價標準用于約束將被連接至使用者的一個或多個數(shù)據(jù)源的集合。
29.如權(quán)利要求M所述的計算機程序產(chǎn)品,其中計算機可用程序代碼包括一個或多個不同的軟件模塊,并且其中一個或多個不同的軟件模塊包括在硬件處理器上運行的應用程序編程接口模塊、檔案管理器模塊、訂閱表達式管理器模塊、觸發(fā)管理器模塊和數(shù)據(jù)流模塊。
全文摘要
提供了用于動態(tài)修改應用程序內(nèi)組件之間的互聯(lián)的技術(shù)。所述技術(shù)包括針對要在一個或多個處理器上執(zhí)行的軟件應用程序內(nèi)的每一個輸出端口接收數(shù)據(jù)生產(chǎn)者檔案,針對應用程序每一個組件中的每一個輸入端口接收數(shù)據(jù)訂閱檔案,根據(jù)每一份數(shù)據(jù)生產(chǎn)者檔案和每一份數(shù)據(jù)訂閱檔案的比較,在應用程序內(nèi)組件的輸出端口和輸入端口之間建立連接,在一個或多個處理器上執(zhí)行應用程序以處理數(shù)據(jù)流,在執(zhí)行應用程序期間接收新的數(shù)據(jù)生產(chǎn)者檔案或新的數(shù)據(jù)訂閱檔案之一或兩者都接收,并根據(jù)接收的包括新數(shù)據(jù)檔案的數(shù)據(jù)檔案的修正比較在輸出端口和輸入端口之間建立至少一個新連接。
文檔編號G06F13/00GK102349056SQ201080011985
公開日2012年2月8日 申請日期2010年5月13日 優(yōu)先權(quán)日2009年5月14日
發(fā)明者B·葛迪克, H·安德拉德, L·阿米尼, N·哈利姆, S·帕薩薩拉斯 申請人:國際商業(yè)機器公司