Ver­sio­nie­rung ist inner­halb eines Doku­men­ten­ma­nage­ment­sys­tems (DMS) kein Fremd­wort. Nor­ma­ler­wei­se bedeu­tet es, dass His­to­rie der Ände­run­gen von Doku­men­ten gespei­chert wird. In unse­rem Arti­kel wird beschrie­ben, was zu tun ist, wenn die Doku­men­te aus den Vor­la­gen erstellt wer­den und die Vor­la­gen selbst fort­ent­wi­ckelt wer­den kön­nen, ohne dass die Abhän­gig­kei­ten vom Doku­ment zur Vor­la­ge auf­ge­löst wor­den sind.

Bei grö­ße­ren Unter­neh­men wer­den für die Erstel­lung von Doku­men­ten diver­se kom­ple­xe Vor­la­gen umge­setzt. Z.B. auf XML-Basis, wie bei Gerich­ten und Staats­an­walt­schaf­ten, oder als dot-Datei von MS Word. Die Vor­la­gen kön­nen von­ein­an­der abhän­gen, modu­la­ri­siert wer­den, Includs (Collec­tions) haben und vie­les mehr. Die Doku­men­te wer­den mit dyna­mi­schen Daten gefüllt und kön­nen eine inter­ne Spra­che haben, z.B. Skript­ele­men­te oder Makros. Eine Vor­la­ge wird gela­den, ggf. inter­pre­tiert, oder es wer­den die Skrip­te gestar­tet, die eine gewis­se Dyna­mik ins Doku­ment brin­gen. Wenn in der Skript­spra­che die Bedin­gungs­ele­men­te ver­wen­det wer­den, kann es sein, dass eini­ge Vor­la­gen erst spä­ter gele­sen wer­den kön­nen, z.B. bei der nächs­ten Ses­si­on oder der nächs­ten Inter­pre­tie­rung des Doku­men­tes. Dadurch kom­men neue dyna­mi­sche Daten aus Vor­la­gen ins Doku­ment.

Die­sen Ablauf kann man gra­fisch wie folgt dar­stel­len:

 

Jede XML-Vor­la­ge (oder jeder XML-Bau­stein) kann noch beding­te Ele­men­te haben und auf wei­te­re XML-Vor­la­gen ver­wei­sen. Das Pro­blem dabei: Wenn man ver­sucht, die Vor­la­gen zu erwei­tern, könn­ten alte gespei­cher­te Doku­men­te nicht mehr ablauf­fä­hig sein. Es kön­nen ver­schie­de­ne Pro­ble­me von “Varia­ble nicht gefun­den” bis “das Modul exis­tiert nicht mehr” auf­tre­ten. Um die aus die­sen Vor­la­gen erstell­ten Doku­men­te immer inter­pre­tier­bar zu hal­ten und die Abhän­gig­keit von der Vor­la­ge auf­zu­lö­sen, gibt es zur­zeit zwei Alter­na­ti­ven:

1. Die Vor­la­gen sol­len so ent­wi­ckeln wer­den, dass kei­ne Abhän­gig­kei­ten zwi­schen den gela­de­nen Vor­la­gen im Doku­ment und erwei­ter­ten oder neu ent­wi­ckel­ten Vor­la­gen, auch in abseh­ba­rer Zeit, ent­ste­hen kön­nen.

2. Ein Ver­sio­nie­rungs­sys­tem für die Vor­la­gen ein­füh­ren — Die Alter­na­ti­ve zu Num­mer 1 ist ein­fach, könn­te aber bei grö­ße­ren Pro­jek­ten nicht zu rea­li­sie­ren sein, weil fast bei jeder Erwei­te­rung der Vor­la­gen alle ande­ren immer von jeman­dem dar­auf hin über­prüft wer­den müs­sen, ob kei­ne Abhän­gig­kei­ten ent­ste­hen.

Ver­sio­nie­rungs­sys­tem

