EdaReceiver@1
Der Node EdaReceiver@1 empfängt EDA-Nachrichten vom HttpAdapter des Ponton X/P Messengers und hängt sie an ein Array im Datenkontext an.
Der Node holt die Nachrichten nacheinander ab, beginnend nach der Nachrichten-Id lastReceivedId. Er hört auf, wenn der HttpAdapter keine weiteren Nachrichten hat (HTTP 404), wenn take Nachrichten empfangen wurden oder nach der ersten Nachricht, wenn getAllMessages auf false steht.
Adapter-Voraussetzungen
Node-Konfiguration
Zu den Feldern path, targetPath, targetValueWriteMode und targetValueKind siehe Überblick.
transformations:
- type: EdaReceiver@1
targetPath: $.messages # array the received messages are appended to
getAllMessages: true # receive up to 'take' messages (default: true)
take: 25 # maximum number of messages per execution (default: 20)
lastReceivedId: 0 # id of the last received message (default: 0)
# host, user, password: optional, override the adapter configuration
| Property | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
targetPath | string | Nein | $ | Pfad des Arrays, an das die empfangenen Nachrichten angehängt werden |
getAllMessages | bool | Nein | true | Bei false wird nur die nächste Nachricht empfangen |
take | int | Nein | 20 | Maximale Anzahl der Nachrichten je Ausführung, wenn getAllMessages auf true steht |
lastReceivedId | int | Nein | 0 | Id der zuletzt empfangenen Nachricht; der Node setzt mit der nächsten Nachricht fort |
host | string | Nein | Adapter-Konfiguration | Überschreibt Host der Adapter-Konfiguration |
user | string | Nein | Adapter-Konfiguration | Überschreibt User der Adapter-Konfiguration |
password | string | Nein | Adapter-Konfiguration | Überschreibt Password der Adapter-Konfiguration |
isSimulationMode | bool | Nein | Adapter-Konfiguration | Überschreibt IsSimulationMode der Adapter-Konfiguration; hat auf den Empfang keine Auswirkung |
Die empfangenen Nachrichten werden immer an das Array unter targetPath angehängt; targetValueWriteMode, targetValueKind und documentMode werden von diesem Node ignoriert.
Ausgabe
Jede empfangene Nachricht wird als EdaMessage-Objekt geschrieben:
| Property | Beschreibung |
|---|---|
Headers | Routing-Header des HttpAdapters: Id (Position in der Eingangswarteschlange), MessageId, ConversationId, SenderId, ReceiverId, MessageType (EDA-Nachrichtencode, z. B. ANTWORT_PT), MessageVersion, Schemaset |
Message | Die gemäß ihrem EDA-Schema deserialisierte Nachricht. Bei Verbrauchsdaten (DATEN_CRMSG) werden hier die Energiedaten und bei ECMPList-Nachrichten die Zählpunktliste entfernt und nur in RawContent behalten |
RawContent | Das ursprüngliche XML der Nachricht |
Im Datenkontext werden für die Ausgabe Property-Namen in PascalCase verwendet, z. B. $.messages[0].Headers.ConversationId.
Laufzeitverhalten
-
Ein HTTP-Fehler außer 404 (keine weiteren Nachrichten) lässt den Node fehlschlagen.
-
Eine Nachricht mit einem Nachrichtencode, den der Adapter nicht kennt, lässt den Node fehlschlagen (
Unknown message type). Der Node kennt diese Nachrichtencodes:Schema Nachrichtencodes CMRequest ANFORDERUNG_CCMO,ANFORDERUNG_ECONCMNotification ABLEHNUNG_CCMO,ANTWORT_CCMO,ZUSTIMMUNG_CCMO,ABLEHNUNG_ECON,ANTWORT_ECON,ZUSTIMMUNG_ECON,ABBRUCH_ECON,ABLEHNUNG_CCMS,ANTWORT_CCMSCPRequest ANFORDERUNG_PT,ANFORDERUNG_CMPCPNotification ABLEHNUNG_PT,ANTWORT_PT,ABLEHNUNG_CRMSG,ABLEHNUNG_ECP,ABLEHNUNG_CMP,ABLEHNUNG_CPF,ANTWORT_CPFConsumptionRecord DATEN_CRMSGECMPList ABSCHLUSS_ECON,SENDEN_ECP,ANTWORT_CMPCMRevoke AUFHEBUNG_CCMI,AUFHEBUNG_CCMS,AUFHEBUNG_CCMCNur ein Teil davon wird von EdaParseMessage@1 ausgewertet; Verbrauchsdaten (
DATEN_CRMSG) verarbeiten die Consumption-Record-Nodes, z. B. ParseConsumptionRecord@1.
Die Konfigurations-Properties sind in der API-Referenz dokumentiert.
Vollständiges Beispiel einer Pipeline-Konfiguration
Dieses Beispiel fragt den HttpAdapter jede Minute ab, teilt lange Verbrauchsdaten in Tagesabschnitte und speichert jede Nachricht als Entität.
triggers:
- type: FromPolling@1
interval: 00:01:00
transformations:
- type: EdaReceiver@1
getAllMessages: true
take: 25
targetPath: $.messages
- type: SplitConsumptionRecord@1
path: $.messages
targetPath: $.messages
maxHours: 24
- type: ForEach@1
iterationPath: $.messages
mergePath: $.update
targetPath: $.updates
transformations:
- type: CreateUpdateInfo@1
targetPath: $.update
updateKind: INSERT
ckTypeId: Basic.Energy/EdaMessage
rtIdPath: $.rtId
generateRtId: true
attributeUpdates:
- attributeName: MessageType
attributeValueType: String
valuePath: $.key.Headers.MessageType
- attributeName: ConversationId
attributeValueType: String
valuePath: $.key.Headers.ConversationId
- attributeName: RawMessage
attributeValueType: String
valuePath: $.key.RawContent
- type: ApplyChanges@2
entityUpdatesPath: $.updates