This is a workflow engine for the Common Workflow Language which aims to have a pluggable architecture.
Notes:
- ep3 will not pass the test #61 with
requiredandcommand_line_tooltags due to common-workflow-language#761. - The conformance badge for SoftwareRequirement is not available because there are no conformance tests for this feature.
- Currently
ScatterFeatureRequirement(scattertag) andStepInputExpressionRequirement(step_inputtag) are not supported.- It affects the result of the tests of
Workflow(workflowtag),InlineJavascriptRequirement(inline_javascripttag),MultipleInputFeatureRequirement(multiple_inputtag) andSubworkflowFeatureRequirement(subworkflowtag).
- It affects the result of the tests of
- medal
- bash
- ruby 2.5.1 or later
- jq
- nodejs for
InlineJavascriptRequirement - docker for
DockerRequirement
- Install
medal,bash,ruby,jq,nodejsanddocker - Execute the following commands and add
/path/to/ep3to$PATH.
$ git clone --recursive https://github.com/tom-tan/ep3.gitSee ep3-runner --help for details.
$ ep3-runner <cwl> [job]It prints the log and debug outputs to stderr and prints the output object to stdout. Both types of outputs are printed in JSON Lines format.
Here is an example:
$ ep3-runner --quiet /path/to/ep3/examples/workflow.cwl /path/to/ep3/examples/inputs.yml | jq .
{
"output": {
"class": "File",
"location": "file:///current/directory/output",
"path": "/current/directory/output",
"basename": "output",
"dirname": "/current/directory",
"nameroot": "output",
"nameext": "",
"checksum": "sha1$c28e458d4e943c743b9b3c46fdab10688a6d68b6",
"size": 687
}
}$ git clone --recursive https://github.com/tom-tan/ep3.git
$ cd ep3
$ cwltest --tool $PWD/ep3-runner --test test.yml
Test [1/1] Workflow example
All tests passedThe ep3-runner command consists of the following internal commands:
ep3 init- Generates Petri nets for medal that represents a given CWL workflow (including internal states in workflow engines such as staging processes)
ep3 run- Executes a medal to run a workflow
ep3 list- Shows the output object for execution result
ep3 resume(Unimplemented)ep3 stop(Unimplemented)