Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Workflow-Status „Auswahl“
Status verwalten und Daten transformieren
Erfahren Sie mehr über das Übergeben von Daten zwischen Zuständen mithilfe von Variablen und das Transformieren von Daten mit JSONata.
Ein Choice Zustand ("Type": "Choice") fügt einer Zustandsmaschine bedingte Logik hinzu.
Zusätzlich zu den meisten gängigen Statusfeldern enthält Choice states die folgenden zusätzlichen Felder.
Choices(Erforderlich)-
Ein Array von Auswahlregeln, die bestimmen, in welchen Zustand der Zustandsautomat als nächstes übergeht. Sie müssen mindestens eine Regel im
ChoiceBundesstaat definieren.Wenn ein
ChoiceStatus ausgeführt wird, bewertet Step Functions jede Auswahlregel als wahr oder falsch. Basierend auf dem Ergebnis geht Step Functions in den nächsten Status im Workflow über. Default(optional, empfohlen)-
Der Name des Status, zu dem der Übergang erfolgen soll, wenn keine Auswahlregel als wahr ausgewertet wird.
Wichtig
Choice-Zustände unterstützen nicht das Feld End. Außerdem verwenden sie Next nur innerhalb ihres Choices-Felds.
Wenn bei der Ausführung des Workflows keine Auswahlmöglichkeiten als wahr ausgewertet werden und kein Standard angegeben ist, gibt die Zustandsmaschine einen Fehler aus, da der Übergang aus dem Status nicht möglich ist.
Auswahlregeln (JSONata)
Ein Choice Bundesstaat muss über ein Choices Feld verfügen, dessen Wert ein nicht leeres Array von Auswahlregeln ist, die bei Verwendung JSONata die folgenden Felder enthalten:
-
ConditionFeld — ein JSONata Ausdruck, der als Wahr/Falsch ausgewertet wird. -
NextFeld — ein Wert, der mit einem Zustandsnamen in der Zustandsmaschine übereinstimmen muss.
Im folgenden Beispiel wird geprüft, ob der numerische Wert gleich 1 ist.
{
"Condition": "{% $foo = 1 %}",
"Next": "NumericMatchState"
}
Im folgenden Beispiel wird geprüft, ob die type Variable gleich istlocal.
{
"Condition": "{% $type = 'local' %}",
"Next": "StringMatchState"
}
Im folgenden Beispiel wird geprüft, ob die Zeichenfolge größer als MyStringABC ist.
{
"Condition": "{% $foo > 'MyStringABC' %}",
"Next": "StringGreaterMatchState"
}
Im folgenden Beispiel wird geprüft, ob die Zeichenfolge nicht Null ist.
{
"Condition" : "{% $possiblyNullValue != null and $possiblyNullValue = 42 %}",
"Next": "NotNullAnd42"
}
Auswahlregeln (JSONPath)
Ein Choice Bundesstaat muss über ein Choices Feld verfügen, dessen Wert ein nicht leeres Array von Auswahlregeln ist, die bei Verwendung JSONPath die folgenden Felder enthalten:
-
Ein Vergleich — Zwei Felder, die eine zu vergleichende Eingabevariable, die Art des Vergleichs und den Wert angeben, mit dem die Variable verglichen werden soll. Auswahlregeln unterstützen den Vergleich zwischen zwei Variablen. Innerhalb einer Auswahlregel kann der Wert einer Variablen mit einem anderen Wert aus der Statuseingabe verglichen werden, indem er
Pathan die Namen der unterstützten Vergleichsoperatoren angehängt wird. Die Werte der FelderVariableund Pfad in einem Vergleich müssen gültige Referenzpfade sein. -
Ein
NextFeld — Der Wert dieses Felds muss mit einem Zustandsnamen in der Zustandsmaschine übereinstimmen.
Im folgenden Beispiel wird geprüft, ob der numerische Wert gleich 1 ist.
{
"Variable": "$.foo",
"NumericEquals": 1,
"Next": "FirstMatchState"
}
Im folgenden Beispiel wird geprüft, ob die Zeichenfolge gleich MyString ist.
{
"Variable": "$.foo",
"StringEquals": "MyString",
"Next": "FirstMatchState"
}
Im folgenden Beispiel wird geprüft, ob die Zeichenfolge größer als MyStringABC ist.
{
"Variable": "$.foo",
"StringGreaterThan": "MyStringABC",
"Next": "FirstMatchState"
}
Im folgenden Beispiel wird geprüft, ob die Zeichenfolge Null ist.
{
"Variable": "$.possiblyNullValue",
"IsNull": true
}
Das folgende Beispiel zeigt, wie die StringEquals Regel nur ausgewertet wird, wenn sie aufgrund der vorherigen IsPresent Auswahlregel $.keyThatMightNotExist existiert.
"And": [
{
"Variable": "$.keyThatMightNotExist",
"IsPresent": true
},
{
"Variable": "$.keyThatMightNotExist",
"StringEquals": "foo"
}
]
Im folgenden Beispiel wird geprüft, ob ein Muster mit einem Platzhalter übereinstimmt.
{ "Variable": "$.foo", "StringMatches": "log-*.txt" }
Im folgenden Beispiel wird geprüft, ob der Zeitstempel gleich 2001-01-01T12:00:00Z ist.
{
"Variable": "$.foo",
"TimestampEquals": "2001-01-01T12:00:00Z",
"Next": "FirstMatchState"
}
Im folgenden Beispiel wird eine Variable mit einem anderen Wert aus der Statuseingabe verglichen.
{ "Variable": "$.foo", "StringEqualsPath": "$.bar" }
Step Functions untersucht jede der Auswahlregeln in der Reihenfolge, die im Choices Feld aufgeführt ist. Anschließend wechselt es in den Zustand, der im Feld Next der ersten Auswahlregel angegeben ist, in der die Variable mit dem Wert entsprechend dem Vergleichsoperator übereinstimmt.
Die folgenden Vergleichsoperatoren werden unterstützt:
-
And -
BooleanEquals,BooleanEqualsPath -
IsBoolean -
IsNull -
IsNumeric -
IsPresent -
IsString -
IsTimestamp -
Not -
NumericEquals,NumericEqualsPath -
NumericGreaterThan,NumericGreaterThanPath -
NumericGreaterThanEquals,NumericGreaterThanEqualsPath -
NumericLessThan,NumericLessThanPath -
NumericLessThanEquals,NumericLessThanEqualsPath -
Or -
StringEquals,StringEqualsPath -
StringGreaterThan,StringGreaterThanPath -
StringGreaterThanEquals,StringGreaterThanEqualsPath -
StringLessThan,StringLessThanPath -
StringLessThanEquals,StringLessThanEqualsPath -
StringMatches -
TimestampEquals,TimestampEqualsPath -
TimestampGreaterThan,TimestampGreaterThanPath -
TimestampGreaterThanEquals,TimestampGreaterThanEqualsPath -
TimestampLessThan,TimestampLessThanPath -
TimestampLessThanEquals,TimestampLessThanEqualsPath
Für jeden dieser Operatoren muss der entsprechende Wert vom entsprechenden Typ sein: Zeichenfolge, Zahl, Boolean oder Zeitstempel. Step Functions versucht nicht, ein numerisches Feld einem Zeichenkettenwert zuzuordnen. Da Zeitstempelfelder jedoch logisch gesehen Zeichenfolgen sind, ist es möglich, dass ein Feld, das als Zeitstempel gilt, mit einem Vergleichsoperator StringEquals übereinstimmt.
Anmerkung
Gehen Sie aus Gründen der Interoperabilität nicht davon aus, dass numerische Vergleiche mit Werten außerhalb der Größenordnung oder Präzision funktionieren, die der IEEE 754-2008 binary64-Datentyp[-253+1,
253-1] können möglicherweise nicht in der erwarteten Weise verglichen werden.
Zeitstempel (z. B.2016-08-18T17:33:00Z) müssen dem RFC3339 Profil ISO 8601
-
Ein großes
Tmuss die Teile Datum und Uhrzeit trennen. -
Ein großes
Zmuss kennzeichnen, dass keine numerische Zeitzonenabweichung besteht.
Informationen zum Verständnis des Verhaltens bei Vergleichen von Zeichenfolgen finden Sie in der Java compareTo-Dokumentation
Die Werte der Operatoren And und Or müssen nicht leere Arrays von Auswahlregeln sein, die selbst keine Next-Felder enthalten dürfen. Ebenso muss der Wert eines Not-Operators eine einzelne Auswahlregel sein, die kein Next-Feld enthalten darf.
Sie können komplexe, verschachtelte Auswahlregeln mithilfe von And, Not und Or erstellen. Das Feld Next darf jedoch nur in einer Auswahlregel des obersten Levels erscheinen.
Der Vergleich von Zeichenketten mit Mustern mit einem oder mehreren Platzhaltern („*“) kann mit dem Vergleichsoperator durchgeführt werden. StringMatches Das Platzhalterzeichen wird mithilfe des Standards maskiert. \\ (Ex: “\\*”) Keine anderen Zeichen als „*“ haben beim Abgleich eine besondere Bedeutung.