欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

資源管理平臺中的數(shù)據(jù)引擎的制作方法

文檔序號:6572518閱讀:240來源:國知局
專利名稱:資源管理平臺中的數(shù)據(jù)引擎的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及資源管理技術(shù),更具體地說,涉及資源管理平臺中的數(shù)據(jù)引擎。
背景技術(shù)
隨著網(wǎng)絡技術(shù)的不斷發(fā)展,資源共享逐漸成為許多企業(yè)級應用迫切的需求。雖然目前一些應用系統(tǒng)實現(xiàn)了部分共享的功能,但很多情況下,這種共享只限于存取有限網(wǎng)絡內(nèi)的資源或為有限網(wǎng)絡內(nèi)提供資源,不能滿足更普遍、更廣泛共享的需求。
通常的應用系統(tǒng)無法做到這種普遍、廣泛共享的原因主要有兩點一是應用系統(tǒng)用戶出于安全保密性的考慮,不愿將所有資源對外開放;二是即使應用系統(tǒng)用戶愿意甚至需要將一部分資源對外開放,但卻沒有一種統(tǒng)一的途徑使其資源安全、可靠地開放。
開放資源的一個前提是實現(xiàn)有效的資源轉(zhuǎn)換,在資源轉(zhuǎn)換的過程中,需要使用到數(shù)據(jù)引擎來實現(xiàn)資源轉(zhuǎn)換的操作,每個資源轉(zhuǎn)換的操作稱為一個傳輸任務,而數(shù)據(jù)引擎的功能就是解釋并執(zhí)行任務。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種數(shù)據(jù)引擎,數(shù)據(jù)引擎是資源管理平臺最核心的構(gòu)件,負責完成資源轉(zhuǎn)換的操作。
本發(fā)明采用如下的方式實現(xiàn),一種資源管理平臺中的數(shù)據(jù)引擎,該數(shù)據(jù)引擎以插件的形式運行于資源管理平臺的一平臺內(nèi)核上,平臺內(nèi)核向以插件形式運行的數(shù)據(jù)引擎提供調(diào)用資源并管理所述數(shù)據(jù)引擎,其中,數(shù)據(jù)引擎包括數(shù)據(jù)引擎插件,提供數(shù)據(jù)服務,并維護一適配器、一求值器構(gòu)造器、一通知器以及一活動任務;
數(shù)據(jù)引擎工具插件,將該數(shù)據(jù)引擎與資源管理器相連,為其提供缺省的傳輸器;注冊缺省的任務記錄器以完成日志服務;為數(shù)據(jù)引擎插件提供一組缺省的適配器;任務處理器,是該數(shù)據(jù)引擎用于執(zhí)行任務的構(gòu)件。
其中,該數(shù)據(jù)引擎插件提供適配器擴展點、求值器構(gòu)造器擴展點以及通知器擴展點,該適配器擴展點、求值器構(gòu)造器擴展點以及通知器擴展點都是被命名的接口,該數(shù)據(jù)引擎插件還提供數(shù)據(jù)服務擴展,該數(shù)據(jù)服務擴展是命名連接;數(shù)據(jù)引擎工具插件提供傳輸器擴展、任務記錄器擴展以及一組缺省的適配器擴展,該傳輸器擴展、任務記錄器擴展以及一組缺省的適配器擴展是命名連接。
而任務處理器從任務隊列取得任務,依賴適配器、求值器構(gòu)造器和日志服務執(zhí)行任務,最后利用通知器發(fā)布任務成功通知。
該平臺內(nèi)核包括內(nèi)核插件,內(nèi)核插件是數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件的原始根,包括基礎擴展點,基礎擴展點是供數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件使用的接口;基礎擴展者,基礎擴展點的接口實現(xiàn),基礎擴展者是可被數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件調(diào)用的擴展者;插件系統(tǒng),內(nèi)核插件、數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件需要向插件系統(tǒng)進行注冊,插件系統(tǒng)還保存內(nèi)核插件、數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件之間的關(guān)聯(lián)關(guān)系;數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件用于實現(xiàn)擴展點,擴展點是一個被命名的接口;擴展者,所述擴展點的接口實現(xiàn);擴展,所述擴展點和實現(xiàn)該擴展點接口的擴展者的命名連接;該非內(nèi)核插件通過實現(xiàn)擴展點、擴展者和擴展來調(diào)用可擴展資源管理平臺的資源。
該數(shù)據(jù)引擎插件提供數(shù)據(jù)服務,所述數(shù)據(jù)服務包括活動適配器查詢和活動任務管理。
其中,適配器擴展點用于操作一組定位器指定的資源,每個定位器描述了一個資源的位置;求值器構(gòu)造器擴展點用于構(gòu)造求解表達式的求值器,其中,該擴展點上只允許有一個擴展連接,如果有多個擴展連接了此擴展點,則只有第一個會被該數(shù)據(jù)引擎使用;通知器擴展點用于發(fā)布傳輸任務完成的通知,其中,如果有多個通知器擴展連接到此擴展點,則它們會被依次調(diào)用。
該傳輸器擴展用于完成資源管理器定義的一次轉(zhuǎn)換任務;所述任務記錄器插件記錄該數(shù)據(jù)引擎的日志,其中,缺省的任務記錄器將任務日志記錄在指定目錄的文件,每個任務對應一個日志文件;一組缺省適配器向該數(shù)據(jù)引擎工具插件提供并注冊了一組常用的適配器擴展。
該任務處理器包括任務隊列,用于任務排隊,當數(shù)據(jù)引擎工具插件接收到資源管理器的任務后,如果是立即任務,則立即執(zhí)行任務并將結(jié)果返回;如果是后臺任務,則傳輸器會在創(chuàng)建對應的活動任務之后,將此任務放入任務隊列排隊;任務執(zhí)行器,任務處理器從任務隊列中取出下一個任務并在后臺執(zhí)行。任務處理器對任務的執(zhí)行依賴所述適配器擴展點、求值器構(gòu)造器擴展點以及平臺內(nèi)核的日志服務完成;任務通知器,任務處理器在任務執(zhí)行完畢后通知已經(jīng)注冊的通知器。
采用本發(fā)明的技術(shù)方案,提供了一種數(shù)據(jù)引擎,能用作資源管理平臺最核心的構(gòu)件,負責完成資源轉(zhuǎn)換的操作,為建立有效的資源管理提供了基礎。


