潘进学
【摘要】 为了提高企业工作效率,促进员工之间合作沟通,在研究J MS(J ava消息服务)技术的基础上,本文设计了一种企业即时通讯系统。考虑实际应用中的需要,提出了员工编号登录、组织人员同步、通知获取回执等设计方案。本文详细介绍了企业即时通讯系统的总体架构,系统消息规范,以及系统工作流程。
【关键词】 即时通讯 J MS 消息 XML
一、引言
即时通讯是一种基于网络的即时交流消息的业务。一些企业基于安全的考虑或联网的限制,需要在其内部搭建即时通讯平台。而实际应用中,中小企业往往不需要特别多的功能,市面上的即时通讯工具中有近80%的功能很少被使用,部分功能甚至从未被用到。此外,这些通讯工具也存在一些不足,比如手工添加好友不仅繁琐且容易遗漏,没有提供可靠的通知服务等等[1]。本文使用JMS技术设计搭建了一种适用于企业用户的即时通讯系统。
二、JMS技术概述
JMS是Java平台上有关面向消息中间件的技术规范,它便于消息系统中的Java 应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发[2]。
JMS 定义了以下几种元素[3]:(1) JMS提供者:实现JMS规范的消息队列和通知等接口,对外提供消息服务;(2)JMS客户:生产或消费基于消息的Java应用程序或对象;(3)JMS生产者:创建并发送消息的JMS客户;(4)JMS消费者:接收消息的JMS客户;(5)JMS消息:JMS 客户之间传递的数据对象。
此外,JMS还定义了以下两种消息传输模型[3]:(1)队列模型:通过队列分发消息,用来解决生产者和消费者之间点到点的通信;(2)发布/订阅者模型:支持向一个特定的消息主题发布消息,可被一个或多个消费者订阅。
三、系统总体设计
即时通讯系统主要包括即时信息和状态呈现两大核心服务[4],以及用户登录、用户信息维护、查看好友信息等基础服务。结合一般的即时通讯工具,并考虑到企业用户的需求,本文设计的系统还具有以下特点:1、用户可以使用企业员工编号直接登录,无需注册;2、企业组织结构和员工列表自动同步到客户端,不用手工添加好友;3、提供通知推送服务,并为每条通知提供已读回执;4、管理员可以通过系统后台对系统数据进行维护。
本文设计的系统在网络架构上分为客户端和服务器端两部分,在软件开发模式上又可分为三层:表现层、逻辑层和数据层。系统体系结构如图1所示。
1、表现层:表现层是系统的用户界面部分,负责将用户操作传递给逻辑层,并同时接收逻辑层的信息。主要包括PC客户端界面和后台管理Web界面。
2、逻辑层:逻辑层主要负责处理系统业务,是整个系统的核心。其包含消息分发部分和业务处理部分。前者负责创建和分发JMS消息,后者负责接收和处理JMS消息。在具体实现时,客户端和服务器端均有相应的消息模块和业务模块:客户端的消息模块创建、发送和接收JMS消息,业务模块处理JMS消息和响应用户操作;服务器端的消息模块充当JMS提供者来分发JMS消息,业务模块接收并处理特定的消息。此外逻辑层还包含后台管理部分,提供Web服务以便管理员进行系统管理。
3、数据层:数据层负责完成系统中数据的定义、维护、访问和更新,同时管理并响应逻辑层的数据请求。包括服务器端的MySQL数据库和客户端的SQLite数据库。数据库中维护有组织员工信息、聊天记录、通知记录等数据。
四、系统详细设计
4.1 系统通信消息设计
系统中各模块之间通过JMS消息进行通信。为了进行有效的交互,通信双方需要遵循一定的协议[5]。本文对JMS消息做以下规范:1、按照功能不同,对JMS消息进行分类。2、不同消息携带相应内容的消息体;3、消息体均采用TextMessage类型,并按照XML标准对内容进行组织。
系统中消息具体分为三类:(1)即时信息:包括即时聊天消息、群组聊天消息、通知消息与通知回执消息;(2)状态呈现:状态呈现消息;(3)基础操作:包括组织人员同步消息、用户登录请求与响应消息、用户信息维护请求与响应消息、好友信息查询请求与响应消息。
4.2 系统业务流程设计
服务器启动之后,其消息模块作为JMS提供者开启JMS服务,等待接收和分发客户端发来的JMS消息,而其业务模块开始监听ServerQueue队列,等待处理用户操作消息。
客户端启动之后,其消息模块作为JMS客户连接服务器,对登录用户编号的队列进行监听,等待接收服务器或其他用户发来的消息,而其业务模块除了要等待处理收到的消息,还要对用户在客户端界面上的操作进行响应,调用消息模块接口创建和发送消息。用户成功登录并同步列表之后,客户端还需订阅Status主题,以获取其他用户的状态消息。
4.2.1 用户基础操作
用户基础操作包括用户登录、用户信息维护、好友信息查询等。业务流程如下:
1、客户端向ServerQueue队列发送用户操作请求消息,消息体中携带操作类型、操作必要信息,比如用户编号、用户密码等;2、服务器端业务模块接收到消息并进行处理,将处理结果封装成响应消息,发送到该用户的队列;3、客户端接收响应消息,进行解析和处理。
4.2.2 人员组织同步
人员组织结构包括企业部门列表,以及各部门员工列表。业务流程如下:
1、用户登录成功之后,服务器向该用户队列发送组织员工同步消息,消息体携带组织列表和员工列表信息;2、客户端接收消息,显示在用户界面。
4.2.3 用户状态呈现
状态呈现指用户上下线后在客户端界面的用户状态的即时改变。业务流程如下:
1、用户进行状态操作之后(上线、忙碌、离开、离线),客户端向Status主题发布状态呈现消息,消息体携带用户当前状态;2、客户端每隔60秒向Status主题发布当前状态;3、客户端接收到好友状态消息,在用户界面进行呈现;4、在60秒之内没有接收到好友的状态消息,则判断该好友处于离线状态。
4.2.4 即时聊天
即时聊天指用户之间实时的交流,包括点对点聊天和群组聊天。业务流程如下:
1、用户选择好友,输入聊天内容并点击发送后,客户端向对方队列发送即时聊天消息,消息体携带发言用户编号、聊天内容等信息,并将聊天内容保存到本地数据库;2、用户创建或选择群组(群组信息由创建者生成),输入聊天内容并点击发送后,客户端向群组内所有好友的队列发送群组聊天消息,消息体携带群组编号、群组名称、群组成员、发言用户编号、聊天内容等信息,并进行保存;3、客户端接收聊天消息,在界面进行显示并保存。
4.2.5 通知推送
通知推送指用户对一个或若干部门内所有用户发布通知消息,并接收已读回执。业务流程如下:
1、用户选择部门,输入通知内容并点击发送后,向该部门内所有用户的队列发送通知消息,消息体携带通知编号、发布者编号、通知内容等信息,并保存到本地数据库;2、客户端接收通知消息,显示并保存;3、用户点击阅读后,客户端向通知发布者的队列发送通知回执消息,消息体携带通知编号、接收者编号等信息。
4.3 系统数据库设计
系统数据库包括服务器端数据库和客户端数据库两部分。服务端数据库维护系统中所有员工和组织的基本信息;客户端数据库维护群组记录、聊天记录和通知记录等信息。
服务器端员工基本信息表包含用户编号、用户登录密码、用户显示名称、用户部门与岗位以及用户个人信息(性别、联系方式等)。组织基本信息表包含企业内的部门列表。系统管理员可以通过后台管理页面对组织员工信息进行维护,进行添加、修改和删除操作。
客户端聊天记录表包含聊天消息收发者、聊天内容、聊天时间、群组编号等信息。群组记录表包含群组编号、群组名称、群组成员等信息。通知记录表包含通知收发者、通知内容、通知回执信息等。
五、系统测试
即时通讯系统客户端与后台管理界面如图2所示。
六、结束语
结合一般的即时通讯工具的优缺点,并考虑企业用户的实际需求,本文使用JMS技术设计了一种企业即时通讯系统。本系统除了用户即时聊天、好友状态呈现等基础服务,还有组织员工同步、通知消息推送、系统后台管理等特有服务,很好的满足了企业用户的需要,有效地促进员工交流沟通,提高企业工作效率。
参考文献
[1] 荒凉. 微信做企业即时通讯工具有哪些不足[OL]. http://www.yesky.com/320/37313320.shtml,2014-5-20
[2] 徐晶,许炜.消息中间件综述[J].计算机工程,2005,31(16):73-76
[3] 汪然. 基于ActiveMQ的消息中间件的设计与实现[D]. 西安:西安电子科技大学,2013
[4] 何哲勋,邱基峰. 探究即时通讯技术标准 比较SIMPLE与XMPP技术规格[J]. 技术前瞻,2005,48(10):100-102
[5] 景晓玺,葛玮,郝克刚. 基于JMS的企业即时通讯系统的设计与实现[J]. 计算机应用与软件,2009,26(3):167-169