Zum Hauptinhalt springen

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
PropertyTypErforderlichStandardBeschreibung
targetPathstringNein$Pfad des Arrays, an das die empfangenen Nachrichten angehängt werden
getAllMessagesboolNeintrueBei false wird nur die nächste Nachricht empfangen
takeintNein20Maximale Anzahl der Nachrichten je Ausführung, wenn getAllMessages auf true steht
lastReceivedIdintNein0Id der zuletzt empfangenen Nachricht; der Node setzt mit der nächsten Nachricht fort
hoststringNeinAdapter-KonfigurationÜberschreibt Host der Adapter-Konfiguration
userstringNeinAdapter-KonfigurationÜberschreibt User der Adapter-Konfiguration
passwordstringNeinAdapter-KonfigurationÜberschreibt Password der Adapter-Konfiguration
isSimulationModeboolNeinAdapter-KonfigurationÜberschreibt IsSimulationMode der Adapter-Konfiguration; hat auf den Empfang keine Auswirkung
hinweis

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:

PropertyBeschreibung
HeadersRouting-Header des HttpAdapters: Id (Position in der Eingangswarteschlange), MessageId, ConversationId, SenderId, ReceiverId, MessageType (EDA-Nachrichtencode, z. B. ANTWORT_PT), MessageVersion, Schemaset
MessageDie 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
RawContentDas 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:

    SchemaNachrichtencodes
    CMRequestANFORDERUNG_CCMO, ANFORDERUNG_ECON
    CMNotificationABLEHNUNG_CCMO, ANTWORT_CCMO, ZUSTIMMUNG_CCMO, ABLEHNUNG_ECON, ANTWORT_ECON, ZUSTIMMUNG_ECON, ABBRUCH_ECON, ABLEHNUNG_CCMS, ANTWORT_CCMS
    CPRequestANFORDERUNG_PT, ANFORDERUNG_CMP
    CPNotificationABLEHNUNG_PT, ANTWORT_PT, ABLEHNUNG_CRMSG, ABLEHNUNG_ECP, ABLEHNUNG_CMP, ABLEHNUNG_CPF, ANTWORT_CPF
    ConsumptionRecordDATEN_CRMSG
    ECMPListABSCHLUSS_ECON, SENDEN_ECP, ANTWORT_CMP
    CMRevokeAUFHEBUNG_CCMI, AUFHEBUNG_CCMS, AUFHEBUNG_CCMC

    Nur 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