Verträge / EsGroupState
ES-Kundengruppe State
EsGroupState · com.nexoware.connect.events
- Aggregat
- EsGroup
- Topic
- esgroup.state je Mandant mit Präfix, z. B.
<mandant>.esgroup.state - Key
- EsGroupUuid
- 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
- 52
Vertragsentwurf: vollstaendiger veroeffentlichter Zustand fuer ES-Kundengruppe. Feldumfang aus dem archivierten EsGroupChanged; kein fachlicher Vergleich beider Produkte. Direkte Veroeffentlichung durch shop; kein Patch-Pfad. Grenzen, Migration und offene Fachregeln: docs/contracts/esgroup.md.
Fassungen
Felder
-
EsGroupUuid Key uuidStabile, global eindeutige Identitaet der ES-Kundengruppe (Matching-Schluessel; zugleich Message-Key).
-
Name optional stringDefault:
nullBezeichnung der Kundengruppe, wie sie im Shop gepflegt wird. Die Legacy schrieb diesen Namen als Zeichenfolge an den ES-Kunden (Feld customergroup); im Vertragsmodell reist die Zuweisung als Referenz auf die UUID, den Namen liest der Consumer hier. Dass die Legacy fuer Gruppen den Namen, fuer Rollen dagegen die ES-Id zurueckschrieb, ist Legacy-Mechanik und kein Vertragsmerkmal. -
State intDefault:
0LWW-Statusfeld: 1 = aktiv, 0 = deaktiviert. Die Legacy loescht eine Gruppe nicht, sondern deaktiviert sie (DeleteEsCustomerGroups); 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
- Geschäftspartner
AccountPatch.Data.EsGroupUuid - Geschäftspartner
AccountState.EsGroupUuid
Rohfassung
Schema dieser Fassung (Avro)
{
"type": "record",
"name": "EsGroupState",
"namespace": "com.nexoware.connect.events",
"doc": "Vertragsentwurf: vollstaendiger veroeffentlichter Zustand fuer ES-Kundengruppe. Feldumfang aus dem archivierten EsGroupChanged; kein fachlicher Vergleich beider Produkte. Direkte Veroeffentlichung durch shop; kein Patch-Pfad. Grenzen, Migration und offene Fachregeln: docs/contracts/esgroup.md.",
"fields": [
{
"name": "EsGroupUuid",
"type": {
"type": "string",
"logicalType": "uuid"
},
"doc": "Stabile, global eindeutige Identitaet der ES-Kundengruppe (Matching-Schluessel; zugleich Message-Key)."
},
{
"name": "Name",
"type": [
"null",
"string"
],
"doc": "Bezeichnung der Kundengruppe, wie sie im Shop gepflegt wird. Die Legacy schrieb diesen Namen als Zeichenfolge an den ES-Kunden (Feld customergroup); im Vertragsmodell reist die Zuweisung als Referenz auf die UUID, den Namen liest der Consumer hier. Dass die Legacy fuer Gruppen den Namen, fuer Rollen dagegen die ES-Id zurueckschrieb, ist Legacy-Mechanik und kein Vertragsmerkmal.",
"default": null
},
{
"name": "State",
"type": "int",
"doc": "LWW-Statusfeld: 1 = aktiv, 0 = deaktiviert. Die Legacy loescht eine Gruppe nicht, sondern deaktiviert sie (DeleteEsCustomerGroups); 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": "EsGroup",
"label": "ES-Kundengruppe",
"topic": "esgroup.state",
"key": "EsGroupUuid",
"cleanupPolicy": "compact",
"partitions": 1,
"writers": [
"shop"
],
"readers": [
"centron",
"nexoware-erp"
]
}