The parallel job manager (PJM) provides a facility and framework for submitting and managing transactional batch jobs that run as a coordinated collection of independent parallel subordinate jobs.
The following two images depict the PJM architecture and the sequence of a parallel job. First, the xJCL is submitted to the job scheduler. The job scheduler dispatches the xJCL to an endpoint that runs the application that the xJCL references. The batch container determines that the job is to have subordinate jobs running in parallel from inspecting the run property of the job in the xJCL. The batch container delegates the running to the PJM subcomponent. The PJM invokes the parameterizer API and uses the information in the xJCL to help divide the job into subordinate jobs. The PJM then invokes the LogicalTX synchronization API to indicate the beginning of the logical transaction. The PJM generates the subordinate job xJCL and submits the subordinate jobs to the job scheduler. The job scheduler dispatches the subordinate jobs to the batch container endpoints so that they can run. The batch container runs the subordinate job. When a checkpoint is taken, the subordinate job collector API is invoked. This API collects relevant state information about the subordinate job. This data is sent to the subordinate job analyzer API for interpretation. After all subordinate jobs reach a final state, the beforeCompletion and afterCompletion synchronization APIs are invoked. The analyzer API is also invoked to calculate the return code of the job.
A logical transaction is a unit of work demarcation that spans the running of a parallel job. Its lifecycle corresponds to the combined lifecycle of the subordinate jobs of the parallel job. Because of an extension mechanism, you can customize application-managed resources so that they can be controlled in this unit of work scope for commit and rollback purposes.
The following image summarizes the PJM architecture, which shows where the APIs are called:
The following image shows the order of events in a parallel job: