各位好!
公司正在搞OA系统,专门成立一个部门,为公司做定制化的信息化管理,我负责的模块目前遇到一个比较辣手的问题,就是待办事项通知设计,需求是这样的
----OA中每个子系统中都会产生大量的待办事项 (就目前而言还算少的了,才上几个子系统)有的员工,尤其是一些领导,有很多的待办事项未处理,从而影响公司的办事流程,所以有必要采取“非常手段”骚扰,短信,邮件等通知方式发送待办通知
初步看貌似很简单:就是根据预警条件(目前是待办条目数)定时从数据库查询,然后以邮件或是短信的方式发送,但深入分析一下,设计一个可扩展性,可动态以适应未来可预知需求的模块,还是有点难度大,整个就像一个预警子系统了。就目前需求有以下几点
1.根据一定的时间获取待办数据
2.根据条一定的目数,累积时间,且不同子系统产生的待办事项 会以不同的通知方式, 如 项目立项 一条 需要短信 立即通知
财务报销 10条 邮件通知 累积1天通知
计划管理 30条 邮件通知 累积3天通知
库表设计:
bill_id 单号唯一标识
worker_id 处理人工号
work_name 事项名称
work_content 事项内容简要: 预留字段
apply_name 申请人姓名
apply_time 申请时间
end_time 自发起申请起,规定结束的时间 :预留字段
workflow_name_key 所走流程标识
workflow_name 所走流程名称
work_priority 处理优先级别 : 紧急,一般
inform_type 通知渠道:邮件Mail、SMS、web、MMS
inform_time 通知时间
from_module 待办事项来源: 财务系统,PCM ,项目管理….
url 处理Url地址
Status 完成状态:完成|未完成
初步功能实现了差不多了,但自我感觉有更好的设计实现方式,先前想过用策略模式设计,将每一个子系统设计一个发送策略,但随着子系统的增加,为每一个子系统增加一个类? 不知道大家有什么好建议,可以更好的去设计。我是发现任何一个功能,哪怕很小,你做完善了,都不是那么简单,麻雀虽小,五脏俱全! 还是希望讨论讨论! 谢谢了
每个子系统的待办事项是需要由子系统定义的,待办事项的内容也是由子系统实现的。
预警管理系统由管理各个子系统生成的事项。主要有:
1、子系统注册一个服务,只有注册了的才受预警系统管理。
2、预警系统提供定时服务。
3、预警系统接受子系统实时提交的待办事项。
4、按注册的方式管理各种待办事项,按注册约定是:发出通知或是调用子系统特定的程序来处理。
5、预警系统应有“待办事项”的事件合并,预约排队,处理结果记录等功能。
简单事件规则定义:(考虑以下实现)
2010.10.10 调用 程序XXXX , 给手机130367XXXX发出生日祝贺
每天晚上12:00 调用 程序YYYY ,(程序YYYY会检查数据库,如果库存超标,则发出库存预警)
....
人事系统发来已审批事件,于 2010.10.10 将员工张XX离职(到时调用程序 ZZZZ 自动实现)。
....
考虑以上实现,一个好用的系统会由此产生。
其实也没想的那么复杂,主要的是策略的轮询问题