support "tasks"
The idea of a "task" is something like a branch on the graph, after completion of which the system returns to the branch point in the graph.
How could this be represented?
One idea would be to have a "task = True" state attribute. The task state would then act similarly to INIT, whereby the request would be reset to the current request after processing the request. Requesting INIT moves the system immediately to INIT, though, whereas for a task we would want the TARGET to be updated to the first state on the task path.