Zum Hauptinhalt springen

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:

AttributBeschreibungPflichtfeldBeispiel
System/AutoIncrement.CurrentValueDer aktuelle Wert des ZählersJa0, 274
System/AutoIncrement.EndDer Höchstwert vor Zurücksetzung/ÜberlaufNein9999
System/AutoIncrement.FormatFormatzeichenkette für die WertausgabeNein"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:

  1. Das System ruft den aktuellen Wert des referenzierten AutoIncrement ab
  2. Es prüft, ob der aktuelle Wert den End-Wert erreicht hat (falls angegeben)
  3. Ist der Endwert erreicht, schlägt das Einfügen fehl und es können keine neuen Entitäten mehr erstellt werden
  4. Liegt der Wert innerhalb der Grenzen, wird CurrentValue um 1 erhöht
  5. Die Formatzeichenkette wird angewendet (falls angegeben)
  6. Der formatierte Wert wird dem Attribut zugewiesen
  7. Der CurrentValue des AutoIncrement wird im Repository aktualisiert
warnung

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)