CodamAIDocs
Themafertig

Audit ist nicht dasselbe wie Systemfelder

Der Unterschied zwischen _createdOn am Objekt und der Revisionsgeschichte.

Ausprägungen
_createdOn_updatedOn_userIdHistorienicht auditiertes Modell

Worum es geht

Zwei Dinge in CDMS sehen ähnlich aus und werden oft verwechselt:

  • Systemfelder wie _createdOn, _updatedOn und _userId stehen am Objekt selbst. Jedes Modell hat sie. Sie zeigen einen einzigen Wert, den aktuellen. Siehe Systemfelder, die der Server setzt.
  • Die Historie ist eine Liste von Revisionen. Nur auditierte Modelle haben sie. Sie zeigt jeden Stand, den das Objekt je hatte, mit Person und Zeitpunkt.

Nebeneinander

Systemfelder und Historie
Systemfelder
am Objekt
  • gibt es bei jedem Modell
  • ein Wert je Feld, immer der aktuelle
  • _createdOn: Zeitpunkt des Anlegens
  • _updatedOn: letztes PUT oder PATCH
  • _userId: wem das Objekt gehört, nur bei Benutzer-Modellen
  • kommen mit jedem Lesen und Suchen mit
  • weg, sobald das Objekt gelöscht ist
Historie
Revisionen
  • nur bei auditierten Modellen
  • jeder Stand, den das Objekt je hatte
  • jede Änderung: Anlegen, PUT, PATCH, Upload, Rollback, Löschen
  • mit Person, Zeitpunkt, IP-Adresse und User-Agent
  • eigener Endpunkt und eigene Rolle
  • bleibt nach dem Löschen lesbar

Welche Frage beantwortet was?

FrageSystemfelderHistorie
Wann wurde das Objekt angelegt?_createdOnts der ADD-Revision
Wann wurde es zuletzt geändert?_updatedOn, aber nur PUT und PATCHts der neuesten Revision, jede Art von Änderung
Wer hat es angelegt?bei Benutzer-Modellen die Person in _userId, sonst nichtusername der ADD-Revision
Wer hat es zuletzt geändert?nicht beantwortbarusername der neuesten Revision
Was stand vorher drin?nicht beantwortbarrevision der älteren Revisionen
Wurde es gelöscht, von wem?nicht beantwortbar, das Objekt ist wegdie DEL-Revision

Wo sie sich berühren

Systemfelder und Historie im Zusammenspiel

Wann: beim Anlegen gesetzt

Ändert sich danach nie, auch nicht beim Rollback. Fast denselben Zeitpunkt trägt die ADD-Revision in revisionMeta.ts. Sie entsteht erst am Ende der Anfrage, also Bruchteile einer Sekunde später. Bei Modellen, die erst später auditiert wurden, fehlt diese Revision.

Wann: bei jedem PUT und PATCH auf jetzt gesetzt

Beim Anlegen bleibt es leer, beim Rollback unverändert. Ein Rollback ist also eine Änderung, die _updatedOn nicht zeigt, die Historie aber schon: als neue MOD-Revision.

Wann: nur bei Benutzer-Modellen, beim Anlegen gesetzt

Sagt, wem das Objekt gehört, und steuert den Owner-Filter. Es sagt nicht, wer es zuletzt geändert hat. Das steht nur in der Historie.

Ergebnis: Siehe Nur die eigenen Daten (Owner-Filter).

Wann: bei auditierten Modellen, bei jeder Änderung

Jede Revision hält den ganzen Stand fest, die Systemfelder eingeschlossen. Über + und * liefert die Historie aber nur die fachlichen Felder, _createdOn und _updatedOn stehen dort leer. Den Zeitpunkt einer Revision liest du aus revisionMeta.ts.

Wann: Auditing ist aus.

Es gibt nur die Systemfelder. Wer etwas geändert hat und was vorher drinstand, weiß CDMS nicht.

Fallen

Wie es weitergeht

Quellen im Code und in der Wissensdatenbank
  • CDMS/cdms-persistence-database – models/AbstractEntityModel (_createdOn, _updatedOn, @Audited), AuditHistoryReader.historyRollback (_updatedOn bleibt), recursiveRemoveObjects
  • CDMS/cdms-system-layer – AbstractLayer (recursiveCreate: _createdOn/_userId; PUT/PATCH: _updatedOn)
  • CDMS/cdms-rest-api – AbstractRestApi.getHistory (nur fields aus der response)
  • CDMS/cdms-integrationtest – Probe: Historie mit "*" liefert _createdOn/_updatedOn leer
  • documentation/50-auditierung/01-auditing-und-historie.md (Auditing ≠ Systemfelder)
Suchen