Harry,
Here is some discussion on this topic that we had in IPP (and that
appears in the jobstate.* files I posted today):
Conformance Requirements for job states
---------------------------------------
JMP requires that processing(4), aborted(6), and completed(7) are mandatory,
so that pending(3), canceled(5), and unknown(2) are conditionally mandatory.
(IPP level 1 does not have CancelJob, so we have to make the canceled state
conditionally mandatory in JMP in order to instrument a level 1 IPP system.)
The former JMP needsAttention state was also mandatory, so that the
equivalent new job-state-reason: deviceStopped, is a mandatory value of
the JMP jmJobStateReasons1 object. The deviceStopped value aligns with the
IPP 'printer-stopped' value of the "job-state-reasons" attribute, but we
are trying to be more general in JMP, so we use the word 'device', not
'printer'.
If deviceStopped is a MANDATORY reason, then the jobStateReasons1 attribute
becomes MANDATORY. Therefore, the jobStateReasons1 JMP attribute moves to
the jmJobTable, since it is an Integer, not Octets, and will be called
the jmJobStateReasons1 object. The other 3 jobStateReasonsN (N=2, 3, and 4)
will remain in the jmJobAttributeTable as conditionally mandatory attributes.
There were two major reasons that IPP replaced the 'needs-attention' state
with the 'printer-stopped' job-state-reason:
1. IPP felt it was as important for a user to know that the printer that their
job was waiting for was stopped, as it was for the user whose job was the
current job. Therefore, whether the job was in the 'pending'
or 'processing' state we wanted to indicate that the printer had stopped for
the job. Therefore, need-attention is really a reason, not a state.
If needs-attention were a job state, when the printer resumes, the job would
go back to either 'pending' or 'processing', depending on which state the job
had been in previously.
Remembering which previous state was a problem. Also the user should know
whether his job was the current one or some other users was the current job,
since in an unattended shop, the onus might be on the current user to fix the
problem. By keeping the job in the same state ('pending' or 'processing'),
instead of moving the job to a different 'needs-attention' state
and setting the job-state-reason, there was no need to remember the
previous state.
2. The job state reason was renamed from 'needs-attention' to
'printer-stopped', because the printer might need attention but the current
job could still make progress because the printer hasn't stopped. For
example, toner low or media low or an input tray is empty, but the current
job is not using that tray. Also the operator might have intentionally
stopped the printer, so needs-attention would be misleading.
To help distinguish between your interpretation of requiredResourcesNotReady,
IPP changed the reason to jobHeldUntilResourcesAreReady with the following
description:
Optional. At least one of the resources needed by the job, such as media,
fonts, resource objects, etc., is not ready on any of the physical printer's
for which the job is a candidate. Usually such a condition is detected
while the job is in the 'pending' state.
If a job starts processing and encounters a resource that is not ready,
there are two possible implementations:
(1) the device is stopped and no jobs can run until the resource(s) are made
ready, in which case the Printer shall keep the job in the 'processing'
state and shall add the 'printer-stopped' reason to the job's
"job-state-reasons" attribute (not the 'job-hold-until-resources-are-ready'
value)
OR
(2) another job is found to use the device while the current job goes back
to waiting for its turn and for the resources to be made ready, in which
case the Printer shall change the job's "job-state" attribute to 'pending'
and add the 'job-hold-until-resources-are-ready' value to the job's
"job-state-reasons" attribute.Applicable job states: 'pending'.
Here is the corresponding description that I put into the Job Monitoring MIB
for the jobHeldUntilResourcesAreReady:
At least one of the resources needed by the job, such as media, fonts,
resource objects, etc., is not ready on any of the physical devices for
which the job is a candidate.Usually such a condition is detected while the
job is in the pending state.
If a job starts processing and encounters a resource that is not ready,
there are two possible implementations:
(1) the device is stopped and no jobs can run until the resource(s) are made
ready, in which case the agent shall keep the job in the processing state
and shall add the deviceStopped reason to the job's jmJobStateReasons1 object
OR
(2) another job is found to use the device while the current job goes back
to waiting for its turn and for the resources to be made ready, in which
case the Printer shall change the job's jmJobState object to pending and add
the jobHoldUntilResourcesAreReady value to the job's jmJobStateReasons1
object. Job states: pending, jobHeld shall be set.
Does this help?
Tom
At 16:42 05/22/97 PDT, Harry Lewis wrote:
>Some of the job state reasons for HELD seem like they would fit better as
>reasons for NEEDS-ATTENTION. For example:
>> requiredResourcesNotReady 0x20
> The job is in the held state because at least one of the
> resources needed by the job, such as media, fonts, resource
> objects, etc., is not ready on any of the physical devices
> for which the job is a candidate.
>>> serviceOffLine 0x400000
> The service/document transform is off-line and accepting no
> jobs. All pending jobs are put into the held state. This
> could be true if its input is impaired or broken.
>>These reasons seem categorically different than "Someone put this
>job on Hold 'till midnight".
>>I guess it is fairly clear that state NeedsAttention should pertain to
>actual DEVICE failures, but 0x400000, above, sounds like it could
>be just that to me.
serviceOffLine is a particular type of device failure: the device is no
longer contactable either because it is broken or because the operator
has decided that it is down. Perhaps it has to be painted. The "could
be true, is an example of why the device might be off-line, not the only
reason.
>>Harry Lewis - IBM Printing Systems
>>