What are the differences between user flows, task flows and workflows?
There isn't really a standard or convention that define these terms, but there's some sense in how these often differ.
First, the term flow denotes a non-linear path, i.e. one that branches.
Then, flow in UX denotes through the system. Meaning that the analysis makes use of the system templates (either existing or those of the design).
A task flow diagram shows how users travel through the system templates while performing a specific task.
Compared to user flows, task flows are appropriate when the task in question will be performed similarly by all users, who will also share a common entry point. For example, in a alarm-clock mobile app, a task such as 'set alarm time' is likely to be performed in the same way by all users.
The main two granularity factors in task flow diagrams are:
- Implementation Level - whether templates or individual controls are used for the analysis.
- Branching - some diagrams assume smooth traversal with no exceptions or decision splits, where others are used for exactly the opposite - showing all the possible paths including all possible branching.
Sometimes, task flows are drawn by adding progress indicators to the sitemap.
User flow diagrams are similar to task flows, but they emphasise that different users may perform different tasks or travel in different paths (largely due to a different entry point). User flows are typically attached to a persona and/or a specific entry point.
For instance, two users seeking to purchase a Nirvana CD on Amazon may have completely different journeys - one will enter the system via the browser's address bar, search for the album she already knows she wish to buy, add to basket and buy; where the other may search on Google, then reach Amazon product page via a link, then would like to read the reviews, perhaps compare different CDs, etc.
There is some good comparison of different user flows here, which is also the source for this illustration:
I'm not 100% sure about this one, so I simply apply the broader sense of the term to UX. When a complex goal involves many sub-tasks, and when different people may have different preferences as to which tasks to perform and in which order, the analysis moves from the lower level task flow to the higher level work flow.
That is, a work flow analysis may involve looking into the possible traversal paths between the different sub tasks needed to achieve a higher goal.
The User Flow you describe here sounds a bit like a "User Journey", http://ux.stackexchange.com/a/38779/9880.
Why is a flow not a linear process? Can it not be a linear process if it happens to be quite simple?
Workflow is a set of steps to reach the goal. It's a general term (Workflow).
In UX field you can see both terms Task flow and User flow are used mostly interchangeable.
For me Task Flow is a good name for the results of Task Analysis technique. At the same time the results of the User Analysis techniques (in narrow sense) are User Models, Persons, but not User Flow.
I think User Flow occured under the pressure of UCD and it demonstrates the paradigm shift from Machines (What does system do? How does system do it?) to Humans (Why does he do it? How does he do it?). So Task Flow could be perceived a bit technically, while User Flow sounds more close to humans.