听起来你有两个任务:任务1是对对象进行分类,对于一系列对象,用户需要在多个维度(属性)上为每个对象分配一个类别(值)。任务2是创建和修改维度和类别。
除了数据建模者、面向对象的程序员和数据库设计师外,维度和类别的概念对大多数用户来说是非常难以理解的。你应该准备好用户可能不理解类别和维度之间的区别。然而,用户通常会理解表格,其中每一列都是一个维度(包括几个类别),每一行都是一个对象。尽可能地使用表格。
第一个关键问题是通过用户研究确定任务1和任务2的集成程度或分离程度。
如果这些任务是集成的,用户经常会毫不费力地从一个任务切换到另一个任务,则一个UI设计是提供一个按维度排列的对象表格,但提供一个空列(或“插入”按钮),以允许用户添加维度。列标题是维度名称,用户可以编辑。标题下面是列出该维度类别的空间。每个类别名称都是可编辑的,并且有一个空行(或插入按钮)用于添加新类别。下面是要分类的对象,每个对象在每个维度的下拉列表中都有一个选项。
在可用性测试中,要注意用户试图通过单击类别列表中的类别来设置对象的类别,而不是从下拉列表中选择。为了防止这种情况发生,使类别列表在视觉上看起来与表格分离。
你可能需要一个按钮来隐藏/显示类别列表,因为即使使用滚动条,这也会占用很多空间。即使任务1和2紧密集成,你也会发现用户有时想把类别列表放到一边。
如果你发现任务1和任务2是分开的,很少一起完成(例如,用户通常先设置维度,然后对一堆对象进行分类),那么最好为每个任务提供单独的窗口(或页面),但应该容易在它们之间来回导航。例如,虽然用户通常会预先设置他们的维度,然后很少修改它们,但有时用户会意识到某个维度需要一个新的类别,而同时又要对一个不寻常的对象进行分类,所以你可以提供一个“添加类别”菜单项,将用户带到管理类别窗口,当前维度插入一个新类别,等待用户提供名称。
任务1的窗口与以前相同:对象表格,每个维度都有一个下拉列表列,但排除类别列表、编辑维度名称和添加新维度的功能。如果用户需要扫描需要分类或重新分类的对象,或者通常需要比较一个对象与其他一些对象(例如,决定如何对对象进行分类),则这是最有效的方法。然而,如果用户的任务真正仅限于根据外部信息(例如从纸张转录信息)逐个对对象进行分类,则应考虑使用表单而不是表格,显示一个属性的数组列表框。通过单击每个列表框来设置每个类别,这比使用下拉列表更快。
任务2的窗口可以像任务一的标题部分一样。它与任务1使用的表格保持一致,允许用户同时查看多个维度的类别,帮助他们找到最佳的分类方案(例如,帮助他们找到在两个不同维度中基本相同的类别出现的位置)。然而,如果空间有问题,则考虑一个维度列表,每个列表显示主细关系中的类别。
任务2的最终用户权力和灵活性是类似树形控件。树的根级别包括维度,层次结构中的下一步包括每个维度内的类别。其主要优点是支持依赖于类别的维度。例如,一个人可能有一个包括汽车、船、飞机等类别的车辆类型维度。对于汽车类别,可以有一个仅适用于该类别的车身类型维度(Coupe、Hatchback等)。依赖维度在树中由类别分支表示。结果是树在每个级别交替使用维度和类别。
重要的是要通过不同的图标、甚至不同的字体来视觉区分类别和维度,以告诉用户层次结构中交替的步骤在质上有所不同(例如,如果您创建了一个维度,则应创建至少两个类别)。即使如此,也要提供一种易于恢复的方式,以防用户将维度与类别混淆(例如,允许他们将一堆“维度”移动到另一个维度下,将前者转换为类别)。
我想再次强调人们对维度和类别等抽象概念的困难。即使他们理解了它,人们通常也很难自己创建合适的维度和类别。这可能会导致复杂的交互作用,需要您考虑(例如,当将类别移动到新维度时,对象分类会发生什么变化?)。如果您期望每个用户真正创建自己的新维度,则可能需要认真重新考虑整个方法。这是一个本质上复杂的任务。
如果文化、组织或领域中已经存在相关的多维方案(例如我们对汽车的方案),用户会做得更好。当然,如果已经存在这样的方案,那么您可以研究它,并将其安装为产品中的默认维度集。任务2只需要支持以允许专家用户进行微调。