I'm currently implementing a system where one can add certain entities to a repository with the added feature that at creation time of that asset, all other related assets have to be created too.

Eg: Add a Computer, and at the same time add it's components (CPU, Disk, Memory, ...).

Problem is the system is so flexible one could potentially end up adding a lot of entities at once. Say for example we add a Server. Suddenly we don't need to add 1 CPU but 4 and 8 modules of Memory, 4 harddisks, etc ... On top of that the harddisks also have different properties (2 SSD's and 2 7200rpm's). To make it even harder there is a possibility a "child entity" also has children (eg: a raid controller with harddisks attached to it)

From a data-entry point of view, how can I present this to the user in an understandable and easy to use way without building either a wizard with X steps where it's easy to get lost or build a form that scrolls down the page for 4 screens? Are there any proven methods for this problem interface wise?


how about using a data-entry tree like this


and this

http://responsibility.motorola.com/web_help/scriba_12b_-_Remove_this_leaf.png http://responsibility.motorola.com/web_help/Scriba_XLM_Tools_Training/Scriba_-_Material_Data_Entry_for_Complex_Products.htm

But this will again depend upon how much data you want to enter for each entity level. If each entity has its own 10-12 specific attributes, then wizard will be more easier to use since user has to spend substantial amount of time on each entity anyways.


As there are a lot of data, it's important to minimize user's cognitive load. The data should be clearly structured in a meaningful way and manual input should be minimized (recall over remember principle).

To support those requirements, you could:

  1. Develop templates for the typical cases.
  2. To mantain flexibility, allow user to add or remove data fields from the form. I.e. add new HDD or remove CPU unit.
  3. Group the data in a meaningful way. For your example it could be such groups as: CPU & Mainboard, Data Storage, etc.
  4. Let user choose the values from a list, try to minimize manual input. Use popup dialogs for complex values. It allows to concentrate user's attention on the task.
  5. Clear indicate status of the group: Not filled (data fields are empty), Filled partly, Filled.
  6. Use smart defaults, it its possible.

I'd rather have a defined workflow for defining the components one after another, with the ability to pause and resume the process in between, and returning to an overview page in between.

The overview

  • describes the next required step (if no steps remain, "Mark entry as complete")
  • optional steps (e.g. "Add special-purpose hardware")
  • may offer to return to an earlier step
  • may offer to enter data in different order (e.g. when I have to ask a colleague for something, I can still enter the rest and then get back)

This gives a structured, wizard-like workflow, but avoids blocking points where a missing piece of information will halt the entire process, and also provides for system fault resiliency (system crash will not drop the entire entry, but rather leaves you at a checkpoint).

Depending on how much data is queried per component, it might even be useful to have a "skip this question and leave TODO marker" button to formalize the process of handling incomplete information (i.e. block the "complete" button until all TODOs are resolved).

As a side note: when doing data entry, I'm always happy if there is an "expert path" that allows me to run through the form quickly by memorizing information. For example, if there is a "CPU" drop down box and I know the one I want is eleventh in the list, then typing (on the Numpad) 1 1 Enter should select the right one and advance in the form.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.