Dynflow (DYNamic workFLOW) is a workflow engine
written in Ruby that allows to:
- Keep track of the progress of running processes
- Run the code asynchronously
- When something goes wrong, pause the process, optionally let user interact,
resume the process, skip some steps when needed
- Detect independent parts and run them concurrently
- Compose simple actions into more complex scenarios
- Extend the workflows from third-party libraries
- Keep consistency between local transactional database and
external services
- Suspend the long-running steps, not blocking the thread pool
- Cancel steps when possible
- Extend the actions behavior with middlewares
- Pick different adapters to provide: storage backend, transactions, or executor implementation
Dynflow has been developed to be able to support orchestration of services in the
Katello and Foreman projects.
Planned features
- Define the input/output interface between the building blocks
- Define rollback for the workflow
- Have multiple workers for distributing the load (in progress)
- Migration to concurrent-ruby (in progress)
Getting started
Requirements
- Ruby MRI 1.9.3, 2.0, or 2.1.
- JRuby and Rubinius support is on the way.
Installation
gem install dynflow
TODO
Links
Current status
Authors