# Repository Items

| Repository Item | Naming Convention |
| --- | --- |
| Folder | Folders are used to group items of a similar category or behavior.<br><br>Folder names should be Camel Case, separated by underscores. No whitespace should<br>be allowed. Only use alphanumeric characters, i.e. [Aa..Zz] and [0..9].<br><br>A Playpen or Scratchpad should be<br>created in each project under each category of repository items for developers to<br>design temporary jobs. Jobs within the **Playpen** or **Scratchpad** can be<br>deleted at any time without any impact. Developers are responsible for deleting<br>their temporary jobs. |
| Contexts | Contexts are group of variables defined for various environment.<br><br><ul> <li>Database Context Group should be created from the Metadata DB Connection                  definition. This is done by creating a new DB Connection metadata object with the                  right settings. During the creation of the metadata object, click on the button to                    <span>Export Context</span>. These database contexts should be left                  unchanged, i.e. do not rename the context variables or add new context variables                  to these contexts.</li> <li>Additional contexts should be created for project specific requirements.                  Normally you should limit the number of additional contexts you create. Limit to                  &lt; 3 new additional contexts per project. For example, you can have a                    <span>Common</span> context group.</li> </ul> |
| Context Variable | <ul> <li>Database context variables should be left untouched. </li> <li>Non-database context group variables should follow Camel Case with the first                  character in lower case.&nbsp; <p>For example: path, folder, customerId.</p> </li> <li>Context variable must be descriptive.&nbsp; </li> <li>Avoid 1 character context variable, for example a, b, c, i, j.</li> </ul> |
| Job | A Job contains the logic of the design.<br><br><ul> <li>Job should have meaningful name.</li> <li>Limit Job name to less than 50 characters long.</li> </ul><br><br><br>Naming Convention:<br><br><br>job\_&lt;group&gt;\_&lt;sequence&gt;\_&lt;description&gt;<br><br>Where:<br><br><br>&lt;group&gt; is a logical grouping or function of<br>the project, e.g. Staging, SFDC,, Sync. It should be abbreviated and limited<br>to less than 10 alphanumeric characters.<br><br><br>&lt;sequence&gt; is a 3 digit number unique to the<br>job. The Control Job or Master Job will always have a sequence of 000. All<br>other jobs will have a sequence that describes their place in the schedule<br>as shown in the examples below. When multiple jobs can be executed in<br>parallel, make sure that the sequence are different on each of these<br>jobs.<br><br>The &lt;sequence&gt; within a group should increment<br>by 10 during initial development to enable additional jobs to be slotted in<br>between in later iterations. The &lt;sequence&gt;<br>provides a sense of the order in which the jobs should be executed within<br>the &lt;group&gt;.<br><br><br>&lt;description&gt; should be informative and give an<br>adequate description of the function of the job. Description is Camel Case<br>and no white space is allowed.<br><br><br>Examples:<br><br><ul> <li>job_Report_000_controlJob</li> <li> job_Report_010_fileReception </li> <li>job_Staging_000_controlJob </li> <li>job_Staging_010_stageTheFinanceFile </li> <li>job_SFDC_000_controlJob </li> <li>job_SFDC_010_checkPickListValues </li> <li>job_SFDC_020_insertAccountRecord</li> </ul> |
| Joblet | A Joblet is a code snipped that will be re-used within a job one or more times.<br><br>Naming Convention:<br><br><br>jlet\_&lt;group&gt;\_&lt;sequence&gt;\_&lt;description&gt;<br><br>Where the &lt;group&gt;, &lt;sequence&gt;<br>and &lt;description&gt; follows the same conventions as for Job<br>above.<br><br>A special group name is Global when the joblet being<br>designed is expected to be used across multiple projects.<br><br>Joblet descriptions must be concise but adequately described to ensure<br>re-usability.<br><br>Examples:<br><br><ul> <li>jlet_Global_000_logErrorToFile </li> <li>jlet_SFDC_000_establishConnection </li> <li>jlet_SFDC_010_closeConnection</li> </ul> |
| Code Routines | Each project will consist of zero or more code routines containing Java<br>functions.<br><br>Code Routines should only contain static Java functions.<br><br>Naming Convention:<br><br><br>cr\_&lt;group&gt;\_&lt;description&gt;<br><br>where:<br><br><br>&lt;group&gt; will be a logical group to identify all code<br>routines that contain similar functions.<br><br><br>&lt;description&gt; will be informative and describe the types<br>of functions present in the package.<br><br>Examples:<br><br><ul> <li>cr_dwh_dateValidation</li> <li>cr_dwh_arrayHandler</li> <li>cr_dwh_textFormat&nbsp;</li> </ul> |
| globalMap Variables | globalMap variables enable job specific information to be<br>shared across multiple components. globalMap variables are<br>Camel Case with the first character in lowercase.<br><br>If a variable is to be used for storing the values of a field from a schema or<br>input row link, then the name should contain a dot and should follow the same case<br>as the link/schema name and field name.<br><br>Examples:<br><br><ul> <li>customerNumber </li> <li>countOfInputRecords </li> <li>customer.id&nbsp;(customer is the name of the input row, and id is the field name) </li> <li>transaction.transaction_code (transaction is the name of the input row, and                    transactioncode is the field name)</li> </ul> |
| Components and Links | Component names should be meaningful and should be in Camel Case. Component names<br>should contain alphanumeric characters only and can contain an underscore. Names<br>should also be short (&lt;25 characters) and succinct.<br><br>Component link names should be meaningful and should be in Camel Case. |