EdaParseMessage@1
Der Node EdaParseMessage@1 wertet eine gespeicherte EDA-Statusmeldung (rohes XML) zu einem EdaMessageInfo-Objekt aus. Die EdaMessageInfo gibt an, ob die Nachricht ihren Prozess abschließt und ob der Prozess erfolgreich war, und enthält die Antwortcodes, Zustimmungsdaten und bei Zählpunktlisten die Zählpunkte.
Der Node wird üblicherweise für Nachrichten verwendet, die mit EdaReceiver@1 empfangen und als Entitäten gespeichert wurden; Nachrichtentyp, rohes XML und RtIds werden dabei aus einem Abfrageergebnis gelesen.
Adapter-Voraussetzungen
Node-Konfiguration
Zu den Feldern path, targetPath, targetValueWriteMode und targetValueKind siehe Überblick.
transformations:
- type: EdaParseMessage@1
messageRtIdPath: $.key.RtId # RtId of the stored message entity
messageTypePath: $.key.Values[0] # EDA message code, e.g. ANTWORT_PT
processRtIdPath: $.key.Values[1] # optional: RtId of the process the message belongs to
rawMessagePath: $.key.Values[2] # raw XML of the message
targetPath: $.EdaMessage
| Property | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
messageRtIdPath | string | Ja | - | Pfad zur RtId der gespeicherten EDA-Nachrichten-Entität |
messageTypePath | string | Ja | - | Pfad zum EDA-Nachrichtencode, z. B. ANTWORT_PT |
rawMessagePath | string | Ja | - | Pfad zum rohen XML der Nachricht |
processRtIdPath | string | Nein | - | Pfad zur RtId des EDA-Prozesses, zu dem die Nachricht gehört |
targetPath | string | Nein | $ | Pfad, an den die EdaMessageInfo geschrieben wird |
Verhalten
- Fehlt im Datenkontext die RtId der Nachricht, der Nachrichtentyp oder das rohe XML, schreibt der Node nichts und die Pipeline läuft weiter.
- Ein Nachrichtentyp, der nicht unter Unterstützte Nachrichtentypen aufgeführt ist, lässt den Node fehlschlagen (
Not supported message type). Das betrifft auch Anfragenachrichten (ANFORDERUNG_*) und Verbrauchsdaten (DATEN_CRMSG); für Verbrauchsdaten werden ParseConsumptionRecord@1 oder AggregateConsumptionRecord@1 verwendet. - Eine
CMNotificationmit mehr als einemResponseData-Element wird nicht unterstützt und lässt den Node fehlschlagen.
Ausgabe
Der Node schreibt ein EdaMessageInfo-Objekt (Property-Namen im Datenkontext in PascalCase):
| Property | Beschreibung |
|---|---|
MessageRtId | Aus messageRtIdPath gelesene RtId |
ProcessRtId | Aus processRtIdPath gelesene RtId, sofern konfiguriert |
MessageType | EDA-Nachrichtencode aus der Nachricht |
MessageId | Nachrichten-Id |
ConversationId | Konversations-Id; für alle Nachrichten eines Prozesses gleich |
CreationDate | DocumentCreationDateTime des Routing-Headers |
ResponseCode | Antwortcode(s); mehrere Codes werden durch ein Leerzeichen getrennt. Bei CMRevoke der Grundschlüssel (Reason Key) |
ResponseInfo | Beschreibung der Antwortcode(s); mehrere Beschreibungen werden durch einen Zeilenumbruch getrennt. Bei CMRevoke der Grund der Aufhebung |
MeteringPointNumber | Zählpunkt (CMNotification, CMRevoke) |
ConsentId | Id der Zustimmung (CMNotification, CMRevoke) |
ConsentEnd | Ende der Zustimmung (CMRevoke) |
PortalApprovalUrl | Freigabe-URL des Kundenportals (CMNotification) |
MeteringPoints | Zählpunkte einer ECMPList-Nachricht (siehe unten) |
IsSuccessfulProcess | true/false, wenn die Nachricht über das Ergebnis des Prozesses entscheidet, sonst null |
FinishProcess | true, wenn die Nachricht den Prozess abschließt |
Bei ECMPList-Nachrichten enthält MeteringPoints einen Eintrag je Zählpunkt mit MeteringPointNumber, ConsentId, ActivatedSince, DeactivatedSince, ParticipationFactor, Direction (0 unbekannt, 1 Verbrauch, 2 Erzeugung), ProductionType (abgeleitet aus dem TechCode), TechCode, FuelCode und TimePeriods. Je Listeneintrag stammen die Werte aus dem Zeitabschnitt mit dem spätesten DateFrom. Wird ein Zählpunkt mehrfach aufgeführt, werden ConsentId, ActivatedSince, DeactivatedSince und ParticipationFactor aus dem Eintrag mit der jüngsten Aktivierung übernommen, und jeder Eintrag wird zu TimePeriods hinzugefügt (ActivatedSince/DeactivatedSince in UTC, ein offenes Ende ist 9999-12-31). Eine leere Zählpunktliste ist gültig und ergibt ein leeres Array MeteringPoints.
Unterstützte Nachrichtentypen
| Nachrichtentyp | EDA-Schema | IsSuccessfulProcess | FinishProcess |
|---|---|---|---|
ANTWORT_PT | CPNotification | true | true |
ABLEHNUNG_PT | CPNotification | false | true |
ABLEHNUNG_CRMSG | CPNotification | null | false |
ABLEHNUNG_ECP | CPNotification | false | true |
ABLEHNUNG_CMP | CPNotification | false | true |
ANTWORT_CPF | CPNotification | true | true |
ABLEHNUNG_CPF | CPNotification | false | true |
ANTWORT_ECON | CMNotification | null | false |
ZUSTIMMUNG_ECON | CMNotification | null | false |
ABLEHNUNG_ECON | CMNotification | false | true |
ABBRUCH_ECON | CMNotification | false | true |
ANTWORT_CCMO | CMNotification | null | false |
ZUSTIMMUNG_CCMO | CMNotification | true | true |
ABLEHNUNG_CCMO | CMNotification | false | true |
ANTWORT_CCMS | CMNotification | true | true |
ABLEHNUNG_CCMS | CMNotification | false | true |
ABSCHLUSS_ECON | ECMPList | true | true |
SENDEN_ECP | ECMPList | true | true |
ANTWORT_CMP | ECMPList | true | true |
AUFHEBUNG_CCMS | CMRevoke | true | true |
AUFHEBUNG_CCMC | CMRevoke | true | true |
AUFHEBUNG_CCMI | CMRevoke | true | true |
Der Nachrichtentyp wird ohne Beachtung der Groß-/Kleinschreibung verglichen. Der Adapter verwendet die Schemaversionen CPNotification 01.13, CMNotification 01.20, ECMPList 01.20 und CMRevoke 01.10.
Die Konfigurations-Properties sind in der API-Referenz dokumentiert, die Ausgabe unter EdaMessageInfo.
Vollständiges Beispiel einer Pipeline-Konfiguration
Dieses Beispiel lädt unverarbeitete Nachrichten über eine Abfrage, wertet sie aus, ermittelt die neueste Nachricht je Prozess und aktualisiert die Prozess-Entitäten.
triggers:
- type: FromPolling@1
interval: 00:02:00
transformations:
- type: GetQueryById@1
targetPath: $.query
queryRtId: 000000000000000000000001 # query returning MessageType, ProcessRtId, RawMessage
- type: ForEach@1
iterationPath: $.query.Rows
mergePath: $.EdaMessage
targetPath: $.EdaMessages
transformations:
- type: EdaParseMessage@1
messageRtIdPath: $.key.RtId
messageTypePath: $.key.Values[0]
processRtIdPath: $.key.Values[1]
rawMessagePath: $.key.Values[2]
targetPath: $.EdaMessage
- type: ExtractProcesses@1
path: $.EdaMessages
targetPath: $.EdaProcesses
- type: ForEach@1
iterationPath: $.EdaProcesses
mergePath: $.update
targetPath: $.updates
transformations:
- type: CreateUpdateInfo@1
targetPath: $.update
updateKind: UPDATE
ckTypeId: Basic.Energy/EdaProcess
rtIdPath: $.key.ProcessRtId
attributeUpdates:
- attributeName: Finished
attributeValueType: Boolean
valuePath: $.key.FinishProcess
- attributeName: Success
attributeValueType: Boolean
valuePath: $.key.IsSuccessfulProcess
- attributeName: ResponseCode
attributeValueType: String
valuePath: $.key.ResponseCode
- type: ApplyChanges@2
entityUpdatesPath: $.updates