NOT_SET in Ausdrücken verwenden

Was bedeutet NOT_SET?

NOT_SET ist ein Wert, der für skalare Werte in Ausdrücken gilt. Verwenden Sie es, um anzuzeigen, dass der Wert nicht definiert ist.  In Architect sind skalare Werte Nicht-Sammelwerte.  Zum Beispiel: in der folgenden Zeichenfolge, ist der zurückgegebene Wert eine NOT_SET-Zeichenfolge:

ToString(NOT_SET)

Ein undefinierter Stringwert ist nicht dasselbe wie ein leerer String. Wenn der folgende Ausdruck zur Laufzeit ausgewertet wird, wird der Ausdruck als false zurückgegeben:

ToString(NOT_SET) == ""

NOT_SET-Werte sind in vielen Überladungen und Funktionen für Parameterwerte nicht erlaubt.  Im Dialogfeld Ausdruckshilfe geben die Parameter der Funktionsüberladung an, ob ein NOT_SET-Wert zulässig ist oder nicht  Jeder Parameter enthält ein "NOT_SET Allowed:" eintrag, der angibt, ob er einen NOT_SET-Parameter des angegebenen Typs annimmt.  Wenn Architect zur Laufzeit einen Parameter mit einem ungültigen NOT_SET-Wert auswertet, ruft es einen Error-Handler auf.

Nicht sicher, ob ein übergebener Wert NOT_SET ist?

Um einen Fehler zur Laufzeit zu vermeiden, prüfen Sie auf NOT_SET in Ausdrücken. Das folgende Beispiel veranschaulicht ein Ausdrucksszenario, das zur Laufzeit fehlschlagen wird:

Flow.MyInteger ist eine Integer-Variable mit dem Wert von NOT_SET.  In diesem Fall verfügt ein Flow-Autor über eine Aktion Daten aktualisieren, die diesen Ausdruck einer anderen Integer-Variablen zuweist.

5+Flow.MyInteger

Da Flow.MyInteger wie eingegeben kein Wert zugewiesen wurde, bittet es die Call-Flow-Laufzeit, undefiniert zu 5 hinzuzufügen. Da dieser Ausdruck keine Antwort hat, ruft er einen Fehler hervor. Wenn der Autor des Ablaufs sicherstellt, dass Flow.MyInteger einen Wert hat (z. B. einen anderen Wert als NOT_SET), würde 5+Flow.MyInteger problemlos laufen. Wenn Flow.MyInteger jedoch einen NOT_SET-Wert hat, sollte der Autor des Ablaufs dies explizit im Ausdruck überprüfen und entsprechend behandeln.

Das nächste Beispiel zeigt, wie man NOT_SET in einem Ausdruck verwendet:

In diesem Fall behandelt die Logik des Zusatzes die Instanz von Flow.MyInteger in einer NOT_SET-Bedingung so, als wäre sie 0:

5+If(IsSet(Flow.MyInteger),Flow.MyInteger,0)

Der Ausdruck sagt im Wesentlichen: "Gibt es einen Wert in Flow.MyInteger? Wenn ja, verwenden Sie es. Andernfalls, wenn kein Wert in Flow.MyInteger vorhanden ist, wird der Wert 0 verwendet." In diesem Fall trifft der Ablaufautor eine bewusste Entscheidung über das Verhalten des Architekten, wenn ein Wert NOT_SET ist, und die Ausführung wird fortgesetzt.

IsNotSetOrEmpty

IsNotSetOrEmpty ist ebenfalls eine hilfreiche Laufzeitfunktion und ähnelt der Funktion IsSet. Diese Funktion ist nützlich für die Arbeit mit Werten, die NOT_SET oder leer sind, wie z. B. eine Sammlung. Weitere Informationen zu dieser Funktion finden Sie in der Ausdruckshilfe.

NOT_SET und Sammlungen

Sammlungen sind nie als Ganzes NOT_SET. Eine Sammlung kann jedoch NOT_SET-Elemente enthalten.