Custom-Fields und AttributeFields
Zweck
Auf praktisch jeder Detailseite in SpeamCore — Niederlassungen, Kunden, Produkte, Aufträge, Betriebsmittel etc. — finden Sie am unteren Rand zwei Bereiche:
- AttributeFields — strukturierte Custom-Felder über
AttributeParent(polymorph). - CustomFields — generische Schlüssel-Wert-Einträge.
Beide werden inline im Form gerendert — es gibt keine zentrale Master-Liste für Attribute-Templates. Wenn Sie ein Feld in vielen Datensaetzen wiederverwenden wollen, legen Sie das Attribut dort an, wo es zuerst gebraucht wird; spaetere Datensaetze koennen es referenzieren.
Unterschied AttributeFields vs. CustomFields
| Eigenschaft | AttributeFields | CustomFields |
|---|---|---|
| Datenmodell | AttributeParent (polymorph: parentType + parentId) | freies Schlüssel-Wert-Schema |
| Strukturierung | typisiert (text, number, date, ...) | generisch |
| Wiederverwendbarkeit | hoch — gleiches Attribut an mehreren Datensaetzen | gering — pro Datensatz eigen |
| Filterbarkeit in Listen | ja | nein |
| Anwendungsfall | „Wartungsvertragsnummer" auf vielen Standorten | einmaliger Vermerk pro Datensatz |
Wie der Pattern aussieht
In jedem Detailformular (z. B. Niederlassungen, Produkte, Betriebsmittel) finden Sie unten zwei Buttons:
- Neues Attributfeld → öffnet einen Dialog: Schlüssel, Datentyp, Wert.
- Neues Feld → öffnet einen Dialog: Name, Wert.
Änderungen werden automatisch gespeichert.
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | AttributeParent | Attribut-Felder lesen | APP_SPEAMCORE_VIEW_ATTRIBUTE_PARENT |
create/update/delete | AttributeParent | Attribut-Felder pflegen | APP_SPEAMCORE_CREATE/UPDATE/DELETE_ATTRIBUTE_PARENT |
Custom-Fields werden über die jeweilige Entity-Permission gesteuert (z. B. update:Customer).
Wo das auftaucht
| Modul | AttributeFields | CustomFields |
|---|---|---|
| Niederlassungen | ja | ja |
| Kunden | ja | ja |
| Standorte | ja | ja |
| Produkte | ja (Tab Attribute zusaetzlich) | ja |
| Betriebsmittel | ja | ja |
| Lieferanten | ja | ja |
| weitere Detail-Seiten | typisch ja | typisch ja |
Warum gibt es keine Admin-Liste?
Eine zentrale /attribute-models-Liste war frueher diskutiert, ist aber nicht implementiert. Das hat zwei Konsequenzen:
- Zentrale Verwaltung ist seit Welle 19 über /attributes und /attribute-groups verfuegbar. Pro Eintrag wird festgelegt, an welchen Entitaeten das Attribut sichtbar ist.
- Nicht-mehr-genutzte Attribute werden nicht zentral aufgeraeumt — sie haengen an den Datensaetzen, an denen sie angelegt wurden. Löschen ist möglich, aber muss manuell über die Liste erfolgen.
Wiederverwendbare Konzepte
- Polymorpher Parent-Pattern —
AttributeParentist ein klassisches Beispiel. - Standardwerte und Attributfelder — Mandanten-Defaults bei Beleg-Druck.
Hinweis für KIera
Versionshinweise
- 2026-04-29: Initiale Veroeffentlichung.