@startuml oclib abstract Ressource { +id: int +name: string +icon: string +description: string +graphic: GraphicElement +element: Data/Processing/Storage/Workflow/Datacenter } class Data { +id: int +name: string } class Processing { +id: int +name: string +container: string +command: int +environment: int } class Storage { +id: int +name: string +url: string +capacity: int } class Datacenter { +id: int +name: string } class Workflow { +id: int +name: string } class ResourceSet { +id: int +name: string +ressources: Ressource[] } class WorkflowSchedule { +id: int +start: date +end: date +cron : string } class Graph { +id: int +ressources: Ressource[] +links: Link[] } class Link { +id: int +source: Ressource +target: Ressource graphic: GraphicLink } class GraphicLink { +id: int +startXY: coord +endXY: coord +style: string } class GraphicElement { +id: int +style: string +xy: coord } class Calendar { +id: int +name: string +workflows: Workflow[] +owner: string } class UserWorkflows { +id: int +user: string +workflows: Workflow[] } class DatacenterWorkflows { +id: int +datacenter: Datacenter +workflows: Workflow[] } class Graph { +id: 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..*" WorkflowSchedule Workflow "1" o-- "0..*" Graph Graph "1" o-- "0..*" Ressource Graph "1" o-- "0..*" Link Ressource -- GraphicElement Link -- GraphicLink Calendar "1" o-- "0..*" Workflow @enduml