A generic approach to scheduling and checkpointing workflows. (November 2019)