Zope selbst bringt eine datenbank-orientierte Objekt-Versionierung; da Dokumente aber aus einer Serie von Datenbank-Objekten bestehen, liefert die Objekt-Versionierung tatsächlich nur ein ausschnittshaftes Bild der Entwicklung eines Dokumentes. Daher verfügen die ZMS-Containerobjekte (PAGES) über eine Funktionalität, die einzelnen Versionen der Sub-Objekte zu einer logischen Dokument-Version zu aggregieren. Das PAGE-Objekt besitzt dafür ein list-Attribut, das den Zeitpunkt jeder Status-Änderung eines Dokuments protokolliert und auf dieser Basis das Dokument aus seinen Bestandteilen konsistent (im Sinne eines Pfades) rekonstruiert.

In der Systemansicht (Zope-View) lassen sich die durch die aktivierte Historie ergänzten Objekt-Attribute nativ anschauen

  1. major_version: integer
  2. master_version: integer
  3. minor_version: integer
  4. change_history: liste (XML), nur PAGE-Objekte

Mit jeder major-Versionierung im Rahmen des Workflows wird ein exakter Zeitstempel für eine Version gespeichert. Anhand des Zeitstempels werden die untergeordneten PAGEELEMENTS als der jeweiligen Version zugehörig identifiziert. Ein wichtiger Aspekt dabei ist, dass die minor-Versions als nicht Dokument-relevant betrachtet werden.

Versioning_zopeView

Über die Systemansicht kann man sich alle bestehenden Zwischenversionen in Zope-Manier darstellen lassen und dort im Detail die generische Objekt-Attributierung genauer studieren: bei aktiver Versionierung ist das Attribut-Set erweitert um versionsspezifische Informationen

Beispiel für den Inhalt des Attributes change_history:

<list>
  <item type="dictionary">
    <dictionary>
      <item key="major_version" type="int">5</item>
      <item key="master_version" type="int">0</item>
      <item key="version_dt" type="datetime">09.01.2007 19:52:17</item>
      <item key="version_uid"><![CDATA[admin]]></item>
    </dictionary>
  </item>
  <item type="dictionary">
    <dictionary>
      <item key="major_version" type="int">6</item>
      <item key="master_version" type="int">0</item>
      <item key="version_dt" type="datetime">09.01.2007 20:00:40</item>
      <item key="version_uid"><![CDATA[admin]]></item>
    </dictionary>
  </item>
</list>