oc-schedulerd/docs/uml/generating_graph_branches.puml

67 lines
2.0 KiB
Plaintext
Raw Normal View History

2024-05-02 09:52:28 +02:00
@startuml
actor oc_scheduler as oc
participant graph as graph
oc -> graph : loadFrom(worflow_name)
activate graph
activate oc
graph --> oc: Graph
group if g.Links size > 0
oc -> graph: generateArgo()
graph -> graph: create slice of end links (strings)
loop link in links
alt link is not a DC Link && destination id IS NOT a source id in any other link
graph -> graph: add link to list of endLinks
note right : exemple\n If current link is A-->B\n we look for another link like C-->A
end
end
loop link in endLinks
graph -> graph : copy Links id on a list
loop while hasParent
graph -> graph : currentLink = idList[i]
group if link.dst == currentLink.Src
graph -> graph : do something
note right : TEST ALGO : edit a\n string that shows every branch
graph -> graph : change currentSrc with link.Src
graph -> graph : remove currentLink from idList
end
group else
graph -> graph : hasParent = false
end
end
end
end
@enduml
créer une liste sans les liens composant - DC
// selectionner toutes les fins de branches :
creer une liste d'identifiant
pour chaque lien
si dst n'est pas source on ajoute l'id du lien a la liste
// recréer chaque branche
pour chaque id de fin de branche
copier les liens dans un nouvel objet
declarer une variable pour controller s'il y'a encore un lien parent
tant qu'il y'a un lien parent
iterer dans la liste des liens
si un lien a en dst le même id que la source actuelle :
afficher "{id_src} s'execute une fois que {id_dst_trouve} est fini"
changer l'id de la source actuelle par celui de la source du lien trouvé
sinon
lien parent = faux