Stato del flusso di lavoro di scelta - AWS Step Functions

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:

  • Conditionfield: un'JSONataespressione che restituisce vero/falso.

  • Nextfield — 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 campi Variable e Path in un confronto devono essere percorsi di riferimento validi.

  • Un Nextcampo: 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 In particolare, gli interi che non rientrano nell'intervallo [-253+1, 253-1] potrebbero non essere confrontati come previsto.

I timestamp (ad esempio,2016-08-18T17:33:00Z) devono essere conformi al profilo 8601, con ulteriori restrizioni: RFC3339 ISO

  • 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.