CodamAIDocs
Modul

CDMS – Daten

Die Datenschicht von CodamAI. Aus einem Modell entsteht eine REST-API, die Daten liest, sucht, schreibt und löscht, dabei jede Anfrage auf Rechte und Mandant prüft und jede Änderung protokolliert.

CDMS heißt CodamAI Data Management System. Du beschreibst im Hub ein Datenmodell, etwa „Kunde“ mit Name, Adresse und Aufträgen. Der Generator erzeugt daraus beim Build eine fertige Spring-Boot-Anwendung mit REST-Endpunkten. Deine eigene Fachlogik hängst du über Hooks ein.

Jede Anfrage an CDMS läuft durch dieselben Stationen:

  1. CIAS
    Filterkette
    Wer fragt? Für welchen Mandanten?
    ↳ nein 401 / 403
  2. CDMS
    REST-Layer
    Ist die Anfrage vollständig? Welche Felder werden verlangt?
    ↳ nein 400
  3. CDMS
    System-Layer
    Rechte, Validierung, Hooks, verschachtelte Objekte
    ↳ nein 403 / 404 / 422
  4. CDMS
    Persistenz
    Welche Datenbank? Welche Zeilen sind sichtbar?
    ↳ nein 404 / 500
  5. Antwort mit data und meta, Transaktion ist committet

Die Fachlichkeiten unten folgen diesem Weg: erst die Grundlagen, dann Lesen, Suchen, Schreiben und Löschen, danach die Querschnittsthemen Sicherheit, Mandanten, Audit und Erweiterung.

Fachlichkeiten

Grundlagen: Modell, Schichten, Endpunkte

Was ein CDMS-Modell ist, auf welcher Ebene seine Daten liegen, durch welche Schichten eine Anfrage läuft und welche Endpunkte ein Modell bekommt.

Modell-Ebenen: System, Mandant, BenutzerEin Modell, vier GestaltenSystemfelder, die der Server setztDer Weg einer Anfrage durch die SchichtenWelche Endpunkte ein Modell hatSingletons: genau ein ObjektAbstrakte Modelle und @typeDas Antwortformat: data und meta
Vom Modell zur Anwendung

Wie aus einem Modell im Hub lauffähiger Code wird: modellieren, Metadaten holen, generieren, Projektrahmen, und wie Schemaänderungen kontrolliert über den MCP-Server laufen.

Modellieren im HubCodegenerierung im BuildDer Projektrahmen (Scaffold)Generierter Code und eigener CodeSchemaänderung über den MCP-Server
Daten lesen

Ein Objekt lesen und genau bestimmen, welche Felder und Referenzen zurückkommen: Feldauswahl, Wildcards, verschachtelte Referenzen, abstrakte Typen, und was dabei in der Datenbank passiert.

Ein Objekt lesenFeldauswahl mit responseWildcards + und *Referenzen und Listen ausbauenLesen über abstrakte TypenWas beim Lesen in der Datenbank passiert
Suchen, Filtern, Blättern

Listen abfragen mit POST /query: Filterbaum aus UND/ODER-Gruppen, alle Operatoren, Suchmuster mit LIKE, Pfade über Beziehungen, Sortierung, Seiten und die Filter, die der Server immer dazunimmt.

Aufbau einer SucheAlle FilteroperatorenSuchmuster mit LIKE: % und _UND/ODER-GruppenFiltern und Sortieren über BeziehungenSammlungen durchsuchen mit MEMBEROFSortierungBlättern und TrefferzahlFilter in verschachtelten ListenDatums- und ZeitwerteFilter, die immer mitlaufenWenn ein Filter nicht passt
Daten schreiben

Objekte anlegen und ändern: Create, PUT (ersetzen) und PATCH (ändern), die null-Falle, Defaultwerte, Validierung und was bei gleichzeitigen Änderungen passiert.

