MIT DATEN MEHR BEWEGEN.

Expression

Funktionsbeschreibung und Anwendung

Der Expression Evaluator-Block (ExpEval) kann Berechnungen und sonstige mathematische oder logische Verknüpfungen auf Grundlage einlaufender Nachrichten durchführen. Der Processing-Block hat Zugriff auf einlaufende Nachrichten-Payloads.

Die folgenden Skizze veranschaulicht die Funktionsweise.

expression diagram
Abbildung 1. Funktionsweise Expression Evaluator

Im Beispiel der Skizee wird laut Konfiguration die Berechnung eines Wertes result durchgeführt. Dafür wird auf die einlaufenden Datenfelder a und b zugegriffen. Nach Verarbeitung, wird die einlaufende Nachricht mit dem Wert result erweitert und ausgegeben.

In der folgenden Tabelle werden die Konfigurationsparameter erläutert.

Tabelle 1. Konfigurationsparameter Expression-Block
Parameter Beschreibung

Name

Name der Blockinstanz.

Into

Name der Blockinstanz des Folgeblocks an welchen Ausgabenachrichten weitergeleitet werden sollen.

Expressions - Name

Name des Ergebnis (Key) für einen angegebenen Ausdruck.

Value

string, Auszuwertender Ausdruck. Die Syntax ist unter Ausdrücke beschrieben.

Preserve input properties

optional, boolean, default=false,
Bei Wert true bleiben die einlaufenden Nachrichten-Properties in den ausgehenden Nachrichten erhalten.

Results in object

optional, string, Wenn an dieser Stelle etwas angegeben wird, werden Ergebnisse in einem Unterobjekt der Ausgangsnachricht eingefügt.

Ausdrücke

Folgende Operatoren und Ausdrücke stehen zur Verfügung und können ausgewertet werden:

  • mathematische Verknüpfungen mit den Operatoren +, -, *, /

  • Modulo mit Operator %

  • mathematische Funktionen aus .NET Math. Bspw. Round(..), Abs(..), Pow(..), Sqrt(..), ..

  • binäre Verknüpfungen mit den Operatoren | , &, ^, ~

  • logische Verknüpfungen mit den Operatoren ||, &&, or, and, !, not

  • mathematische Vergleiche mit den Operatoren <, >, <=, >=, ==, !=

Neben numerischen Konstanten (wie 12 oder 7.91) oder booleschen true/false kann auf die Properties der einlaufenden Nachricht per JSON Key zugegriffen werden. Die folgende Tabelle zeigt einige Beispiele.

Tabelle 2. Beispiel-Expressions
Expression (JSON Value) Variables (aus einlaufender Nachricht) Ergebnis (JSON Value)

"1.1*6"

6.6

"20 % 10"

0

"not true"

false

"true && true"

true

"true || false"

true

"not(2>8)"

true

"foo*bar"

foo:20; bar:4

80

"foo-bar"

foo:20; bar:4

16

"foo/bar"

foo:20; bar:4

5

"foo+bar"

foo:20; bar:4

24

"foo%bar"

foo:20; bar:4

0

"foo-(bar * 100)"

foo:20; bar:4

-380

Zu beachten ist, dass dieser Processing-Block über keinen Zustand verfügt. Jede Berechnung erfolgt anhand der Konfiguration und der einlaufenden Nachrichten!

.Net Math Operations Syntax: Auf die Funktionen aus dotnet math kann folgendermaßen zugegriffen werden:

  • Potenzieren: y = x^a ⇒ "y": "Pow(x,a)"

  • Runden: y = x (auf zwei Nachkommastellen) ⇒ "y": "Round(x,2)"

  • Quadratwurzel: y = sqrt(x) ⇒ "y": "Sqrt(x)"

  • Abrunden auf Ganzzahl: x ⇒ "y": "Floor(x)"

  • Aufrunden auf Ganzzahl: x ⇒ "y": "Ceiling(x)"

  • Betrag einer Zahl: x ⇒ "y": "Abs(x)"

Weitere Details sind in der Dokumentation der Math Klasse .Net Core zu finden: https://docs.microsoft.com/de-de/dotnet/api/system.math.sqrt?view=netcore-3.1

Beispielkonfiguration

Die Berechnung im Beispiel in Abbildung 2, ergibt sich aus dem Feld „a“ einer einlaufenden Nachricht und Addition mit einem konstanten Wert 1. Das Ergebnis wird in dem Feld „aPlus1“ abgelegt. Im Weiteren sollen alle vorhandenen Felder auf der Eingangsseite erhalten bleiben (→ Preserve input properties: true). Das Ergebnis soll direkt in das Top Level JSON-Objekt eingefügt werden (→ Results in object: null).

expr
Abbildung 2. Konfiguration des Expression-Block