The IETF IPP WG made significant progress in reviewing the Notification
Model today. Send comments to the DL. Here are the agreements:
1.1 Changes made to the 8/11/99 version to make the 8/17/99 version:
1. Instead of the "notify-exclude-event-mask" (1setOf
octetString(8)) attribute, we agreed to use introduce the new 'collection'
attribute syntax that we have been talking about for over a year for use in
the Job object to specify multiple subscriptions in a Job creation
operation. So the "notify" operation attribute for Job creation operations
will have the attribute syntax: '1setOf collection'. The member attributes
of each collection value for Per-Job subscriptions are the same as the
attributes of a Subscription object instance for Per-Printer subscriptions.
For terminology a "subscription" is either a collection value of the
"notify" operation attribute in a Job Creation operation or is a
Subscription object.
2. Each subscription will contain only one multi-valued
attribute: "notify-events" (1setOf type2 keyword). The remaining attributes
will be single valued:
"notify-recipients" (uri)
"notify-user-info" (octetString(63))
"attributes-charset" (charset)
"attributes-natural-language" (naturalLanguage)
"request-id" (integer(0:MAX))
3. The client supplies an "attributes-natural-language"
in a subscription in order to get a different natural language than for the
request that creates the subscription. However, the only time that the
natural language has any bearing on the Notification content, is when that
content is the Human Consumable form. The Machine Consumable form of the
Notification content will have no localization in it.
4. The minimum number of notification recipients that
are required to support is 1. Hence the minimum number of collection values
is 1 and the minimum number of Subscription objects is 1, if Per-Printer
subscriptions are supported at all.
5. Instead of inventing a special operation that sets
the Job attributes related to notification, we will define a single
Set-Job-Attributes operation for changing the values of any Job attribute
that is not defined to be READ-ONLY. We will not define the corresponding
Set-Printer-Attributes operation at this time, but will lump that operation
with the other System Administration operations, since changing Printer
attributes is an administrative function. Changing Job attributes is an
end-user function for your own jobs, and an operator operation for other's
Jobs.
6. A Printer can grant a larger or smaller least to
that requested, including granting an infinite lease.
7. Change "persistence (boolean)" operation attribute
to "persistence-requested (boolean)" in the Create-Printer-Subscription.
Keep it OPTIONAL to support. However, add a REQUIRED "persistence-granted
(boolean)" operation attribute that MUST be returned in the response. While
implementations are RECOMMENDED to make all Subscriptions persistence, same
as for jobs, they MAY have a more limited number that are persistent,
including none.
8. Add two Printer Descriptions attributes:
"persistent-job-supported" (boolean) and
"persistent-subscriptions-supported" (boolean).
9. The Get-Printer-Subscriptions and
Get-Printer-Subscription-Attributes will return attributes Subscription
attributes group, so there will be a new Subscription attribute tag assigned
in the Encoding and Transport.
10. Changed the name of the "notify-lease-time"
(integer(0:MAX)) in the Subscription object to
"notify-least-expiration-time" (integer(0:MAX)) since it is the time at
which the lease expires.
11. Eliminated storing the trigger-event, trigger-time,
and trigger-date-time in the subscription and passed them only in the
Notification content.
12. Add "printer-state-change-time" (integer(MIN:MAX))
and "printer-state-change-date-time" (dateTime) Printer Description
attributes to record the time that the Printer last changed state. Then an
application that come up after that can tell when the printer got into its
current state by querying the Printer when the application starts up.
Lesson from the Printer MIB alert table.
13. Defined the "subscription-id" attribute for use with
Per-Job subscriptions as being the index of the 1setOf collection, starting
at '1'. Then a Notification Recipient can have a unique identification for
each subscription whether it be Per-Job or Per-Printer, for use in catching
duplicate or skipped notifications using the "request-id".
14. Deleted the "delivery-failure-count"
(integer(0:MAX)) from the Subscription object as not necessary.
15. Transports that have limited space, like SNMP, can
truncate the "job-name" to less than 255 octets, in order to fit.
16. Added the "subscription-printer-uri" (uri) to the
Subscription object to go along with the Job's "job-printer-uri" (uri)
attribute.
17. Added "job-k-octets-processed" (integer(0:MAX)) to
the Job Notification content for 'job-progress' and 'job-completed' events.
18. Added the 'job-progress' attributes to also be in
the 'job-completed' Job Notification content.