上个星期给XXX公司做的员工积分系统结束了项目终验.这个项目是我跟的第一个项目.
现在在系统分系跟系统架构及团队管理方面有很多感想.在整个过程是也暴露出了很多问题.我现在想把这个项目的需求及相关情况讲下,希望大家多指教。
项目背景:
开发团队情况:
团队人员起初是三个人,对技术的使用并不是怎么精通。(在系统基本完后就只有我一个人做后继开发。)
公司没有系统架构师,技术经理,项目中使用到的技术,使用什么技术完由团队内决定。公司老板直接跟项目进度(他不关心实现过程)
公司以前做XXX公司兄弟公司的积分系统(比较简单)
XXX公司的情况:
员工对软件的理解有一定基础,对积分系统有个大概的结论,知道用来做什么,要做什么
项目需求:
XXX公司为了提高员工的工作积极性想开展一个工作学习积分的活动。为了这个活动的开展需要开发积分系统来支持。
员工通过参加公司的内部活动可以得到各种积分,如:参加演讲,参加公司的文艺活动,为公司提供改善方案
员工有了积分就可以拿这些积分在公司内消费。如用积分参加学习(公司给钱),用积分去领生活用品等。
系统中积分流程:积分当入-->积分审核-->积分有效可用
系统中积分兑换:积分兑换申请-->积分审批-->积分销减-->积分扣除
客户要求兑换流程是可自定义的,兑换是有多种产品,跟据产品的不同兑换流程就不同。并且积分的有效期是可更改的(如有效期是两年,哪么积分在两年内没有使用的就为过期积分不能再使用)
解决方案:
1.公司以前做的哪个积分系统流程简单,很难满足上面的需求,当时团队就建议老板重构项目(并没有得到老板认可,他竖信旧项目在做小修改后就能达到上面的需求),后来我们霸王硬上弓将项目
大部分重构(结果项目超期项目组的人没有项目奖金).
2.积分流程使用硬编码的方式将流程固定下来。各个环节的操作人员可以进行分配
3.兑换流程没有使用工作流引擎(当时对工作流引擎不太熟,加上项目重构,时间很紧张)我们写了一个钟对产品的流程自定义功能,在产品流程环节定义时同时指定这个环节的处理人。当兑换要进入
下一环节时就把下一环节的ID号记下来
4.关于失效的处理:我们使用数据库触发器,当向兑换记录表插入记录时就将兑换的记录与积分记录对应起来表示这条兑换记录使用了积分记录的多少分。这样再通过视图统计出总积分,可用积分,
已使用积分及已销减积分,已过期的积分。
关于软件架构:
1.我们使用spring+hibernate+strutss1.X
2.代码层次:action+service+dao
根据数据表生成bo,再写一个钟对bo的dao,写一个钟对dao的service层与层之间我们通过spring的注入机制关联起来
感想:
1.感觉积分失效的解决方案并不怎么好。但现在也没找到比这个更好的。
2.Service层的扩展性做得不够。
好啦。说到这。希望大家用能多给些指引,软件架构及寻找最佳解决方案的方法。分享下你们的成果。