1. A computer-implemented method for performing a process, the method comprising: (a) receiving a request to perform a process, the process having a state and comprising a plurality of tasks and at least a scheduler rule; (b) receiving a plurality of checkpoints associated with the process, each checkpoint comprising checkpoint state data and at least a respective checkpoint rule governing execution of the process, wherein the checkpoint state data comprises information about the state of the process and wherein the checkpoint rule defines, based at least in part on at least one of the checkpoint state data and a first predetermined condition, one or more of the plurality of tasks to be executed and the way in which the one or more tasks will execute; (c) determining a first task of the plurality of tasks to be scheduled into a priority queue, in accordance with the scheduler rule; (d) determining the first checkpoint of the plurality of checkpoints that is to be the first checkpoint used in processing the first task, in accordance with the scheduler rule; (e) creating the checkpoint state data for the first checkpoint; and (f) saving the checkpoint state data for the first checkpoint.