CodamAIDocs
Themafertig

Wie Rollennamen entstehen

Aus dem API-Pfad /audit/question wird audit-question, daraus audit-question-read. Die Regel an Beispielen.

Ausprägungen
BasisrolleAktionsrolleFeldrolleModell ohne Ordnerverschachtelte Ordner, Leerzeichen, CamelCaseeigener Name aus der Modelldatei

Worum es geht

Rollennamen vergibst du nicht von Hand. Der Generator bildet sie beim Build aus dem API-Pfad des Modells. Den Pfad kennst du aus der URL: Modell question im Ordner audit liegt unter /api/rest/audit/question/….

Die Umformung

  1. 1
    Hub
    Modell Question im Ordner audit
  2. 2
    Generator
    bildet den API-Pfad: Ordner und Modellname in Kleinbuchstaben → /audit/question
  3. 3
    Generator
    entfernt die Schrägstriche am Anfang und Ende, ersetzt die übrigen durch - → audit-question
    Das ist die Basisrolle. Sie gilt für jede Operation, die im Hub nicht markiert ist.
  4. 4
    Generator
    READ ist im Hub markiert → hängt -read an: audit-question-read
  5. 5
    Generator
    schreibt alle Rollen in die Metadaten des Modells und in den Rollenkatalog
    Ergebnis: Nach dem Build stehen die Namen fest. Zur Laufzeit rechnet CDMS nichts mehr aus.

Die Regeln

RegelBeispiel
Ordner und Modellname werden kleingeschriebenAudit/Question → audit-question
Jeder Ordner wird ein Namensteil, von außen nach innenaudit/checklisten/question → audit-checklisten-question
Leerzeichen in Ordnernamen werden -Ordner Meine Daten → meine-daten-…
CamelCase wird nicht getrenntSponsorInvoice → sponsorinvoice
Modell ohne Ordner: nur der ModellnameMachine → machine
Die Ebene (System, Mandant, Benutzer) spielt keine Rolleein Benutzer-Modell note im Ordner crm → crm-note
Aktionsrolle: Operation in Kleinbuchstaben anhängen-create, -read, -update, -delete

Ein Untertyp eines abstrakten Modells bekommt seine Rollen aus seinem eigenen Ordner und Namen. Er erbt keine Rollen vom abstrakten Modell.

Beispiele

Welche Rollen der Generator bildet
OrdnerModellim Hub markiertRollen
auditQuestionREADlesen und suchen: audit-question-read, alles andere: audit-question
–MachineCREATE, READ, UPDATE, DELETEmachine-create, machine-read, machine-update, machine-delete; Download, Historie, Rollback: machine
–Gaugenichtsgauge für jede Operation
tenant/accountingSponsorInvoicenichtstenant-accounting-sponsorinvoice

Feldrollen

Eine Feldrolle gehört zu einem Feld, nicht zu einem Modell: zu einer Beziehung oder zu einem einfachen Feld. Ihr Name setzt sich aus drei Teilen zusammen:

  1. 1
    Hub
    Modell Company (ohne Ordner) mit der Beziehung employees, Feldrolle für READ markiert
  2. 2
    Generator
    nimmt die Basisrolle des Modells, das das Feld hat → company
  3. 3
    Generator
    hängt den Feldnamen in Kleinbuchstaben an → company-employees
  4. 4
    Generator
    hängt die Operation an → company-employees-read
    Ergebnis: Eine Feldrolle hat immer eine Operation am Ende. Eine „Basis-Feldrolle“ ohne Operation gibt es nicht.

Erbt ein Modell das Feld von einem abstrakten Modell, trägt die Feldrolle den Namen des abstrakten Modells, denn dort ist das Feld festgelegt. Was eine Feldrolle erlaubt, steht unter Rechte auf Beziehungen (Feldrollen) und Geschützte Werte.

Eigene Namen

In einer Modelldatei (YAML) kann ein Endpunkt mit roleRequired: <name> einen eigenen Rollennamen tragen. Dieser Name gilt unverändert und geht jeder Regel oben vor. Im Hub gibt es diese Angabe nicht. Siehe Modellrollen.

Fallen

Wie es weitergeht

Quellen im Code und in der Wissensdatenbank
  • CDMS/cdms-generator – CdmsModelContext (deriveRole, roleFor), CdmsYamlLoader (modelFullPath, normalizeFolderSegment, deriveApiPath, roleActionOf, roleBaseOf, Feldrollen)
  • CDMS/cdms-generator – ModelRoleRestrictionTest
  • CDMS/cdms-generator – RoleRegistryProcessor (Rollenkatalog)
  • CDMS/cdms-integrationtest/structure/models.yaml
Suchen