Worum es geht
Ein Datei-Modell besteht aus zwei Teilen: dem Datensatz in der Datenbank (Name, Größe, fileId und deine eigenen Felder) und dem Inhalt im Dateispeicher. Bei auditierten Datei-Modellen liegen dort außerdem die alten Versionen jedes Uploads. Siehe Dateiversionen.
Wird der Datensatz gelöscht, löscht CDMS den Inhalt mit, und zwar alle Versionen. Ein Datei-Modell, dessen Datensatz weg ist, hat keinen lesbaren Inhalt mehr. Das ist wichtig für personenbezogene Daten: Eine Löschung ist erst dann eine Löschung, wenn auch die Bytes weg sind.
Datensatz und Inhalt
-
1Client→CDMSschickt
DELETE /fileasset/delete/f1… -
2CDMSprüft Sichtbarkeit und Löschrolle des Datei-Modells
-
3CDMS→File storagemerkt vor, den Inhalt zu entfernen: die aktuelle Datei und alle aufbewahrten VersionenVorgemerkt wird im Löschablauf, sobald CDMS den Datensatz erreicht. Entfernt wird erst nach dem Commit der Datenbank.
-
4HookDELETE-Hooks laufen
-
5CDMS→Databaseentfernt den Datensatz und committet
-
6CDMS→File storageentfernt den Inhalt samt VersionenErgebnis: 200 ohne Körper.
GET /fileasset/f1…/fileliefert danach 404.
Im Dateispeicher sieht das so aus, für ein auditiertes Datei-Modell mit drei Uploads:
| Datei im Speicher | vorher | nachher |
|---|---|---|
<fileId> (aktueller Inhalt) | „Fassung drei“ | gelöscht |
<fileId> + Versionskennung | „Fassung zwei“ | gelöscht |
<fileId> + Versionskennung | „Fassung eins“ | gelöscht |
Welche Dateien mitgehen
Eine Datei kann an einem anderen Objekt hängen, etwa das Logo einer Firma oder die Anhänge einer Akte. Ob sie beim Löschen dieses Objekts mitgeht, entscheidet wie immer das DELETE-Flag. Siehe Abhängige Objekte (Kaskaden).
| Beziehung | Beispiel | Flag DELETE | Datei |
|---|---|---|---|
| 1:1 | Company.logo | ja | Datensatz und Inhalt gelöscht |
| 1:n | Dossier.attachments | ja | jeder Anhang gelöscht, mit Inhalt |
| n:1 | Dossier.template, eine Vorlage für viele Akten | nein | bleibt mit Inhalt, auch wenn keine Akte mehr darauf zeigt |
| n:m über ein Verbindungsmodell | Dossier.assets → Dossier2Asset.asset | an der Verbindung ja, an der Datei nein | die Verbindungen gehen, die Datei bleibt |
Eine geteilte Datei bleibt also bestehen, auch wenn das letzte Objekt gelöscht wird, das auf sie zeigt. CDMS räumt sie nicht von selbst weg. Brauchst du sie nicht mehr, lösche sie direkt.
Durch PUT oder PATCH entfernt
Fällt ein abhängiger Anhang durch PUT oder PATCH aus seiner Liste, wird er gelöscht, und zwar ebenfalls mit Inhalt und Versionen. Siehe Löschen durch Ändern.
Etwas anderes ist es, eine Datei zu ersetzen: Ein neuer Upload am selben Datensatz löscht nichts, bei auditierten Modellen wird der alte Inhalt zur Version. Siehe Ersetzen und Umbenennen.
Was von einer gelöschten Datei bleibt
- die Historie des Datensatzes: Name, Größe, wer wann hochgeladen und gelöscht hat
- der Datensatz
- der aktuelle Inhalt
- alle Versionen
- jeder Weg, einen alten Inhalt herunterzuladen
Die Historie zeigt also, dass es die Datei gab und wie sie hieß, aber nicht mehr, was drinstand. Siehe Was nach dem Löschen bleibt.
Fallen
Wie es weitergeht
- Die Schritte eines DELETE: Der Ablauf eines DELETE
- Dateien und Transaktion: Dateien und Transaktion
- Alte Stände: Dateiversionen