@startuml oclib abstract Resource{ +UUID: int +name: string +icon: string +description: string +graphic: GraphicElement +element: DataResource/ProcessingResource/StorageResource/Workflow/ComputeResource } 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 ComputeResource { +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]Resource +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 +compute: ComputeResource +workflows: Workflow[] } class Graph { +UUID: int +graph: Graph +workflows: Workflow[] } class Workspace { +UUID: int +name: string +resources: ResourceSet[] +peers: Peer[] } class Peer { +UUID: int +name: string +url: string } class SharedWorkspace { +UUID: int +name: string +version: string +description: string +attributes: map[string]string +workspaces: Workspace[] +workflows: Workflow[] +peers: Peer[] } class RuleSet { +UUID: int +name: string +description: string +rules: Rule[] } class Rule { +UUID: int +name: string +description: string +condition: string +action: string } SharedWorkspace "1" o-- "0..*" Workspace SharedWorkspace "1" o-- "0..*" Peer Workspace "1" o-- "0..*" ResourceSet Peer -- Resource RuleSet "1" o-- "0..*" Rule SharedWorkspace -- RuleSet UserWorkflows "1" o-- "0..*" Workflow DatacenterWorkflows "1" o-- "0..*" Workflow Resource<|-- DataResource Resource<|-- ProcessingResource Resource<|-- StorageResource Resource<|-- ComputeResource Resource<|-- 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 Resource--o GraphicElement Link -- GraphicLink Calendar "1" o-- "0..*" Workflow @enduml