Hose基于規(guī)則的數(shù)據(jù)推送系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及企業(yè)權(quán)威資源管理技術(shù)領(lǐng)域,具體的說(shuō),是Hose基于規(guī)則的數(shù)據(jù)推送系統(tǒng)及方法。
【背景技術(shù)】
[0002]傳統(tǒng)的數(shù)據(jù)推送都是與業(yè)務(wù)緊密耦合在一起的,無(wú)法做到數(shù)據(jù)推送的通用性和數(shù)據(jù)結(jié)構(gòu)的多樣性,無(wú)法對(duì)推送數(shù)據(jù)過(guò)程進(jìn)行精確控制。在大型企業(yè)中針對(duì)公司戰(zhàn)略數(shù)據(jù)資源都是統(tǒng)一管理、統(tǒng)一運(yùn)維、統(tǒng)一分析,并為公司業(yè)務(wù)發(fā)展提供服務(wù)和數(shù)據(jù)支持。因?yàn)閿?shù)據(jù)資源集中保存與維護(hù),就存在數(shù)據(jù)的共享和分發(fā)問(wèn)題。
[0003]數(shù)據(jù)整合集成是企業(yè)信息化管理的有效手段,通過(guò)將分布在企業(yè)各個(gè)系統(tǒng)和數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行提取、梳理、統(tǒng)一維護(hù),建立數(shù)據(jù)權(quán)威庫(kù)。可以有效降低企業(yè)信息化建設(shè)成本,提供企業(yè)信息化水平,為企業(yè)發(fā)展戰(zhàn)略提供快速的數(shù)據(jù)支持。數(shù)據(jù)整合以后就需要進(jìn)行共享,這樣才能支撐企業(yè)的業(yè)務(wù)活動(dòng),所以需要一種手段實(shí)現(xiàn)數(shù)據(jù)的分發(fā),并支持?jǐn)?shù)據(jù)的實(shí)時(shí)同步變更。但現(xiàn)有的技術(shù)存在如下缺點(diǎn):
1.只能支持業(yè)務(wù)中有限的數(shù)據(jù),導(dǎo)致業(yè)務(wù)耦合性太強(qiáng),不具有通用性和系統(tǒng)迀移性。
[0004]2.與權(quán)威庫(kù)的集成方式單一,導(dǎo)致集成困難,系統(tǒng)改造難度大。
[0005]3.無(wú)法對(duì)推動(dòng)的數(shù)據(jù)進(jìn)行精密的控制,無(wú)法對(duì)數(shù)據(jù)進(jìn)行靈活的修改。
[0006]4.針對(duì)關(guān)系型數(shù)據(jù)庫(kù),API接口、WebService接口,文本文件等,不支持多種數(shù)據(jù)目標(biāo)庫(kù)。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的在于提供Hose基于規(guī)則的數(shù)據(jù)推送系統(tǒng)及方法,為解決現(xiàn)有數(shù)據(jù)的分發(fā),并支持?jǐn)?shù)據(jù)的實(shí)時(shí)同步變更的技術(shù)所存在的問(wèn)題及限制,為了實(shí)現(xiàn)數(shù)據(jù)變更實(shí)時(shí)的推送給目標(biāo)庫(kù)而搭建Hose基于規(guī)則的數(shù)據(jù)推送系統(tǒng),采用獨(dú)創(chuàng)的插入式設(shè)計(jì)架構(gòu),實(shí)現(xiàn)系統(tǒng)中多個(gè)組件按需插入,不需要時(shí)直接卸載或者替換,在服務(wù)器中,設(shè)置多個(gè)連接器和一個(gè)驅(qū)動(dòng)引擎,在驅(qū)動(dòng)中插入過(guò)濾器、規(guī)則庫(kù)、處理器和日志加料器等,并將驅(qū)動(dòng)中的對(duì)象進(jìn)行有序的組合,以便處理數(shù)據(jù)推送請(qǐng)求;本發(fā)明所述Hose基于規(guī)則的數(shù)據(jù)推送方法采用推動(dòng)驅(qū)動(dòng)的方式將數(shù)據(jù)推送給目標(biāo)庫(kù),在進(jìn)行數(shù)據(jù)推送時(shí),以驅(qū)動(dòng)引擎為容器,驅(qū)動(dòng)為核心,對(duì)推送數(shù)據(jù)和推送過(guò)程精確控制和監(jiān)控,針對(duì)推動(dòng)的數(shù)據(jù)運(yùn)用規(guī)則,變更數(shù)據(jù),綱要映射,完成被推送的數(shù)據(jù)的推送。
[0008]本發(fā)明通過(guò)下述技術(shù)方案實(shí)現(xiàn):Hose基于規(guī)則的數(shù)據(jù)推送系統(tǒng),包括權(quán)威庫(kù)、服務(wù)器及目標(biāo)庫(kù),在所述服務(wù)器內(nèi)設(shè)置有驅(qū)動(dòng)引擎、監(jiān)聽(tīng)器及多個(gè)連接器,所述連接器與驅(qū)動(dòng)引擎相連接;在所述驅(qū)動(dòng)引擎內(nèi)設(shè)置有驅(qū)動(dòng)管理器、驅(qū)動(dòng)引擎日志記錄器及多個(gè)驅(qū)動(dòng),所述連接器與驅(qū)動(dòng)相連接,在所述驅(qū)動(dòng)內(nèi)按數(shù)據(jù)處理流程順序設(shè)置有過(guò)濾器、規(guī)則庫(kù)、處理器及日志記錄器;
所述服務(wù)器為一個(gè)運(yùn)行的Hose系統(tǒng); 所述驅(qū)動(dòng)引擎,通過(guò)驅(qū)動(dòng)管理器,管理所述驅(qū)動(dòng)的生命周期,進(jìn)行驅(qū)動(dòng)創(chuàng)建、刪除、變更、啟動(dòng)及關(guān)閉操作;
所述驅(qū)動(dòng)引擎日志記錄器,記錄包括對(duì)驅(qū)動(dòng)本身新增、刪除、變更、啟動(dòng)及關(guān)閉的操作記錄;
所述驅(qū)動(dòng)管理器,一種可視化的對(duì)驅(qū)動(dòng)進(jìn)行管理的工具;
所述驅(qū)動(dòng),處理權(quán)威庫(kù)與目標(biāo)庫(kù)的數(shù)據(jù)推送分發(fā),支持多驅(qū)動(dòng),多權(quán)威庫(kù)和多目標(biāo)庫(kù);所述過(guò)濾器,將所述驅(qū)動(dòng)不需要推送的數(shù)據(jù)過(guò)濾掉,對(duì)推送的數(shù)據(jù)進(jìn)行精確的控制;所述規(guī)則庫(kù),對(duì)推送的數(shù)據(jù)進(jìn)行控制,執(zhí)行額外的業(yè)務(wù)邏輯;并針對(duì)不同的驅(qū)動(dòng)和推送要求進(jìn)行靈活配置規(guī)則;
所述處理器,根據(jù)目標(biāo)庫(kù)的不同分別對(duì)應(yīng)不同的處理器,設(shè)置有JDBC處理器、LDAP處理器及WebService處理器;
所述日志記錄器,將數(shù)據(jù)推送過(guò)程中產(chǎn)生的數(shù)據(jù)審計(jì)記錄到文件中;
所述連接器,為服務(wù)器的入口,包括基于TCP/IP的連接器、基于HTTP協(xié)議的連接器、基于JMS消息的連接器、基于內(nèi)存的連接器;
所述監(jiān)聽(tīng)器,監(jiān)聽(tīng)通過(guò)不同渠道發(fā)送過(guò)來(lái)的數(shù)據(jù)推送請(qǐng)求,是權(quán)威庫(kù)與Hose數(shù)據(jù)推送集成通信的入口,根據(jù)權(quán)威庫(kù)的技術(shù)異構(gòu),相關(guān)限制,提供與之對(duì)應(yīng)的監(jiān)聽(tīng)器對(duì)象,方便集成,并采用TCP/IP技術(shù)或HTTP技術(shù)或JMS技術(shù)將監(jiān)聽(tīng)到的數(shù)據(jù)推送請(qǐng)求通過(guò)連接器引入服務(wù)器內(nèi)。
[0009]進(jìn)一步的為更好的實(shí)現(xiàn)本發(fā)明所述系統(tǒng),特別設(shè)置有下述結(jié)構(gòu):在所述服務(wù)器內(nèi)還設(shè)置有控制臺(tái),所述控制臺(tái),基于瀏覽器的可視化管理工具,用于監(jiān)控服務(wù)器狀態(tài),結(jié)合驅(qū)動(dòng)管理器管理驅(qū)動(dòng)的啟動(dòng)和停止,以及驅(qū)動(dòng)創(chuàng)建、刪除、編輯,并查看驅(qū)動(dòng)日志信息操作。
[0010]進(jìn)一步的為更好的實(shí)現(xiàn)本發(fā)明所述系統(tǒng),特別設(shè)置有下述結(jié)構(gòu):在所述驅(qū)動(dòng)引擎內(nèi)還設(shè)置有集群組件,所述集群組件,在集群多節(jié)點(diǎn)部署環(huán)境中驅(qū)動(dòng)引擎采用集群組件將驅(qū)動(dòng)的配置變更廣播給集群中其他的服務(wù)器,確保驅(qū)動(dòng)配置集群中保持同步。
[0011]Hose基于規(guī)則的數(shù)據(jù)推送方法,包括以下步驟:
1)所述監(jiān)聽(tīng)器監(jiān)聽(tīng)通過(guò)不同渠道發(fā)送過(guò)來(lái)的數(shù)據(jù)推送請(qǐng)求,而后將數(shù)據(jù)推送請(qǐng)求通過(guò)連接器傳遞給驅(qū)動(dòng)引擎;
2)所述驅(qū)動(dòng)引擎接收從連接器發(fā)送過(guò)來(lái)的數(shù)據(jù)推送請(qǐng)求,查詢驅(qū)動(dòng)引擎中所有可用的驅(qū)動(dòng),依次調(diào)用驅(qū)動(dòng)處理數(shù)據(jù)推送請(qǐng)求;
3)驅(qū)動(dòng)處理請(qǐng)求,所述驅(qū)動(dòng)接收到從驅(qū)動(dòng)引擎?zhèn)鬟f過(guò)來(lái)的數(shù)據(jù)推送請(qǐng)求,驅(qū)動(dòng)首先檢查路由標(biāo)識(shí),如果不支持此路由標(biāo)識(shí),則直接返回,數(shù)據(jù)推送結(jié)束;如果支持該路由標(biāo)識(shí),則將該數(shù)據(jù)推送請(qǐng)求傳遞給過(guò)濾器;
4)過(guò)濾器處理請(qǐng)求,所述過(guò)濾器接收到驅(qū)動(dòng)傳遞過(guò)來(lái)的數(shù)據(jù)推送請(qǐng)求后,過(guò)濾器將對(duì)數(shù)據(jù)推送請(qǐng)求中驅(qū)動(dòng)不支持的數(shù)據(jù)進(jìn)行過(guò)濾,而后將能夠被推送的數(shù)據(jù)推送請(qǐng)求傳遞給規(guī)則庫(kù);
5)針對(duì)請(qǐng)求數(shù)據(jù)運(yùn)用規(guī)則,所述規(guī)則庫(kù)接收到數(shù)據(jù)推送請(qǐng)求,對(duì)該數(shù)據(jù)推送請(qǐng)求應(yīng)用規(guī)則庫(kù)內(nèi)配置的規(guī)則,規(guī)則運(yùn)行完成,執(zhí)行步驟6),將數(shù)據(jù)推送請(qǐng)求傳遞給處理器;在規(guī)則運(yùn)行過(guò)程中,可以中斷推送過(guò)程直接結(jié)束;
6)處理器處理請(qǐng)求,所述處理器接收到數(shù)據(jù)推送請(qǐng)求,從數(shù)據(jù)推送請(qǐng)求中獲得被推送的數(shù)據(jù),將被推送的數(shù)據(jù)通過(guò)綱要映射轉(zhuǎn)換成目標(biāo)庫(kù)能夠識(shí)別的格式。
[0012]進(jìn)一步的為更好的實(shí)現(xiàn)本發(fā)明所述方法,特別采用下述設(shè)置方式:在執(zhí)行步驟I)所述監(jiān)聽(tīng)器監(jiān)聽(tīng)通過(guò)不同渠道發(fā)送過(guò)來(lái)的數(shù)據(jù)推送請(qǐng)求,將數(shù)據(jù)推送請(qǐng)求通過(guò)連接器傳遞給驅(qū)動(dòng)引擎之前還設(shè)置有以下步驟:
步驟一、權(quán)威庫(kù)監(jiān)聽(tīng)處理事件,權(quán)威庫(kù)從事件中獲得原始數(shù)據(jù),并為原始數(shù)據(jù)生成一個(gè)能被驅(qū)動(dòng)所支持且代表目標(biāo)庫(kù)的路由標(biāo)識(shí);
步驟二、權(quán)威庫(kù)依據(jù)推送時(shí)機(jī)、目標(biāo)庫(kù)、數(shù)據(jù)類型和操作類型,將原始數(shù)據(jù)進(jìn)行整合規(guī)范,而后將規(guī)范化后的數(shù)據(jù)和路由標(biāo)識(shí)封裝為XML格式化數(shù)據(jù),并將XML格式化數(shù)據(jù)作為數(shù)據(jù)推送請(qǐng)求發(fā)送至服務(wù)器的連接器內(nèi)。
[0013]進(jìn)一步的為更好的實(shí)現(xiàn)本發(fā)明所述方法,特別采用下述設(shè)置方式:還包括以下步驟:
7)目標(biāo)庫(kù)處理數(shù)據(jù),經(jīng)步驟6)后,所述目標(biāo)庫(kù)接收到被推送的數(shù)據(jù),首先對(duì)所接收的被推送的數(shù)據(jù)的合法性及有效性進(jìn)行驗(yàn)證,經(jīng)驗(yàn)證后被推送的數(shù)據(jù)的目標(biāo)庫(kù)是關(guān)系型數(shù)據(jù)庫(kù)則直接使用JDBC將數(shù)據(jù)寫(xiě)入;經(jīng)驗(yàn)證后若被推送的數(shù)據(jù)的目標(biāo)庫(kù)為WebService服務(wù)或者RESTful則將被推送的數(shù)據(jù)寫(xiě)入WebService服務(wù)端。
[0014]進(jìn)一步的為更好的實(shí)現(xiàn)本發(fā)明所述方法,特別采用下述設(shè)置方式:還包括下述步驟:
8)持久化數(shù)據(jù)并進(jìn)行數(shù)據(jù)整合,經(jīng)步驟7)后,所述目標(biāo)庫(kù)將接收到的被推送的數(shù)據(jù)進(jìn)行持久化,并且被推送的數(shù)據(jù)與權(quán)威庫(kù)保持關(guān)聯(lián)關(guān)系。
[0015]進(jìn)一步的為更好的實(shí)現(xiàn)本發(fā)明所述方法,特別采用下述設(shè)置方式:還包括下述步驟:
9)經(jīng)步驟8)后,所述處理器調(diào)用日志記錄器,將數(shù)據(jù)推送請(qǐng)求處理過(guò)程的審計(jì)信息記錄下來(lái),保存到磁盤(pán)中,處理器完成數(shù)據(jù)推送請(qǐng)求處理和數(shù)據(jù)推送,返回到驅(qū)動(dòng)引擎進(jìn)行下一步處理。
[0016]進(jìn)一步的為更好的實(shí)現(xiàn)本發(fā)明所述方法,特別采用下述設(shè)置方式:還包括下述步驟:
10)經(jīng)步驟9)后,所述驅(qū)動(dòng)引擎接收到數(shù)據(jù)推送請(qǐng)求處理結(jié)果,通過(guò)連接器響應(yīng)權(quán)威庫(kù),告知權(quán)威庫(kù)數(shù)據(jù)推送結(jié)果是成功或者失敗,并附有推送失敗的原因,據(jù)此完成一個(gè)數(shù)據(jù)推送請(qǐng)求。
[0017]進(jìn)一步的為更好的實(shí)現(xiàn)本發(fā)明所述方法,特別采用下述設(shè)置方式:還包括下述步驟:
11)經(jīng)步驟10)后,所述處理器會(huì)將被推送的數(shù)據(jù)封裝成目標(biāo)庫(kù)能夠識(shí)別的數(shù)據(jù)格式,在進(jìn)行數(shù)據(jù)封裝時(shí),針對(duì)不同的目標(biāo)庫(kù)類型,采用不同的處理器,將數(shù)據(jù)封裝后,推送給相應(yīng)的目標(biāo)庫(kù)。
[0018]本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn)及有益效果:
(I)本發(fā)明為解決現(xiàn)有數(shù)據(jù)的分發(fā),并支持?jǐn)?shù)據(jù)的實(shí)時(shí)同步變更的技術(shù)所存在的問(wèn)題及限制,采用獨(dú)創(chuàng)的插入式設(shè)計(jì)架構(gòu),實(shí)現(xiàn)系統(tǒng)中多個(gè)組件按需插入,不需要時(shí)直接卸載或者替換,在服務(wù)器中,設(shè)置多個(gè)連接器和一個(gè)驅(qū)動(dòng)引擎,在驅(qū)動(dòng)中插入過(guò)濾器、規(guī)則庫(kù)、處理器和日志加料器等,并將驅(qū)動(dòng)中的對(duì)象進(jìn)行有序的組合,以便處理數(shù)據(jù)推送請(qǐng)求;本發(fā)明同時(shí)以驅(qū)動(dòng)引擎為容器,驅(qū)動(dòng)為核心,對(duì)推送數(shù)據(jù)和推送過(guò)程精確控制和監(jiān)控,針對(duì)推動(dòng)的數(shù)據(jù)運(yùn)用規(guī)則,變更數(shù)據(jù),綱要映射,完成被推送的數(shù)據(jù)的推送。
[0019](2)本發(fā)明多驅(qū)動(dòng)支持,每個(gè)驅(qū)動(dòng)支持將數(shù)據(jù)從權(quán)威庫(kù)推送到目標(biāo)庫(kù)中。各驅(qū)動(dòng)之間獨(dú)立,無(wú)相互影響。支