笔者叙述了自己从智能马桶得到的启发,对产品中的考试管理模块的状态进行了定义。多多观察生活中的小事,运用产品思维,也许就有新发现。 01:
最近我们产品里增加了一个考试管理模块,其中需要监控每个考站的状态,以便顺利地推进考试流程。 有一天夜里我正在发愁怎么给设计师描述这几种状态,和它们的识别机制、后续操作。这时候正好小朋友起床上厕所,在小朋友座在马桶上的时候,我发现,也许能借助智能马桶的几种状态来解释一下其中的逻辑。 家里的智能马桶外观大致如下: 与下面要解释的状态逻辑有关的部件,主要是这两个: 主操作按钮:上图可见的圆形按钮,带Led灯,按下可以冲水; 落座感应区:在盖子掀开后的座垫上,大体靠近左侧大腿的位置。 落座感应区的检测,能够区分是无意的触碰(比如打扫卫生时扫过感应区、或故意对该区域短暂的触碰)还是真实的落座。 在好奇心驱使之下,笔者做了大致的测试,结论是:大约3~5秒的连续接触,即被识别为落座成功。 之所以要做落座检测,是因为当它检测到有人落座时,会触发三个动作: 点亮主操作按钮上的LED灯; 除臭电机开始工作; 开启离座检测,判断是否需要冲水。 第1、2两个动作很直观,1是看到灯亮,2是听见电机转动的声音,而第3条就跟新的状态有关了。 (点击图片放大) 在新的"落座使用状态"下,需要打开离座检测功能,就如同落座检测一样,它也要区分短暂的离开还是正式的离座。 同样地,离座检测识别为离座状态时,也会触发三个动作: 启动自动冲水程序; 停止除臭电机的工作; 离座后约30秒关闭LED灯。 离座流程处理完,马桶就恢复到无人待机状态,等待下一位用户的光临。 02:
到这里,我们做一个简单的归纳: 状态,是指通过某些过程,比如系统初始化(插电源)、或识别到某种外部输入(落座检测到有人——而不是短暂触碰)、或某些参数的临界值(离座后30秒)得到的一个结果; 状态不会一成不变,它会随着业务的发展而变化。 通常的业务会有初始状态,比如这个案例中,给马桶插上电源时进入的无人待机状态,就是一个初始状态。 有的业务会有最终状态,比如双十一下的订单,收到货以后发完点评,订单进入一个成功的最终状态;如果收到东西不满意,退货、差评甚至投诉结束,就是一个不太完美的订单的最终状态。 搞清楚状态的意义后,就需要列我们考试中考站、考官、考生的状态,我这里仅以一个简化的考站状态举例: (点击图片放大) 初始状态 00-未开始状态,刚进系统时默认的考站状态。 过程状态 我区分了正常状态和特殊状态,正常状态包括: 01-进行中状态,此时一切正常,作为考试运行的管理者,可以高枕无忧; 02-已完成状态,代表某个考站进展顺利,可以开始下一轮考试; 03-轮休状态,在特定的排考规则下,有些考站会出现某一轮未安排考生的状态; 特殊状态包括: 05-异常状态,这里主要是指多名考官在业务的某个环节,对考生的身份识别结果起了冲突。在这种特殊状态下,考试运行的管理员就需要插手干预了,我们给管理员开放了一个"重置"考站状态,让考官重新退回到身份识别这个步骤的按钮。 04-暂停状态,这个暂停的按钮也是控制在考试管理员手中的。与05异常状态中他被动接受需要出手的情况不同,这个按钮是由他主动控制的,由他判断是否遇到特殊情况需要中断每个考站的当前状态,直到特殊情况解除,重新恢复原先的状态(为了图形上不至于线条太多干扰读者,图中没有画出暂停和恢复时状态间的连线)。 基于上述逻辑,如果用卡片式的设计,UI设计师除了考虑考站的编号、名称、考官、考生等必要元素的布局之外,还需要通过卡片的配色、标签来标记不同的状态;甚至某些特殊的状态需要设计动态的交互,来体现其需要管理员立即干预的特殊地位,从而给用户带来"这份设计很准确"的用户体验。