You can use loops in playbooks to iterate over a set of values, such as a simple list of strings, or a list of dictionaries.
You can use conditions to determine when to execute tasks or blocks.
You can handle errors in playbook tasks by ignoring task failures, marking tasks as failed under certain conditions, or overriding the behavior that causes a task to be marked as changed.
You can use blocks to group tasks as a unit, executing other tasks depending on whether all the tasks in the block succeed.
Workflow job templates connect multiple job templates into a single workflow. You can use workflow job templates to automate complex operations, including synchronizing projects, synchronizing inventories, and launching multiple job templates.
The workflow visualizer in the automation controller is a graphical interface that helps you to design the workflow of a workflow job template. For example, you can specify if a node should always run, if a node should run if the previous node succeeded, or if a node should run if the previous node failed.