r_object_id, i_chronicle_id, and versions
Every persistent object has an r_object_id assigned by Content Server. You do not choose it and you do not change it. Versioned SysObjects also have a chronicle ID that stays put for the whole tree.
r_object_id
A 16-character hexadecimal string. Unique in the repository. The first two characters are the type identifier (type tag). Each system type has its own tag. Subtypes inherit the tag of their system-defined supertype. A user-defined type with no supertype uses 00.
| Tag | Type |
|---|---|
| 09 | dm_document and its subtypes |
| 0b | dm_folder and folder subtypes that inherit that tag |
| 45 | dm_acl |
| 00 | User-defined type with no supertype |
Example: a document ID looks like 09xxxxxxx. The remaining 14 hex characters are Content Server’s unique assignment (they encode more than “a counter,” but you should treat them as opaque).
Changing an object’s type later is only legal along the same type-tag family (same identifier, move up or down the hierarchy, not sideways). That is a type-change rule, not something you do by editing the ID.
i_chronicle_id
All versions in one version tree share the same i_chronicle_id. It is the r_object_id of the original object in that tree. Each version still has its own r_object_id.
select i_chronicle_id
from dm_document
where r_object_id = '09xxxxxxx'
select r_object_id, r_version_label, r_modify_date
from dm_document (all)
where i_chronicle_id = '09xxxxxxx'
Without (ALL), DQL on dm_document / dm_sysobject returns CURRENT versions only, so older IDs disappear from the result even though they still exist.
r_version_label
Repeating string. Implicit numeric labels (1.0, 1.1, …) plus symbolic labels. CURRENT marks the current version. An object can carry more than one label at a time.
select r_object_id, r_version_label
from dm_document
where any r_version_label = 'CURRENT'
and i_chronicle_id = '09xxxxxxx'
Checkout and checkin (ID level)
- Checkout locks the CURRENT object. Same
r_object_id. Look atr_lock_owner,r_lock_machine,r_lock_date. No new version yet. - Checkin writes a new version: new
r_object_id, samei_chronicle_id.CURRENTmoves to the new object. The previous version keeps its old ID and loses CURRENT (unless you did something unusual with labels). - Cancel checkout drops the lock. No new ID.
- A version-only permit can check out and check in a new version; it cannot overwrite the same version. Write permit can save in place or version. See ACL permissions.
select r_object_id, object_name, r_lock_owner, r_lock_date
from dm_sysobject
where r_lock_owner is not nullstring
Folders vs documents
Folder membership is i_folder_id (repeating) on the SysObject, not a path baked into the ID. Cabinets and folders have their own objects and IDs. Linking into another folder does not change r_object_id or i_chronicle_id.
select r_object_id, object_name, i_folder_id
from dm_sysobject
where r_object_id = '09xxxxxxx'