HyperFlow is a Workflow Management System (WMS) dedicated for scientific workflows.
Browse the wiki pages to learn more about the HyperFlow workflow model.
- Install Node.js (http://nodejs.org)
- Install Redis (http://redis.io)
- Install HyperFlow:
- From npm package:
npm install -g @hyperflow/hyperflow
- From github repository:
npm install https://github.com/hyperflow-wms/hyperflow/archive/{version}.tar.gz
(where{version}
is for examplev1.5.0
) - From the master branch:
npm install https://github.com/hyperflow-wms/hyperflow/archive/master.tar.gz
- From npm package:
- Start the redis server:
redis-server
- Run example workflows using command
hflow run <wf_directory>
, for example:hflow run ./examples/Sqrsum
- Use the latest Docker image for the HyperFlow engine, published in Docker Hub as
hyperflowwms/hyperflow
- You can build the image yourself:
make container
- Start redis container:
docker run -d --name redis redis --bind 127.0.0.1
- Run workflow via HyperFlow container, for example:
docker run -a stdout -a stderr --rm --network container:redis \
-e HF_VAR_WORKER_CONTAINER="hyperflowwms/soykb-workflow-worker" \
-e HF_VAR_WORK_DIR="$PWD/input" \
-e HF_VAR_HFLOW_IN_CONTAINER="true" \
-e HF_VAR_function="redisCommand" \
-e REDIS_URL="redis://127.0.0.1:6379" \
--name hyperflow \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $PWD:/wfdir \
--entrypoint "/bin/sh" hyperflowwms/hyperflow -c "apk add docker && hflow run /wfdir"
Where
hyperflowwms/soykb-worker
is the name of the workflow worker container (Soykb in this case)- current directory contains
workflow.json
- subdirectory
inputs
contains workflow input data
Outputs:
- Directory
inputs
will contain files generated by the workflow run - Directory
inputs/logs-hf
will contain logs of all workflow jobs
See HyperFlow Kubernetes deployment project for more information.
- Start the RabbitMQ container:
docker run -d --name rabbitmq rabbitmq:3
- Add option
-e AMQP_URL=amqp://rabbitmq
- More information in the hyperflow-amqp-executor project
- Warning: currently not maintained and not tested with latest HyperFlow versions
You can provide workflow configuration through local configuration files:
workflow.config.json
-- main configuration fileworkflow.config.{name}.json
-- any number of secondary configuration files
The content from all configuration files will be merged and passed to workflow functions via context.appConfig
. For example for files:
workflow.config.json:
{
"main": "mainValue"
}
workflow.config.foo.json:
{
"secondary": "secondaryValue"
}
The following will be passed in context.appConfig
:
{
"main": "mainValue",
"foo": {
"secondary": "secondaryValue"
}
}
The HyperFlow engine can be started in a server mode using command: hflow start-server
If succesfully started, the server prints its URL:
HyperFlow server started at http://localhost:38775
Workflows can be run through the HyperFlow server as follows:
hflow run --submit=<hyperflow_server_url> <workflow_dir>
Currently <workflow_dir>
must be a local directory accessbile by the server. This allows running multiple workflows (concurrently) using the same instance of the HyperFlow engine.