Versio­nierung ist innerhalb eines Dokumen­ten­ma­nage­ment­systems (DMS) kein Fremdwort. Norma­ler­weise bedeutet es, dass Historie der Änderungen von Dokumenten gespei­chert wird. In unserem Artikel wird beschrieben, was zu tun ist, wenn die Dokumente aus den Vorlagen erstellt werden und die Vorlagen selbst fortent­wi­ckelt werden können, ohne dass die Abhän­gig­keiten vom Dokument zur Vorlage aufgelöst worden sind.

Bei größeren Unter­nehmen werden für die Erstellung von Dokumenten diverse komplexe Vorlagen umgesetzt. Z.B. auf XML-Basis, wie bei Gerichten und Staats­an­walt­schaften, oder als dot-Datei von MS Word. Die Vorlagen können vonein­ander abhängen, modula­ri­siert werden, Includs (Collec­tions) haben und vieles mehr. Die Dokumente werden mit dynami­schen Daten gefüllt und können eine interne Sprache haben, z.B. Skript­ele­mente oder Makros. Eine Vorlage wird geladen, ggf. inter­pre­tiert, oder es werden die Skripte gestartet, die eine gewisse Dynamik ins Dokument bringen. Wenn in der Skript­sprache die Bedin­gungs­ele­mente verwendet werden, kann es sein, dass einige Vorlagen erst später gelesen werden können, z.B. bei der nächsten Session oder der nächsten Inter­pre­tierung des Dokumentes. Dadurch kommen neue dynamische Daten aus Vorlagen ins Dokument.

Diesen Ablauf kann man grafisch wie folgt darstellen:

 

Jede XML-Vorlage (oder jeder XML-Baustein) kann noch bedingte Elemente haben und auf weitere XML-Vorlagen verweisen. Das Problem dabei: Wenn man versucht, die Vorlagen zu erweitern, könnten alte gespei­cherte Dokumente nicht mehr ablauf­fähig sein. Es können verschiedene Probleme von „Variable nicht gefunden“ bis „das Modul existiert nicht mehr“ auftreten. Um die aus diesen Vorlagen erstellten Dokumente immer inter­pre­tierbar zu halten und die Abhän­gigkeit von der Vorlage aufzu­lösen, gibt es zurzeit zwei Alternativen:

1. Die Vorlagen sollen so entwi­ckeln werden, dass keine Abhän­gig­keiten zwischen den geladenen Vorlagen im Dokument und erwei­terten oder neu entwi­ckelten Vorlagen, auch in abseh­barer Zeit, entstehen können.

2. Ein Versio­nie­rungs­system für die Vorlagen einführen – Die Alter­native zu Nummer 1 ist einfach, könnte aber bei größeren Projekten nicht zu reali­sieren sein, weil fast bei jeder Erwei­terung der Vorlagen alle anderen immer von jemandem darauf hin überprüft werden müssen, ob keine Abhän­gig­keiten entstehen.

Versio­nie­rungs­system

Die Idee ist nun, jede Vorlage zu versio­nieren. Alle XML-Vorlagen müssen dazu über ein Versi­ons­ver­wal­tung­s­ystem (z.B. SVN, VSS) versio­niert werden. Die Nummer der Revision sollte in der Vorlage sichtbar sein, z.B. in Form von Metadaten.

<Meta name="vss" value="{version}27{/version}" />

Die Infor­mation wird später beim Laden von alten Dokumenten verwendet. Das DMS sollte nach dem Öffnen eines alten XML-Dokumentes immer eine Zuordnung je nach Erstel­lungs­datum von allen XML-Vorlagen zum Dokument finden können. Als Schema könnte man alles in einer Tabelle darstellen:

Nummer oder symbo­li­scher Name des Releases von XML-Vorlagen

Ablauf der Textverarbeitung

release1 Aktuelle_XML_Vorlage_vom_2008-02–01_XX-XX-XX.zip
Die Dokumente werden im Zeitraum von 01.02.2008 bis 07.02.2008 erstellt und gespei­chert. Alle Dokumente, wenn nichts anderes von der Verwaltung vorge­geben, sollen nur die XML-Bausteine aus der Auslie­ferung „Aktuelle_XML_Vorlage_vom_2008-02–01_XX-XX-XX.zip“ verwenden.
release2 Aktuelle_XML_Vorlage_vom_2008-02–07_XX-XX-XX.zip
Die Dokumente werden im Zeitraum von 07.02.2008 bis 14.02.2008 erstellt und gespei­chert. Alle Dokumente, wenn nichts anderes von der Verwaltung vorge­geben, sollen nur die XML- Bausteine aus der Auslie­ferung „Aktuelle_XML_Vorlage_vom_2008-02–07_XX-XX-XX.zip“ verwenden.
release… Aktuelle_XML_Vorlage_vom_.…._XX-XX-XX.zip
…..
releaseNN Aktuelle_XML_Vorlage_vom_2008-10–15_XX-XX-XX.zip
Die Dokumente werden im Zeitraum von 15.10.2008 bis TT.MM.JJJJ erstellt und gespei­chert. Alle Dokumente, wenn nichts anderes von der Verwaltung vorge­geben, sollen nur die XML- Bausteine aus der Auslie­ferung „Aktuelle_XML_Vorlage_vom_2008-10–15_XX-XX-XX.zip“ verwenden.

 

Die Nummer oder eine textuelle Bezeichnung der Auslie­ferung (kurz „release“ oder „schnitt“) soll als Metada­tensatz zum Dokument gespei­chert werden. Später, beim Laden des Dokumentes, gibt diese Bezeichnung vor, welche Version der noch nicht geladenen XML-Vorlagen in dieses Dokument geholt bzw. bei Bedarf aktua­li­siert werden sollte.

Allen Bezeich­nungen des Releases werden alle enthal­tenen XML-Vorlagen mit eigenen Versionen zugeordnet. Falls ein Release nur eine Delta der XML-Vorlagen enthielt, diese wird auch mit gleichem Prinzip markiert. Wenn bei der Inter­pre­tierung des Dokumentes kein XML-Baustein in der Bezeichnung des Releases gefunden wird, geht DMS automa­tisch auf eine Version der Bezeichnung runter.