@startuml oclib abstract Ressource { +UUID: int +name: string +icon: string +description: string +graphic: GraphicElement +element: Data/Processing/Storage/Workflow/Datacenter } class Data { +UUID: int +name: string } class Processing { +UUID: int +name: string +container: string +command: int +environment: int } class Storage { +UUID: int +name: string +url: string +capacity: int } class Datacenter { +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: Datacenter +workflows: Workflow[] } class Graph { +UUID: int +graph: Graph +workflows: Workflow[] } UserWorkflows "1" o-- "0..*" Workflow DatacenterWorkflows "1" o-- "0..*" Workflow Ressource <|-- Data Ressource <|-- Processing Ressource <|-- Storage Ressource <|-- Datacenter 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