Altova FlowForce Server 2024 Advanced Edition

Um Fehler in FlowForce-Ausdrücken zu vermeiden, befolgen Sie die folgenden Regeln:

 

Verwenden Sie nur zulässige oder deklarierte Werte.

Um einen String als Literal zu verwenden, setzen Sie ihn in einfache Anführungszeichen.

Um einen Ausdruck in ein String-Feld einzubetten, setzen Sie ihn in geschweifte Klammern, also in die Zeichen { und }.

Der Ausdruck muss einen Datentyp erzeugen, der in dem Feld, in den der Ausdruck eingegeben wurde, sinnvoll ist.

 

Werfen wir nun einen Blick auf die Regeln im Detail:

 

Regel Nr. 1: Verwenden Sie nur zulässige oder deklariert Werte

In FlowForce-Ausdrücken sind die folgenden Konstrukte zulässig:

 

FlowForce-Ausdrucksfunktionen (eine vollständige Liste finden Sie unter Ausdrucksfunktionen)

FlowForce-Operatoren (siehe Operatoren)

Numerische Werte

String-Werte

Zuvor deklarierte Variablen

 

Wenn Sie Text in ein Feld eingeben, in dem FlowForce-Ausdrücke zulässig sind, wird eine Syntaxüberprüfung in Echtzeit durchgeführt. Wenn die Syntax fehlerhaft ist, erscheinen die störenden Zeichen rot markiert. Unten sehen Sie ein Beispiel für einen Syntaxvalidierungsfehler:

expression_error01

 

Der Fehler tritt auf, weil im Auftrag weder die Quelle noch das Ziel deklariert wurde, sodass FlowForce den Ausdruck nicht interpretieren kann. Beheben Sie das Problem, indem Sie diese Werte deklarieren (z.B. als Auftrags-Input-Parameter):

expression_error02

 

Regel Nr. 2: Setzen Sie Strings in einfache Anführungszeichen

Wenn Sie einen String als Literal verwenden müssen, setzen Sie ihn in einfache Anführungszeichen, da mit dem Ausdruck sonst unerwünschte Ergebnisse erzeugt werden könnten oder die Validierung fehlschlagen könnte. Betrachten Sie die folgenden Beispiele:

 

Ausdruck

Wird ausgewertet zu...

Erklärung

expression_in_compute01

2

Der Datentyp des Werts ist numerisch.

expre_1plus1_string

1+1

Der Datentyp des Werts ist String.

expression_in_compute02

true

Der Datentyp des Werts ist Boolesch.

 

Wenn Sie Werte von einem Datentyp in einen anderen konvertieren müssen, verwenden Sie die FlowForce-Ausdrucksfunktionen (siehe auch Regel Nr. 4).

 

Regel Nr. 3: Verwenden Sie geschweifte Klammern in String-Feldern

Wenn Sie einen Ausdruck in ein String-Feld einbetten möchten, setzen Sie den Ausdruck in geschweifte Klammern. Im Beispiel unten ist der Ausdruck instance-id() (eine FlowForce-Ausdrucksfunktion) durch geschweifte Klammern vom Rest des String getrennt.

expression_in_string05

 

Wenn das gesamte Feld den Typ "als Ausdruck" hat, verwenden Sie keine geschweiften Klammern. So hat z.B. der Ausdrucksparameter der vordefinierten Funktion system/compute diesen Typ. Unten sehen Sie ein Beispiel für einen korrekten Wert für dieses Feld (Beachten Sie, dass keine geschweiften Klammern verwendet werden):

expression_correct

 

Würden Sie geschweifte Klammern in dieses Ausdrucksfeld eingeben, würde dies einen Syntaxfehler verursachen:

expression_incorrect

 

Siehe auch Einbetten von Ausdrücken in String-Felder.

 

Regel Nr. 4: Verwenden Sie den richtigen Datentyp

Schließlich sollten Sie daran denken, dass FlowForce Datentypüberprüfungen durchführt, wenn Sie einen Auftrag speichern. Wenn ein in ein Feld eingegebener Ausdruck nicht mit dem im Feld erwarteten Datentyp übereinstimmt, tritt ein Fehler auf. Rechts vom jeweiligen Feld sehen Sie, welcher Datentyp in diesem Feld erwartet wird. Beispiel:

expression_field_type

 

Daher ist ein Ausdruck wie 1+1 in einem String-Feld nicht gültig, da er implizit als numerischer Ausdruck ausgewertet wird. Der Ausdruck '1+1' hingegen ist in einem String-Feld gültig. Im Folgenden finden Sie weitere Beispiele:

 

Ausdruck

Wird ausgewertet als...

Erklärung

1/4

0,25 (als Zahl)

Der Datentyp des Werts ist numerisch.

 

Verwenden Sie diesen Ausdruck in einem Feld oder Kontext, in dem ein numerischer Wert erwartet wird; andernfalls würde die Validierung des Auftrags fehlschlagen.

1+1==2

true (als Boolescher Wert)

Der Datentyp des Werts ist Boolesch.

 

Verwenden Sie diesen Ausdruck in einem Feld oder Kontext, in dem ein Boolescher Wert erwartet wird; andernfalls würde die Validierung des Auftrags fehlschlagen.

'apple'

apple (als String)

Der Datentyp des Werts ist String.

 

Verwenden Sie diesen Ausdruck in einem Feld oder Kontext, in dem ein String-Wert erwartet wird; andernfalls würde die Validierung des Auftrags fehlschlagen.

concat('1','2','3')

123 (als String)

Der Datentyp des Werts ist String.

 

Verwenden Sie diesen Ausdruck in einem Feld oder Kontext, in dem ein String-Wert erwartet wird; andernfalls würde die Validierung des Auftrags fehlschlagen.

1+'apple'

-

Dieser Ausdruck ist nicht gültig. FlowForce gibt einen Fehler zurück, wenn Sie versuchen, den Auftrag zu speichern. Der Ausdruck kann nicht ausgewertet werden, da zwei unterschiedliche Datentypen (String und numerisch) miteinander verglichen werden.

{content(stdout(result))}

[...] (als String)

 

 

In diesem Ausdruck werden zwei verschachtelte Ausdrucksfunktionen verwendet:

 

Die Funktion stdout erhält die Standardausgabe eines Shell-Befehls als Stream.

Die Funktion content konvertiert den Stream-Wert in einen String.

 

Obwohl der Ausdruck korrekt ist, ist die Validierung des Auftrags nur dann erfolgreiche, wenn folgende Dinge zutreffen:

 

Der Wert "result" wurde zuvor deklariert.

Der Wert "result" enthält die Standard-Ausgabe eines Shell-Befehls.

Der Ausdruck ist in ein String-Feld eingebettet.

 

Siehe auch Aufrufen von Ausdrucksfunktionen.

© 2017-2023 Altova GmbH