Verträge / EsRoleState
ES-Rolle State
EsRoleState · com.nexoware.connect.events
- Aggregat
- EsRole
- Topic
- esrole.state je Mandant mit Präfix, z. B.
<mandant>.esrole.state - Key
- EsRoleUuid
- Nachrichtenart
- State — der aktuelle Zustand, ein Writer
- Schreiber
- Shop (shop)
- Leser
- c-entron Webservice (centron) , NEXOWARE.ERP (nexoware-erp)
- Fassung
- Version 1 (neueste)
- Schema-ID
- 64
Vertragsentwurf: vollstaendiger veroeffentlichter Zustand fuer ES-Rolle. Feldumfang aus dem archivierten EsRoleChanged; kein fachlicher Vergleich beider Produkte. Direkte Veroeffentlichung durch shop; kein Patch-Pfad. Grenzen, Migration und offene Fachregeln: docs/contracts/esrole.md.
Fassungen
Felder
-
EsRoleUuid Key uuidStabile, global eindeutige Identitaet der ES-Benutzerrolle (Matching-Schluessel; zugleich Message-Key).
-
Name optional stringDefault:
nullBezeichnung der Rolle, wie sie im Shop gepflegt wird. Die Legacy schrieb die ES-Rollen-Id an den ES-User (Feld role_id), fuer Gruppen dagegen den Namen an den Kunden; im Vertragsmodell referenzieren beide gleich, naemlich ueber die UUID. -
Shortcut optional stringDefault:
nullKurzzeichen der Rolle, wie es der Shop fuehrt (GET /api/roles). Das einzige Feld, das die Rolle gegenueber der Kundengruppe zusaetzlich traegt. -
State intDefault:
0LWW-Statusfeld: 1 = aktiv, 0 = deaktiviert. Die Legacy loescht eine Rolle nicht, sondern deaktiviert sie (DeleteEsRoles); Deaktivierung reist als Voll-Snapshot mit geaendertem State, kein Tombstone. Die Wertemenge der ES-Quelle ist noch nicht verifiziert. -
Revision longStreng monotone Revision je Objekt, vom publizierenden Produkt bei einer Zustandsaenderung erhoeht und zusammen mit der Outbox persistiert. Wiederholungen behalten die Revision.
-
LastEventId ↗ extern: LastEventId uuidStabile EventId des zuletzt publizierten Zustands; bei Wiederholung derselben Outbox-Nachricht identisch.
-
Default:
nullUUID des aendernden Mitarbeiters (Employee); null, wenn unbekannt. Hier praktisch immer null: die Aenderung entsteht im Shop-Backend, und wer sie dort ausloest, ist kein c-entron-Mitarbeiter. Das Feld bleibt trotzdem Teil des Umschlags, weil ADR-0016 fuer ES-eigene Aggregate dieselbe Mechanik verlangt wie beim groessten Beleg. -
ChangedAt timestampZeitpunkt der Aenderung als UTC-Instant.
Referenziert von
- Web-Konto
WebAccountState.EsRoleUuid
Rohfassung
Schema dieser Fassung (Avro)
{
"type": "record",
"name": "EsRoleState",
"namespace": "com.nexoware.connect.events",
"doc": "Vertragsentwurf: vollstaendiger veroeffentlichter Zustand fuer ES-Rolle. Feldumfang aus dem archivierten EsRoleChanged; kein fachlicher Vergleich beider Produkte. Direkte Veroeffentlichung durch shop; kein Patch-Pfad. Grenzen, Migration und offene Fachregeln: docs/contracts/esrole.md.",
"fields": [
{
"name": "EsRoleUuid",
"type": {
"type": "string",
"logicalType": "uuid"
},
"doc": "Stabile, global eindeutige Identitaet der ES-Benutzerrolle (Matching-Schluessel; zugleich Message-Key)."
},
{
"name": "Name",
"type": [
"null",
"string"
],
"doc": "Bezeichnung der Rolle, wie sie im Shop gepflegt wird. Die Legacy schrieb die ES-Rollen-Id an den ES-User (Feld role_id), fuer Gruppen dagegen den Namen an den Kunden; im Vertragsmodell referenzieren beide gleich, naemlich ueber die UUID.",
"default": null
},
{
"name": "Shortcut",
"type": [
"null",
"string"
],
"doc": "Kurzzeichen der Rolle, wie es der Shop fuehrt (GET /api/roles). Das einzige Feld, das die Rolle gegenueber der Kundengruppe zusaetzlich traegt.",
"default": null
},
{
"name": "State",
"type": "int",
"doc": "LWW-Statusfeld: 1 = aktiv, 0 = deaktiviert. Die Legacy loescht eine Rolle nicht, sondern deaktiviert sie (DeleteEsRoles); Deaktivierung reist als Voll-Snapshot mit geaendertem State, kein Tombstone. Die Wertemenge der ES-Quelle ist noch nicht verifiziert.",
"default": 0
},
{
"name": "Revision",
"type": "long",
"doc": "Streng monotone Revision je Objekt, vom publizierenden Produkt bei einer Zustandsaenderung erhoeht und zusammen mit der Outbox persistiert. Wiederholungen behalten die Revision."
},
{
"name": "LastEventId",
"type": {
"type": "string",
"logicalType": "uuid"
},
"doc": "Stabile EventId des zuletzt publizierten Zustands; bei Wiederholung derselben Outbox-Nachricht identisch."
},
{
"name": "ChangedByUuid",
"type": [
"null",
{
"type": "string",
"logicalType": "uuid"
}
],
"doc": "UUID des aendernden Mitarbeiters (Employee); null, wenn unbekannt. Hier praktisch immer null: die Aenderung entsteht im Shop-Backend, und wer sie dort ausloest, ist kein c-entron-Mitarbeiter. Das Feld bleibt trotzdem Teil des Umschlags, weil ADR-0016 fuer ES-eigene Aggregate dieselbe Mechanik verlangt wie beim groessten Beleg.",
"default": null,
"references": "Employee"
},
{
"name": "ChangedAt",
"type": {
"type": "long",
"logicalType": "timestamp-millis"
},
"doc": "Zeitpunkt der Aenderung als UTC-Instant."
}
],
"aggregate": "EsRole",
"label": "ES-Rolle",
"topic": "esrole.state",
"key": "EsRoleUuid",
"cleanupPolicy": "compact",
"partitions": 1,
"writers": [
"shop"
],
"readers": [
"centron",
"nexoware-erp"
]
}