Este tópico descreve os conceitos básicos e exemplos de etapas de escolha, além das expressões condicionais relacionadas.
Parâmetros
As etapas de escolha permitem executar diferentes etapas em um workflow com base em condições, de forma semelhante ao switch-case em linguagens de programação. Uma etapa de escolha contém múltiplas opções e um padrão. Cada opção inclui uma expressão condicional, várias etapas e instruções goto. O padrão contém apenas etapas e instruções goto. Quando o workflow avança para uma etapa de escolha, o sistema avalia se as expressões condicionais retornam True na sequência definida.
Se o retorno for
True, o sistema executa as etapas e, em seguida, as instruções goto definidas na opção correspondente.Caso nenhuma opção retorne
True, o sistema executa as etapas e instruções goto definidas no padrão.Se não houver um padrão definido, a etapa de escolha é encerrada.
Uma etapa de escolha contém os seguintes atributos:
type: Obrigatório. Tipo da etapa. O valor choice especifica uma etapa de escolha.
name: Obrigatório. Nome da etapa.
-
choices: Obrigatório. Múltiplas opções do tipo array. Cada elemento corresponde a uma opção.
condition: Obrigatório. Expressão condicional. Expressões condicionais referenciam entradas de etapa com base em JSONPath (
$.key).steps: Opcional. Múltiplas etapas seriais definidas para uma opção.
goto: Opcional. Nome da etapa de destino, que deve estar no mesmo nível da etapa de escolha.
-
default: Obrigatório. Padrão.
steps: Opcional. Múltiplas etapas seriais definidas para o padrão.
goto: Opcional. Nome da etapa de destino, que deve estar no mesmo nível da etapa de escolha atual.
end: Opcional. Especifica se o fluxo deve prosseguir para as etapas subsequentes após o término da etapa atual.
inputMappings: Opcional. Mapeamentos de entrada.
-
outputMappings: Opcional. Mapeamentos de saída. O
$localdesta etapa indica o resultado da execução da ramificação de escolha.NotaSe nenhum mapeamento de saída for especificado,
$localserá usado como saída desta etapa por padrão.
Exemplos
O workflow de exemplo a seguir define uma etapa de escolha.
Se o valor de
statusna entrada forready, as etapaspass1,pass3efinalda primeira opção são executadas em sequência.Quando o valor de
statusna entrada forfailed, as instruções goto da segunda opção são executadas, a etapa de escolha termina e a etapafinalé acionada.Para valores de
statusna entrada que não sejam nemreadynemfailed, o padrão é executado. Ou seja, as etapaspass2efinalsão processadas.
version: v1
type: flow
steps:
- type: choice
name: mychoice
choices:
- condition: $.status == "ready"
# choice with steps
steps:
- type: pass
name: pass1
- condition: $.status == "failed"
# choice with goto
goto: final
default:
# choice with both steps and goto
steps:
- type: pass
name: pass2
goto: final
- type: pass
name: pass3
- type: pass
name: final
Expressões condicionais
Uma expressão condicional consiste nas seguintes operações e variáveis:
Operações de comparação:
>>=<<===!=. Aplicáveis a strings e números.Operações lógicas:
||&&.Constantes de string: Devem estar entre aspas duplas (") ou acentos graves (
). Exemplos: "foobar" oufoobar`.Constantes numéricas:
112.5.Constante booleana:
trueoufalse.Prefixo:
!-.Contenção:
in, utilizado para verificar se um array contém um valor ou se um objeto contém uma chave específica.
O exemplo a seguir mostra os resultados da execução de etapas para diferentes expressões condicionais.
{
"a": 1,
"b": {
"b1": true,
"b2": "ready"
},
"c": [1, 2, 3],
"d": 1,
"e": 1,
"f": {
"f1": false,
"f2": "inprogress"
}
}
|
Expressão condicional |
Resultado |
||
|
|
true |
||
|
|
false |
||
|
|
true |
||
|
|
true |
||
|
|
true |
||
|
|
true |
||
|
|
true |
||
|
|
true |
||
|
|
false |
||
|
|
true |
||
|
|
true |
||
|
|
false |
||
|
|
true |
||
|
|
$.b.b1` |
true |
|
|
|
false |
||
|
|
$.b.b1` |
true |
|
|
|
true |
||
|
|
true |