有流程的使用情景,用户需要连续对多个对象操作,需要让这个过程顺畅,每步之间自动跳转。
设计产品信息架构时,我们往往倾向于只依据内容逻辑构建出一套层级结构。这有时会让“流程”不畅。不过,有时层级结构也能帮“流程”的忙。16.流程与内容逻辑 - 图1
这一篇,我们就专门分析下,在组装信息架构过程中,这两者的相互作用。


只顾及了内容逻辑,忽视了流程

16.流程与内容逻辑 - 图2迅雷,下载任务按照“正在下载”和“已完成”分成两类。
只看内容的分类,这样是清晰的,但我们来看看实际的使用情景。当下载即将完成时,我焦急的盼望,看着这个“正在下载”页面中此下载的进度,99%,99.5%… 终于到达100%的那一刻,这一项却消失了,它被转到了“已完成”栏目里。需要我懂得,自己打开“已完成”去找。
用对象串来描述这个流程:16.流程与内容逻辑 - 图3对象的状态也是对象的一部分,正在下载中的是一个对象,完成后成为了另外一个。这两个对象分别都对应着一些不同的操作。下载中的文件可以“暂停、加速”;下载完成的文件可以“打开、在文件管理器中打开、删除…”两个步骤之间的变化是自动完成的。
现在的设计,是一上来就先以内容逻辑定好架构:正在下载、已完成,可是这个流程,就怎么都不合适了。
为了解决这个问题,迅雷后来对这里做了改进:下载完成时,界面自动跳转到“已完成”。
可是,栏目自动跳转,这又是另外一种不好的设计,也许用户正在看“正在下载”中其它的信息,突然页面就变了。
先设定的这样两个分类,挺符合内容逻辑的,但却不适合实际的流程。
应该怎么改呢?
给个“全部”作为默认的列表,“正在下载、已完成”也保留,如果用户需要,可以筛选,只看某一类。就如同电商中对订单的设计:16.流程与内容逻辑 - 图4我印象中,以前电商订单里也是没有“全部”的,但用户总是在“待发货、已发货”之间苦苦寻找。买家也不确定昨晚下的单现在是不是发货了,不确定应该在哪个分类里看。其实,买家很可能就是要看看是否发货了。
提供“全部”列表,主要不是因为“用户很需要所有的一起看”,而是因为会自动变化的流程莫测。
要设计好有流程的使用情景,应该先以内容对象来描述情景,然后再兼顾层级关系的设计信息架构。


用结构来帮助流程

淘宝中为什么要有购物车?16.流程与内容逻辑 - 图5看中一件商品,点“立即购买”按钮,生成订单,确认订单,付费,就可以完成购买了。
但如果选多件商品,最后一起买单,那就需要购物车了。先都放入购物车,最后再在购物车中生成订单,发起结算。购物车是为“购买多个不同商品”这种情景准备的。
这个情景特别,特别在于:没法用一个非常连贯的流程实现。
这个流程有三个对象:商品、购物车、订单16.流程与内容逻辑 - 图6但“商品->购物车”却不宜自动跳过去,因为要选多件商品,如果每次放入购物车,都自动跳到购物车,那就每次都得再后退,才能再选其它商品,不方便。
也不知道用户会在何时停止选商品,去结算,所以,始终也没法自动打开购物车展现给用户。只能等着用户主动去打开购物车。
要用户主动打开购物车,这使得流程不够顺畅了,但似乎只能这样,那我们能做的就只能是,让“访问购物车”最大程度的方便。16.流程与内容逻辑 - 图7购物车是一级栏里,显示在主导航里。这是层级关系在为此帮忙,不然,购物车也可以放在“我的”里。
在商品的详情里,右上角,也有购物车。使得用户在选商品时,随时打算停下来,去结算,都能方便的找到购物车。这是利用“屏幕视图”来帮忙,让购物车与商品详情同框。
也就是因为购物车是一级栏目,在商品详情的右上角也有购物车才更符合逻辑:这产品有一大堆商品,还有购物车、消息、我的淘宝。打开某个商品详情,就是把某个商品拿出来仔细看。购物车是个一级栏目,在看详情这个视图里,因为需要,也露出了一个小角角,也挺合理。如果购物车是“我的淘宝”下的二级对象,详情视图的时候,怎能看到购物车,顶多是看到“我的淘宝”。
如果是看内容逻辑,购物车是一级栏目或放在”我的”下的二级栏目,都合理。但因为“购买多件”这个流程,需要购物车是一级。
购物车是哪一级,是信息架构问题,决策的依据不只是内容逻辑,更主要的是因为流程。
16.流程与内容逻辑 - 图8
订单里是否需要能修改收货地址?
需要。虽然在“我的”里有收货地址,可以去修改,但用户可能是在确认订单时,才看到地址有误,要修改,不能让用户自己跑去“我的”里修改。要保证流程连续。
确认订单的时候有修改地址了,“我的”还需要吗?
也需要。确认订单时,可能会需要修改地址,这个我们可以猜到,但用户还会在什么其它什么时候想要修改地址,我们并不总能猜到。所以,把“收货地址”放在一个内容逻辑合理的位置,用户需要的时候,自己比较容易找到。16.流程与内容逻辑 - 图916.流程与内容逻辑 - 图10
商品、购物车、订单、收货地址… 一个产品中有很多内容对象。
用户使用产品做个复杂的事儿,需要连续对多个对象操作,这是流程。这流程是串联起这些对象的一条线索,把它们建立起这样一种联系。层级关系是另外一条线索,不是因为用户要做某个特定的事儿,而是因为内容本身,把内容对象们串联起来:我的->我的收货地址。
流程建立起的联系是自动把用户带到下一个对象。内容逻辑建立的联系是要用户自己点击的。


一个有点儿绕的话题

内容逻辑表现出来是层级的,树状的,一级级向下归类。
流程呢?
/淘宝里,商品<->购物车->订单,这是一个流程,需要横跨信息树,使用三个对象。
/公积金网站里,员工->工作单,然后工作单状态一次次变化。虽然,我们没有完整设计公积金整站,但大概也能估计到,员工与工作单会是两个彼此独立的对象,不是上下级关系。
都是横向的,没有纵向的。
流程就没有纵向使用多个对象的吗?微信里,我->个人信息->头像,这也是要多个对象,这些对象都是上下级关系。16.流程与内容逻辑 - 图11从“我”中进入“个人信息”这是一个操控类的操作,并不是改变类的,用户并没真的对“我”这个对象做什么,我们说,“流程”是指需要对多个对象逐个操作,才能完成的情景,这里的操作是改变类的,真的对这个对象做点儿什么,把商品放入购物车,把申请表提交了。而这三级跳,只是一次次深入,为的是把“头像”这个对象拎出来。这种情况不算是“流程”。
由于这样界定了“流程”,所以,以我所知,流程通常不是纵向的。为什么要这样定义“流程”呢?为什么不能把上面这种层层深入也算作是流程呢?
用户想要的是改头像,需要历经三个对象,这是因为信息架构设计成了这样的层级,用户才不得不这样三级的访问,如果把“改头像”作为一级主菜单,就不需要这样逐级深入了。
从使用情景我们只能得知:用户需要头像、需要改头像,并不能确定“头像”这个对象的层级位置。位置是和其它对象一起组装时,权衡后才确定。这并不能像前面分析的那些真正的“流程”那样,在组装之前先单独优化。


小结

由“流程”而来的前后关系也是一种关系,不同于层级关系,但有时会与层级关系相关,层级关系的确定需要顾及流程。