Issue raised by: Pearl Janifer Janifer@compuserve.com Thu, 11 Dec 1997 23:24:33 -0500
Please explain the usage of the Update ES correlationInfo. In particular, why (when it takes the form of correlation Id) is it defined as INTEGER, when a record identifier usually is defined to take a more general form, such as InternationalString?
CorrelationInfo provides a means for the origin or user to insert information into an Update ES task package, corresponding to a particular record included within the task package. The information is either:
CorrelationInfo allows the origin or user (which may be a different origin or user than that which originally submitted the ES Update request) when subsequently retrieving the package, to discover this information for a given record.
- circumstances pertaining to the update of the record, for example, why it was updated, who updated it, the nature of the update, etc.; or
- an identifier for the record.
CorrelationInfo is intended to be opaque to the target, who should not process it or change it. It takes the form of either a note or an identifier (both may be supplied).
In case 1 above it would take the form of the note, a human-readable (i.e. non-processable) string. In this case, the user who originally inserted the information may have anticipated that a different user might subsequently retrieve the task package.
In case 2 above, it would take the form of the identifier. It is not (intended to be) a unique or unambiguous identifier of the record; it is intended to uniquely and unambiguously identify the record only within the context of the task package. (Thus if the same record occurs in two different task packages it may have different correlation ids, and a correlation id used to identify a record within one task package may be re-used to identify a different record in a different task package.)
Thus an origin may assign a unique id for each record in an Update ES request and maintain a table for each Update task package that correlates each id assigned within the task package to the record to which it is assigned, so that when the task package is retrieved, for each instance of TaskPackageRecordStructure (each such instance corresponds to one record that was in the origin Update ES request) the origin will be able to determine which record that instance pertains to (correlationInfo is included within TaskPackageRecordStructure).
The reason that this correlation identifier is defined is that the actual record might not be included within taskPackageRecordStructure, or if it is, the record itself might not have an unambiguous identifier. Thus its scope is much narrower than an all-purpose identifier, and it is therefore defined as INTEGER, because integer representation is sufficient for its purpose.