潘進學
【摘要】 為了提高企業(yè)工作效率,促進員工之間合作溝通,在研究J MS(J ava消息服務)技術的基礎上,本文設計了一種企業(yè)即時通訊系統(tǒng)??紤]實際應用中的需要,提出了員工編號登錄、組織人員同步、通知獲取回執(zhí)等設計方案。本文詳細介紹了企業(yè)即時通訊系統(tǒng)的總體架構,系統(tǒng)消息規(guī)范,以及系統(tǒng)工作流程。
【關鍵詞】 即時通訊 J MS 消息 XML
一、引言
即時通訊是一種基于網絡的即時交流消息的業(yè)務。一些企業(yè)基于安全的考慮或聯(lián)網的限制,需要在其內部搭建即時通訊平臺。而實際應用中,中小企業(yè)往往不需要特別多的功能,市面上的即時通訊工具中有近80%的功能很少被使用,部分功能甚至從未被用到。此外,這些通訊工具也存在一些不足,比如手工添加好友不僅繁瑣且容易遺漏,沒有提供可靠的通知服務等等[1]。本文使用JMS技術設計搭建了一種適用于企業(yè)用戶的即時通訊系統(tǒng)。
二、JMS技術概述
JMS是Java平臺上有關面向消息中間件的技術規(guī)范,它便于消息系統(tǒng)中的Java 應用程序進行消息交換,并且通過提供標準的產生、發(fā)送、接收消息的接口簡化企業(yè)應用的開發(fā)[2]。
JMS 定義了以下幾種元素[3]:(1) JMS提供者:實現(xiàn)JMS規(guī)范的消息隊列和通知等接口,對外提供消息服務;(2)JMS客戶:生產或消費基于消息的Java應用程序或對象;(3)JMS生產者:創(chuàng)建并發(fā)送消息的JMS客戶;(4)JMS消費者:接收消息的JMS客戶;(5)JMS消息:JMS 客戶之間傳遞的數據對象。
此外,JMS還定義了以下兩種消息傳輸模型[3]:(1)隊列模型:通過隊列分發(fā)消息,用來解決生產者和消費者之間點到點的通信;(2)發(fā)布/訂閱者模型:支持向一個特定的消息主題發(fā)布消息,可被一個或多個消費者訂閱。
三、系統(tǒng)總體設計
即時通訊系統(tǒng)主要包括即時信息和狀態(tài)呈現(xiàn)兩大核心服務[4],以及用戶登錄、用戶信息維護、查看好友信息等基礎服務。結合一般的即時通訊工具,并考慮到企業(yè)用戶的需求,本文設計的系統(tǒng)還具有以下特點:1、用戶可以使用企業(yè)員工編號直接登錄,無需注冊;2、企業(yè)組織結構和員工列表自動同步到客戶端,不用手工添加好友;3、提供通知推送服務,并為每條通知提供已讀回執(zhí);4、管理員可以通過系統(tǒng)后臺對系統(tǒng)數據進行維護。
本文設計的系統(tǒng)在網絡架構上分為客戶端和服務器端兩部分,在軟件開發(fā)模式上又可分為三層:表現(xiàn)層、邏輯層和數據層。系統(tǒng)體系結構如圖1所示。
1、表現(xiàn)層:表現(xiàn)層是系統(tǒng)的用戶界面部分,負責將用戶操作傳遞給邏輯層,并同時接收邏輯層的信息。主要包括PC客戶端界面和后臺管理Web界面。
2、邏輯層:邏輯層主要負責處理系統(tǒng)業(yè)務,是整個系統(tǒng)的核心。其包含消息分發(fā)部分和業(yè)務處理部分。前者負責創(chuàng)建和分發(fā)JMS消息,后者負責接收和處理JMS消息。在具體實現(xiàn)時,客戶端和服務器端均有相應的消息模塊和業(yè)務模塊:客戶端的消息模塊創(chuàng)建、發(fā)送和接收JMS消息,業(yè)務模塊處理JMS消息和響應用戶操作;服務器端的消息模塊充當JMS提供者來分發(fā)JMS消息,業(yè)務模塊接收并處理特定的消息。此外邏輯層還包含后臺管理部分,提供Web服務以便管理員進行系統(tǒng)管理。
3、數據層:數據層負責完成系統(tǒng)中數據的定義、維護、訪問和更新,同時管理并響應邏輯層的數據請求。包括服務器端的MySQL數據庫和客戶端的SQLite數據庫。數據庫中維護有組織員工信息、聊天記錄、通知記錄等數據。
四、系統(tǒng)詳細設計
4.1 系統(tǒng)通信消息設計
系統(tǒng)中各模塊之間通過JMS消息進行通信。為了進行有效的交互,通信雙方需要遵循一定的協(xié)議[5]。本文對JMS消息做以下規(guī)范:1、按照功能不同,對JMS消息進行分類。2、不同消息攜帶相應內容的消息體;3、消息體均采用TextMessage類型,并按照XML標準對內容進行組織。
系統(tǒng)中消息具體分為三類:(1)即時信息:包括即時聊天消息、群組聊天消息、通知消息與通知回執(zhí)消息;(2)狀態(tài)呈現(xiàn):狀態(tài)呈現(xiàn)消息;(3)基礎操作:包括組織人員同步消息、用戶登錄請求與響應消息、用戶信息維護請求與響應消息、好友信息查詢請求與響應消息。
4.2 系統(tǒng)業(yè)務流程設計
服務器啟動之后,其消息模塊作為JMS提供者開啟JMS服務,等待接收和分發(fā)客戶端發(fā)來的JMS消息,而其業(yè)務模塊開始監(jiān)聽ServerQueue隊列,等待處理用戶操作消息。
客戶端啟動之后,其消息模塊作為JMS客戶連接服務器,對登錄用戶編號的隊列進行監(jiān)聽,等待接收服務器或其他用戶發(fā)來的消息,而其業(yè)務模塊除了要等待處理收到的消息,還要對用戶在客戶端界面上的操作進行響應,調用消息模塊接口創(chuàng)建和發(fā)送消息。用戶成功登錄并同步列表之后,客戶端還需訂閱Status主題,以獲取其他用戶的狀態(tài)消息。
4.2.1 用戶基礎操作
用戶基礎操作包括用戶登錄、用戶信息維護、好友信息查詢等。業(yè)務流程如下:
1、客戶端向ServerQueue隊列發(fā)送用戶操作請求消息,消息體中攜帶操作類型、操作必要信息,比如用戶編號、用戶密碼等;2、服務器端業(yè)務模塊接收到消息并進行處理,將處理結果封裝成響應消息,發(fā)送到該用戶的隊列;3、客戶端接收響應消息,進行解析和處理。
4.2.2 人員組織同步
人員組織結構包括企業(yè)部門列表,以及各部門員工列表。業(yè)務流程如下:
1、用戶登錄成功之后,服務器向該用戶隊列發(fā)送組織員工同步消息,消息體攜帶組織列表和員工列表信息;2、客戶端接收消息,顯示在用戶界面。
4.2.3 用戶狀態(tài)呈現(xiàn)
狀態(tài)呈現(xiàn)指用戶上下線后在客戶端界面的用戶狀態(tài)的即時改變。業(yè)務流程如下:
1、用戶進行狀態(tài)操作之后(上線、忙碌、離開、離線),客戶端向Status主題發(fā)布狀態(tài)呈現(xiàn)消息,消息體攜帶用戶當前狀態(tài);2、客戶端每隔60秒向Status主題發(fā)布當前狀態(tài);3、客戶端接收到好友狀態(tài)消息,在用戶界面進行呈現(xiàn);4、在60秒之內沒有接收到好友的狀態(tài)消息,則判斷該好友處于離線狀態(tài)。
4.2.4 即時聊天
即時聊天指用戶之間實時的交流,包括點對點聊天和群組聊天。業(yè)務流程如下:
1、用戶選擇好友,輸入聊天內容并點擊發(fā)送后,客戶端向對方隊列發(fā)送即時聊天消息,消息體攜帶發(fā)言用戶編號、聊天內容等信息,并將聊天內容保存到本地數據庫;2、用戶創(chuàng)建或選擇群組(群組信息由創(chuàng)建者生成),輸入聊天內容并點擊發(fā)送后,客戶端向群組內所有好友的隊列發(fā)送群組聊天消息,消息體攜帶群組編號、群組名稱、群組成員、發(fā)言用戶編號、聊天內容等信息,并進行保存;3、客戶端接收聊天消息,在界面進行顯示并保存。
4.2.5 通知推送
通知推送指用戶對一個或若干部門內所有用戶發(fā)布通知消息,并接收已讀回執(zhí)。業(yè)務流程如下:
1、用戶選擇部門,輸入通知內容并點擊發(fā)送后,向該部門內所有用戶的隊列發(fā)送通知消息,消息體攜帶通知編號、發(fā)布者編號、通知內容等信息,并保存到本地數據庫;2、客戶端接收通知消息,顯示并保存;3、用戶點擊閱讀后,客戶端向通知發(fā)布者的隊列發(fā)送通知回執(zhí)消息,消息體攜帶通知編號、接收者編號等信息。
4.3 系統(tǒng)數據庫設計
系統(tǒng)數據庫包括服務器端數據庫和客戶端數據庫兩部分。服務端數據庫維護系統(tǒng)中所有員工和組織的基本信息;客戶端數據庫維護群組記錄、聊天記錄和通知記錄等信息。
服務器端員工基本信息表包含用戶編號、用戶登錄密碼、用戶顯示名稱、用戶部門與崗位以及用戶個人信息(性別、聯(lián)系方式等)。組織基本信息表包含企業(yè)內的部門列表。系統(tǒng)管理員可以通過后臺管理頁面對組織員工信息進行維護,進行添加、修改和刪除操作。
客戶端聊天記錄表包含聊天消息收發(fā)者、聊天內容、聊天時間、群組編號等信息。群組記錄表包含群組編號、群組名稱、群組成員等信息。通知記錄表包含通知收發(fā)者、通知內容、通知回執(zhí)信息等。
五、系統(tǒng)測試
即時通訊系統(tǒng)客戶端與后臺管理界面如圖2所示。
六、結束語
結合一般的即時通訊工具的優(yōu)缺點,并考慮企業(yè)用戶的實際需求,本文使用JMS技術設計了一種企業(yè)即時通訊系統(tǒng)。本系統(tǒng)除了用戶即時聊天、好友狀態(tài)呈現(xiàn)等基礎服務,還有組織員工同步、通知消息推送、系統(tǒng)后臺管理等特有服務,很好的滿足了企業(yè)用戶的需要,有效地促進員工交流溝通,提高企業(yè)工作效率。
參考文獻
[1] 荒涼. 微信做企業(yè)即時通訊工具有哪些不足[OL]. http://www.yesky.com/320/37313320.shtml,2014-5-20
[2] 徐晶,許煒.消息中間件綜述[J].計算機工程,2005,31(16):73-76
[3] 汪然. 基于ActiveMQ的消息中間件的設計與實現(xiàn)[D]. 西安:西安電子科技大學,2013
[4] 何哲勛,邱基峰. 探究即時通訊技術標準 比較SIMPLE與XMPP技術規(guī)格[J]. 技術前瞻,2005,48(10):100-102
[5] 景曉璽,葛瑋,郝克剛. 基于JMS的企業(yè)即時通訊系統(tǒng)的設計與實現(xiàn)[J]. 計算機應用與軟件,2009,26(3):167-169