# Nice Job (NJ) [TOC] ## Introduction This 'nj' directory contains prototype broker filter scripts to give P4D a nicer jobs mechanism. The mechanism builds on native P4D jobs, taking advantage of job strengths and expanding in areas where default jobs have gaps. Some areas where native P4D jobs are strong: * Ability to associate jobs with changelist, via fixes. This simple yet powerful feature enables end-to-end traceability solutions. * The `p4 fixes -i` makes even more powerful queries easy, like "has bug PRJ-1234 been merged into this stream?" Areas where native jobs have gaps: * The default job naming convention, jobNNNNNN, doesn't instantly convey any info. Luckily, that is only a convention. P4D allows job names to be customized. NJ uses a -NNNN naming convention, where is a project tag. * The above implies the notion of a named _project_, a concept that is not native in P4D. For purposes of NJ, a project is simply a registered tag name used to group related jobs. ## Implementation Style This interim solution is implemented in the form of a P4 Broker config file that references a set of broker filter scripts to implement various custom behaviors. As an example, the custom `p4 nj` command indicates that NJ is enabled and reports the version of the NJ package. As an example of custom behavior to meet the use case, a `p4 njob` command creates a new job, and `p4 lsjob` lists jobs that match your job view. This solution is ripe for conversion of a Broker implementation into Extensions. This implementation would make it suitable for use in native P4D. ## Commands * `p4 nj` - Display version information for the Nice Job feature set. * `p4 njob` - Create a new job. * `p4 jr` - Display a Jobs Report. ## Known Limitations There are several known limitations: * The feature set is a prototype, not extensively tested.