專利名稱:一種圖形聚合中的消息分發方法及裝置、系統的制作方法
技術領域:
本發明涉及電信和計算機相關技術領域,尤其涉及一種圖形聚合(Mashup)中的消息分發方法及裝置、系統。
背景技術:
聚合(Mashup)在局域網絡環境(如企業的局域網)中代表著整合不同來源的內容以提供統一完整體驗的WEB站點或應用程序,已經成為了快速組裝新的應用程序的一種趨勢。WEB2. O技術的應用,成為Mashup數據源展現的主要方式。 在局域網的數據源通過Mashup后,要將其友好的展現給用戶,才能達到數據進行Mashup的目的,因此,微技(Widget)作為WEB2. O的具體展現手段,迅速發展。Widget是信息或內容以獨立Web應用的形式在用戶側的呈現,它通過和遠端服務器互動,在客戶端上自動顯示和更新本地和遠端的數據。Widget本身上并不是一種新的技術,而是已有技術應用的改良,本質上是“JavaScript+Html5+CSS”的組合應用。移動Widget是將Widget的理念移植到移動終端,以Widget的形式將移動增值業務部署到移動終端上,通過調用Mashup整合后的數據,將有價值的信息迅速通過良好的方式展示給移動用戶。對于移動用戶來說,具有業務體驗統一,獲取和使用方便等優點;對于服務提供商(SP)來說具有業務開發敏捷,測試簡單,業務流程調整靈活的等特點。Widget的出現,以及移動Widget的較大范圍應用,也給很多諸如煤礦等傳統工業的生產監控提供了安全生產決策的便利,并大大其監控效率。Widget技術和Mashup技術正在逐漸融合使用,生成能為用戶提供更大信息量的應用。圖形Mashup的含義包括以下兩個方面一、將需要的Widget組件拼裝放置在新的應用頁面上;二、圖形Mashup通過連接數據源,進行圖形Mashup :即對來自底層數據源的消息進行Mashup后,發送到業務邏輯處理平臺,業務邏輯處理平臺根據相應的業務邏輯流程進行處理,并將處理后的消息分發給Widget組件。其中,消息如何發送到指定的Widget組件是圖形Mashup中的一個關鍵問題。但是現有的方式在Widget應用端獲取消息數據時,需要Widget組件通過定時的輪詢方式獲取數據源消息,但是這種方式存在缺陷,首先,其耦合程度較大,Widget應用包含表現層、業務邏輯層、數據源連接等功能,對于移動終端來說會耗費較多資源,同時,后期的升級和維護成本較高;其次,采取傳統的輪詢方式進行通信,如果數據源的消息數據的產生頻率比較低,那么每次的輪詢通信就不一定獲取到所需的消息數據,其效率明顯降低,耗費了移動網絡通信資源。
發明內容
有鑒于此,本發明的主要目的在于提供一種圖形聚合中的消息分發方法及系統,能夠將來自數據源的消息主動推送給相應Widget應用端的指定Widget組件,降低Widget應用端和邏輯層、數據源之間的耦合性。
為達到上述目的,本發明的技術方案是這樣實現的本發明提供了一種圖形Mashup中的消息分發裝置,所述裝置包括發布訂閱關系表、事件驅動模塊、數據源連接模塊和消息推送模塊;其中,發布訂閱關系表,用于保存已定義的數據源與Widget應用端各Widget組件之間的訂閱關系;數據源連接模塊,用于接收數據源發送的消息,并傳送給所述事件驅動模塊;事件驅動模塊,用于對所述數據源連接模塊傳送的消息進行解析,獲得所述消息的名稱和發布者信息,并基于所述消息的名稱和發布者信息在所述發布訂閱關系表中查詢對應所述消息的訂閱關系,根據所查詢到的訂閱關系,將所述消息通過所述消息推送模塊推送給相應Widget應用端的指定Widget組件。在上述方案中,所述裝置還包括預定配置的包含有事件規則的事件規則定義表, 所述事件規則,表示對指定消息的邏輯處理規則;事件驅動模塊,還用于從所查詢到的訂閱關系中提取所述消息的訂閱者信息,并基于所述消息的名稱、發布者信息和訂閱者信息,查詢所述事件規則定義表,如果存在與所述消息的名稱、發布者信息和訂閱者信息相符合的事件規則,則基于所述事件規則對所述消息進行邏輯處理后,通過所述消息推送模塊推送給相應Widget應用端ID的指定Widget組件;如果不存在與所述消息的名稱、發布者信息和訂閱者信息相符合的事件規則,則直接將所述消息通過消息推送模塊推送給相應Widget應用端ID的指定Widget組件。在上述方案中,所述裝置還包括消息接收模塊,用于接收來自Widget應用端各Widget組件的消息,并傳送給所述事件驅動模塊;所述事件驅動模塊,還用于對所述消息接收模塊傳送的消息進行解析,獲得所述消息的名稱和訂閱者信息,并基于所述消息的名稱和訂閱者信息在所述發布訂閱關系表中查詢對應所述消息的訂閱關系,根據所查詢到的訂閱關系,將所述消息通過所述數據源連接模塊發送給指定的數據源。在上述方案中,所述裝置還包括發布訂閱注冊請求模塊和訂閱者注冊模塊;其中,發布訂閱注冊請求模塊,用于接收操作人員輸入的需注冊訂閱關系的相關信息,將需注冊訂閱關系的相關信息按照預定格式打包,生成訂閱請求并發送給所述訂閱者注冊模塊;訂閱者注冊模塊,用于接收所述發布訂閱注冊請求模塊發送的訂閱請求,并將所述訂閱請求中的訂閱關系注冊到所述發布訂閱關系表。在上述方案中,所述裝置還包括發布訂閱管理模塊;發布訂閱注冊請求模塊,用于接收操作人員輸入的需取消訂閱關系的相關信息,將需取消訂閱關系的相關信息按照預定格式打包,生成取消訂閱請求并發送給所述發布訂閱管理模塊;發布訂閱管理模塊,用于接收所述發布訂閱注冊請求模塊發送的取消訂閱請求,并將所述訂閱請求中的訂閱關系從所述發布訂閱關系表中刪除。本發明還提供了一種圖形Mashup中的消息分發系統,所述系統包括如權利要求I至5任一項所述圖形Mashup中的消息分發裝置和設置在Widget應用端的至少一個消息接口,一個消息接口連接一個Widget組件;所述消息接口包括消息接收接口,用于接收所述消息推送模塊推送給相應Widget組件的消息。在上述方案中,所述消息接口還包括消息發送接口,用于將相應Widget組件的消息發送給所述消息分發裝置的消息接收模塊。本發明還提供了一種圖形Mashup中的消息分發方法,所述方法包括將已定義的數據源與Widget應用端各Widget組件之間的訂閱關系保存到發布訂閱關系表;數據源連接模塊接收數據源發送的消息,并傳送給事件驅動模塊;事件驅動模塊對所述數據源連接模塊傳送的消息進行解析,獲得所述消息的名稱和發布者信息;事件驅動模塊基于所述消息的名稱和發布者信息在所述發布訂閱關系表中查詢對應所述消息的訂閱關系,根據所查詢到的訂閱關系,將所述消息通過消息推送模塊推送給相應Widget應用端的指定Widget組件。在上述方案中,所述方法還包括預定配置的包含有事件規則的事件規則定義表,所述事件規則,表示對指定消息的邏輯處理規則;所述根據所查詢到的訂閱關系,將所述消息通過消息推送模塊推送給相應Widget 應用端的指定Widget組件,包括事件驅動模塊從所查詢到的訂閱關系中提取所述消息的訂閱者信息,并基于所述消息的名稱、發布者信息和訂閱者信息,查詢所述事件規則定義表,如果存在與所述消息的名稱、發布者信息和訂閱者信息相符合的事件規則,則基于所述事件規則對所述消息進行邏輯處理后,通過所述消息推送模塊推送給相應Widget應用端ID的指定Widget組件;如果不存在與所述消息的名稱、發布者信息和訂閱者信息相符合的事件規則,則直接將所述消息通過消息推送模塊推送給相應Widget應用端ID的指定Widget 組件。在上述方案中,所述方法還包括消息接收模塊接收來自Widget應用端各Widget組件的消息,并傳送給事件驅動模塊;事件驅動模塊對所述消息接收模塊傳送的消息進行解析,獲得所述消息的名稱和訂閱者信息,并基于所述消息的名稱和訂閱者信息在所述發布訂閱關系表中查詢對應所述消息的訂閱關系,根據所查詢到的訂閱關系,將所述消息通過所述數據源連接模塊發送給指定的數據源。在上述方案中,所述將已定義的數據源與Widget應用端各Widget組件之間的訂閱關系保存到發布訂閱關系表,包括發布訂閱注冊請求模塊接收操作人員輸入的需注冊訂閱關系的相關信息,將需注冊訂閱關系的相關信息按照預定格式打包,生成訂閱請求并發送給訂閱者注冊模塊;訂閱者注冊模塊接收所述發布訂閱注冊請求模塊發送的訂閱請求,并將所述訂閱請求中的訂閱關系注冊到所述發布訂閱關系表。在上述方案中,所述方法還包括發布訂閱注冊請求模塊接收操作人員輸入的需取消訂閱關系的相關信息,將需取消訂閱關系的相關信息按照預定格式打包,生成取消訂閱請求并發送給所述發布訂閱管理模塊;
發布訂閱管理模塊接收所述發布訂閱注冊請求模塊發送的取消訂閱請求,并將所述訂閱請求中的訂閱關系從所述發布訂閱關系表中刪除。本發明圖形Mashup中的消息分發方法及裝置、系統,能夠根據預先定義的訂閱關系,將來自數據源的消息主動推送給相應Wi dge t應用端的指定Wi dge t組件,通過消息分發裝置及系統和邏輯層、數據源進行交互處理,將Widget應用端和邏輯層、數據源之間的關系進行解耦合,Widget應用端 只負責表現層的功能,不再參與和邏輯層之間的運算邏輯流程以及與底層數據源之間的交互,將Widget應用端普遍存在的高耦合現象消除,降低了Widget應用端和邏輯層、數據源之間的稱合性,為使用Widget組件生成的圖形Mashup應用提供良好的后臺數據連接支持,并且還提高了系統的信息獲取性能。此外,本發明的消息分發裝置及系統,將各個邏輯層進行平臺化,各層平臺之間只通過簡單的接口和通用的消息方式進行通信連接,從而使得系統趨于分層的平臺化,使得各個分層平臺之間耦合度極低,任何一層平臺的改造都與系統的其他部分完全無關聯,提高了系統的可維護性。
圖I為本發明實施例一中消息分發系統的組成結構示意圖;圖2為本發明實施例一中事件規則的XML格式示意圖;圖3為本發明實施例二中消息分發方法的實現流程圖;圖4為本發明實施例二將所述訂閱關系注冊到發布訂閱關系表的實現流程圖;圖5為本發明實施例二事件驅動模塊基于事件規則對消息進行邏輯處理的實現流程圖;圖6為本發明實施例二 Widget應用端的消息發送接口向事件驅動模塊發送消息的實現流程圖;圖7為本發明實施例二事件驅動模塊向Widget應用端的消息接收接口發送消息的實現流程圖。
具體實施例方式本發明的基本思想是提供一種圖形Mashup中的消息分發方法及裝置、系統,應用于基于Widget組件的圖形Mashup中,連接在數據源與Widget應用端之間,能夠將來自數據源的消息直接并主動的推送給Widget應用端的指定Widget組件。實施例一本實施例中,圖形Mashup中的消息分發系統,如圖I所示,該系統主要包括位于服務器端的消息分發裝置、以及位于Widget應用端的消息接口,其中,消息分發裝置可以包括發布訂閱注冊請求模塊、發布訂閱注冊中心、消息事件驅動處理單元,發布訂閱注冊中心可以包括訂閱者注冊模塊、發布訂閱管理模塊和發布訂閱關系表,消息事件驅動處理單元包括消息接收模塊、消息推送模塊、數據源連接模塊、事件驅動模塊、事件規則定義表和內存數據庫;位于Widget應用端側的消息接口,一個消息接口包括一個消息發送接口和一個消息接收接口,消息接口可以是至少一個,一個消息接口對應一個Widget組件,可以由Widget應用端的Widget組件數量來決定。
發布訂閱注冊請求模塊是消息分發裝置提供給獲得權限的普通用戶或者訂閱關系管理者的接口,獲得權限的普通用戶或者訂閱關系管理者可以通過該接口將需要注冊或取消的訂閱關系在消息分發裝置的發布訂閱注冊中心進行訂閱關系的注冊或取消。具體地,發布訂閱注冊請求模塊主要用于接收操作人員輸入的需注冊訂閱關系的相關信息,將需注冊訂閱關系的相關信息按照預定格式打包,生成訂閱請求并發送給所述訂閱者注冊模塊;此外,還用于接收操作人員輸入的需取消訂閱關系的相關信息,將需取消訂閱關系的相關信息按照預定格式打包,生成取消訂閱請求并發送給所述發布訂閱管理模塊;這里,訂閱關系的相關信息主要可以包括訂閱者信息、發布者信息、以及需訂閱或需取消訂閱的消息。其中,發布者即為數據源,發布者信息可以包括數據源的地址、標識等,訂閱者即為Widget組件,訂閱者信息可以包括Widget組件的唯一標識。每個Widget組件都有一個唯一標識,這個唯一標識可以使用Java的j ava. util. UUID。在整個消息分發裝置的架構中,發布訂閱注冊中心,主要用于處理所有連接到消息分發裝置的Widget應用端各Widget組件和數據源之間的訂閱關系,各Widget組件和數 據源之間的訂閱關系都由發布訂閱注冊中心進行管理并記錄在本地的發布訂閱關系表中。其中,訂閱者注冊模塊,用于接收所述發布訂閱注冊請求模塊發送的訂閱請求,并將所述訂閱請求中的訂閱關系注冊到所述發布訂閱關系表。具體地,接收發布訂閱注冊請求模塊發送的訂閱請求,查詢所述發布訂閱關系表,如果所述訂閱請求中的訂閱關系在所述發布訂閱關系表中不存在,則將所述訂閱請求中包含的訂閱關系寫入到發布訂閱關系表中,在消息分發裝置進行訂閱關系的注冊;如果所述訂閱請求中的訂閱關系在所述發布訂閱關系表中存在,則不寫入。發布訂閱管理模塊,用于接收所述發布訂閱注冊請求模塊發送的取消訂閱請求,并將所述訂閱請求中的訂閱關系從所述發布訂閱關系表中刪除。具體地,接收發布訂閱注冊請求模塊發送的取消訂閱請求,查詢所述發布訂閱關系表,如果所述取消訂閱請求中的訂閱關系在所述發布訂閱關系表中不存在,則不動作;如果所述取消訂閱請求中的訂閱關系在所述發布訂閱關系表中存在,則將所述取消訂閱請求中包含的訂閱關系從發布訂閱關系表中刪除,在消息分發裝置進行訂閱關系的取消。實際應用中,發布訂閱注冊請求模塊發出的訂閱請求可以是一個TCP數據包,該TCP數據包中的訂閱關系可以是預定義的“X訂閱了 Y的Z消息”的形式,其中,X表示的訂閱者,Y表示的是發布者,Z表示訂閱的相關信息。發布訂閱注冊請求模塊使用Java Socket將訂閱請求發送到發布訂閱注冊中心的訂閱者注冊模塊;訂閱者注冊模塊監聽并接收訂閱請求,將所述訂閱請求拆包,獲得其中的訂閱關系并寫入到發布訂閱關系表中。發布訂閱注冊請求模塊發出的取消訂閱請求也可以是一個TCP數據包,該TCP數據包中的訂閱關系可以是預定義的“X取消訂閱Y的Z消息”的形式,其中,X表示的訂閱者,Y表示的是發布者,Z表示訂閱的相關信息。發布訂閱注冊請求模塊使用Java Socket將取消訂閱請求發送到發布訂閱注冊中心的發布訂閱管理模塊;發布訂閱管理模塊監聽并接收取消訂閱請求,將所述取消訂閱請求拆包,獲得需取消的訂閱關系,并將所述需取消的訂閱關系從發布訂閱關系表中刪除。這里,發布訂閱關系表包含有各Widget組件和各數據源之間的訂閱關系。消息事件驅動處理單元,主要用于根據發布訂閱注冊中心中的發布訂閱關系表,傳遞數據源與Widget應用端之間交互的消息。其中,事件驅動模塊主要用于實現兩部分功能一是,對于來自Widget應用端的消息,通過查詢發布訂閱關系表,將所述消息通過數據源連接模塊發送給指定的數據源。二是,對于來自數據源的消息進行邏輯處理后通過消息推送模塊將所述消息推送給相應Widget應用端的指定Widget組件。 具體地,事件驅動模塊通過消息接收模塊接收來自Widget應用端的消息,對所述消息進行解析,獲取所述消息的特征(包括所述消息的名稱、以及對應的Widget應用端ID和訂閱者信息);讀取發布訂閱關系表,基于所述消息的特征在所述發布訂閱關系表中查詢相應的訂閱關系,進一步獲得所述消息的特征(包括所述消息的發布者信息);并將所述消息通過數據源連接模塊發送給相應的數據源。這里,事件驅動模塊將所述消息及所述消息的發布者信息一起發送給數據源連接模塊,數據源連接模塊可以根據所述消息的發布者信息,將所述消息發送給相應的數據源。具體地,事件驅動模塊通過數據源連接模塊接收來自數據源的消息,對所述消息進行解析,獲取所述消息的特征(包括所述消息的名稱和發布者信息);讀取發布訂閱關系表,基于所述消息的特征在所述發布訂閱關系表中查詢相應的訂閱關系,進一步獲得所述消息的特征(包括所述消息對應的Widget應用端ID、和訂閱者信息);基于所述消息的特征,查詢事件規則定義表,如果存在與所述消息的特征相符合的事件規則,則基于所述事件規則對所述消息進行邏輯處理后,通過所述消息推送模塊推送給相應Widget應用端ID的指定Widget組件;如果不存在與所述消息的特征相符合的事件規則,則無需進行邏輯處理,直接將所述消息通過消息推送模塊推送給相應Widget應用端ID的指定Widget組件。這樣,通過事件驅動模塊實現了對指定消息的邏輯處理,滿足了復雜工業應用中的業務邏輯處理需求。這里的邏輯處理具體可以是按照預設的邏輯順序對相應的消息進行短暫存儲并順序發送,也可以是對相應的消息進行綜合業務邏輯處理。這里,事件驅動模塊將所述消息及所述消息的訂閱者信息一起發送給消息推送模塊,消息推送模塊可以根據所述消息的訂閱者信息,將所述消息發送給相應Widget應用的Widget組件。這里,所述消息的特征可以包括所對應Widget應用的ID、訂閱者即Widget組件的信息(如名稱等)、發布者即數據源的信息(如名稱等)、以及所述消息的名稱等。事件規則定義表包含事件規則,存儲在消息事件驅動處理單元,事件規則表示對指定消息的邏輯處理規則。事件規則定義表采用XML文件的形式實現,其中事件規則定義的格式如圖2所示。其中,〈rules〉表示所定義的多種事件規則,〈rule〉表示一條具體的事件規則,〈widgetid〉表示相應Widget應用的ID,〈widgetpub〉表示指定消息的發布者即數據源的信息,〈widgetsub〉表示指定消息的訂閱者即Widget組件的信息,<messagenaem>表示指定消息的名稱,〈processclass〉是對于指定消息需要調用的處理類的類名,〈method〉表示處理類的方法名。實際應用中,事件驅動模塊基于事件規則對指定消息進行邏輯處理時,通過Java反射機制實現。具體地,事件驅動模塊讀取事件規則中處理該消息需要調用的處理類的類名和方法名,使用Java反射機制,對該處理類進行實例化后,調用該處理類的方法名,將消息作為參數傳遞給該處理類進行相應的邏輯處理,并獲取返回的消息內容。事件驅動模塊,還可以用于將未能及時發出的消息寫入內存數據庫中進行保存。例如,可以在連接中斷(如消息推送模塊和Widget應用端連接超時、或數據源連接模塊與數據源之間連接超時)等情況下,事件驅動模塊將要發出的消息發出寫入到內存數據庫中進行保存。在連接正常后,再讀取所述內存數據庫中的消息并按照上述的方式發出。內存數據庫用于存儲未能及時發出的消息。具體地,對于每一條消息,內存數據庫均保存有該消息的有效時間,內存數據庫基于各消息的有效時間,定期清除無效的消息。具體地,內存數據庫定期基于各消息的有效時間判斷該消息是否有效,對于有效的消息繼續保存,對于無效的消息刪除。數據源連接模塊用于在數據源與事件驅動模塊之間進行消息傳遞。具體地,數據源連接模塊,用于將來自不同數據源的消息以輪詢的方式讀取出來,并將讀取出來的消息傳送給事件驅動模塊;以及接收事件驅動模塊發送的消息及所述消息對應的發布者信息,并基于所述消息對應的發布者信息將所述消息發送給相應的數據源。消息接收模塊用于接收來自Widget應用端的消息,并傳遞給事件驅動模塊。實際應用中,消息接收模塊可以使用Java Socket方式實現,在與Widget應用端建立連接后,隨時接收來自Widget應用端各Widget組件的消息。 消息推送模塊,用于主動將來自事件驅動模塊的消息推送給相應Widget應用端的指定Widget組件。具體地,接收事件驅動模塊發送的消息及所述消息對應的Widget應用端ID、和訂閱者信息,并基于所述消息對應的Widget應用端ID、和訂閱者信息將所述消息推送給相應Widget應用端的指定Widget組件。實際應用中,消息推送模塊可以使用IBM提供的MQTT消息發布訂閱協議的開源框架實現,和Widget應用端建立長連接并通過該長連接將來自事件驅動模塊的消息實時推送給相應Widget應用端的指定Widget組件。Widget應用端的消息發送接口,連接消息分發裝置的消息接收模塊,將Widget組件要發出的、命令或者返回確認等形式的消息發送給消息分發裝置的消息接收模塊,以通過消息分發裝置傳遞給數據源。Widget應用端的消息接收接口,和消息分發裝置的消息推送模塊建立長連接,用于接收消息分發裝置的消息推送模塊所推送的消息。實際應用中,Widget應用端的消息發送接口可以使用Java Socket在Android平臺上進行實現,調用Android平臺上提供的底層網絡連接功能即如圖I所示的應用平臺底層SDK,和消息分發裝置的消息接收模塊進行連接,消息接收模塊同樣使用Java Socket技術實現。具體地,Widget應用端的消息發送接口與消息分發裝置的消息接收模塊之間建立TCP連接后,將消息通過該TCP連接發送給消息接收模塊。實際應用中,Widget應用端的消息接收接口和消息分發裝置的消息推送模塊保持一個長連接,以心跳檢測作為二者之間的連接保障。Widget應用端的消息接收接口與消息分發裝置的消息推送模塊都可以用IBM的MQTT協議提供的開源框架jar進行實現,以保障二者之間的長連接狀態并使得消息總線的消息推送模塊能夠順利推送數據。上述的數據源可以是傳感器、文件、數據庫、Web服務等,Widget應用端的Widget組件可以由柱狀圖、曲線圖、餅狀圖和表格組成。實施例二本實施例,對于圖形Mashup中的消息分發方法做詳細說明。如圖3所示,一種圖形Mashup中的消息分發方法,包括步驟301 :將已定義的數據源與Widget應用端各Widget組件之間的訂閱關系保存到發布訂閱關系表;
步驟302 :數據源連接模塊接收數據源發送的消息,并傳送給事件驅動模塊;步驟303 :事件驅動模塊對所述數據源連接模塊傳送的消息進行解析,獲得所述消息的名稱和發布者信息,基于所述消息的名稱和發布者信息在所述發布訂閱關系表中查詢對應所述消息的訂閱關系,根據所查詢到的訂閱關系,將所述消息通過消息推送模塊推送給相應Widget應用端的指定Widget組件。這里,所述方法還包括預定配置的包含有事件規則的事件規則定義表,所述事件規則,表示對指定消息的邏輯處理規則;所述根據所查詢到的訂閱關系,將所述消息通過消息推送模塊推送給相應Widget應用端的指定Widget組件,具體過程可以包括事件驅動模塊從所查詢到的訂閱關系中提取所述消息的訂閱者信息,并基于所述消息的名稱、發布者信息和訂閱者信息,查詢所述事件規則定義表,如果存在與所述消息的名稱、發布者信息和訂閱者信息相符合的事件規貝1J,則基于所述事件規則對所述消息進行邏輯處理后,通過所述消息推送模塊推送給相應 Widget應用端ID的指定Widget組件;如果不存在與所述消息的名稱、發布者信息和訂閱者信息相符合的事件規則,則直接將所述消息通過消息推送模塊推送給相應Widget應用端ID的指定Widget組件。這里,所述將已定義的數據源與Widget應用端各Widget組件之間的訂閱關系保存到發布訂閱關系表,包括發布訂閱注冊請求模塊接收操作人員輸入的需注冊訂閱關系的相關信息,將需注冊訂閱關系的相關信息按照預定格式打包,生成訂閱請求并發送給訂閱者注冊模塊;訂閱者注冊模塊接收所述發布訂閱注冊請求模塊發送的訂閱請求,并將所述訂閱請求中的訂閱關系注冊到所述發布訂閱關系表。這里,所述方法還包括發布訂閱注冊請求模塊接收操作人員輸入的需取消訂閱關系的相關信息,將需取消訂閱關系的相關信息按照預定格式打包,生成取消訂閱請求并發送給所述發布訂閱管理模塊;發布訂閱管理模塊接收所述發布訂閱注冊請求模塊發送的取消訂閱請求,并將所述訂閱請求中的訂閱關系從所述發布訂閱關系表中刪除。其中,所述方法還可以包括消息接收模塊接收來自Widget應用端各Widget組件的消息,并傳送給事件驅動模塊;事件驅動模塊對所述消息接收模塊傳送的消息進行解析,獲得所述消息的名稱和訂閱者信息,并基于所述消息的名稱和訂閱者信息在所述發布訂閱關系表中查詢對應所述消息的訂閱關系,根據所查詢到的訂閱關系,將所述消息通過所述數據源連接模塊發送給指定的數據源。下面對上述消息分發方法的具體實現過程做進一步詳細說明。具體地,發布訂閱注冊請求模塊與訂閱者注冊模塊之間交互,將所述訂閱關系注冊到所述發布訂閱關系表的具體處理流程如圖4所示,包括如下步驟步驟401 :發布訂閱注冊請求模塊通過Java Socket TCP連接到發布訂閱注冊中心,與發布訂閱注冊中心的訂閱者注冊模塊建立TCP連接;步驟402 :驗證是否建立連接成功,如果否,則返回執行步驟401,如果是,則繼續步驟403 ;步驟403 :發布訂閱請求模塊發送訂閱請求給訂閱者注冊模塊;具體地,發布訂閱請求模塊將需注冊的訂閱關系相關消息按照預定格式進行組裝,組裝成訂閱請求發送給發布訂閱注冊中心的訂閱者注冊模塊。
消息分發裝置運行中,獲得權限的普通用戶或者訂閱關系管理者將需注冊的訂閱關系相關信息輸入到發布訂閱請求模塊,發布訂閱請求模塊將需注冊的訂閱關系相關信息按照預定格式進行打包,生成訂閱請求,并通過與訂閱關系注冊模塊之間已建立的TCP連接,將所述訂閱請求發送給訂閱者注冊模塊。步驟404 :驗證是否發送成功,如果否,則返回執行步驟403,如果是,則繼續步驟405 ;步驟405 :訂閱者注冊模塊接收所述訂閱請求,并對所述訂閱請求進行解析,獲得需注冊的訂閱關系;步驟406 :訂閱者注冊模塊將所述需注冊的訂閱關系寫入發布訂閱關系表。具體地,事件驅動模塊基于事件規則對消息進行邏輯處理的具體處理流程如圖5所示,包括如下步驟 步驟501 :數據源連接模塊將來自數據源的消息傳送給事件驅動模塊,事件驅動模塊接收來自數據源的消息;步驟502 :事件驅動模塊對所述消息進行拆包解析,獲得所述消息的名稱和發布
者信息;步驟503 :事件驅動模塊基于所述消息的名稱和發布者信息,查詢發布訂閱關系表,從查詢到的訂閱關系中獲得所述消息的訂閱者信息;步驟504 :事件驅動模塊基于所述消息的名稱、發布者信息和訂閱者信息,查詢事件規則定義表,驗證是否存在與所述消息相匹配的事件規則,如果是,則繼續步驟505,否貝U,繼續步驟506 ;這里,事件驅動模塊驗證是否存在與所述消息相匹配的事件規則,即驗證是否存在包含有所述消息的名稱、發布者信息和訂閱者信息的事件規則,如果是,則存在與所述消息相匹配的事件規則,否則,不存在與所述消息相匹配的事件規則。步驟505 :事件驅動模塊采用Java反射機制,調用與所述消息相匹配的事件規則中定義的處理類,對所述消息進行邏輯處理;步驟506 :事件驅動模塊通過消息推送模塊將所述消息推送給相應Widget應用端ID的指定Widget組件。具體地,以智能手機的Widget應用為例,Widget應用端的消息發送接口通過消息接收模塊向事件驅動模塊發送消息,可以通過Android平臺底層SDK來實現,具體實現流程如圖6所示,包括如下步驟步驟601 =Widget應用端的消息發送接口調用Android平臺底層功能的請求;步驟602 An droid底層SDK向Widget應用端的消息發送接口返回調用響應,Widget應用端的消息發送接口調用Android平臺底層功能成功;步驟603 ffidget應用端的消息發送接口通過Android底層SDK向消息分發裝置的消息接收模塊發送建立TCP連接的請求;步驟604 :消息分發裝置的消息接收模塊通過Android底層SDK向Widget應用端的消息發送接口返回建立TCP連接成功的響應;步驟605 ffidget應用端的消息發送接口通過Android底層SDK向消息分發裝置的消息接收模塊發送消息;
步驟606 :消息分發裝置的消息接收模塊通過Android底層SDK向Widget應用端的消息發送接口返回發送消息成功的響應;步驟607 :消息分發裝置的消息接收模塊將所述消息傳送給事件驅動模塊;步驟608 :事件驅動模塊接收所述消息,向消息接收模塊返回傳送消息成功的響應。具體地,以智能手機的Widget應用為例,事件驅動模塊通過消息推送模塊向Widget應用端的消息接收接口發送消息,也可以由Android平臺底層SDK來實現,具體實現流程如圖7所示,包括如下步驟步驟701 :事件驅動模塊向消息推送模塊發送需推送的消息; 步驟702 :消息推送模塊接收所述消息,向事件驅動模塊返回發送消息成功的響應;步驟703-704 :消息推送模塊通過Android底層SDK向Widget應用端的消息接收接口發送心跳檢測請求;步驟705-706 ffidget應用端的消息接收接口通過Android底層SDK向消息推送模塊返回表示心跳檢測成功的心跳檢測響應;步驟707-708 :消息推送模塊通過Android底層SDK向Widget應用端的消息接收接口發送所述需推送的消息;步驟709-810 ffidget應用端的消息接收接口通過Android底層SDK向消息推送模塊返回發送消息成功的響應。以上所述,僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。
權利要求
1.一種圖形聚合中的消息分發裝置,其特征在于,所述裝置包括發布訂閱關系表、事件驅動模塊、數據源連接模塊和消息推送模塊;其中, 發布訂閱關系表,用于保存已定義的數據源與Widget應用端各Widget組件之間的訂閱關系; 數據源連接模塊,用于接收數據源發送的消息,并傳送給所述事件驅動模塊; 事件驅動模塊,用于對所述數據源連接模塊傳送的消息進行解析,獲得所述消息的名稱和發布者信息,并基于所述消息的名稱和發布者信息在所述發布訂閱關系表中查詢對應所述消息的訂閱關系,根據所查詢到的訂閱關系,將所述消息通過所述消息推送模塊推送給相應Widget應用端的指定Widget組件。
2.根據權利要求I所述圖形聚合中的消息分發裝置,其特征在于,所述裝置還包括預定配置的包含有事件規則的事件規則定義表,所述事件規則,表示對指定消息的邏輯處理規則; 事件驅動模塊,還用于從所查詢到的訂閱關系中提取所述消息的訂閱者信息,并基于所述消息的名稱、發布者信息和訂閱者信息,查詢所述事件規則定義表,如果存在與所述消息的名稱、發布者信息和訂閱者信息相符合的事件規則,則基于所述事件規則對所述消息進行邏輯處理后,通過所述消息推送模塊推送給相應Widget應用端ID的指定Widget組件;如果不存在與所述消息的名稱、發布者信息和訂閱者信息相符合的事件規則,則直接將所述消息通過消息推送模塊推送給相應Widget應用端ID的指定Widget組件。
3.根據權利要求I所述圖形聚合中的消息分發裝置,其特征在于,所述裝置還包括 消息接收模塊,用于接收來自Widget應用端各Widget組件的消息,并傳送給所述事件驅動模塊; 所述事件驅動模塊,還用于對所述消息接收模塊傳送的消息進行解析,獲得所述消息的名稱和訂閱者信息,并基于所述消息的名稱和訂閱者信息在所述發布訂閱關系表中查詢對應所述消息的訂閱關系,根據所查詢到的訂閱關系,將所述消息通過所述數據源連接模塊發送給指定的數據源。
4.根據權利要求I所述圖形聚合中的消息分發裝置,其特征在于,所述裝置還包括發布訂閱注冊請求模塊和訂閱者注冊模塊;其中, 發布訂閱注冊請求模塊,用于接收操作人員輸入的需注冊訂閱關系的相關信息,將需注冊訂閱關系的相關信息按照預定格式打包,生成訂閱請求并發送給所述訂閱者注冊模塊; 訂閱者注冊模塊,用于接收所述發布訂閱注冊請求模塊發送的訂閱請求,并將所述訂閱請求中的訂閱關系注冊到所述發布訂閱關系表。
5.根據權利要求4所述圖形聚合中的消息分發裝置,其特征在于,所述裝置還包括發布訂閱管理模塊; 發布訂閱注冊請求模塊,用于接收操作人員輸入的需取消訂閱關系的相關信息,將需取消訂閱關系的相關信息按照預定格式打包,生成取消訂閱請求并發送給所述發布訂閱管理模塊; 發布訂閱管理模塊,用于接收所述發布訂閱注冊請求模塊發送的取消訂閱請求,并將所述訂閱請求中的訂閱關系從所述發布訂閱關系表中刪除。
6.一種圖形聚合中的消息分發系統,其特征在于,所述系統包括如權利要求I至5任一項所述圖形Mashup中的消息分發裝置和設置在Widget應用端的至少一個消息接口,一個消息接口連接一個Widget組件; 所述消息接口包括消息接收接口,用于接收所述消息推送模塊推送給相應Widget組件的消息。
7.根據權利要求6所述圖形聚合中的消息分發系統,其特征在于,所述消息接口還包括消息發送接口,用于將相應Widget組件的消息發送給所述消息分發裝置的消息接收模塊。
8.一種圖形聚合中的消息分發方法,其特征在于,所述方法包括 將已定義的數據源與Widget應用端各Widget組件之間的訂閱關系保存到發布訂閱關系表; 數據源連接模塊接收數據源發送的消息,并傳送給事件驅動模塊; 事件驅動模塊對所述數據源連接模塊傳送的消息進行解析,獲得所述消息的名稱和發布者信息; 事件驅動模塊基于所述消息的名稱和發布者信息在所述發布訂閱關系表中查詢對應所述消息的訂閱關系,根據所查詢到的訂閱關系,將所述消息通過消息推送模塊推送給相應Widget應用端的指定Widget組件。
9.根據權利要求8所述圖形聚合中的消息分發方法,其特征在于, 所述方法還包括預定配置的包含有事件規則的事件規則定義表,所述事件規則,表示對指定消息的邏輯處理規則; 所述根據所查詢到的訂閱關系,將所述消息通過消息推送模塊推送給相應Widget應用端的指定Widget組件,包括事件驅動模塊從所查詢到的訂閱關系中提取所述消息的訂閱者信息,并基于所述消息的名稱、發布者信息和訂閱者信息,查詢所述事件規則定義表,如果存在與所述消息的名稱、發布者信息和訂閱者信息相符合的事件規則,則基于所述事件規則對所述消息進行邏輯處理后,通過所述消息推送模塊推送給相應Widget應用端ID的指定Widget組件;如果不存在與所述消息的名稱、發布者信息和訂閱者信息相符合的事件規則,則直接將所述消息通過消息推送模塊推送給相應Widget應用端ID的指定Widget組件。
10.根據權利要求8所述圖形聚合中的消息分發方法,其特征在于,所述方法還包括 消息接收模塊接收來自Widget應用端各Widget組件的消息,并傳送給事件驅動模塊; 事件驅動模塊對所述消息接收模塊傳送的消息進行解析,獲得所述消息的名稱和訂閱者信息,并基于所述消息的名稱和訂閱者信息在所述發布訂閱關系表中查詢對應所述消息的訂閱關系,根據所查詢到的訂閱關系,將所述消息通過所述數據源連接模塊發送給指定的數據源。
11.根據權利要求8所述圖形聚合中的消息分發方法,其特征在于,所述將已定義的數據源與Widget應用端各Widget組件之間的訂閱關系保存到發布訂閱關系表,包括 發布訂閱注冊請求模塊接收操作人員輸入的需注冊訂閱關系的相關信息,將需注冊訂閱關系的相關信息按照預定格式打包,生成訂閱請求并發送給訂閱者注冊模塊;訂閱者注冊模塊接收所述發布訂閱注冊請求模塊發送的訂閱請求,并將所述訂閱請求中的訂閱關系注冊到所述發布訂閱關系表。
12.根據權利要求11所述圖形聚合中的消息分發方法,其特征在于,所述方法還包括發布訂閱注冊請求模塊接收操作人員輸入的需取消訂閱關系的相關信息,將需取消訂閱關系的相關信息按照預定格式打包,生成取消訂閱請求并發送給所述發布訂閱管理模塊; 發布訂閱管理模塊接收所述發布訂閱注冊請求模塊發送的取消訂閱請求,并將所述訂閱請求中的訂閱關系從所述發布訂閱關系表中刪除。
全文摘要
本發明公開了一種圖形聚合中的消息分發裝置,所述裝置包括發布訂閱關系表,用于保存已定義的數據源與Widget應用端各Widget組件之間的訂閱關系;數據源連接模塊,用于接收數據源發送的消息,并傳送給所述事件驅動模塊;事件驅動模塊,用于對所述消息進行解析,獲得所述消息的名稱和發布者信息,并基于所述消息的名稱和發布者信息在所述發布訂閱關系表中查詢對應所述消息的訂閱關系,根據所查詢到的訂閱關系,將所述消息通過所述消息推送模塊推送給相應Widget應用端的指定Widget組件。相應的,本發明還公開了一種圖形Mashup中的消息分發系統及方法,降低了Widget應用端和邏輯層、數據源之間的耦合性,并且提高了系統的信息獲取性能和可維護性。
文檔編號H04L29/08GK102710593SQ20121007322
公開日2012年10月3日 申請日期2012年3月19日 優先權日2012年3月19日
發明者李強, 程渤, 章洋, 陳俊亮 申請人:北京郵電大學