# Apps and Workflows Glossary

On the DNAnexus Platform, the following terms are used when discussing apps and workflows:

* **Execution:** An analysis or job.
  * **Root execution**: The initial analysis or job that's created when a user makes an API call to run a workflow, app, or applet. Analyses and jobs created from a job via `/executable-xxxx/run` API call with `detach` flag set to `true` are also root executions.
  * **Execution tree**: The set of all jobs and/or analyses that are created because of running a root execution.
* **Analysis**: An analysis is created when a workflow is run. It consists of some number of stages, each of which consists of either another analysis (if running a workflow) or a job (if running an app or applet).
  * **Parent analysis**: Each analysis is the parent analysis to each of the jobs that are created to run its stages.
* **Job**: A job is a unit of execution that is run on a worker in the cloud. A job is created when an app or applet is run, or when a job spawns another job.
  * **Origin job**: The job created when an app or applet is run by either a user or an analysis. An origin job always executes the "[main](https://documentation.dnanexus.com/developer/api/running-analyses/applets-and-entry-points#running-entry-points)" entry point.
  * **Master job**: The job created when an app or applet is run by a user, job, or analysis. A master job always executes the "main" entry point. All origin jobs are also master jobs.
  * **Parent job**: A job that creates another job or analysis via an `/executable-xxxx/run` or `/job/new` API call.
  * **Child job**: A job created from a parent job via an `/app[let]-xxxx/run` or `/job/new` API call.
  * **Subjob**: A job created from a job via a `/job/new` API call. A subjob runs the same executable as its parent, and executes the entry point specified in the API call that created it.
  * **Job tree**: A set of all jobs that share the same origin job.
* **Job-based object reference**: A hash containing a job ID and an output field name. This hash is given in the input or output of a job. Once the specified job has transitioned to the "done" state, it is replaced with the specified job's output field.
