Ausdruck
apama.analyticskit.blocks.core.Expression
Bewertet einen Ausdruck, um arithmetische oder logische Berechnungen oder Zeichenfolgen-Operationen durchzuführen.
Bei Änderung der Eingabewerte (wenn alle verwendeten Eingaben erhalten wurden), wird der im Parameter angegebene Ausdruck neu berechnet.
Die Ausdruckssprache ist ähnlich wie Apama EPL (siehe EPL-Referenz in der Apama-Dokumentation), sie ist jedoch auf die Typen float, integer, string und boolean beschränkt. Alle numerischen Literale werden als Wert vom Typ float behandelt, auch wenn sie keinen Bruchteil haben. Integer-Werte können nur als Ergebnis von Funktionen wie etwa floor() erhalten werden. Ähnlich wie bei Apama EPL, können integer und float nicht implizit in einem Ausdruck konvertiert werden. Wenn das Ergebnis eines Ausdrucks ein integer-Wert ist, wird er automatisch in float umgewandelt (dies kann zu einem Genauigkeitsverlust führen). Boolesche Werte können mittels der booleschen Literale true und false angegeben werden. Bei booleschen Literalen wird nicht zwischen Groß- und Kleinbuchstaben unterschieden, somit ist zum Beispiel TRUE ebenso zulässig wie True. Zeichenfolgenwerte können angegeben werden, indem die Zeichenfolgen-Literale in doppelte Anführungszeichen gesetzt werden (zum Beispiel "mein Wert"). Sonderzeichen werden mit einem Rückwärtsschrägstrich (\) codiert. Die folgenden Sonderzeichen (und ihre Codierung) werden in Zeichenfolgen-Literalen unterstützt:
Doppelte Anführungszeichen -
\"Rückwärtsschrägstrich -
\\Zeilenumbruch -
\nTabulator -
\tDie Werte der Eingaben sind als input1, input2, input3, input4 und input5 verfügbar. Die Eingabewerte können vom Typ float, string, boolean und any sein. Logische, relationale, numerische und Gleichheits-Operatoren können mit Werten der unterstützten Typen verwendet werden. Bei logischen Operatoren wird nicht zwischen Groß- und Kleinbuchstaben unterschieden, somit ist zum Beispiel AND ebenso zulässig wie And. Integrierte Methoden für die Typen float, integer, string und boolean können aufgerufen werden, unter anderem x.abs() (absoluter Wert von x), x.pow(y) (x hoch y), x.sin() (Sinus von x in Radiant), x.round() (Rundung von x auf die nächste Integerzahl) und s.ltrim() (ohne Leerzeichen am Anfang der Zeichenfolge s). Integrierte statische Methoden der unterstützten Typen können durch Angabe des Typnamens, gefolgt von einem Punkt (.) und vom Methodennamen aufgerufen werden, zum Beispiel float.max(input1, input2) (findet den größeren von zwei Eingabewerten). Integrierte Konstanten bei den unterstützten Typen können durch Angabe des Typnamens, gefolgt von einem Punkt (.) und dem Konstantennamen aufgerufen werden, zum Beispiel float.E (Eulersche Konstante). Werte vom Typ any werden zur Laufzeit entpackt, um den Ausdruck zu bewerten. Nach dem Entpacken muss der Wert vom Typ float, string oder boolean sein. Der Typ-Checker versucht, die Ausdrücke während der Validierungsphase zu validieren, aber dies ist beim Typ any nicht immer möglich. Wenn also ein Ausdruck den Typ any enthält, kann er, selbst wenn er die Validierungsphase übersteht, zur Laufzeit fehlschlagen, weil ein falscher Variablentyp übergeben oder eine nicht unterstützte Operation ausgeführt wurde. Eine vollständige Liste der integrierten Methoden und Konstanten finden Sie in der API-Referenz für EPL (ApamaDoc), die über die Apama-Dokumentation aufgerufen werden kann.
Beispiele:
Umrechnung von Fahrenheit in Celsius:
(input1 - 32) * 5/9Umrechnung von Tagen in Sekunden:
input1 * 86400Durchschnittswert aus 4 Eingaben:
(input1 + input2 + input3 + input4) / 4Vergleich mit Schwelle:
input1 > 3.1412 (siehe aber auch Schwellenblock)
Pythagoras zur Berechnung der Hypotenuse eines rechtwinkligen Dreiecks:
(input1.pow(2) + input2.pow(2)).sqrt()Vergleich auf 3 Dezimalstellen:
(input1 * 1000 - (input1 * 1000).fractionalPart()) = (input2 * 1000 - (input2 * 1000).fractionalPart())Überprüfung eines Bereichs:
input1 >= 1 and input1 <= 10Vergleich einer Zeichenfolge:
input1 = "my value"Größerer Wert:
float.max(input1, float.PI)Rest von Integerdivision:
input1.round() % input2.round()Parameter
Name | Beschreibung | Typ | Hinweise |
Ausdruck | Ein Ausdruck - die Darstellung eines EPL-Ausdrucks als Zeichenkette. Ähnlich EPL-Ausdrücken, aber mit den oben beschriebenen Unterschieden. | string | |
Details zum Eingangsport
Name | Beschreibung | Typ |
input1 | Erster Eingabewert; im Ausdruck als input1 zu verwenden. | any |
input2 | Zweiter Eingabewert; im Ausdruck als input2 zu verwenden. | any |
input3 | Dritter Eingabewert; im Ausdruck als input3 zu verwenden. | any |
input4 | Vierter Eingabewert; im Ausdruck als input4 zu verwenden. | any |
input5 | Fünfter Eingabewert; im Ausdruck als input5 zu verwenden. | any |
Details zum Ausgangsport
Name | Beschreibung | Typ |
Ergebnis | Ergebnis des Ausdrucks. | any |