Autor Thema: Versionierug von Dokumenten (Nachfolgedokument/Archivdokument)  (Gelesen 3509 mal)

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Hallo,

in einer DB will ich "Versionen" von Dokumenten abspeichern. Das ist ja mit Kopien kein Problem. Die Herausforderung dabei ist aber, dass ein einmal erzeugter Link auch noch für die neuen Versionen funktionieren soll.

Lösung 1: Nachfolgedokument
Scheidet aus, da der Link ja dann auf das Ursprungsdokument verweist.

Lösung 2: Archivierung
Der aktuelle Stand des verlinkten Dokumentes wird in ein "Archivdokument" kopiert. Das aktuelle Dokument kann dann verändert werden. Der Link funktioniert immer noch.
Das Problem dabei ist aber, dass die neue "Version" irgendwann mal archiviert werden soll, ohne das es eine aktuelle Version davon geben soll. Der Link bezieht sich dann aber auf das "Archivdokument". Das soll aber nicht so sein.
Ich habe es mit einer separaten "Link-Ansicht" versucht in der nur die aktuellen Dokumente gefiltert sind. Der Link funktioniert aber immer noch, obwohl ja die UID der Ansicht eine andere ist.

Hat jemand eine Idee, wie ich das hinbekommen kann?

PS: Eine separate Achriv-DB möchte ich nicht, da ich die "archivierten" Dokumente noch in der gleichen DB haben will.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Dass Notes -/ Domino eine eigene Versionsverwaltung hat, weisst Du aber? Also mit $VersionOpt und NotesUIDocument.SaveNewVersion und so...

Unabhängig davon: Du kannst ja die DocumentUniqe- ID Deines Dokuments ändern, wenn es ein ARCHIV- Dokument wird... Universalid ist read / write... Musst nur aufpassen: Unter Umständen dupliziert das das Dokument, und Du musst das Original danach wegschmeissen...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Wir haben für so etwas eine spezielle Datenbank gebaut, die sog. dynamischen Doklinks. Schließlich will man ja ein Mal auf genau dieses eine Dokument in der speziellen Version verlinken, und ein anderes Mal auf die jeweils aktuelle Version eines bestimmten Dokuments. Ich kann das bei Interesse gerne näher beschreiben, aber wg. Urlaub erst ab nächster Woche.

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Dass Notes -/ Domino eine eigene Versionsverwaltung hat, weisst Du aber? Also mit $VersionOpt und NotesUIDocument.SaveNewVersion und so...

Unabhängig davon: Du kannst ja die DocumentUniqe- ID Deines Dokuments ändern, wenn es ein ARCHIV- Dokument wird... Universalid ist read / write... Musst nur aufpassen: Unter Umständen dupliziert das das Dokument, und Du musst das Original danach wegschmeissen...

Hallo Tode,

ja, dass hatte ich mir angeschaut. Aber ich will ja mit dem "Archivdokument" noch mehr machen (Status, continue=false usw.). So wie ich es sehe ist diese Versionsverwaltung nur eine Art Kopieren mit Referenz auf das ursprüngliche Dokument.

Das mit der UID hatte ich auch ausprobiert und war ganz überrascht, dass dadurch eine Kopie erzeugt wird. War mir bisher nicht bekannt. Das nutzt mir aber auch nichts. Wie du ja schon schreibst, muss ich dann ein Doc wegschmeißen. Der Endanwender soll aber keine Löschrechte bekommen.

Ich muss also irgendwie anders hinbekommen, dass der Link das Doc nicht mehr findet. Denn der Vorschlag von Peter hört sich zwar interessant, aber auch kompliziert an.

Vielleicht hat ja doch noch jemand eine Idee.

Danke
Martin

Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
Die Versionierung kann doch genau das, was du beschreibst. Du kannst dir sogar aussuchen ob die UNID auf das jeweils aktuelle zeigt oder gleich bleibt. Und selbst eine Version ohne Antworthierarchie bietet die Maske an.

Ob du später in den alten oder aktuellen Versionen noch irgendwelche Felder änderst interessiert Notes nicht - solange du es nicht mit der Maske versuchst, die die Versionsverwaltung macht. Aber dafür gibt es ja Agenten, Aktionen oder andere Masken.

