@startuml

participant main
participant manager
participant argo_builder
participant oc_catalog

activate main

main -> manager     :   startManager(list_schedules)
activate manager

loop while true

    manager -> oc_catalog   :   get(/v1/schedule/) : \n @start time.Now() \n @end time.Now() + 1 hour
    oc_catalog --> manager  :   json schedule workflow
    manager -> manager      :   lock(list_workflows)

end

main -> manager     :   launch_exec(list_schedule)

loop while list_schedule[0].time < time.Now()
    manager -> argo_builder     :   create_argo(workflow_name)
    argo_builder -> oc_catalog  :   get(/v1/workflow) :\n @name workflow_name
    oc_catalog  --> argo_builder:   workflow
    argo_builder -> argo_builder:   create_argo  
    argo_builder --> manager    :   true/false

    alt true 
        manager -> manager          :   remove list_schedule[0]
    end
end

@enduml