Ein Objekt anlegenErsetzen mit PUTÄndern mit PATCHPUT oder PATCH? Die null-FalleDefaultwerteValidierungGleichzeitige Änderungen
Beziehungen und verschachteltes Schreiben

Wie Objekte miteinander verbunden sind und wie man verbundene Objekte im selben Request anlegt, verknüpft, ändert oder entfernt.

Beziehungstypen und Recursive-FlagsDie vier Fälle beim verschachtelten SchreibenListen als ZielzustandBeide Seiten einer BeziehungMany-to-Many über eine VerbindungstabelleZyklusschutz
Daten löschen

Wie ein Objekt gelöscht wird, was mit abhängigen Objekten und Dateien passiert und was danach noch übrig ist.

Der Ablauf eines DELETEAbhängige Objekte (Kaskaden)Löschen durch ÄndernDatei-Modelle löschenWas nach dem Löschen bleibt
Transaktionen und Konsistenz

Wann Änderungen endgültig sind: ein Request ist eine Transaktion, Commit vor der Antwort, und wo die Atomarität endet.

Ein Request, eine TransaktionAnlegen und Zurücklesen: STRICT oder LENIENTKeine Atomarität über zwei DatenbankenDateien und TransaktionDarf der Client wiederholen?
Dateien

Dateien hochladen, herunterladen, ersetzen und versionieren: wo die Bytes liegen, wo die Metadaten, und wie beides zusammenbleibt.

Was ein Datei-Modell istHochladenHerunterladenErsetzen und UmbenennenDateiversionenAblage und Mandantentrennung im SpeicherGrößengrenzenSpeicher-Backends
Sicherheit von Daten

Wer was sehen und ändern darf: Rechte auf Modell, Beziehung und Zeile, eigene Daten, Attributfilter, warum Unsichtbares 404 liefert und wie Strict Mode Fehler behandelt.

Die drei Ebenen im ÜberblickModellrollenWie Rollennamen entstehenRechte auf Beziehungen (Feldrollen)Geschützte Werte (Rollen an einfachen Feldern)Verschlüsselte FelderNur die eigenen Daten (Owner-Filter)AttributfilterEigene DatenfilterWarum Unsichtbares 404 liefertStrict Mode: Fehler oder still ignorierenZugriff ohne Token
Mandantentrennung in CDMS

Wie CDMS Kunden voneinander trennt: eine Datenbank pro Mandant, woher der Mandant einer Anfrage kommt, wie er gewechselt wird und welche Regeln nie gebrochen werden.

SINGLE und MULTIWoher der Mandant einer Anfrage kommtWelche Datenbank? Das PersistenzzielMandantenwechsel per HeaderBenutzerwechsel per HeaderWird der Mandant bedient?Datenbanken, Pools, MigrationRegeln, die nie gebrochen werden
Audit, Historie, Rollback

Wie jede Änderung nachvollziehbar bleibt: Revisionen, Historie lesen, auf einen alten Stand zurücksetzen, und was dabei mit Dateien und Beziehungen passiert.

Was auditiert wirdWas eine Revision festhältHistorie lesenAuf einen alten Stand zurücksetzenRollback bei DateienAudit ist nicht dasselbe wie SystemfelderDatenschutz und Aufbewahrung
Eigene Fachlogik einhängen

Wie Projektlogik in die Standardabläufe kommt, ohne generierten Code zu ändern: Hooks, ihre Reihenfolge, ihr Verhalten bei Fehlern und bei verschachtelten Objekten.

Hooks: Arten und ZeitpunkteFeld-HooksDie Reihenfolge in einem SchreibvorgangHooks bei verschachtelten Objekten und KaskadenEin Hook schreibt selbstWenn ein Hook scheitert
Fehler verstehen

Wie Fehler aussehen, welcher Statuscode was bedeutet und wie man 401, 403 und 404 auseinanderhält.

Das FehlerformatLandkarte der Statuscodes401, 403 oder 404?Validierungsfehler ins Formular bringen
Suchen