利用二进制运算实现业务的多级审核

大家在做项目的过程中肯定会碰到多级审核的情况,多级审核如果审核级数可以定下来还好,但是偏偏事与愿违,需求多变,为了减轻我们编码人员的负担,一种基于二进制运算灵活配置实现的多级审核方案呼之欲出,现在我就来介绍一下:

      这种审核方式是基于用户权值(upvalue)的,用户权值只能是2的n次幂,如:0,1,2,4,8,16……..。现在假定一个单位有员工,组长,部门经理,总经理4种角色,开始的需求是项目(project)需要组长和部门经理审核,现在来分配用户权值(upvalue),员工(upvalue=0),组长(upvalue=1),部门经理(upvalue=2),用户权值(upvalue)越大审核级别越高,现在因为是二级审核,项目权值(pvalue)= 组长(upvalue=1)+ 部门经理(upvalue=2),当前项目权值应该设为3,即项目权值为审核级别中用户权值之和。

审核过程计算公式:pvalue&(~upvalue),即项目权值与用户权值取反相与,这个公式很轻松便能满足重复审核的问题,判断当前用户是否已审核的条件是(pvalue&upvalue=0),上面的例子审核过程如下:

第一次组长审核:pvalue = 3&(~1)=2

第二次项目经理审核:pvalue = 2&(~2)=0

pvalue = 0表示审核过程完成

如果需求变动,需要3级审核,那我们只要给总经理upvalue的值赋为4,修改配置里面的项目权值为1+2+4=7即可。需求变动后的审核过程如下:

第一次组长审核:pvalue = 7&(~1)=6

第二次项目经理审核:pvalue = 6&(~2)=4

第三次总经理审核:pvalue = 4&(~4)=0

pvalue = 0表示审核过程完成

发表评论

电子邮件地址不会被公开。 必填项已用*标注