@startuml
namespace main {
    class ArgoBuilder << (S,Aquamarine) >> {
        - graph Graph
        - branches [][]string

        + Workflow Workflow

        - createTemplates() 
        - createDAGstep() 
        - createVolumes() 
        - getDependency(current_computing_id string) []string

        + CreateDAG() bool

    }
    class Container << (S,Aquamarine) >> {
        + Image string
        + Command []string
        + Args []string
        + VolumeMounts []VolumeMount

    }
    class Dag << (S,Aquamarine) >> {
        + Tasks []Task

    }

    class Link << (S,Aquamarine) >> {
        + Src string
        + Dst string

    }
    class Parameter << (S,Aquamarine) >> {
        + Name string
        + Value string

    }
    class Spec << (S,Aquamarine) >> {
        + Entrypoint string
        + Arguments []Parameter
        + Volumes []VolumeClaimTemplate
        + Templates []Template

    }
    class Task << (S,Aquamarine) >> {
        + Name string
        + Template string
        + Dependencies []string
        + Arguments <font color=blue>struct</font>{[]Parameter}

    }
    class Template << (S,Aquamarine) >> {
        + Name string
        + Inputs <font color=blue>struct</font>{[]Parameter}
        + Container Container
        + Dag Dag

    }
    class VolumeClaimTemplate << (S,Aquamarine) >> {
        + Metadata <font color=blue>struct</font>{string}
        + Spec VolumeSpec

    }
    class VolumeMount << (S,Aquamarine) >> {
        + Name string
        + MountPath string

    }
    class VolumeSpec << (S,Aquamarine) >> {
        + AccessModes []string
        + Resources <font color=blue>struct</font>{<font color=blue>struct</font>{string}}

    }

    class Workflow << (S,Aquamarine) >> {
        + ApiVersion string
        + Kind string
        + Metadata <font color=blue>struct</font>{string}
        + Spec Spec

    }
}


@enduml
