ecFlow is a work flow package that enables users to run a large number of programs (with dependencies on each other and on time) in a controlled environment. It provides reasonable tolerance for hardware and software failures, combined with good restart capabilities. It is used at ECMWF to around half our operational suites across a range of platforms.
ecFlow submits tasks (jobs) and receives acknowledgements from tasks when they change status and when they send events. It does this using using child commands embedded in the scripts. ecflow stores the relationship between tasks and is able to submit tasks dependent on triggers.