I’ve talked a lot about task flows on web sites but not much about how I’d implement them. Here’s a brain dump.

Here’s how I’d structure the human side of URLs:

This would generate the task flow, associate it with the user in the database, determine how the user can accomplish the task (if security allows it), and send the user to the first necessary step of the task. The new task would have a unique ID in the database, and the site would forward the user to a URL constructed for that task:

These URLs would also be linked from the task bar in the site’s interface. The user would click on the task bar to jump among independent task flows.

Tasks would be transactional. More technically, they would be ACID-like. At the site administrator’s option, tasks could expire, or users could have a maximum number of concurrent tasks.

Now, MVCs still have an abstracted role in this system. Task flows actually hop among controller actions, and many task flows would only need to use one controller’s action to finish. But as systems become more complicated, one controller’s action doesn’t always do the job. That’s where this system would shine.