Workflow On Exit#

from hera import DAG, Task, Workflow, WorkflowStatus


def echo(s: str):
    print(s)


# assumes you used `hera.set_global_token` and `hera.set_global_host` so that the workflow can be submitted
with Workflow("on-exit") as w:
    Task("t1", echo, [{"s": "a"}]) >> Task("t2", echo, [{"s": "b"}])

    with DAG("exit-procedure") as exit_procedure:
        t3 = Task("t3", echo, [{"s": "1"}]).on_workflow_status(WorkflowStatus.Succeeded)
        t4 = Task("t4", echo, [{"s": "2"}]).on_workflow_status(WorkflowStatus.Succeeded)
        t3 >> t4

        t5 = Task("t5", echo, [{"s": "3"}]).on_workflow_status(WorkflowStatus.Error)
        t6 = Task("t6", echo, [{"s": "4"}]).on_workflow_status(WorkflowStatus.Error)
        t5 >> t6

    w.on_exit(exit_procedure)
w.create()