code: private void runFlow() throws Exception {
      this.logger.info("Starting flows");
      runReadyJob(this.flow);
      updateFlow();
  
      while (!this.flowFinished) {
        synchronized (this.mainSyncObj) {
          if (this.flowPaused) {
            try {
              this.mainSyncObj.wait(CHECK_WAIT_MS);
            } catch (final InterruptedException e) {
            }
  
            continue;
          } else {
            if (this.retryFailedJobs) {
              retryAllFailures();
            } else if (!progressGraph()) {
              try {
                this.mainSyncObj.wait(CHECK_WAIT_MS);
              } catch (final InterruptedException e) {
              }
            }
          }
        }
      }
  
      this.logger.info("Finishing up flow. Awaiting Termination");
      this.executorService.shutdown();
  
      updateFlow();
      this.logger.info("Finished Flow");
    }
docs: Main method that executes the jobs.