AutoIncrement
AutoIncrements ermöglichen die automatische Wertegenerierung für Attribute, wenn Entitäten in das Repository eingefügt werden. Sie stellen eindeutige, fortlaufende Werte für Attribute wie Kundennummern, Dokument-IDs oder jeden anderen Bezeichner sicher, der eine automatische Nummerierung erfordert.
AutoIncrements sind besonders nützlich für:
- Kundennummern: Eindeutige Kundenbezeichner automatisch generieren
- Dokumentnummern: Fortlaufende Dokumentreferenzen mit benutzerdefinierter Formatierung erstellen
- Auftragsnummern: Fortlaufende Auftragskennzeichnung pflegen
- Rechnungsnummern: Formatierte Rechnungsbezeichner generieren
- Sequenzzähler: Jedes Szenario, das automatisch generierte, fortlaufende Werte erfordert
AutoIncrements definieren
AutoIncrements werden als Runtime-Entitäten definiert, die auf den Typ System/AutoIncrement verweisen. Erstellen Sie eine YAML-Datei mit der folgenden Struktur:
$schema: https://schemas.meshmakers.cloud/runtime-model.schema.json
dependencies: []
entities:
- rtId: <unique-runtime-id>
ckTypeId: System/AutoIncrement
rtWellKnownName: CustomerNumber
attributes:
- id: System/AutoIncrement.End
value: 9999
- id: System/AutoIncrement.CurrentValue
value: 0
- rtId: <unique-runtime-id>
ckTypeId: System/AutoIncrement
rtWellKnownName: BillingDocumentDocumentNumber
attributes:
- id: System/AutoIncrement.End
value: 9999
- id: System/AutoIncrement.Format
value: "25-{0:D4}"
- id: System/AutoIncrement.CurrentValue
value: 0
AutoIncrement-Attribute
Die folgende Tabelle beschreibt die verfügbaren Attribute für die AutoIncrement-Konfiguration:
| Attribut | Beschreibung | Pflichtfeld | Beispiel |
|---|---|---|---|
System/AutoIncrement.CurrentValue | Der aktuelle Wert des Zählers | Ja | 0, 274 |
System/AutoIncrement.End | Der Höchstwert vor Zurücksetzung/Überlauf | Nein | 9999 |
System/AutoIncrement.Format | Formatzeichenkette für die Wertausgabe | Nein | "25-{0:D4}" |
Formatzeichenkette
Das Attribut Format verwendet die Formatierungskonventionen für Zeichenketten von .NET:
{0:D4}: Mit Nullen aufgefüllte 4-stellige Zahl (z. B. 0001, 0274, 9999)"25-{0:D4}": Präfix mit literalem Text (z. B. 25-0001, 25-0274)- Wird kein Format angegeben, wird der reine numerische Wert verwendet
AutoIncrements in Typen verwenden
Um einen AutoIncrement in einer Typdefinition zu verwenden, verweisen Sie in der Eigenschaft autoIncrementReference des Attributs darauf:
$schema: https://schemas.meshmakers.cloud/construction-kit-elements.schema.json
types:
- typeId: Customer
derivedFromCkTypeId: System/Entity
description: "Represents a customer of an energy community"
attributes:
- id: ${thisModel}/CustomerNumber
name: CustomerNumber
autoIncrementReference: "CustomerNumber"
- id: Basic/Contact
name: Contact
# ... other attributes
Der Wert von autoIncrementReference muss mit dem rtWellKnownName der AutoIncrement-Entität übereinstimmen.
Verhalten
Wenn eine Entität mit einem AutoIncrement-Attribut eingefügt wird:
- Das System ruft den aktuellen Wert des referenzierten AutoIncrement ab
- Es prüft, ob der aktuelle Wert den
End-Wert erreicht hat (falls angegeben) - Ist der Endwert erreicht, schlägt das Einfügen fehl und es können keine neuen Entitäten mehr erstellt werden
- Liegt der Wert innerhalb der Grenzen, wird
CurrentValueum 1 erhöht - Die Formatzeichenkette wird angewendet (falls angegeben)
- Der formatierte Wert wird dem Attribut zugewiesen
- Der
CurrentValuedes AutoIncrement wird im Repository aktualisiert
AutoIncrement-Werte werden auf Repository-Ebene verwaltet und bleiben über Anwendungsneustarts hinweg erhalten. Stellen Sie eindeutige rtWellKnownName-Werte sicher, um Konflikte zu vermeiden.
Empfohlene Vorgehensweisen
- Verwenden Sie aussagekräftige
rtWellKnownName-Werte, die den Zweck klar erkennen lassen - Legen Sie geeignete
End-Werte fest, um einen Überlauf zu verhindern - Testen Sie Formatzeichenketten, um sicherzustellen, dass sie die gewünschte Ausgabe erzeugen
- Berücksichtigen Sie die Auswirkungen gleichzeitiger Einfügungen auf die Kontinuität der Sequenz
- Planen Sie für Szenarien, in denen der
End-Wert erreicht wird (die Entitätserstellung schlägt fehl, sobald das Limit überschritten ist)