- Entrypoint:
main— a DAG template that declares four tasks: A, B, C, and D. - All tasks use the same container template
echo-message(based on busybox) which echoes a parameter provided to the task. - Dependencies:
- A has no dependencies and runs first.
- B and C both depend on A, so they run in parallel after A completes.
- D depends on both B and C and runs only after both have finished.
If a task has no dependencies it becomes runnable immediately. Multiple tasks that become runnable at the same time will execute in parallel (subject to executor and cluster limits).
Example workflow (Argo Workflow YAML)
- Task A runs first because it has no dependencies.
- When A completes, both B and C become runnable and execute concurrently (subject to resource limits).
- After both B and C finish, D becomes runnable and runs (it depends on B and C).
- The workflow completes once D finishes.
Example task log output (each task echoes its message)
- Use DAGs when you need parallelism or non-linear execution flows. For strict linear flows, a steps-based template may be simpler.
- Keep resource and concurrency limits in mind; “runnable” tasks may wait if cluster limits are reached.
- Prefer clear task names and parameter values so logs and UIs are easier to read.