Versionierung ist innerhalb eines Dokumentenmanagementsystems (DMS) kein Fremdwort. Normalerweise bedeutet es, dass Historie der Änderungen von Dokumenten gespeichert wird. In unserem Artikel wird beschrieben, was zu tun ist, wenn die Dokumente aus den Vorlagen erstellt werden und die Vorlagen selbst fortentwickelt werden können, ohne dass die Abhängigkeiten vom Dokument zur Vorlage aufgelöst worden sind.
Bei größeren Unternehmen werden für die Erstellung von Dokumenten diverse komplexe Vorlagen umgesetzt. Z.B. auf XML-Basis, wie bei Gerichten und Staatsanwaltschaften, oder als dot-Datei von MS Word. Die Vorlagen können voneinander abhängen, modularisiert werden, Includs (Collections) haben und vieles mehr. Die Dokumente werden mit dynamischen Daten gefüllt und können eine interne Sprache haben, z.B. Skriptelemente oder Makros. Eine Vorlage wird geladen, ggf. interpretiert, oder es werden die Skripte gestartet, die eine gewisse Dynamik ins Dokument bringen. Wenn in der Skriptsprache die Bedingungselemente 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 Interpretierung 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 gespeicherte Dokumente nicht mehr ablauffä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 interpretierbar zu halten und die Abhängigkeit von der Vorlage aufzulösen, gibt es zurzeit zwei Alternativen:
1. Die Vorlagen sollen so entwickeln werden, dass keine Abhängigkeiten zwischen den geladenen Vorlagen im Dokument und erweiterten oder neu entwickelten Vorlagen, auch in absehbarer Zeit, entstehen können.
2. Ein Versionierungssystem für die Vorlagen einführen – Die Alternative zu Nummer 1 ist einfach, könnte aber bei größeren Projekten nicht zu realisieren sein, weil fast bei jeder Erweiterung der Vorlagen alle anderen immer von jemandem darauf hin überprüft werden müssen, ob keine Abhängigkeiten entstehen.
Versionierungssystem
Die Idee ist nun, jede Vorlage zu versionieren. Alle XML-Vorlagen müssen dazu über ein Versionsverwaltungsystem (z.B. SVN, VSS) versioniert 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 Information wird später beim Laden von alten Dokumenten verwendet. Das DMS sollte nach dem Öffnen eines alten XML-Dokumentes immer eine Zuordnung je nach Erstellungsdatum von allen XML-Vorlagen zum Dokument finden können. Als Schema könnte man alles in einer Tabelle darstellen:
Nummer oder symbolischer 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 gespeichert. Alle Dokumente, wenn nichts anderes von der Verwaltung vorgegeben, sollen nur die XML-Bausteine aus der Auslieferung „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 gespeichert. Alle Dokumente, wenn nichts anderes von der Verwaltung vorgegeben, sollen nur die XML- Bausteine aus der Auslieferung „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 gespeichert. Alle Dokumente, wenn nichts anderes von der Verwaltung vorgegeben, sollen nur die XML- Bausteine aus der Auslieferung „Aktuelle_XML_Vorlage_vom_2008-10–15_XX-XX-XX.zip“ verwenden. |
Die Nummer oder eine textuelle Bezeichnung der Auslieferung (kurz „release“ oder „schnitt“) soll als Metadatensatz zum Dokument gespeichert 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 aktualisiert werden sollte.
Allen Bezeichnungen des Releases werden alle enthaltenen 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 Interpretierung des Dokumentes kein XML-Baustein in der Bezeichnung des Releases gefunden wird, geht DMS automatisch auf eine Version der Bezeichnung runter.