The relationship between DataSlot and DataSlotTemplate is similar to the relationship between ProcessInstance and ProcessTemplate. The DataSlot is the instance level object holding the run-time value of ProcessInstance data, while the DataSlotTemplate is template level object, which stores the metadata of data. The metadata includes the attributes of data such as name, label, type, size, isPublic, isGlobal, and so on.
In addition to providing the APIs for getting run-time value of data, DataSlot object also provides the API to retrieve the metadata. Since metadata-related APIs are common to both DataSlot and DataSlotTemplate, they are moved in common super class AbstractDataSlot. However, the AbstractDataSlot is completely transparent to the user.
Once the DataSlot instance is created and associated with a ProcessInstance, its metadata cannot be changed. Therefore the DataSlot object does not provide the API to update the metadata of the DataSlot. On the other hand, the DataSlotTemplate provides the APIs to update some of the metadata.