Carsten

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Die Versionierung kann doch genau das, was du beschreibst. Du kannst dir sogar aussuchen ob die UNID auf das jeweils aktuelle zeigt oder gleich bleibt. Und selbst eine Version ohne Antworthierarchie bietet die Maske an.

Ob du später in den alten oder aktuellen Versionen noch irgendwelche Felder änderst interessiert Notes nicht - solange du es nicht mit der Maske versuchst, die die Versionsverwaltung macht. Aber dafür gibt es ja Agenten, Aktionen oder andere Masken.

Carsten

Hallo Carsten,

ob ich das mit der "eingebauten" Versionierung, oder mit einer manuellen umsetze ändert nichts an dem Problem, dass ich irgenwann mal ein Dokument habe (wenn es kein Nachfolger gibt), welches ich dann "entkoppeln" (löschen) muss.

Dennoch Danke
Martin

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Du brauchst also doch so etwas, wie unsere dynamischen Doklinks. Das ist auch nicht so kompliziert, wie Du vermutest (für Mitleser, die vielleicht unsere allgemeingültigen dynamischen Doklinks kennen: es gibt bei uns hausintern eine Variante, die speziell auf unser System gebaut und dadurch einfacher in der Bedienung ist, die folgende Beschreibung gilt dieser).

1. Zur Versionierung der Dokumente

Jedes Dokument hat ein Feld Dokument1, in diesem steht die UniversalID der ersten Version eines Dokuments. Dieses Feld ist der eindeutige logische Schlüssel zu einem Dokument, unabhängig von der Version. D.h. alle Versionen eines Dokuments (z.B. der Arbeitsanweisung A) besitzen den gleichen Wert in Dokument1.

Jedes Dokument hat ein Feld Status, in dem erkennbar ist, ob das Dokument aktiv ist. Es kann nur ein aktives Dokument zum Dokument1 geben, das ist die aktive Version. Ist das Dokument nicht mehr gültig (also ohne gültigen Nachfolger), gibt es eben keines mit aktivem Status.

2. Der dynamische Doklink

In einer separaten Datenbank (=DDL) (man kann das auch in die Datenbank selbst mit einbauen, wenn man es nur für diese haben will. Man beraubt sich dann aber der Möglichkeit, das Verfahren mehrfach einsetzen zu können), gibt es Dokumente, die die ReplikID und die UniversalID aus Dokument1 besitzen. Beim Öffnen dieser Dokumente suchen die in der angegebenen Datenbank nach dem aktiven Dokument mit passendem Dokument1 und schließen sich selbst. Wird das Dokument gefunden, wird es geöffnet, sonst eine entsprechende Fehlermeldung ausgegeben.

3. Erstellen eines dynamischen Doklinks

In den Dokumenten (also z.B. den Arbeitsanweisungen) gibt es eine Aktion zur Erstellung eines dynamischen Doklinks. Diese sucht in der DDL nach einem Dokument für die aktuelle ReplikID und das aktuelle Dokument1, gibt es das noch nicht, wird es erstellt. Der Doklink auf dieses Dokument in der DDL wird in die Zwischenablage kopiert und kann dann wie ein "normaler" Doklink eingefügt werden.


Es wird also ein Doklink auf ein Dokument genutzt, das "weiß", welches Dokument geöffnet werden soll. Dadurch wird der Link dynamisch. Der Benutzer muss wissen, wann er einen festen Link verwendet, der auf genau diese eine Version des Dokuments verweist (das ist dann ein üblicher Doklink), und wann einen dynamischen, um die jeweils aktuelle Version eines Dokuments zu verknüpfen.

Mit diesem Verfahren brauchen wir auch keine UniversalIDs zu ändern, in denen ja auch die Information über das Erstelldatum enthalten ist. Ich fände es schon nervlich, wenn ich einem Prüfer erklären sollte, warum ein Dokument vom 1.7.2018 schon 10 Jahre alt ist, nur weil ich, um einen Doklink aufrecht erhalten zu können, die UniversalID durchschleppe. Aber das ist ein anderes Thema ...

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz