与硬件设备交互时,异步任务的设计应用(一)
入职公司后发现,现有的劳务实名制系统v1.0的不够完善,特别是对于异步处理的任务没有处理好,导致过程中问题不断,下面对劳务实名制流程做一个简单的介绍:
业务背景:
2019年3月,住建部立即发布了修订后的《管理办法(试行)》文件,标志着实名制进入快速普及阶段。
基于此《管理办法》的制定,主要处理以下问题:
- 解决建筑劳务用工长期存在的问题;
- 建立新型建筑产业工人队伍;
- 维护企业和建筑工人的合法权益;
各地方政府建立劳务实名制监管平台,要求在建项目必须通过信息化系统实时上报劳务人员的实名数据以及进出场记录等,以供保障各方权益;基于此需求上,劳务实名制系统应运而生。
需求点:
- 对接各地区政府实名制平台;
- 和硬件(主要是考勤闸机)进行对接,传输指令;
- 加密数据并传输相关政府要求的必要数据。
- …
本文仅对硬件设备交互作详细分析。
主要流程:
- 人员信息通过读卡器录入至已方平台内,包括身份证相关信息、人脸真实照片等;
- 将人员信息下发至考勤机,主要把人脸照片、所属分包信息,身份证信息等下发至考勤机(例如:过考勤闸机时人脸对比);
- 考勤机接收信息并存储;已存储至考勤机的人员通过考勤闸机时就可通过人脸识别等进出项目部,设备将记录打卡时间,进出场情况;
- 数据会传送至平台保存,也会传输至地方政府两制平台。
一、系统的缺陷
业务流程上满足了需求:记录人员打卡并能实现上传劳务实名制信息至平台,已实现满足政府监管,但主要存在待完善问题:
- 与考勤机的传输是异步任务处理,但操作人员没有感知异步任务,点击操作后即时去考勤闸机检验判断是否正常;因为滞后性往往不能通过闸机,造成误以为下发失败的错觉。
- 人员解绑可能成功,可能失败;若失败仍能通过考勤设备完成打卡,系统无法体现,用户无从感知。
- 重复提交下发、解绑行为;在程序等待执行的过程中,用户仍可能执行一系列的重复指令,导致状态紊乱。
问题的关键都是与硬件设备交互时,没有处理好异步任务的产品设计,那么什么是异步任务,什么是即时任务?这就要从技术角度去解释。
1. 概念了解
提交任务的两种方式:同步调用、异步调用+回调机制。
- 同步任务:触发后程序将立即执行的任务,在没有得到结果之前,该调用就不会返回(调用结果返回之前,当前线程会被挂起,只有在得到结果之后才会将阻塞的线程激活);
- 异步任务:触发后程序不能立刻执行,调用者不能马上得到结果(需要其他部件协作或者需要一定时间完成的任务);
所以关于异步任务的设计逻辑,应遵循了以下几点:
- 明确用户感知,让用户了解对接考勤机的流程以及进度状态;
- 反馈及时:若有结果时(比如照片质量不符合人脸识别要求),系统通过站内和短信的方式告知管理人员,失败的设备型号以及失败原因,让管理员重新下发;
- 弥补机制:若是设备离线/断网等原因,执行定时任务进行重发指令;若超过一定时间期限仍断网,则暂停让人员维护好考勤设备后再手动重新下发;
- 提高友好度:告诉用户系统已收到指令,需要时间等待执行,有结果会立马通知。
具体原型如下:
该页面列表展示劳务人员的基础信息以及绑定的考勤设备数(绑定后人员即可通过考勤设备打卡进出项目部),同步考勤机列数值显示同步考勤机数,成功同步的考勤机数/需要同步的考勤机数。
若数值不等,说明存在部分与考勤机的同步指令执行失败。
详情页面显示具体下发状态以及解绑状态,两个状态均影响人员进场出场过考勤闸机,管理员可根据具体的失败原因调整内容重新执行;若是网络等原因,系统在一定期限内自动执行定时任务重发。
增加类似友好提示说明,告诉用户明确定义或流程。
二、小结
很多与硬件设备的传输都是异步任务处理机制,数据流转会产生多个状态,在产品设计过程中要注意并且提升用户体验,避免不必要的“误解”。
请持续关注,进一步分享关于异步任务的设计应用。
本文作者@树下乘凉 。
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!