@startuml processing links in workflow

participant graph           as graph
participant argoBuilder     as argo
entity      list_branches   as branches
' entity      graph           as argoGraph

graph -> argo  :   create new argo file (graph)
activate graph
activate argo

argo -> branches    :   identify each branches from graph
activate branches
branches --> argo    :   list of branches
deactivate branches

loop branch in branches
    loop link in branch
        argo -> argo    :   retrieve the computing component
        note right: a link is always made\n of a computing \nand a data source or \ndata storage component 
        
        loop branch in branches
            group if component id has a previous computing component
                argo -> branches    :      get the name of previous computing
                branches --> argo   :      computing.Name + computing.ID
                argo -> argo        :      add list of dependencie to DagStep object   
                end
            end

        group if other component is storage
            argo -> argo    :   retrieve the path
            argo -> argo    :   declare a volume in the argo format
            argo -> argo    :   add the created volume to computing as an output 
        else 
            argo -> argo    :   create a container to retrieve the data
            argo -> argo    :   mount a local folder in computing to share data 
            note right: how do we make sure that\n the data is mounted in\na place where the computing\nknows it can find it ? 
            end
        end
    end


@enduml