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