Um estado Choice adiciona ramificações condicionais a um fluxo. Ele avalia condições com base nos dados de entrada e direciona a execução para a primeira ramificação correspondente, de forma semelhante a uma instrução switch-case em programação.
Funcionamento
Quando um fluxo atinge um estado Choice, o sistema avalia a condição de cada ramificação sequencialmente:
Se uma condição for avaliada como
true, o fluxo transita para o estado especificado no campoNextdessa ramificação.Caso nenhuma condição resulte em
true, o fluxo segue para o estado definido no campoDefault.
O campo Default é obrigatório. Isso garante que o fluxo sempre tenha um caminho de transição válido, mesmo quando nenhuma condição de ramificação for atendida.
Estados Choice não suportam os atributos End e Next no nível do estado. Utilize o atributo Default para definir a transição de fallback. Cada ChoiceBranch define seu próprio atributo Next para indicar o destino do fluxo quando a condição é satisfeita.
Atributos
|
Atributo |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
Name |
string |
Sim |
Nome do estado. |
my state |
|
Description |
string |
Não |
Descrição do estado. |
describe it here |
|
Type |
string |
Sim |
Tipo do estado. Defina como |
Choice |
|
InputConstructor |
map[string]any |
Não |
Construtor de entrada. Para mais informações, consulte Entradas e saídas. |
-- |
|
Default |
string |
Sim |
Estado de fallback para o qual o fluxo transita quando nenhuma condição de ramificação é avaliada como |
my next task |
|
Branches |
ChoiceBranch[] |
Sim |
Array de ramificações de escolha. Consulte a tabela ChoiceBranch. |
-- |
ChoiceBranch
Cada entrada no array Branches contém os seguintes atributos:
|
Atributo |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
Condition |
string |
Sim |
Expressão condicional que resulta em |
|
|
Next |
string |
Sim |
Estado de destino da transição quando a condição é avaliada como |
my next task |
Exemplo
O fluxo a seguir direciona a execução com base no valor de $Input.data:
Se
$Input.datafor igual a"ready", o fluxo transita para o estadoPass1.Caso contrário, o fluxo segue para o estado padrão
Pass2.
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: Choice
States:
- Type: Choice
Name: Choice
Branches:
- Condition: $Input.data == "ready"
Next: Pass1
Default: Pass2
- Type: Pass
Name: Pass2
End: true
- Type: Pass
Name: Pass1
End: true
Expressões condicionais
Expressões condicionais combinam variáveis, constantes e operadores para produzir um resultado booleano (true ou false). Use a variável $Input para referenciar os dados de entrada do estado e a variável $Context para acessar os dados de contexto do fluxo. Para mais detalhes, consulte Passagem de dados.
Operadores suportados
|
Categoria |
Operadores |
Tipos aplicáveis |
||
|
Comparação |
|
Strings, números |
||
|
Lógicos |
|
` (OR) |
Expressões booleanas |
|
|
Prefixo |
|
Expressões booleanas, números |
||
|
Inclusão |
|
Arrays (verifica se um valor existe), objetos (verifica se uma chave existe) |
Constantes suportadas
|
Tipo |
Sintaxe |
Exemplos |
|
String |
Aspas duplas ( |
|
|
Numérico |
Inteiro ou decimal |
|
|
Booleano |
Palavras-chave em minúsculas |
|
Exemplos de expressões
Considerando os seguintes dados de $Input, as tabelas abaixo demonstram como diferentes expressões são avaliadas:
{
"a": 1,
"b": {
"b1": true,
"b2": "ready"
},
"c": [1, 2, 3],
"d": 1,
"e": 1,
"f": {
"f1": false,
"f2": "inprogress"
}
}
Comparações numéricas
|
Expressão |
Resultado |
Descrição |
|
|
true |
Igualdade com um valor literal |
|
|
false |
Diferença em relação ao valor literal |
|
|
true |
Maior que |
|
|
true |
Literal no lado esquerdo |
|
|
true |
Maior ou igual a |
|
|
true |
Diferente de |
Comparações booleanas
|
Expressão |
Resultado |
Descrição |
|
|
true |
Referência booleana direta |
|
|
true |
Comparação explícita com |
|
|
false |
Comparação explícita com |
Comparações de strings
|
Expressão |
Resultado |
Descrição |
|
|
true |
Igualdade de strings |
|
|
false |
Desigualdade de strings |
Expressões compostas
|
Expressão |
Resultado |
Descrição |
|
|
true |
Ambas as condições são verdadeiras |
|
|
false |
A primeira condição é falsa |
Comparações de arrays e entre variáveis
|
Expressão |
Resultado |
Descrição |
|
|
true |
Acesso a elemento de array por índice |
|
|
true |
Comparação entre duas variáveis |
Verificações de inclusão
|
Expressão |
Resultado |
Descrição |
|
|
true |
A chave existe no objeto |
|
|
false |
A chave não existe |
|
|
true |
O valor existe no array |