当前位置:首页 > 教育

在产品设计中如何定义状态?

  在产品设计过程中,经常会遇到一些状态定义的场景。比如订单有待付款、待发货、待收货等,商品有上架、下架等,课程有待上课、上课中、已上课等。

  有些状态可能只用于前端展示,而另一些状态,可能跟业务流程有很强的关联,不同状态对应着不同的系统功能、业务流程。合理地定义状态,是好的产品体验和顺畅的业务流程的保障。

  我做过算法工程师,现在是教育行业的后台产品经理。我觉得技术背景对于我在进行状态定义时,有一定的帮助。本文根据自己遇到的几次状态定义的需求,来谈谈如何定义状态。

  文章结构比较简单,包括背景、如何定义状态、实例三部分。如何定义状态的正文部分,会将理论和实例结合。实例部分则给出完整例子。

  定义订单状态,是因为用户需要知道订单状态的信息,同时后台系统也需要订单状态来做不同的动作。定义商品的上架、下架,是为了控制商品在商城里的展示、售卖。定义课程状态,是为了数据统计、筛选等。

  我发现一些产品有堆砌状态的现象。所谓堆砌状态,就是先把状态做了,然后去想这个状态能用在什么地方。

  比如针对课程,设计了冻结操作,冻结后课程的状态会从正常切换到冻结状态。但冻结状态对应什么动作呢,并没有设计。问其为什么如此设计,回答说大家都这么设计,先把这个状态定义了,把这个功能做了,将来肯定会用到。

  当然,确实会存在一些常规设计,或者说不用多想就可以进行的设计。但更多的时候,应该是遇到一个问题、一个场景,需要用到一个状态来解决这个问题、处理这个场景的时候,我们再来定义状态、设计功能。

  首先要注意,状态分两类,一类是系统自动判定得到的状态,比如课程的待上课、上课中、已下课状态,系统可以通过比较当前时间和课程的开始、结束时间,自动判定得到。一类是人为操作得到的状态,比如课程的上架、下架,需要人为点击功能按钮,进行状态的切换。

  系统判定的状态需要有明确的定义。不同状态之间应该是互斥的,不应该出现某些情况下即可以判定为状态A,又可以判定为状态B。比如课程待上课、上课中、已下课的状态定义为,当前时间小于课程开始时间是待上课,系统时间大于课程开始时间、小于课程结束时间是上课中,当前时间大于课程结束时间是已下课,三者互斥。

  而人为操作得到的状态,与其说状态定义,不如说状态设定更合适一些,但为了统一描述,文中都称为状态定义。

  人为操作得到的状态的设定,需要的不是定义,而是设定原则或者说依据,不能毫无章法,想到什么就是什么。比如最简化的例子,商品的上架和下架,设置原则是商品是否要售卖,商品要售卖,则对应上架状态,商品不卖了,则对应下架状态。

  状态定义不是目的,只是手段。通过定义状态,使得系统、用户可以根据不同的状态值,进行不同的系统动作、人为动作,这才是目的。

  状态的定义可能出现冗余,或者定义之后发现通用性欠佳,仅能用到极少数地方。但如果只定义了状态,没有相应的功能设计,等于舍本逐末。甚至可能因为功能设计的得不够严谨,状态间没有形成逻辑闭环,导致整体设计无效。

  比如商品的上架、下架。上架对应的功能可能有,用户在前端看到商品显示已下架,且没有购买入口按钮。

  后台系统某些商品筛选结果列表中,不展示下架状态的商品。以及后台系统商品列表中,下架状态商品对应的操作中,应该有“上架”操作按钮,即可以通过点击上架按钮,将商品从下架状态切换至上架状态。

  功能设计最重要的是考虑周全,这不容易,但有一定规律。常见的与状态相关的功能设计有这么几类,包括前端展示、筛选、状态切换操作按钮、系统判定规则等。可以以此作为大的方向,结合自家系统的实情进行设计。

  状态对应的前端展示属于功能里设计中的一项,之所以独立成题,是因为展示是用户直接能看到的部分,所以需要考虑清楚每种状态下,各端应该如何展示。

  比如商品下架后前端商品的展示,是在列表页展示商品,但进入详情页后提示商品下架,还是不在列表页中展示商品,这是需要明确设计的。

  不同的状态间会互相切换,如果是系统判断得到的状态,要明确状态切换的节点,即满足什么条件时,会从一个状态切换到另一个状态。

  而人为操作得到的状态,要注意状态切换闭环的问题,比如状态A、B、C三者之间可以互相切换,需要设计操作按钮,使得从A可以切换到B,从B可以切换到C,而且还可以从C切换到A,而不是从B切换到C之后,发现没法重新切换到A或者B了。

  比如最简单的例子,操作人在后台系统中,通过点击上架按钮,将商品切换为上架状态后,上架按钮处应该显示下架按钮,这样操作人才能通过点击下架按钮将上架状态的商品切换为下架状态。

  这里举一个课程状态的例子。教育行业中,课程即是商品,课程的状态类似商品的状态。这里我们按照前文中的讲解,一步步来定义课程状态。注意,实例做了大量简化,仅用来说明状态定义过程。

  注意,所有功能除了整体功能描述外,一定要给出具体功能设计。比如当整体功能描述为“可编辑内容属性”时,应该给出具体功能设计:课程标题编辑框可编辑,课程类型选择框可选择等。这里为了简化,只给出整体功能描述。

  注意最后一个状态切换,课程状态切换为停止招生后,操作按钮从停售按钮切换成了上架按钮,也就是说可以点击上架按钮重新上架,这样就形成了状态切换的闭环。

  人人都是产品经理(是以产品经理、运营为核心的学习、交流、分享平台,集媒体、培训、社群为一体,全方位服务产品人和运营人,成立9年举办在线+期,线+场,产品经理大会、运营大会20+场,覆盖北上广深杭成都等15个城市,在行业有较高的影响力和知名度。平台聚集了众多BAT美团京东滴滴360小米网易等知名互联网公司产品总监和运营总监,他们在这里与你一起成长。

(编辑:bbin直营e世博新闻网)

特别声明:本网所刊载的“来源:bbin直营e世博新闻网”或“来源:bbin直营e世博日报”字样的所有作品,其知识产权均为bbin直营e世博日报社所有。未经许可,禁止进行转载、摘编复制及建立镜像等任何使用,否则视为恶意侵权,将追究相关法律责任。