SplitConsumptionRecord@1
Der Node SplitConsumptionRecord@1 teilt Verbrauchsdaten-Nachrichten (DATEN_CRMSG), die mehr als maxHours umfassen, in mehrere kleinere Nachrichten mit jeweils höchstens maxHours. Er arbeitet auf dem EdaMessage-Array, das EdaReceiver@1 erzeugt, und wird typischerweise direkt danach eingesetzt, damit lange Lieferungen (z. B. ein Monat Viertelstundenwerte) in handhabbaren Teilen verarbeitet werden.
Adapter-Voraussetzungen
Node-Konfiguration
Zu den Feldern path, targetPath, targetValueWriteMode und targetValueKind siehe Überblick.
transformations:
- type: SplitConsumptionRecord@1
path: $.messages # array of EdaMessage objects
targetPath: $.messages
maxHours: 24 # maximum duration of one chunk in hours (default: 24)
| Property | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
path | string | Ja¹ | $ | Pfad zum Array der EdaMessage-Objekte |
targetPath | string | Nein | $ | Pfad, an den das resultierende Nachrichten-Array geschrieben wird |
maxHours | int | Nein | 24 | Maximale Anzahl Stunden je Abschnitt; muss größer als 0 sein |
¹ Der Node schlägt fehl, wenn path nicht gesetzt ist (null). Ist maxHours 0 oder negativ, schlägt der Node mit MaxHours must be greater than 0. fehl.
Verhalten
- Nachrichten, die keine
DATEN_CRMSGsind, keinenRawContenthaben oder nicht deserialisiert werden können, werden unverändert durchgereicht. Wird unterpathkein Array gefunden, wird nichts geschrieben. - Eine
DATEN_CRMSGwird nur geteilt, wenn einer ihrerEnergy-Blöcke mehr alsmaxHoursumfasst. Der Gesamtzeitraum (frühester Beginn bis spätestes Ende allerEnergy-Blöcke) wird in Abschnitte zumaxHoursgeteilt, beginnend beim gelieferten Periodenbeginn (ohne Ausrichtung auf eine Zeitzone). Eine Energieposition gehört zu dem Abschnitt, in dem ihrDTF(von) liegt. - Jeder Abschnitt wird zu einer neuen
EdaMessagemit eigenemRawContent(neu serialisiertes XML). IhreMessageId(in den Headern und im XML) erhält ein Suffix_001,_002, ...; dieConversationIdbleibt gleich. Abschnitte ohne Energiepositionen werden übersprungen; bleibt kein Abschnitt übrig, wird die ursprüngliche Nachricht behalten. - Wie bei
EdaReceiver@1sind die Energiedaten nur inRawContententhalten, nicht inMessage.
Die Konfigurations-Properties sind in der API-Referenz dokumentiert.
Vollständiges Beispiel einer Pipeline-Konfiguration
triggers:
- type: FromPolling@1
interval: 00:01:00
transformations:
- type: EdaReceiver@1
targetPath: $.messages
- type: SplitConsumptionRecord@1
path: $.messages
targetPath: $.messages
maxHours: 24