产品-1-四眼原则

产品-1-四眼原则各位读者 早上好 这里从产品角度介绍下 四眼原则

大家好,欢迎来到IT知识分享网。

各位读者,早上好!

这里从产品角度介绍下“四眼原则”。自从产品有一次再开发中提出“四眼原则”的设计想法后,很多版本的迭代,凡是涉及到审核的,基本都需要运用这种规则。

四眼原则—— 一个人提交的某种东西,自己不能立马审核,需要过“冷静期”之后自己方能审核;或者自己提交东西团队中不同的人可以立马审核。

这里涉及2点:
1、这个业务有提交、审核的流程;
2、提交人、审核人、提交时间、冷静时间 四个关键要素。

需求提出来了,代码怎么抽象呢?看下一这段代码:

/ 以下代码是简化版,并非真实业务代码,但足够表达我要表达的意思 */ @GET @Path("list") @RolesAllowed('OPERATOR','OPERATOR_ADMIN') public List<BusinessDTOs> list(@QueryParam("offset") @DefaultValue("10")int offset, @QueryParam("limit") @DefaultValue("10")int limit){ 
    List<BusinessDTOs> dtos = businessService.query(offset,limit); return dtos; } 

上面这段代码就是最终需要返回给前端的一个业务列表,具体什么列表是有业务决定的,四眼原则怎么抽象到代码中?加上四眼原则后,要达到的效果是这样的:
1、该列表有”审核“按钮,如果不满足四眼原则,”审核“按钮不展示;展示需要过冷静期后方可审核;
2、对于团队其他成员,审核按钮是可以看到的(冷静期只是限制提交人);
3、冷静期过后,自己方可提交;

抽象出来就是这样:

package com.cmh.business; import org.joda.time.DateTime; import java.io.Serializable; / * @author:起舞的日子 * @date: 2020/4/10 上午7:19 */ public abstract class FourEyePriciple implements Serializable { 
    / * 是否可操作 */ private boolean operable; / * 不可操作原因 */ private String notOperableReason; public void apply(String submitter, String auditor, DateTime submittedTime, int fourEyeHours) { 
    if (!submitter.equals(auditor)) { 
    operable = true; return; } if (submittedTime == null) { 
    operable = true; return; } if (submittedTime.plusHours(fourEyeHours).isBeforeNow()) { 
    operable = true; return; } operable = false; notOperableReason = String.format("待团队成员确认,请于%d小时候操作", fourEyeHours); } } 

下一步让BusinessDTO继承一下FourEyePriciple,然后在Resource层遍历下DTOs调用下方法即可。

@GET @Path("list") @RolesAllowed('OPERATOR','OPERATOR_ADMIN') public List<BusinessDTOs> list(@QueryParam("offset") @DefaultValue("10")int offset, @QueryParam("limit") @DefaultValue("10")int limit){ 
    List<BusinessDTOs> dtos = businessService.query(offset,limit); dtos.foreach(e->{ 
    e.apply(dto.getCreatedBy(),dto.getCurrentUserId(),dto.getCreatedTime,foreEyeHours); }); return dtos; } 这个fourEyeHours就走配置,支持灵活调整。 

好了,以后关于设计的一些零碎想法就作为”产品“系列发布吧。

再会!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/150310.html

(0)
上一篇 2025-03-19 17:26
下一篇 2025-03-19 17:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信