简介
消息通知是几乎是每个管理系统的必备功能之一。
虽然它只是看似简单的发生/接收消息,实际上隐藏着很多复杂的逻辑。
它不仅需要起到提醒用户的作用,还需要整合消息内容、正确引导用户操作流程上的任务。
目的
使用场景
- 系统公告 [维护时间、更新日志]
- 业务流程 [提醒需填写内容,提醒需要生成结算单]
- 审批功能 [申请修改订单单价、调休、加班、请假]
- 业务流程 [提醒已完成]
设计
考虑到在管理系统内使用私信功能的情况比较少,通常都是使用即时通讯软件,所以不把私信罗列在内。
消息类型
公告 Announcement
公告是指系统向所有用户发送一条含有具体内容的通知。
具体的公告内容由系统开发人员或企业管理员编辑后发布。
公告类型:
提醒 Remind
提醒是指相关资源触发相关事件时,系统向用户发送一条含有具体内容的信息。
消息内容通过消息模版生成。
例如:
待办 Todo
待办是指通知用户需要进行某些操作,主要用于引导流程顺利进行。
消息内容
模版消息
通过预先设置的消息模版,实现消息有规范的进行发送。
例如:
消息模版-模型:
- 模版ID
- 模版描述
- 模型参数列表
- 参数名称
- 参数描述
消息模版-消息生成:
- 模版ID
- 标题
- 跳转路径
- 模版数据
- 参数名称
- 参数值
- 参数跳转地址
消息状态
在管理系统内,消息通知不仅是提醒用户的功能,也是引导用户完成任务流程的主要功能之一。
- 未读 [消息的初始状态]
- 已读 [消息查阅后的状态,用户点击消息栏后,即为已读]
- 稍后处理 [用户将状态修改为稍后处理,方便后续查阅]
- 已处理 [需要执行操作的消息,已经执行完毕的状态]
消息的生产&消费
消息的生产
适合订阅资源提醒 [订阅的资源触发相关事件时通知我]
多个用户订阅一个物件,物件修改的时候,推送给每个用户修改内容,而不是每个用户来进行查询
消息聚合
当一个资源进行了多次重复的操作,消息提醒不会重复出现。
每次推送消息的时候,查询该消息是否有未读的重复消息,通过消息的资源和操作,判断是否为重复消息。
例如:刀刀修改了批次batch01十次,需要推送通知给星星。
在星星查询该条消息前,应该把重复的操作,整合到一条通知消息内。
消息的消费
推送
推送的消息消费方式,指的是消息生产的时候,就已将消息与用户关联起来储存在指定的地方,用户仅需要去指定的地方获取。
而不是去每个消息生产的地方获取消息。
适合于订阅、
类似于公告这种的消息通知,应该是用户去拉取
拉取
消息通知
适合拉取通知、提醒
发布资源提醒 [发布的资源触发相关事件时通知我]
实现
通过上面的设计分析,大概能了解到实际要用到的实体模型
- 消息模版
- 消息
- 用户消息