圖1示出了可作為本發(fā)明的規(guī)則管理器的運行基礎的可擴展資源管理平臺的結(jié)構(gòu)圖;圖2示出了根據(jù)本發(fā)明的數(shù)據(jù)引擎的結(jié)構(gòu)圖。
具體實施例方式
本發(fā)明提供一種資源管理平臺中的數(shù)據(jù)引擎,該數(shù)據(jù)引擎以插件的形式運行于資源管理平臺的一平臺內(nèi)核上,平臺內(nèi)核向以插件形式運行的數(shù)據(jù)引擎提供調(diào)用資源并管理所述數(shù)據(jù)引擎。
首先介紹一下可以用于實現(xiàn)本發(fā)明的資源管理平臺,該資源管理平臺也可以視為是本發(fā)明的數(shù)據(jù)引擎的運行基礎。參考圖1所示,該資源管理平臺100包括平臺內(nèi)核102,平臺內(nèi)核102包括,內(nèi)核插件120,內(nèi)核插件是非內(nèi)核插件140的原始根,包括基礎擴展點122,基礎擴展點是供非內(nèi)核插件140使用的接口;基礎擴展者124,基礎擴展點的接口實現(xiàn),基礎擴展者是可被非內(nèi)核插件140或者平臺外部應用調(diào)用的擴展者;插件系統(tǒng)126,內(nèi)核插件120和非內(nèi)核插件140需要向插件系統(tǒng)126進行注冊,插件系統(tǒng)126還保存內(nèi)核插件120與非內(nèi)核插件140、以及非內(nèi)核插件140與非內(nèi)核插件140之間的關(guān)聯(lián)關(guān)系;非內(nèi)核插件140,非內(nèi)核插件與特定的功能相關(guān),非內(nèi)核插件用于實現(xiàn)擴展點104,擴展點104是一個被命名的接口;擴展者106,擴展點104的接口實現(xiàn);擴展108,擴展點104和實現(xiàn)該擴展點接口的擴展者106的命名連接;非內(nèi)核插件140通過實現(xiàn)擴展點104、擴展者106和擴展108來調(diào)用可擴展資源管理平臺100的資源。
本發(fā)明的規(guī)則管理器就是運行于上述的資源管理平臺100之上,參考圖2所示,該數(shù)據(jù)引擎200包括數(shù)據(jù)引擎插件202,提供數(shù)據(jù)服務,并維護一適配器、一求值器構(gòu)造器、一通知器以及一活動任務。根據(jù)一實施例,該數(shù)據(jù)引擎插件202提供適配器擴展點、求值器構(gòu)造器擴展點以及通知器擴展點,其中,該適配器擴展點、求值器構(gòu)造器擴展點以及通知器擴展點都是被命名的接口,該數(shù)據(jù)引擎插件還提供數(shù)據(jù)服務擴展,該數(shù)據(jù)服務擴展是命名連接。
數(shù)據(jù)引擎工具插件204,將該數(shù)據(jù)引擎與資源管理器相連,為其提供缺省的傳輸器;注冊缺省的任務記錄器以完成日志服務;為數(shù)據(jù)引擎插件提供一組缺省的適配器。根據(jù)一實施例,該數(shù)據(jù)引擎工具插件204提供傳輸器擴展、任務記錄器擴展以及一組缺省的適配器擴展,該傳輸器擴展、任務記錄器擴展以及一組缺省的適配器擴展是命名連接。
任務處理器206,是該數(shù)據(jù)引擎用于執(zhí)行任務的構(gòu)件。根據(jù)一實施例,任務處理器從任務隊列取得任務,依賴適配器、求值器構(gòu)造器和日志服務執(zhí)行任務,最后利用通知器發(fā)布任務成功通知。
于是,本發(fā)明的數(shù)據(jù)引擎200運行于上述的資源管理平臺100上形成如下的結(jié)構(gòu)該平臺內(nèi)核包括內(nèi)核插件,內(nèi)核插件是數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件的原始根,包括基礎擴展點,基礎擴展點是供數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件使用的接口;基礎擴展者,基礎擴展點的接口實現(xiàn),基礎擴展者是可被數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件調(diào)用的擴展者;插件系統(tǒng),內(nèi)核插件、數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件需要向插件系統(tǒng)進行注冊,插件系統(tǒng)還保存內(nèi)核插件、數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件之間的關(guān)聯(lián)關(guān)系;數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件用于實現(xiàn)擴展點,擴展點是一個被命名的接口;擴展者,擴展點的接口實現(xiàn);擴展,擴展點和實現(xiàn)該擴展點接口的擴展者的命名連接;非內(nèi)核插件通過實現(xiàn)擴展點、擴展者和擴展來調(diào)用可擴展資源管理平臺的資源。
本發(fā)明中的數(shù)據(jù)引擎插件提供數(shù)據(jù)服務,該數(shù)據(jù)服務包括活動適配器查詢和活動任務管理。
該數(shù)據(jù)引擎插件202提供的適配器擴展點、求值器構(gòu)造器擴展點以及通知器擴展點分別用于實現(xiàn)如下的功能適配器擴展點用于操作一組定位器指定的資源,每個定位器描述了一個資源的位置;求值器構(gòu)造器擴展點用于構(gòu)造求解表達式的求值器,其中,該擴展點上只允許有一個擴展連接,如果有多個擴展連接了此擴展點,則只有第一個會被該數(shù)據(jù)引擎使用;通知器擴展點用于發(fā)布傳輸任務完成的通知,其中,如果有多個通知器擴展連接到此擴展點,則它們會被依次調(diào)用。
數(shù)據(jù)引擎工具插件204提供的傳輸器擴展、任務記錄器擴展以及一組缺省的適配器擴展分別用于實現(xiàn)如下的功能傳輸器擴展用于完成資源管理器定義的一次轉(zhuǎn)換任務;任務記錄器插件記錄該數(shù)據(jù)引擎的日志,其中,缺省的任務記錄器將任務日志記錄在指定目錄的文件,每個任務對應一個日志文件;一組缺省適配器向該數(shù)據(jù)引擎工具插件提供并注冊了一組常用的適配器擴展。
該任務處理器包括任務隊列,用于任務排隊,當數(shù)據(jù)引擎工具插件接收到資源管理器的任務后,如果是立即任務,則立即執(zhí)行任務并將結(jié)果返回;如果是后臺任務,則傳輸器會在創(chuàng)建對應的活動任務之后,將此任務放入任務隊列排隊;任務執(zhí)行器,任務處理器從任務隊列中取出下一個任務并在后臺執(zhí)行。任務處理器對任務的執(zhí)行依賴所述適配器擴展點、求值器構(gòu)造器擴展點以及平臺內(nèi)核的日志服務完成;任務通知器,任務處理器在任務執(zhí)行完畢后通知已經(jīng)注冊的通知器。
下面介紹本發(fā)明的具體實現(xiàn)。
資源管理平臺的實現(xiàn)的基本架構(gòu)在本發(fā)明中,平臺內(nèi)核(Core)是整個可擴展資源管理平臺的核心部件和基礎。本發(fā)明的可擴展資源管理平臺采用插件(Plugin)方式實現(xiàn),所有插件彼此獨立,平臺內(nèi)核負責維護所有插件間的關(guān)聯(lián)。內(nèi)核提供內(nèi)核插件(Core Plugin)作為所有插件的根。平臺內(nèi)核是一個“輕量級”部件,它本身不實現(xiàn)任何應用的功能需求,只負責完成最基礎的插件服務和提供最基礎的一組擴展點。在平臺內(nèi)核之上,插入各個功能模塊,各個功能模塊之上再插入它們特定的插件,最終完成應用特定的功能。
本發(fā)明的可擴展資源管理平臺采用插件機制,可以很方便地擴展平臺功能,而不需改動已有的代碼。插件系統(tǒng)是依賴擴展點(Extension Point)、擴展者(Extender)和擴展(Extension)實現(xiàn)的。需要說明的是,本發(fā)明的可擴展資源管理平臺中,除了平臺內(nèi)核中的內(nèi)核插件是基礎插件,其余的插件都是擴展應用使用的插件,都可以視為非內(nèi)核插件。在下面的敘述中,“插件”將用于指代非內(nèi)核插件,而內(nèi)核插件將專門指名。并且,對于術(shù)語“插件”和“非內(nèi)核插件”,表示同樣的概念。
擴展點(Extension Point)就是一個命名的接口。名字唯一標識了該擴展點,而接口說明了該擴展點期望的功能規(guī)范。兩個不同的擴展點可以具有同樣的接口,但不能有同樣的名字。如果一個插件期望其功能能夠被其他插件擴展,則將此功能接口命名,定義為一個擴展點,而插件本身不需要實現(xiàn)此接口。例如,數(shù)據(jù)引擎(Data Engine)插件需要讀取某個數(shù)據(jù)源的數(shù)據(jù),但是不同的數(shù)據(jù)源(例如JDBC數(shù)據(jù)源和XML文檔數(shù)據(jù)源)具有不同的存取方式。數(shù)據(jù)引擎不期望依賴某種特定的實現(xiàn)讀取特定的數(shù)據(jù)源,因此定義了適配器(Adapter)擴展點。數(shù)據(jù)引擎本身只操作適配器接口,并不負責適配器的實現(xiàn)。數(shù)據(jù)引擎將此擴展點注冊給內(nèi)核之后,內(nèi)核負責將其與其他插件注冊的適配器實現(xiàn)關(guān)聯(lián),從而使數(shù)據(jù)引擎完全透明地訪問適配器實現(xiàn)。
擴展者(Extender)就是一個擴展點接口的實現(xiàn)。擴展者只關(guān)心實現(xiàn),而無須關(guān)心誰會使用這個實現(xiàn)。如果兩個擴展點定義了同樣的接口,那么擴展者本身并不能確定它會被哪一個擴展點使用。一個擴展者可以實現(xiàn)多個擴展點接口。擴展者的實例由擴展者工廠(Extender Home)創(chuàng)建。
擴展(Extension)就是一個擴展點和一個擴展其接口的擴展者的命名連接。一個擴展包含以下信息一個唯一的名字,被擴展的擴展點的名字,以及實現(xiàn)此擴展點接口的擴展者工廠。如果一個插件期望擴展其他插件的擴展點,則必須實現(xiàn)相應的擴展者,提供相應的擴展者工廠,并向內(nèi)核注冊相應的擴展。內(nèi)核負責將擴展者與擴展點連接,并在定義擴展點的插件需要的時候,利用擴展者工廠創(chuàng)建擴展者實例,提供給此插件使用。通常將擴展的名字也叫做擴展所連接的擴展者的名字。
平臺內(nèi)核的實現(xiàn)在本發(fā)明的平臺內(nèi)核中,提供了一個基礎的插件,內(nèi)核插件。內(nèi)核插件(Core Plugin)是平臺最底層的基礎插件,是所有插件插入的原始根。內(nèi)核插件定義了平臺的最底層基礎擴展點服務(Service)。內(nèi)核插件不同于普通的獨立插件,它是平臺內(nèi)核的一部分。
服務就是平臺對外的功能接口,是應用相關(guān)的功能集合。一個平臺內(nèi)核本身是一個“輕量級”部件,它只維護插件關(guān)聯(lián),而并不實現(xiàn)任何特定的功能需求。如果某個插件需要對外開放某些特定的功能,則其需要將此組功能定義為一個服務,并依賴內(nèi)核插件導出。例如,規(guī)則管理器(RuleManager)需要對外提供一組維護規(guī)則的操作接口,則它需要將這組操作定義為一個實現(xiàn)了服務擴展點接口的擴展者——規(guī)則服務(Rule Service),并將其通過一個擴展與內(nèi)核插件的服務擴展點相連接,以后當用戶需要使用規(guī)則服務的時候,就可以使用此擴展的名字向內(nèi)核借用(borrow)服務。
每個服務都是一個擴展者,它擴展了內(nèi)核插件的服務擴展點;將服務和內(nèi)核服務擴展點連結(jié)起來的擴展的名字也被定義為服務的名字。服務作為擴展者不同于其他普通擴展者的區(qū)別在于,服務直接由內(nèi)核對外導出,作為平臺功能的統(tǒng)一入口,由其他應用使用;而普通擴展者則不被外部應用所知,只由其對應擴展點的提供插件使用。服務可以對外被平臺外部的應用調(diào)用,也可以對內(nèi)被其他插件使用。
日志服務(Log Service)是內(nèi)核插件提供的基礎服務。系統(tǒng)中的所有插件都可以使用此服務完成日志記錄。記錄器(Logger)是內(nèi)核插件定義的用于實現(xiàn)日志服務的擴展點。內(nèi)核插件的日志服務會使用連接到此擴展點上的記錄器完成日志的記錄。當日志服務被調(diào)用時,內(nèi)核插件會輪流調(diào)用所有已經(jīng)連接的記錄器完成日志的記錄。如果沒有任何一個記錄器接收該記錄,則內(nèi)核插件會將日志記錄到標準輸出(stdout)或標準錯誤(stderr)設備上。不同的日志發(fā)起者(Log Originator)可能會具有不同的日志消息格式,只有特定的針對此發(fā)起者的記錄器能識別和記錄其消息。
平臺內(nèi)核中的另一個重要的的部件是插件系統(tǒng),插件系統(tǒng)負責所有插件,包括內(nèi)核插件和非內(nèi)核插件的注冊;并維護所有插件,包括內(nèi)核插件和非內(nèi)核插件之間的關(guān)聯(lián)關(guān)系。
所有的插件,包括內(nèi)核插件和非內(nèi)核插件都必須向內(nèi)核注冊。靜態(tài)插件在內(nèi)核啟動時由內(nèi)核注冊,動態(tài)插件在內(nèi)核啟動后由應用程序注冊。插件由名字唯一標識。不同版本的同名插件只有最高版本有效。如果某一插件的低版本已經(jīng)注冊,又試圖注冊更高的版本,那么高版本必須完全兼容低版本定義的所有擴展點和擴展。
每個插件擁有一個初始化順序(Initialization Order),決定了其注冊順序。內(nèi)核插件永遠是第一個初始化的,它的初始化順序為0。其他插件則必須按照依賴關(guān)系定義初始化順序。例如數(shù)據(jù)引擎插件只依賴內(nèi)核插件,其初始化順序為1;而數(shù)據(jù)引擎工具插件依賴數(shù)據(jù)引擎插件,其初始化順序為2。初始化順序只對平臺啟動時加載的靜態(tài)插件有效。對于平臺啟動后注冊的動態(tài)插件,初始化順序即為其注冊的順序。
提供擴展點的插件稱為宿主插件(Host Plugin),提供擴展的插件稱為從屬插件(Dependent Plugin)。一個插件可以同時是宿主插件和從屬插件。因為從屬插件依賴于相關(guān)的宿主插件,因此從屬插件必須在宿主插件注冊之后注冊。
平臺內(nèi)核中的插件系統(tǒng)還負責維護插件與插件間(包括內(nèi)核插件與非內(nèi)核插件以及非內(nèi)核插件與非內(nèi)核插件間)的擴展關(guān)聯(lián)。一個提供擴展點的插件需要使用擴展功能時,首先向內(nèi)核借用(borrow)連接到此擴展點上的擴展者,然后利用擴展者完成需要的功能,最后將擴展者歸還(revert)。提供擴展點的插件操作擴展者時僅按照擴展點定義的接口操作,而不必關(guān)心擴展者的實現(xiàn)或是誰提供了擴展者,從而實現(xiàn)插件功能的透明擴展。
平臺內(nèi)核依賴內(nèi)核插件對外提供服務。內(nèi)核本身不關(guān)心服務的實現(xiàn)。外部應用或其他插件需要使用服務時,首先按照服務擴展的名字向內(nèi)核借用服務,使用完成之后將服務歸還。
數(shù)據(jù)引擎數(shù)據(jù)引擎(Data Engine)是平臺最核心的構(gòu)件,它負責完成資源轉(zhuǎn)換的操作。每個資源轉(zhuǎn)換的操作稱為一個傳輸任務(Task),數(shù)據(jù)引擎的功能就是解釋并執(zhí)行任務。每個任務都定義了傳輸?shù)脑?Source)和目標(Target),它們都用定位器(Locator)來描述。數(shù)據(jù)引擎并不直接操作定位器,而是使用對應的適配器(Adapter)來存取某個定位器指定的資源。數(shù)據(jù)引擎利用求值器構(gòu)造器(Evaluator Maker)創(chuàng)建的求值器完成轉(zhuǎn)換過程中必須的表達式(Expression)求值。數(shù)據(jù)引擎在傳輸任務執(zhí)行完畢后,會使用通知器(Notifier)發(fā)布任務完畢的通知。數(shù)據(jù)引擎使用內(nèi)核插件提供的日志服務(Log Service)記錄傳輸任務的執(zhí)行過程。
數(shù)據(jù)引擎由數(shù)據(jù)引擎插件、數(shù)據(jù)引擎工具插件和任務處理器組成。
任務(Task)是一次資源轉(zhuǎn)換的操作。數(shù)據(jù)引擎負責解釋并執(zhí)行任務。每個任務都具有一個唯一的名字,并且具有可選的標題(Title)和描述(Description)。任務規(guī)定了轉(zhuǎn)換的輸出模式(Output Mode)、轉(zhuǎn)換的可靠度級別(Reliability Level)、轉(zhuǎn)換的簇大小(Cluster Size)、轉(zhuǎn)換的源和目標定位器以及一組目標字段(Field)對應源字段表達式(Expression)的綁定(Binding)。
適配器(Adapter)是數(shù)據(jù)引擎用于操作定位器(Locator)的擴展者。每個定位器描述了一個資源的位置,而適配器則用于操作這些定位器指定的資源。由于資源的多樣性,數(shù)據(jù)引擎本身并不實現(xiàn)操作這些資源的方法,而是由外部插件提供的適配器完成對資源的操作。
每種資源都有各自的存取方法,具有相同存取方法的資源被叫做具有相同的存取協(xié)議(Protocol)。協(xié)議由適配器的實現(xiàn)提供。例如,所有利用JDBC DriverManager方式存取的數(shù)據(jù)源都可以被某個適配器操作,那么這個適配器就可以為此種操作方式定義一個協(xié)議。所有遵循此種操作規(guī)則的數(shù)據(jù)源都可以使用具有此協(xié)議的定位器來描述。
數(shù)據(jù)引擎處理某個數(shù)據(jù)源時,將按照定位器規(guī)定的協(xié)議查找相應的適配器,然后利用此適配器完成對此資源的存取。
每個適配器可以選擇支持三種類型的操作查詢(Query)、添加(Append)和替換(Replace)。例如,一個JDBC適配器可能所有的操作都支持,而一個XML適配器可能將不支持替換操作。支持查詢操作的適配器才能被用作源,支持添加或替換操作的適配器才能被用作目標。同時支持添加或替換操作的適配器將支持所有輸出模式(Output Mode)的任務。每個適配器都可以選擇是否支持事務(Transaction)。支持事務的適配器可以用于完成較高可靠度級別(Reliability Level)的任務,而不支持事務的適配器只能用于完成較低可靠度級別的任務。
求值器構(gòu)造器(Evaluator Maker)用于構(gòu)造求解表達式(Expression)的求值器(Evaluator)。資源轉(zhuǎn)換的過程中,目標字段往往不是簡單地同源字段一一對應,而是源字段經(jīng)過一定的運算的結(jié)果。這樣的運算規(guī)則稱為一個表達式(Expression),而目標字段與某個表達式的對應關(guān)系稱為綁定(Binding)。
數(shù)據(jù)引擎執(zhí)行任務的過程中,需要動態(tài)地根據(jù)源字段的值,求出目標字段對應的表達式的值,然后送入目標字段。表達式的求值是由數(shù)據(jù)引擎調(diào)用求值器完成的,而求值器構(gòu)造器的任務就是創(chuàng)建求值器。求值器構(gòu)造器負責創(chuàng)建兩類求值器規(guī)則求值器和映射求值器。
規(guī)則求值器(Rule Evaluator)負責求解規(guī)則表達式(Rule Expression)的值。規(guī)則表達式描述了一個規(guī)則(Rule)。一個規(guī)則是由規(guī)則器(Ruler)的名稱和提供給規(guī)則器的實參(Parameters)構(gòu)成的。正如錯誤!未找到引用源。所述,如果將規(guī)則器比作函數(shù),那么一個規(guī)則就描述了一次函數(shù)的調(diào)用。規(guī)則求值器負責完成對規(guī)則器的調(diào)用,并返回結(jié)果。
映射求值器(Mapping Evaluator)負責求解映射表達式(MappingExpression)的值。映射表達式描述了一個映射(Mapping)。一個映射是由映射器(Mapper)的名稱和提供給映射器的待映射源(Source)構(gòu)成的。映射求值器的功能完全類似規(guī)則求值器。
數(shù)據(jù)引擎插件(Data Engine)是數(shù)據(jù)引擎的核心插件。它對外提供數(shù)據(jù)服務(Data Service),并負責維護適配器、求值器構(gòu)造器、通知器以及活動任務。
數(shù)據(jù)服務(Data Service)是數(shù)據(jù)引擎對外開放的服務接口,它擴展了內(nèi)核的服務擴展點。數(shù)據(jù)服務主要包括活動適配器查詢、活動任務管理、適配器擴展點。
活動適配器(Active Adapter)是指已經(jīng)連接到數(shù)據(jù)引擎適配器擴展點的適配器?;顒舆m配器不同于適配器,它只提供了適配器描述信息(名稱、協(xié)議、說明等),而并不提供存取定位器的功能。通過查詢活動適配器,外部應用就可以知道目前引擎可以支持的定位器協(xié)議、任務可靠度級別以及輸出模式,從而定義適當?shù)馁Y源轉(zhuǎn)換。
所有提交給引擎執(zhí)行的任務,引擎都會為其建立相應的活動記錄,這稱為活動任務(Active Task)?;顒尤蝿瞻巳蝿彰?、任務執(zhí)行狀態(tài)、任務執(zhí)行進度、任務起止時間等信息。引擎通過活動任務來管理對應的任務。活動任務管理包括活動任務查詢、活動任務撤銷和活動任務刪除等功能?;顒尤蝿詹煌谌蝿?,撤銷一個活動任務只是將對應任務的狀態(tài)標記為待撤銷,實際任務的撤銷需要等待任務處理器(Task Processor)的撤銷檢查(Cancelling Check)。同樣地,活動任務的刪除也只是將此活動記錄刪除,而并不意味著實際任務的撤銷。如果一個任務關(guān)聯(lián)的活動任務被刪除,那么就無法再查詢此任務的狀態(tài)或是撤銷此任務。一個幫助理解任務與活動任務的比喻就是將任務比作一個運行的線程,而活動任務就是這個線程的控制數(shù)據(jù)。線程根據(jù)自己的狀態(tài)更新控制數(shù)據(jù),并檢測控制數(shù)據(jù)中的撤銷位以決定是否撤消。將控制數(shù)據(jù)的撤銷位置位并不會直接導致線程的退出——線程的退出最終是依賴線程自己檢測撤銷位并自行結(jié)束;將控制數(shù)據(jù)刪除也并不會影響線程本身的執(zhí)行。
如前所述,數(shù)據(jù)引擎插件本身并不實現(xiàn)任何適配器,而只是定義了適配器擴展點,適配器由其他插件實現(xiàn)。如果需要為數(shù)據(jù)引擎插件添加新的適配器,只需要將擴展此擴展點的適配器插件注冊給內(nèi)核即可。
數(shù)據(jù)引擎本身不負責實現(xiàn)表達式的求值,而只是定義了求值器構(gòu)造器擴展點。此擴展點上只允許有一個擴展連接。如果有多個擴展連接了此擴展點,則只有第一個會被引擎使用。平臺缺省的求值器構(gòu)造器由規(guī)則管理器工具插件提供。如果需要為數(shù)據(jù)引擎指定新的求值器構(gòu)造器,則需要首先禁用規(guī)則管理器工具插件的求值器構(gòu)造器擴展,然后將提供新的擴展的插件注冊給內(nèi)核。
數(shù)據(jù)引擎使用通知器發(fā)布傳輸任務完成的通知。通知器僅當一個任務成功執(zhí)行并且數(shù)據(jù)傳輸量不為0時被調(diào)用。通知器不是必須的。如果有多個通知器擴展連接到此擴展點,則它們會被依次調(diào)用。
數(shù)據(jù)引擎工具插件(Data Engine Utility)是數(shù)據(jù)引擎的輔助插件,它依賴于數(shù)據(jù)引擎插件。數(shù)據(jù)引擎工具插件完成以下三個功能一、將數(shù)據(jù)引擎與資源管理器(Resource Manager)相連,為其提供缺省的傳輸器(Transferrer);二、向內(nèi)核注冊缺省的任務記錄器(Task Logger),以完成任務的日志記錄功能;三、為數(shù)據(jù)引擎插件提供一組缺省的適配器。
傳輸器(Transferrer)是資源管理器定義的用于執(zhí)行傳輸任務的擴展點接口。傳輸器負責完成資源管理器定義的一次轉(zhuǎn)換任務。數(shù)據(jù)引擎工具插件向內(nèi)核注冊了一個傳輸器的擴展,從而將數(shù)據(jù)引擎與資源管理器有機地結(jié)合起來。數(shù)據(jù)引擎工具插件提供的傳輸器支持立即任務和后臺任務。立即任務直接由數(shù)據(jù)引擎工具插件配合Instant Adapter完成,而后臺任務則交由任務處理器(Task Processor)完成。由于立即任務不會交付任務處理器處理,因此立即任務將沒有任務日志和活動任務。
任務記錄器(Task Logger)是內(nèi)核記錄器(Logger)擴展點接口的一個實現(xiàn)。它只記錄數(shù)據(jù)引擎的日志,而不處理來自其他發(fā)起者(Originator)的日志。缺省的任務記錄器將任務日志記錄在指定目錄的文件,每個任務對應一個日志文件??梢耘渲萌蝿沼涗浧魇沟闷渲槐A艉芯婊蝈e誤信息的日志文件,而不保留成功完成的任務日志?;顒尤蝿?Active Task)只能描述當前任務的狀態(tài),而任務日志則會記錄完整的任務執(zhí)行過程??梢越萌笔∪蝿沼涗浧?。也可以向內(nèi)核注冊新的記錄器擴展以完成任務日志的記錄。
數(shù)據(jù)引擎工具插件提供并注冊了一組常用的適配器擴展,以方便應用的開發(fā)。這包括一、Instant適配器,用于內(nèi)部處理立即任務,不對外使用;二、Driver適配器,用于以JDBC DriverManager的方式存取數(shù)據(jù)源;三、DataSource適配器,用于以JDBC DataSource的方式存取數(shù)據(jù)源;四、MQ適配器,用于存取以消息隊列為傳輸載體并符合一定規(guī)范的消息型數(shù)據(jù)源;五、XML適配器,用于存取以XML文檔形式存在并符合一定規(guī)范的文檔型數(shù)據(jù)源。
任務處理器(Task Processor)是數(shù)據(jù)引擎用于執(zhí)行任務的構(gòu)件。任務處理器本身并不是一個插件。
任務隊列(Task Queue)是引擎用于任務排隊的隊列。當數(shù)據(jù)引擎工具插件的傳輸器接收到資源管理器的任務后,如果是立即任務(InstantTask),則傳輸器立即執(zhí)行任務并將結(jié)果返回;如果是后臺任務(Background Task),則傳輸器會在創(chuàng)建了對應的活動任務(Active Task)之后,將此任務放入任務隊列排隊。一個正在排隊的任務可以被撤銷。
任務處理器負責從任務隊列中取出下一個任務并在后臺執(zhí)行。任務處理器對任務的執(zhí)行依賴適配器、求值器構(gòu)造器以及內(nèi)核的日志服務完成。任務處理器執(zhí)行任務的過程中,會按照任務進度更新對應的活動任務,并在每執(zhí)行到指定的簇大小(Cluster Size)時檢測活動任務的撤銷標記以中止任務。如果對應的活動任務已經(jīng)刪除,則任務處理器不會更新活動任務,并且不會進行撤銷檢查。任務處理器可以啟動多個實例并發(fā)執(zhí)行。
任務處理器負責在任務執(zhí)行完畢后通知已經(jīng)注冊的通知器。通知器只有當任務成功完成并且數(shù)據(jù)傳輸量不為0的情況下被調(diào)用。立即任務的完成通知也是由任務處理器在后臺完成的。
采用本發(fā)明的技術(shù)方案,提供了一種數(shù)據(jù)引擎,能用作資源管理平臺最核心的構(gòu)件,負責完成資源轉(zhuǎn)換的操作,為建立有效的資源管理提供了基礎。
權(quán)利要求
1.一種資源管理平臺中的數(shù)據(jù)引擎,其特征在于,該數(shù)據(jù)引擎以插件的形式運行于資源管理平臺的一平臺內(nèi)核上,所述平臺內(nèi)核向所述以插件形式運行的數(shù)據(jù)引擎提供調(diào)用資源并管理所述數(shù)據(jù)引擎,其中,所述數(shù)據(jù)引擎包括數(shù)據(jù)引擎插件,提供數(shù)據(jù)服務,并維護一適配器、一求值器構(gòu)造器、一通知器以及一活動任務;數(shù)據(jù)引擎工具插件,將該數(shù)據(jù)引擎與資源管理器相連,為其提供缺省的傳輸器;注冊缺省的任務記錄器以完成日志服務;為數(shù)據(jù)引擎插件提供一組缺省的適配器;任務處理器,是該數(shù)據(jù)引擎用于執(zhí)行任務的構(gòu)件。
2.如權(quán)利要求1所述的數(shù)據(jù)引擎,其特征在于,所述數(shù)據(jù)引擎插件提供適配器擴展點、求值器構(gòu)造器擴展點以及通知器擴展點,其中,該適配器擴展點、求值器構(gòu)造器擴展點以及通知器擴展點都是被命名的接口,該數(shù)據(jù)引擎插件還提供數(shù)據(jù)服務擴展,該數(shù)據(jù)服務擴展是命名連接;所述數(shù)據(jù)引擎工具插件提供傳輸器擴展、任務記錄器擴展以及一組缺省的適配器擴展,該傳輸器擴展、任務記錄器擴展以及一組缺省的適配器擴展是命名連接。
3.如權(quán)利要求1所述的數(shù)據(jù)引擎,其特征在于,所述任務處理器從任務隊列取得任務,依賴適配器、求值器構(gòu)造器和日志服務執(zhí)行任務,最后利用通知器發(fā)布任務成功通知。
4.如權(quán)利要求2或3所述的數(shù)據(jù)引擎,其特征在于,所述平臺內(nèi)核包括內(nèi)核插件,所述內(nèi)核插件是所述數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件的原始根,包括基礎擴展點,基礎擴展點是供數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件使用的接口;基礎擴展者,基礎擴展點的接口實現(xiàn),基礎擴展者是可被數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件調(diào)用的擴展者;插件系統(tǒng),內(nèi)核插件、數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件需要向插件系統(tǒng)進行注冊,插件系統(tǒng)還保存內(nèi)核插件、數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件之間的關(guān)聯(lián)關(guān)系;所述的數(shù)據(jù)引擎插件和數(shù)據(jù)引擎工具插件用于實現(xiàn)擴展點,擴展點是一個被命名的接口;擴展者,所述擴展點的接口實現(xiàn);擴展,所述擴展點和實現(xiàn)該擴展點接口的擴展者的命名連接;所述非內(nèi)核插件通過實現(xiàn)擴展點、擴展者和擴展來調(diào)用可擴展資源管理平臺的資源。
5.如權(quán)利要求4所述的數(shù)據(jù)引擎,其特征在于,所述數(shù)據(jù)引擎插件提供數(shù)據(jù)服務,所述數(shù)據(jù)服務包括活動適配器查詢和活動任務管理。
6.如權(quán)利要求4所述的數(shù)據(jù)引擎,其特征在于,適配器擴展點用于操作一組定位器指定的資源,每個定位器描述了一個資源的位置;求值器構(gòu)造器擴展點用于構(gòu)造求解表達式的求值器,其中,該擴展點上只允許有一個擴展連接,如果有多個擴展連接了此擴展點,則只有第一個會被該數(shù)據(jù)引擎使用;通知器擴展點用于發(fā)布傳輸任務完成的通知,其中,如果有多個通知器擴展連接到此擴展點,則它們會被依次調(diào)用。
7.如權(quán)利要求4所述的數(shù)據(jù)引擎,其特征在于,所述傳輸器擴展用于完成資源管理器定義的一次轉(zhuǎn)換任務;所述任務記錄器插件記錄該數(shù)據(jù)引擎的日志,其中,缺省的任務記錄器將任務日志記錄在指定目錄的文件,每個任務對應一個日志文件;所述一組缺省適配器向該數(shù)據(jù)引擎工具插件提供并注冊了一組常用的適配器擴展。
8.如權(quán)利要求4所述的數(shù)據(jù)引擎,其特征在于,所述任務處理器包括任務隊列,用于任務排隊,當數(shù)據(jù)引擎工具插件接收到資源管理器的任務后,如果是立即任務,則立即執(zhí)行任務并將結(jié)果返回;如果是后臺任務,則傳輸器會在創(chuàng)建對應的活動任務之后,將此任務放入任務隊列排隊;任務執(zhí)行器,任務處理器從任務隊列中取出下一個任務并在后臺執(zhí)行。任務處理器對任務的執(zhí)行依賴所述適配器擴展點、求值器構(gòu)造器擴展點以及平臺內(nèi)核的日志服務完成;任務通知器,任務處理器在任務執(zhí)行完畢后通知已經(jīng)注冊的通知器。
全文摘要
本發(fā)明揭示了一種資源管理平臺中的數(shù)據(jù)引擎,該數(shù)據(jù)引擎以插件的形式運行于資源管理平臺的一平臺內(nèi)核上,平臺內(nèi)核向以插件形式運行的數(shù)據(jù)引擎提供調(diào)用資源并管理數(shù)據(jù)引擎,其中,數(shù)據(jù)引擎包括數(shù)據(jù)引擎插件,提供數(shù)據(jù)服務,并維護一適配器、一求值器構(gòu)造器、一通知器以及一活動任務;數(shù)據(jù)引擎工具插件,將該數(shù)據(jù)引擎與資源管理器相連,為其提供缺省的傳輸器;注冊缺省的任務記錄器以完成日志服務;為數(shù)據(jù)引擎插件提供一組缺省的適配器;任務處理器,是該數(shù)據(jù)引擎用于執(zhí)行任務的構(gòu)件。采用本發(fā)明的技術(shù)方案,提供了一種數(shù)據(jù)引擎,能用作資源管理平臺最核心的構(gòu)件,負責完成資源轉(zhuǎn)換的操作,為建立有效的資源管理提供了基礎。
文檔編號G06F9/44GK101075190SQ20071004200
公開日2007年11月21日 申請日期2007年6月14日 優(yōu)先權(quán)日2007年6月14日
發(fā)明者孫圭寧, 高念高, 秦克明 申請人:上海眾恒信息產(chǎn)業(yè)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
钟祥市| 许昌县| 西丰县| 鞍山市| 京山县| 庄浪县| 红原县| 元阳县| 张掖市| 肃南| 古浪县| 曲周县| 曲周县| 宾阳县| 申扎县| 岳普湖县| 普兰店市| 奉贤区| 昭平县| 社旗县| 肥东县| 彩票| 惠来县| 中超| 建昌县| 灵寿县| 林口县| 恩平市| 峨山| 舒城县| 贺州市| 璧山县| 织金县| 梧州市| 元氏县| 东至县| 都昌县| 大邑县| 北海市| 新龙县| 班玛县|