/**
   * Constructor.
   *
   * @param dockerClient Docker connection URI
   * @param dockerImage Docker image
   * @param temporaryDirectory temporary directory
   */
  public DockerSimpleProcess(final DockerClient dockerClient, final String dockerImage) {

    checkNotNull(dockerClient, "dockerClient argument cannot be null");
    checkNotNull(dockerImage, "dockerImage argument cannot be null");

    this.dockerClient = dockerClient;
    this.dockerImage = dockerImage;
    this.userUid = SystemUtils.uid();
    this.userGid = SystemUtils.gid();
  }
  /**
   * Constructor.
   *
   * @param arguments arguments object
   */
  WorkflowContext(final ExecutorArguments arguments, final AbstractWorkflow workflow) {

    checkNotNull(arguments.getLocalWorkingPathname(), "arguments cannot be null");
    checkNotNull(workflow, "workflow cannot be null");

    this.workflow = workflow;
    this.jobId = arguments.getJobId();
    this.jobUUID = arguments.getJobUUID();
    this.contextCreationTime = arguments.getCreationTime();
    this.host = SystemUtils.getHostName();

    checkNotNull(arguments.getLocalWorkingPathname(), "base path cannot be null");
    checkNotNull(arguments.getWorkflowPathname(), "parameter path cannot be null");
    checkNotNull(arguments.getDesignPathname(), "design cannot be null");
    checkNotNull(arguments.getOutputPathname(), "output path cannot be null");
    checkNotNull(arguments.getJobPathname(), "log path cannot be null");
    checkNotNull(arguments.getJobDescription(), "job description cannot be null");
    checkNotNull(arguments.getJobEnvironment(), "job environment cannot be null");

    this.workflowFile = new DataFile(arguments.getWorkflowPathname());
    this.designFile = new DataFile(arguments.getDesignPathname());
    this.jobDescription = arguments.getJobDescription();
    this.jobEnvironment = arguments.getJobEnvironment();
  }