随笔 🗓️ 2022-05-24

作者头像
周骅 , 
• 1136个字 • 5分钟读完
更多随笔

沪式循环

设想一个人(不是我)需要出门,但封控中的上海哪哪都要 48 小时核酸阴性检测报告,于是出门前一到两天就需要做核酸检测。进入 5 月后核酸检测点越来越少了,搞不好就需要跑很远去做核酸检测。这就产生问题了,满上海设有很多道路卡点,警察会检查通行车辆随行人员的 48 小时核酸阴性报告,但如果没有核酸检测报告,又需要出行去做核酸检测,这就产生死锁了。如果想要规避这个问题,又有未来出门的需要,就需要每隔一天去做一次核酸『续命』。

我自己没有遇到过这个问题,只是每次我跟警察说是去做核酸的,他仍然要求出示 48 小时核酸检测报告,所以我觉得一定会有人遇到这样的问题。当然了,即使遇到了这样的问题,我相信也不是什么大问题,一定有能让大家都满意的解决方法(现场做个抗原?)。只是给我提了个醒,流程设计和变更时,要注意『消除递归』。比如我们设计了流程 A,当条件 B 满足时,A 流程失败中止,如果我们要让条件 B 满足,就一定要确保这个过程不会再经过流程 A。可能说得有点抽象,举个例子,如果我们想加强后台的权限管控,要求所有权限敏感的操作都需要加权限校验,结果一点申请权限的按钮,就提示『无操作权限』,那就糟糕了。

回到日常生活中,其实像我刚刚说的流程会陷入递归的极端境地是很少见的,但相关的新闻却不少见,比如老人去世了,家属去银行办手续,银行要求本人到场,这是为什么呢?我认为是关注点不同的问题。就以我们做后台系统为例,比如写字课的后台需要录入课程的信息,其中关联了字卡的信息。如果在编辑后台的时候,发现字卡数据遗漏或者错误了,需要前往另一个字卡后台完成处理后,才能继续在写字课后台进行后续操作。对于写字课后台而言,它的关注点是课程数据是否正确,字卡状态是否正确,它要保障的课程正常进行;而如果用户非要求在同一个地方把这个流程进行下去,强行要求忽略字卡的校验错误,或者强行要求在同一个后台完成所有的事,往往很难一下子达成。代入到现实情境,并不一定是银行一定要求是本人前来,而是银行出于风控要求,一定要有身份验证,但正常流程无法进行时,就需要其他流程补偿,只是这样的流程往往在其他部门和机关,而银行的工作人员很难确切给到家属指导,这就造成了双方诉求不通的情况。银行的诉求是身份认证,家属需要自己搞定这件事,并按银行要求的内容提交;而家属的诉求是流程进行下去,即使我没有你要求的文件,但我有更原始的文件,是有证明力的。民众抱怨办事难的根源就在于此。

那要怎么解决呢?对于后台来说,我们经常说尽量在一个后台中完成一个流程中的所有事,而不用让用户去不同的后台去操作。说起来容易,其实很难实现,排除原本就不合理,或者冗余的环节可以进行优化,更多的可能是我们搞出了特别重复、职责不清的后台设计。现实生活中也是如此,政府机构办事过程已经进行了优化,政务大厅有各个部门的窗口,很多事情也可以在线办理。但如果强行要求一个窗口一定可以把流程完全走通,那这个窗口的工作人员需要掌握多少流程?银行窗口也要耦合户籍管理的职责吗?