@startuml class MonitorFactory { {static} createMonitor(string monitorType, Processor processor): Monitor } class ProcessorFactory { {static} createProcessor(string ProcessorType): Processor } interface Monitor { + {abstract} Init(processor Processor) + {abstract} startMonitoring() } abstract class WatchDogMonitor { + Init(processor Processor) + startMonitoring() } Monitor <|-- WatchDogMonitor: inherits WatchDogMonitor <|-- NexusFileCreatedMonitor: inherits MonitorFactory --> Monitor: <<create>> ProcessorFactory --> Processor: <<create>> interface Processor { + {abstract} process(Event event) } class Main { + init(string monitorType, string submitterType) + startMonitoring() } class NexusFileCreatedMonitor { + Init(processor Processor) + startMonitoring() - on_created(watchdog.events.FileSystemEvent) } interface Event { } class FileEvent { } Event <|-- FileEvent: inherits abstract class GalaxyDatasetSubmitter { string galaxy_url string galaxy_api_key string input_dataset_local_path dict inputs string output_local_path + {abstract} process(Event event) } class GalaxyWorkflowDatasetSubmitter { string workflow_name string workflow_local_path + process(Event event) } class GalaxyToolDatasetSubmitter { string tool_name + process(Event event) } Processor <|-- GalaxyDatasetSubmitter: inherits GalaxyDatasetSubmitter <|-- GalaxyWorkflowDatasetSubmitter: inherits GalaxyDatasetSubmitter <|-- GalaxyToolDatasetSubmitter: inherits Main "1" *-- "1" Monitor Main "1" *-- "1" Processor @enduml
Decode URL
Submit
amiga
aws-orange
black-knight
bluegray
blueprint
cerulean-outline
cerulean
crt-amber
crt-green
cyborg-outline
cyborg
hacker
lightgray
mars
materia-outline
materia
metal
mimeograph
minty
plain
reddress-darkblue
reddress-darkgreen
reddress-darkorange
reddress-darkred
reddress-lightblue
reddress-lightgreen
reddress-lightorange
reddress-lightred
sandstone
silver
sketchy-outline
sketchy
spacelab
spacelab-white
superhero-outline
superhero
toy
united
vibrant
🎉 Discover the future PlantUML Web Editor! 🚀
PNG
SVG
ASCII Art