Job stack
As described in section Job ID and job tracking, the job ID assigned by the user at job start is returned when the job is terminated. However, the job ID should also be visible in all agent jobs commanded by the client so that it can be used for testing or logging purposes.
The JM uses a “job stack” for this purpose: When a new job is created, it is generated and initialised with the user's job ID via an initial "PUSH". At each commanding level - including in the controller - the stack is extended by an additional "PUSH" of the internal job ID. After a job is terminated, the commanded user sends the current job stack back to its client - together with the status MC_DONE, MC_ABORTED or MC_ERROR. The receiver of the message accesses its job ID via a "POP" and updates its job management as required.
The Job Manager supports multi-client operation. This means that agents can be commanded by several clients. Since the job stack and the job status must always be returned to the correct client, an additional "source ID" is entered in each entry in the job stack in addition to the job ID. The source ID is used in the controller to determine the routes used by the job statuses (acknowledgements). The source ID is displayed in the MCV_GrpReadJobAck block.
The precondition for the “source ID” readable by the user in MCV_GrpReadJobAck is the assignment of a value in the MCV_GrpPathPrepare block. In addition to two job IDs that can be issued by the user, a separate source ID (number) can be assigned here. MCV_GrpReadJobAck returns all three entries at every status change. Both the source ID and the two job IDs, as well as the job IDs and source ID tuples assigned internally in the controller, can be tracked in the job stack at all levels of job processing via status displays or in the trace.
Notice

The user can use the job ID to identify workpieces in their user’s production processes. The source ID helps the user to return acknowledgements directly back to alternative commanding clients.