业务系统中的状态值设置

在开发系统的过程中我们可能会碰到如下的场景:
在某个阶段需要操作的人有很多,我们在进入下一个阶段的时候可能需要查看这些操作者的执行进度。
以下对一个具体的需求进行一个描述:
年度考核根据对象的不同分为部门年度考核和员工年度考核。
其中部门年度考核对应一张部门年度考核表;
员工年度考核对应一张员工年度考核表。
在评分阶段,公司领导(可能有多人)需要分别对每个部门的考核表和每个员工的考核表进行评分,然后将分数通过一定的计算公式进行加权求和得到一个最终的考核结果。
在评分的时候管理员可以查看到部门考核和员工考核的评分进度(即:可以查看几位公司领导针对部门、员工那些已经提交了分数,那么还在进行评分而哪些还没开始评分。)

针对上面的需求,我原来的做法是针对不部门、员工考核会有针对评分人的评分表,然后评分表中会有一个字段叫做IsSubmit来记录是否对应的评分人已经进行了提交操作。这样做是很符合思维逻辑的,而且似乎也合情合理。但是总觉得欠缺了点什么,我们需要知道一个考核进度就需要知道对应的表名和对应保存状态的字段。似乎每次代码都很相似但是确有不可或缺。

前阵子和一个做Domino工作流的同事聊天的时候,正好询问了一下工作流中针对流转中文档状态的保存方法。他说他们的状态是和业务数据分离开来,作为单独的数据进行存放的。首先针对文档会有一个状态,这个状态用于标识对应文档所处的节点,比如:是拟定节点、会签节点还是什么等等。然后针对需要多人操作的节点,比如会签节点,这个节点可能需要多位操作者都进行一定的操作才能进入下一个流程节点。那么这个他们是以任务的方式放在一个统一的任务箱中间。这样每个人登录系统以后就可以直接从任务箱中间去查看是否存在需要进行操作的任务了,而不需要查询每个文档来进行判断。虽然从具体的环境上存在差别,但是从思路上确实可以借鉴的,那就是“ 状态需要和业务数据相分离。

再回到我们前面提到的绩效考核的例子,我们将所有评分人是否提交的状态整合到一个统一的表格中(无论是针对部门的评分还是员工的评分都整合到这个表格中)表格的结构可以是:
操作人标识(PersonCode)、操作对象标识、考核阶段标识、状态。
这样只要设计到状态判断我都可以通过统一的方法到这个表格中进行查找,需要变化的只是参数的具体数值。
如果要进行某个考核阶段的进度统计也可以方便的通过这个表和相关表的外联实现对应的功能。

这个是最近的一个心得,希望对有类似问题的朋友有帮助。也希望起到抛砖引玉的作用,大家有想法或者建议欢迎讨论。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值