关于异步任务的设计探索(1)
编辑导语:什么是异步任务?什么是同步任务?异步任务的设计逻辑是什么?有哪些需要注意的问题?本文作者围绕以上问题,为我们展开了解答,希望看完本篇文章你能够有所收获,并且继续关注后续文章。
今天重新把以前一个集团的项目重构了一下,然后发现以前犯下了很多的错误,特别是对于一些异步的业务流程(也就是反馈结果不是即时的),做到简直是一塌糊涂,以下是前两年做的原型:
这是一个客户签约的业务,流程如下:
- 开票员给客户开通代收的业务,并且与客户签约(即签订代收协议);
- 主管审核客户的签约业务,若拒绝,则开票人需要通知客户修改资料重新提交;
- 若同意,则签约成功,流程结束。
一、曾犯的错误
自己分析了一下之前的错误,发现虽然分析了整体的业务流程、角色的权限与上下游,但没有去分析这个任务是同步还是异步的,导致与开发同学也吵了很久,错误分析如下:
- 提交后没有告诉发起人(即开票员)整体的流程,导致很多发起人以及客户对后面的流程一脸懵逼(发起人对接客户,但经办人不会对客户);
- 提交之后没告诉发起人这是一个异步的问题,需要等待一段时间才会有结果;
- 实际上,在签约审核的时候,发起人是可以帮客户完成其它业务(如绑定银行卡、消费等),导致发起人跟客户傻傻地等经办人签约完成再去帮客户办理其它业务。
虽然我们有一整队实施团队去帮助集团中的所有使用者去了解业务,但作为一个产品,还是必须保持敬畏之心对待用户才可以。
二、异步与同步
什么是异步呢?
对于程序来说就是一个请求发出去了,但系统不会立刻处理,而是放在队列里,系统会按照队列方式去处理它,或者处理的时间非常长也可以归为异步任务。
反过来同步任务就是请求递交,几乎即时就有反馈。
以前我总是同步、异步的任务都用同样的设计,单纯地通过反馈弹窗告诉用户这个任务大概需要等多久,很多用户就傻傻在那里等着。
于是今天,我按照上边归类的问题,修改了原型:
为了让发起人知道总体的流程,提交签约之后,我们需要反馈一个结果且告诉发起人整体的流程,便于发起人与经办人交接(由于我们接入了企业微信的通知,【催一下】可以直接在企业微信通知经办人)。
第二个问题需要告诉发起人这个任务需要等待,这时候我们需要引入站内消息功能,并且告知用户可在哪里看到查看审核结果的通知。
若这个任务是比较重要的,可以考虑单独列一个任务列表,这样任务完成时,用户可立即知道。
最后,我们需要引导发起人先去完成其他任务,就要在结果页中对按钮做相关业务的跳转,改一下:
总结了一下,异步任务的设计逻辑:
- 需要告诉用户整体的流程以及任务的进度;
- 需要告诉用户,这个任务需要等待,并告知用户当有结果时,系统会进行及时的通知,让用户安心;
- 引导用户去完成其它业务。
另外之前做异步任务的设计时发现一个很严重的问题:用户不敢关闭当前窗口或切换到其它地方,他会很害怕任务会被中断。
所以我们要清楚地告知用户:“这个任务需要等待,有结果时我们会及时通知你,你可以进行其它业务的操作”
未完待续,后续文章请大家持续关注。
本文由 @蔡包 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议
提交流程工单之后建议自动企微/钉钉/飞书发送通知,并记录待处理列表。
催一下这个功能可以放在提交流程列表的查看or操作栏中。
有见解,同步任务和异步任务的确要分开设计