3.3 Lignée documentaire et révisions
Afin de manipuler correctement les documents, il est important de comprendre les notions de révision et de lignée documentaire.
3.3.1 Révision
Une révision est une capture d'un document à un instant donné. Les valeurs (attributs, propriétés et fichiers) de ce document sont mémorisées et figées, et peuvent être consultées ultérieurement.
À un instant donné, une et une seule révision est active (c'est la révision courante) alors que les autres sont figées (ce sont les révisions passées).
Seule la révision active est modifiable, les révisions figées sont uniquement consultables.
3.3.2 Lignée documentaire
L'ensemble des révisions d'un document constituent une lignée documentaire.
Alors que chaque document est identifié de manière non ambigüe par son id
,
unique, une lignée documentaire est identifiée par son initid
.
3.3.3 révision
, id
et initid
Lors de l'enregistrement en base d'un document, s'il ne possède pas encore d'id
,
un nouvel id
est attribuée au document. Cette valeur est également
affectée à la propriété initid
. La propriété révision, quand à elle, est
positionnée à 0.
Lorsqu'un document est révisé, techniquement, un nouveau document est créé
(c'est à dire qu'une nouvelle ligne est créée en base de données).
La propriété révision est incrémentée, la propriété initid
est conservée, et un
nouvel id
est affecté au document. L'ancienne révision est également marqué
comme figée (voir la propriété locked
).
Exemple :
- création d'un nouveau document
- ancienne révision
- aucune
- nouvelle révision
- initid : 1234
- id : 1234
- revision : 0
- locked : 0
- ancienne révision
- révision du document
- ancienne révision
- initid : 1234
- id : 1234
- revision : 0
- locked : -1
- nouvelle révision
- initid : 1234
- id : 2345
- revision : 1
- locked : 0
- ancienne révision
Note : les valeurs des id
et initid
sont arbitraires, elles sont, dans les
faits, affectées par la base de données.
3.3.4 Révisions et relations
Dans l'interface d'édition, par défaut, les attributs de type docid
sont valués avec l'initid
du document cible. Lors de la consultation, le lien
est ajusté pour pointer vers la dernière révision de sa lignée documentaire.
Ce comportement peut être modifié au moyen de l'option docrev
des attributs
relation.
3.3.5 Révisions et new_doc
Par défaut, la fonction new_doc
récupère la révision correspondant à
l'id
passé en paramètre ; ce qui veut dire que ce n'est pas nécessairement la
révision courante. Le troisième paramètre de new_doc
permet de récupérer
systématiquement la révision courante.
Si l'identifiant de la fonction new_doc
désigne un nom logique, c'est toujours
la version courante qui est retournée.
Le nom logique est le même sur toute la lignée documentaire.
3.3.6 Révisions et recherche
Lors des recherches de documents avec un critère sur une relation, si la
relation ne contient pas l'initid
, on risque de ne pas trouver le document.
C'est pour cette raison que les relations contiennent l'initid
par défaut. Dans
le cas où d'autres révisions peuvent être référencées, il faut ajouter un
critère plus complexe tenant compte des ids de toutes les révisions.