Data Dictionary Cheat Sheet

Until we rename all the tables, etc. we need to what the terms we're using in the UI map to what tables, etc.

What users call it ORM Name Table Name
Tagged Campaign Tag tags
Campaign Stage Campaign campaigns
Job Type CampaignDefinition campagin_definitions
Launch/Login Template LaunchTemplate launch_template
Submission Task tasks
Job Job jobs
Files JobFiles job_files

Several of the above have snapshots for history so Campaign's have CampaignSnapshots -> campaign_snapshot;
and Jobs have JobHistory/job_histories

So a Campaign is some bunch of processing an experiment wants to do. It is broken down
into 1 or more Campaign Stages which are jobs that do a certain specific kind of work in the overall
Campaign, and which one or more Submissions of Jobs will be made (one Submission can of course launch
multiple Jobs).

A Campaign may be Partitioned by setting a Split Type on the first Campaign Stage in the (Tagged) Campaign,
which will break up its input dataset into one or more smaller datasets. Each successive launch of that lead
campaign stage will pull the next split-off dataset chunk for processing.

Campaign Stages may depend on each other, which means that when one completes, this triggers a launch of the other, with a dataset defined based on the output of the first. Currently this is defined in the GUI on the downstream campaign stage, specifying what it depends upon -- or in the overall Campaign Editor by a link between stages.

To make the partitioning work smoothly, campaign stages may depend on themselves to trigger a new launch as each one completes. Or you can link workflow stages into a cycle to cause the first stage to be launched when a whole pass through the workflow completes.