Introduction
EVL Workflow is a code based orchestration tool. It fires EVL tasks in parallel and in specified order on specified target host and consider specific priorities. EVL task is one of the following:
- Shell Script (‘*.sh’)
-
any shell script with ‘.sh’ suffix
- EVL job or workflow (‘*.evl’ or ‘*.ewf’)
-
EVL job is an ETL job, i.e. one or more DAGs (Directed Acyclic Graph) with data flows on edges and data modifying components as vertices. EVL workflow is also one or more DAGs, but vertices are Tasks (i.e. Shell Scripts, EVL jobs, other EVL workflows, or Wait for a file), edges are successors.
- Wait for a file
-
to sniff for an existence of a file with given file mask.
The workflow consists (mostly) of ‘Run’ components, which are used in EWS workflow structure definition file (‘ews/*.ews’), and which fires tasks. For details, see Run.
Simple example
Definition of a workflow can be defined in ‘ews/simple.ews’ and can looks like this:
Run job/example.1.evl job/example.2.sh Run job/example.3.sh End
As this workflow has no parameters, the file ‘workflow/simple.ewf’ will be empty. To fire this workflow run in command line:
evl run workflow/simple.ewf
It run jobs ‘example.1.evl’ and ‘example.3.sh’ in parallel, and once ‘example.1.evl’ finish successfully, fires also ‘example.2.sh’.
Other example
Slightly advanced workflow definition might look like this:
Run 2h job/common_job.sh --project=/full/path/to/other/project \ 4h 2r job/stage.invoices.evl End
which means to run common_job.sh from other project (fail and kill the job if not finished within 2 hours) and then run job/stage.invoices.evl, fail if (each run) does not finish within 4 hours, and try to restart two times when fail.
EVL Manager
EVL Workflow can be used separately or as a back-end to EVL Manager – graphical web UI.