Die Idee ist nun, jede Vor­la­ge zu ver­sio­nie­ren. Alle XML-Vor­la­gen müs­sen dazu über ein Ver­si­ons­ver­wal­tungs­ys­tem (z.B. SVN, VSS) ver­sio­niert wer­den. Die Num­mer der Revi­si­on soll­te in der Vor­la­ge sicht­bar sein, z.B. in Form von Meta­da­ten.

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

Die Infor­ma­ti­on wird spä­ter beim Laden von alten Doku­men­ten ver­wen­det. Das DMS soll­te nach dem Öff­nen eines alten XML-Doku­men­tes immer eine Zuord­nung je nach Erstel­lungs­da­tum von allen XML-Vor­la­gen zum Doku­ment fin­den kön­nen. Als Sche­ma könn­te man alles in einer Tabel­le dar­stel­len:

Num­mer oder sym­bo­li­scher Name des Releases von XML-Vor­la­gen

Ablauf der Text­ver­ar­bei­tung

release1Aktuelle_XML_Vorlage_vom_2008-02–01_XX-XX-XX.zip
Die Doku­men­te wer­den im Zeit­raum von 01.02.2008 bis 07.02.2008 erstellt und gespei­chert. Alle Doku­men­te, wenn nichts ande­res von der Ver­wal­tung vor­ge­ge­ben, sol­len nur die XML-Bau­stei­ne aus der Aus­lie­fe­rung „Aktuelle_XML_Vorlage_vom_2008-02–01_XX-XX-XX.zip“ ver­wen­den.
release2Aktuelle_XML_Vorlage_vom_2008-02–07_XX-XX-XX.zip
Die Doku­men­te wer­den im Zeit­raum von 07.02.2008 bis 14.02.2008 erstellt und gespei­chert. Alle Doku­men­te, wenn nichts ande­res von der Ver­wal­tung vor­ge­ge­ben, sol­len nur die XML- Bau­stei­ne aus der Aus­lie­fe­rung „Aktuelle_XML_Vorlage_vom_2008-02–07_XX-XX-XX.zip“ ver­wen­den.
release…Aktuelle_XML_Vorlage_vom_.…._XX-XX-XX.zip
…..
releaseNNAktuelle_XML_Vorlage_vom_2008-10–15_XX-XX-XX.zip
Die Doku­men­te wer­den im Zeit­raum von 15.10.2008 bis TT.MM.JJJJ erstellt und gespei­chert. Alle Doku­men­te, wenn nichts ande­res von der Ver­wal­tung vor­ge­ge­ben, sol­len nur die XML- Bau­stei­ne aus der Aus­lie­fe­rung „Aktuelle_XML_Vorlage_vom_2008-10–15_XX-XX-XX.zip“ ver­wen­den.

 

Die Num­mer oder eine tex­tu­el­le Bezeich­nung der Aus­lie­fe­rung (kurz „release“ oder „schnitt“) soll als Meta­da­ten­satz zum Doku­ment gespei­chert wer­den. Spä­ter, beim Laden des Doku­men­tes, gibt die­se Bezeich­nung vor, wel­che Ver­si­on der noch nicht gela­de­nen XML-Vor­la­gen in die­ses Doku­ment geholt bzw. bei Bedarf aktua­li­siert wer­den soll­te.

Allen Bezeich­nun­gen des Releases wer­den alle ent­hal­te­nen XML-Vor­la­gen mit eige­nen Ver­sio­nen zuge­ord­net. Falls ein Release nur eine Del­ta der XML-Vor­la­gen ent­hielt, die­se wird auch mit glei­chem Prin­zip mar­kiert. Wenn bei der Inter­pre­tie­rung des Doku­men­tes kein XML-Bau­stein in der Bezeich­nung des Releases gefun­den wird, geht DMS auto­ma­tisch auf eine Ver­si­on der Bezeich­nung run­ter.