消息通知子系统
用户需求
1 引言
1.1 编写目的
1.2 项目概述
2 综合描述
2.1 目标范围
2.2 用户特性
2.3 约定假设
2.4 技术选型原则
3 需求说明
3.1 功能概要
3.1.1 通知消息合并
3.1.2 消息分发
3.1.3 用户消息处理
3.1.4 消息通知类型配置
3.1.5 消息模板
3.1.6 前端消息通知显示控件
3.1.7 Restful API
3.2 性能需求
3.3 环境需求
本文档的预期读者为项目组成员及相关人员。
消息通知系统是通知信息的传达处理系统。目的是为了让用户获得需要得到的通知消息(包括:系统希望用户了解的信息及用户彼此互动触发的信息流)及提醒并进行处理。消息通知系统是企业信息化系统中信息传播机制的重要的部分,根据具体业务需要可以动态的把用户操作和相关的业务系统融合,极大提升用户操作体验。
本系统用户主要分为两大类用户:普通用户、管理员。
普通用户通过使用消息子系统,获得需要得到的消息及提醒并及时进行业务处理。
用户使用的一般是Internet Explorer8.0以上版本的浏览器,或者FireFox 2.0以上的浏览器。浏览器的安全等级为默认等级,支持第一方cookie及第三方有隐私声明的cookie,支持JavaScript 1.1以上标准的前端脚本。
采用成熟可控的技术,着重考虑现有可复用的经验,进行快速迭代开发。
消息通知系统,顾名思义即通知信息的传达处理系统。目的是为了让用户获得需要得到的消息及提醒并进行处理。消息通知按发送接收对象不同分成为三类,系统提醒、系统通告、个人私信。
系统提醒:主要用于由外界直接或间接更新用户相关的信息,对用户产生了影响,在用户不知道的情况下,需要系统主动提醒用户。
1) 统计性提醒:相关内容的个数变化,统计相关内容个数,包括登录统计和实时统计。
2) 弹出窗口提醒:服务器推送数据到客户端弹出信息窗口提示用户发生变化的内容,通过点击操作跳转到相应的页面显示结果。这类提醒一般附带操作按钮,点击按钮会触发相应的操作,这种情况一般使用实时提醒。
系统公告:有系统平台发送到用户的信息,可向单个用户发送,多个用户发送,或者某一个特定用户类型发送,还有向全部用户发送。公告具有不同的优先级别。(平台发布公告、平台撤销公告、平台删除公告、平台查询公告、用户查看公告、用户查询公告)
用户消息(私信):用户之间互相发送消息,可以针对一个消息进行回复。分为实时消息和非实时消息。可用户向用户发送,用户向群体发送,群体向个人用户发送,群体向群体发送,个人向多个用户发送。(用户查看消息、用户回复消息、用户标记消息已读、用户查询消息)
通知在推送之前需要进行汇总合并,目的在于提高消息传播处理效率,减少骚扰,降低噪音,平衡服务器压力。
1. 合并周期:
固定时间内的消息全部汇总(24小时内/30天等);
无固定时间(只要未处理/未读即汇总)
当然一般都组合着用:合并24小时内未处理消息
2. 分类合并
同种类进行合并(如n条提醒合并为1条)
同一发起人合并(如其它用户给你发来的n条私信)
同一时间周期合并(如24小时共收到n条系统提醒)
3.
通知按照规则汇总完成后,系统将其通过通知管道推送到用户,以便用户处理。
1. 分发方式
分发方式多采用pull拉取方式,部分特定类型的信息,需要在指定时间内主动推送(Push)给用户。。
通知优先推送未处理通知合并后的总数,已提醒用户已有新消息需要处理。用户点击数字后再去服务端请求具体的消息内容。此种方式综合考虑了成本、压力和体验。当然,某些极端情况下需要进行优化处理:如未读消息超过1000,用户请求时先推送前50条或者放入cache中等。
2. 分发频率(时间)
分发时间主要根据消息的优先级来做区隔:
优先级 | 分发时间 | 备注 |
---|---|---|
高 | 实时推送 | 需要用户立刻处理或知晓 |
中 | 小时/天/周 | 不需要用户立刻处理,汇总后发出 |
低 | 固定周期 | 提醒类或触发条件后触发 |
3)分发管道
分发管道即消息通知的具体推送渠道,根据业务类型可以分为:Web、短信、邮件等。
对于通知的处理在逻辑上可以分为两层:通知状态的处理和通知内容的处理。
4. 状态是否已读(已处理)。通常初始数字即为系统推送过来的未读总量,用户点击数字进入相关功能列表查阅后,读取的动作完成,未读数字相应减少,注意并发访问导致数量变化的问题。根据消息提醒信息的重要程度,可以设置为“点击已读”只要点击无论是否打开消息查看均认为是已读。对于某些重要级别的消息需要设置为“处理已读”,“处理已读”是用户必须进行相关操作后消息的状态更新成“已处理”状态。
5. 用户操作:根据不同消息种类和业务需要,操作可分为:
处理:用户必须点击功能连接进行处理。如:提示业务数据审核不通过,点击进行修改等。
回复:如回复私信。
确认:对消息做出确认的反馈。
忽略:用户进行忽略操作或不进行任何操作。
删除:用户删除本消息。
6. 消息处理后状态需要统一:具有多个客户端的情况下消息需要标记是否处理的状态,且状态在不同的终端是打通的。新消息到达时提醒交互功能
新消息到达时系统可提供多种方式提醒用户。
3. 标题闪动:通过浏览器标题闪动的方式提醒用户有新信息到达。
4. 声音提醒:消息到达后声音提醒用户。
5. 气泡加数字提醒:
参考Facebook网站功能。
。
6. 新消息悬浮层:
参考新浪微博相关功能。
7. 信息弹窗:
类似qq信息提示,多用于实时消息提示。
设计模板机制,业务系统可定制模板,使用模板发送消息。定义变量关键字,比如“当前用户名”,可使用登录的用户信息替换模板中的数据。
消息子系统需提供Restful API以便客户端脚本控件和业务系统应用使用。
1. 获取未读消息Api
2. 统一更新读取状态
3. 发送公告、消息、提醒。
考虑大并发的情况,信息发送使用异步调用的方式,系统响应时间应该在2秒以内。
以上版本。
运行WEB服务器:Tomcat。
Java7