The coolest part, I think, is how you can dynamically influence the next steps, either by changing parameters based on previous output, or selecting different jobs entirely at runtime.
It's all about how you write your next()
method on your workflow objects. For example: