Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Stato del flusso di lavoro di scelta
Gestione dello stato e trasformazione dei dati
Step Functions ha recentemente aggiunto variabili e JSONata per gestire lo stato e trasformare i dati.
Scopri come passare dati con variabili e trasformare dati con JSONata.
Uno Choice
stato ("Type": "Choice"
) aggiunge logica condizionale a una macchina a stati.
Oltre alla maggior parte dei campi di stato comuni, Choice
states contiene i seguenti campi aggiuntivi.
Choices
(Obbligatorio)-
Un array di regole Choice che determina lo stato successivo della macchina a stati.
Quando uno
Choice
stato viene eseguito, valuta ogni regola di scelta come vera o falsa. In base al risultato di questa valutazione, Step Functions passa allo stato successivo del flusso di lavoro.È necessario definire almeno una regola nello
Choice
stato. Default
(Facoltativo, Consigliato)-
Il nome dello stato al quale passare se nessuna delle transizioni in
Choices
viene considerata.
Importante
Gli stati Choice
non supportano il campo End
. Inoltre, utilizzano Next
solo nel relativo campo Choices
.
Regole di scelta (JSONata)
Uno Choice
stato deve avere un Choices
campo il cui valore è una matrice non vuota di Choice Rules, che contiene i seguenti campi quando si utilizzaJSONata:
-
Condition
field: un'JSONataespressione che restituisce vero/falso. -
Next
field — un valore che deve corrispondere al nome di uno stato nella macchina a stati.
L'esempio seguente verifica se il valore numerico è uguale a 1
.
{
"Condition": "{% $foo = 1 %}",
"Next": "NumericMatchState"
}
L'esempio seguente verifica se la type
variabile è uguale alocal
.
{
"Condition": "{% $type = 'local' %}",
"Next": "StringMatchState"
}
L'esempio seguente verifica se la stringa è maggiore di MyStringABC
.
{
"Condition": "{% $foo > 'MyStringABC' %}",
"Next": "StringGreaterMatchState"
}
L'esempio seguente verifica se la stringa non è nulla.
{
"Condition" : "{% $possiblyNullValue != null and $possiblyNullValue = 42 %}",
"Next": "NotNullAnd42"
}
Regole di scelta () JSONPath
Uno Choice
stato deve avere un Choices
campo il cui valore è una matrice non vuota di Choice Rules, che contiene i seguenti campi quando si utilizzaJSONPath:
-
Un confronto: due campi che specificano una variabile di input da confrontare, il tipo di confronto e il valore con cui confrontare la variabile. Le regole di scelta supportano il confronto tra due variabili. All'interno di una regola di scelta, il valore della variabile può essere confrontato con un altro valore dello stato immesso aggiungendolo
Path
al nome degli operatori di confronto supportati. I valori dei campiVariable
e Path in un confronto devono essere percorsi di riferimento validi. -
Un
Next
campo: il valore di questo campo deve corrispondere al nome di uno stato nella macchina a stati.
L'esempio seguente verifica se il valore numerico è uguale a 1
.
{
"Variable": "$.foo",
"NumericEquals": 1,
"Next": "FirstMatchState"
}
L'esempio seguente verifica se la stringa è uguale a MyString
.
{
"Variable": "$.foo",
"StringEquals": "MyString",
"Next": "FirstMatchState"
}
L'esempio seguente verifica se la stringa è maggiore di MyStringABC
.
{
"Variable": "$.foo",
"StringGreaterThan": "MyStringABC",
"Next": "FirstMatchState"
}
L'esempio seguente verifica se la stringa è nulla.
{
"Variable": "$.possiblyNullValue",
"IsNull": true
}
L'esempio seguente mostra come la StringEquals regola viene valutata solo quando $.keyThatMightNotExist
esiste a causa della precedente Choice Rule. IsPresent
"And": [
{
"Variable": "$.keyThatMightNotExist",
"IsPresent": true
},
{
"Variable": "$.keyThatMightNotExist",
"StringEquals": "foo"
}
]
L'esempio seguente verifica se un pattern con un carattere jolly corrisponde.
{ "Variable": "$.foo", "StringMatches": "log-*.txt" }
L'esempio seguente verifica se il timestamp è uguale a 2001-01-01T12:00:00Z
.
{
"Variable": "$.foo",
"TimestampEquals": "2001-01-01T12:00:00Z",
"Next": "FirstMatchState"
}
L'esempio seguente confronta una variabile con un altro valore dell'input di stato.
{ "Variable": "$.foo", "StringEqualsPath": "$.bar" }
Step Functions esamina ciascuna delle regole di scelta nell'ordine elencato nel Choices
campo. Quindi passa allo stato specificato nel campo Next
della prima regola Choice in cui la variabile corrisponde al valore in base all'operatore di confronto.
Sono supportati i seguenti operatori di confronto:
-
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
Per ciascuno di questi operatori, il valore corrispondente deve essere del tipo appropriato: stringa, numero, booleano o timestamp. Step Functions non tenta di abbinare un campo numerico a un valore stringa. Tuttavia, poiché i campi timestamp sono logicamente delle stringhe, è possibile che un campo considerato come timestamp possa corrispondere a un comparatore StringEquals
.
Nota
Per quanto riguarda l'interoperabilità, non date per scontato che i confronti numerici funzionino con valori che non rientrano nella grandezza o nella precisione rappresentate dal tipo di dati 754-2008. IEEE binary64
[-253+1,
253-1]
potrebbero non essere confrontati come previsto.
-
Una
T
maiuscola deve separare la parte della data dalla parte dell'ora. -
Una
Z
maiuscola indica che al momento non è disponibile l'offset del fuso orario numerico.
Per comprendere il funzionamento dei confronti di stringhe, consultare la documentazione di compareTo
I valori degli operatori And
e Or
devono essere array non vuoti di regole Choice che non devono contenere campi Next
. Inoltre, il valore di un operatore Not
deve essere una singola regola Choice che non deve contenere campi Next
.
Puoi creare regole Choice nidificate complesse utilizzando And
, Not
e Or
. Tuttavia, il campo Next
può essere visualizzato solo in una regola Choice di livello superiore.
Il confronto tra stringhe e modelli con uno o più caratteri jolly («*») può essere eseguito con l'operatore di confronto. StringMatches Il carattere jolly viene eliminato utilizzando lo standard. \\ (Ex: “\\*”)
Nessun carattere diverso da «*» ha un significato speciale durante la corrispondenza.