Here's a genericized story for an issue I'm curious about:

A secure website for ACME Company has a
table of thousands of widget orders in an "initial" status that need to be processed online.

Dozens of ACME Company staff will be accessing the website at the same time to grab widget orders and process them. As such, once a person grabs an order to work on, they are the only person who can work the "checked out" order.

While they have the widget order checked out, they may change the status of the order, in which case the widget order moves to a new status outside of the "initial" queue, or they may alogether leave the order (for any reason) to get the next available order, or if they stay on the page too long, their user session may time-out with their item still checked out, but nothing else changed.

From the perspective of a user going through the queue of items, what features can be added to make this workflow process as user-friendly as possible?

For example: what would you do in the case where the user has checked out an item and then their session times out? Should they be forced to work on that item next? How would you transition from one-checked out order to the next: would you give them filters to slice up their options of buckets to grab from next? etc...

Any pointer to resources on this topic would be helpful, as my googling up to this point has not yielded meaningful results.

  • Much depends on the relationship between the people that check out items. If I can yell across the room "hey Fred you've got 17 items checked out, check some in!" it's very different than if I don't know Fred, don't know his location, and haven't pre-established communications with him.
    – obelia
    Dec 13, 2012 at 23:03

1 Answer 1


My suggestions:

  • Delegate batches to a limited number of users (group) per batch. This is to reduce the risk of collisions when a user "take" an item.

  • When user take an item, check with database and if available set status in database for that user with a time-stamp. If not available see point with collision.

  • Check occasionally for time-outs - if no activity on an item for x minutes unlock it. This time out must be reasonable to prevent accidentally unlocking an item that is in use even when a session time-out has occurred. Session time-outs shouldn't matter, but for other time-outs re-take the item automatically if possible, or inform user that due to time-out it has been transferred to a new item.

  • When a batch is completed assign a new batch to the group

  • When user go to next item, automatically unlock the previous item (users forget to unlock so do this automatically).

  • If there happen a collision (with many users this is likely) transfer the user to next item and show information to the user that the one it selected was taken and has been assigned a new item.

  • Items that gets statuses that require re-queuing is just transferred to a new batch.

Batches are created in the background all-time. Instead of creating a que with all items, create a cue with batches.

By using the batch approach you can reduce the risk of collisions, but also group similar items together to improve processing rhythm. You can create batches also on a number of other factors depending on the scenario, including assigning items in a batch based on where the user come from, company, categories, status and what else have you.

My 2 cents.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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