Zum Hauptinhalt springen

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
PropertyTypErforderlichStandardBeschreibung
messageRtIdPathstringJa-Pfad zur RtId der gespeicherten EDA-Nachrichten-Entität
messageTypePathstringJa-Pfad zum EDA-Nachrichtencode, z. B. ANTWORT_PT
rawMessagePathstringJa-Pfad zum rohen XML der Nachricht
processRtIdPathstringNein-Pfad zur RtId des EDA-Prozesses, zu dem die Nachricht gehört
targetPathstringNein$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 CMNotification mit mehr als einem ResponseData-Element wird nicht unterstützt und lässt den Node fehlschlagen.

Ausgabe​

Der Node schreibt ein EdaMessageInfo-Objekt (Property-Namen im Datenkontext in PascalCase):

PropertyBeschreibung
MessageRtIdAus messageRtIdPath gelesene RtId
ProcessRtIdAus processRtIdPath gelesene RtId, sofern konfiguriert
MessageTypeEDA-Nachrichtencode aus der Nachricht
MessageIdNachrichten-Id
ConversationIdKonversations-Id; für alle Nachrichten eines Prozesses gleich
CreationDateDocumentCreationDateTime des Routing-Headers
ResponseCodeAntwortcode(s); mehrere Codes werden durch ein Leerzeichen getrennt. Bei CMRevoke der Grundschlüssel (Reason Key)
ResponseInfoBeschreibung der Antwortcode(s); mehrere Beschreibungen werden durch einen Zeilenumbruch getrennt. Bei CMRevoke der Grund der Aufhebung
MeteringPointNumberZählpunkt (CMNotification, CMRevoke)
ConsentIdId der Zustimmung (CMNotification, CMRevoke)
ConsentEndEnde der Zustimmung (CMRevoke)
PortalApprovalUrlFreigabe-URL des Kundenportals (CMNotification)
MeteringPointsZählpunkte einer ECMPList-Nachricht (siehe unten)
IsSuccessfulProcesstrue/false, wenn die Nachricht über das Ergebnis des Prozesses entscheidet, sonst null
FinishProcesstrue, 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​

NachrichtentypEDA-SchemaIsSuccessfulProcessFinishProcess
ANTWORT_PTCPNotificationtruetrue
ABLEHNUNG_PTCPNotificationfalsetrue
ABLEHNUNG_CRMSGCPNotificationnullfalse
ABLEHNUNG_ECPCPNotificationfalsetrue
ABLEHNUNG_CMPCPNotificationfalsetrue
ANTWORT_CPFCPNotificationtruetrue
ABLEHNUNG_CPFCPNotificationfalsetrue
ANTWORT_ECONCMNotificationnullfalse
ZUSTIMMUNG_ECONCMNotificationnullfalse
ABLEHNUNG_ECONCMNotificationfalsetrue
ABBRUCH_ECONCMNotificationfalsetrue
ANTWORT_CCMOCMNotificationnullfalse
ZUSTIMMUNG_CCMOCMNotificationtruetrue
ABLEHNUNG_CCMOCMNotificationfalsetrue
ANTWORT_CCMSCMNotificationtruetrue
ABLEHNUNG_CCMSCMNotificationfalsetrue
ABSCHLUSS_ECONECMPListtruetrue
SENDEN_ECPECMPListtruetrue
ANTWORT_CMPECMPListtruetrue
AUFHEBUNG_CCMSCMRevoketruetrue
AUFHEBUNG_CCMCCMRevoketruetrue
AUFHEBUNG_CCMICMRevoketruetrue

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