Ewoks is a framework for automating data processing and experiments at large-scale facilities in a reproducible, traceable, and portable manner.
It is a meta workflow system that can execute the same computation graph using different workflow management systems.
flowchart LR
ewoksweb["ewoksweb (Web UI)"]
ewoksserver["ewoksserver (REST backend)"]
ewoksjob["ewoksjob (Client)"]
ewoksjobworker["ewoksjob (Worker)"]
ewoks["ewoks (API / CLI)"]
ewokscore["ewokscore (Core engine & runtime)"]
ewoksdask["ewoksdask"]
ewoksppf["ewoksppf"]
ewoksorange["ewoksorange"]
%% User interaction
ewoksweb --> ewoksserver
%% Submission path
ewoksserver --> ewoksjob
ewoksjob --> ewoksjobworker
%% Execution
ewoksjobworker --> ewoks
ewoks --> ewokscore
ewoks --> ewoksdask
ewoks --> ewoksppf
ewoks --> ewoksorange
ewoks: main python API and CLI for workflow execution.ewokscore: runtime graph and task utilities used by Ewoks Engines and Ewoks Apps.
ewokscore: basic engine for sequential execution.ewoksdask: engine for distributed execution.ewoksppf: engine that supports loops and conditional links.ewoksorange: engine with a desktop graphical user interface.
Engines can be created by anyone.
The ewoks package can discover all engines installed in the same python environment.
ewoksjob: Job scheduling system- client: submit workflows (no
ewoksinstallation required) - worker: execute workflows (
ewoksinstalled)
- client: submit workflows (no
ewoksutils: Shared utilities used by ewoks, ewokscore, and ewoksjob on both client and worker sides.ewoksweb: web frontend for workflow creation and execution.ewoksserver: REST server for workflow creation and execution.
ewokssphinx: Sphinx directives for Ewoks Apps documentation.ewokswhale: Ewoks docker application.ewoksdraw: Graphical rendering of Ewoks workflows.