@startuml oclib abstract Ressource { +UUID: int +name: string +icon: string +description: string +graphic: GraphicElement +element: DataResource/ProcessingResource/StorageResource/Workflow/DatacenterResource } class DataResource { +UUID: int +name: string } class ProcessingResource { +UUID: int +name: string +container: string +command: int +environment: int } class StorageResource { +UUID: int +name: string +url: string +capacity: int } class DatacenterResource { +UUID: int +name: string } class Workflow { +UUID: int +name: string } class ResourceSet { +UUID: int +name: string +ressources: Ressource[] } class WorkflowSchedule { +UUID: int +start: date +end: date +cron : string } class Graph { +UUID: int +ressources: map[GraphicElement.UUID]Ressource +links: Link[] } class Link { +UUID: int +source: GraphicElement.UUID +target: GraphicElement.UUID +graphic: GraphicLink } class GraphicLink { +UUID: int +startXY: coord +endXY: coord +style: string } class GraphicElement { +UUID: int +style: string +xy: coord } class Calendar { +UUID: int +name: string +workflows: Workflow[] +owner: string } class UserWorkflows { +UUID: int +user: string +workflows: Workflow[] } class DatacenterWorkflows { +UUID: int +datacenter: DatacenterResource +workflows: Workflow[] } class Graph { +UUID: int +graph: Graph +workflows: Workflow[] } UserWorkflows "1" o-- "0..*" Workflow DatacenterWorkflows "1" o-- "0..*" Workflow Ressource <|-- DataResource Ressource <|-- ProcessingResource Ressource <|-- StorageResource Ressource <|-- DatacenterResource Ressource <|-- Workflow ResourceSet "1" o-- "0..*" Ressource Workflow "1" o-- "0..*" ResourceSet Workflow "1" o-- "0..1" WorkflowSchedule Workflow "1" o-- "0..*" Graph Graph "1" o-- "0..*" Resources Graph "1" o-- "0..*" Link Ressource --o GraphicElement Link -- GraphicLink Calendar "1" o-- "0..*" Workflow @enduml