code: def evaluate(self,
                   process,           # type: Process
                   job,               # type: Any
                   job_order_object,  # type: Dict[Text, Text]
                   research_obj       # type: ResearchObject
                  ):  # type: (...) -> None
          
          if not hasattr(process, "steps"):
              # record provenance of independent commandline tool executions
              self.prospective_prov(job)
              customised_job = copy_job_order(job, job_order_object)
              self.used_artefacts(customised_job, self.workflow_run_uri)
              research_obj.create_job(customised_job, job)
          elif hasattr(job, "workflow"):
              # record provenance of workflow executions
              self.prospective_prov(job)
              customised_job = copy_job_order(job, job_order_object)
              self.used_artefacts(customised_job, self.workflow_run_uri)
docs: Evaluate the nature of job