@Override
  public boolean performFinish() {

    grabDataFromWorkflowPage();

    if (!performValidations()) {
      return false;
    }

    if (!validateWorkflowAndPlaceholders() && !requestConfirmationForValidationErrorsWarnings()) {
      // keeps the execute dialog open
      return false;
    }

    WorkflowExecutionUtils.setNodeIdentifiersToTransientInCaseOfLocalOnes(
        wfDescription, localNodeId);
    saveWorkflow();

    grabDataFromPlaceholdersPage();

    Job job =
        new Job(Messages.workflowExecutionWizardTitle) {

          @Override
          protected IStatus run(IProgressMonitor monitor) {
            try {
              monitor.beginTask(Messages.settingUpWorkflow, 2);
              monitor.worked(1);
              executeWorkflowInBackground();
              monitor.worked(1);
              return Status.OK_STATUS;
            } finally {
              monitor.done();
            }
          };
        };
    job.setUser(true);
    job.schedule();

    return true;
  }