Nesta página, mostramos como usar saltos ou repetições para controlar a ordem em que as etapas do fluxo de trabalho são executadas. Os saltos básicos permitem definir qual etapa do fluxo de trabalho será executada a seguir. Os saltos condicionais complementam os saltos básicos, permitindo usar expressões condicionais para controlar a ordem de execução por um fluxo de trabalho. Por exemplo, é possível executar determinadas etapas somente quando uma variável ou resposta de outra etapa do fluxo de trabalho atende a critérios específicos.
Os exemplos desta página usam uma API de amostra que retorna o dia da semana.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Para alterar a ordem de execução, você precisa ter um fluxo de trabalho. Para saber como criar e implantar um fluxo de trabalho, consulte Criar e atualizar um fluxo de trabalho.
Usar saltos para alterar a ordem de execução
Por padrão, todos os fluxos de trabalho são listas ordenadas em que cada etapa é executada na ordem definida no código-fonte do fluxo de trabalho. Para modificar essa ordem padrão, use saltos.
Saltos básicos
Use saltos básicos para especificar qual etapa será executada a seguir em um fluxo de trabalho.
Console
Abra a página "Fluxos de trabalho" no Console do Google Cloud:
Acessar fluxos de trabalhoSelecione o nome do fluxo de trabalho em que você quer alterar a ordem atual de execução das etapas.
Na página Editar fluxo de trabalho, selecione Avançar para acessar o editor de fluxo de trabalho.
Adicione o campo
next
ao final de uma etapa para instruir o fluxo de trabalho a pular para uma etapa específica:YAML
- step_a: ... next: STEP_NAME_TO_JUMP_TO - step_b: ... - next_step: ...
JSON
[ { "step_a": { ... "next": "STEP_NAME_TO_JUMP_TO" } } { "step_b": { ... } } { "next_step": { ... } } ]
Substitua
STEP_NAME_TO_JUMP_TO
pelo nome da próxima etapa que você quer que o fluxo de trabalho execute. Exemplo,next_step
Selecione Implantar.
gcloud
Abra o arquivo de definição do fluxo de trabalho no editor de texto de sua preferência.
Adicione o campo
next
ao final de uma etapa para instruir o fluxo de trabalho a pular para uma etapa específica:YAML
- step_a: ... next: STEP_NAME_TO_JUMP_TO - step_b: ... - next_step: ...
JSON
[ { "step_a": { ... "next": "STEP_NAME_TO_JUMP_TO" } } { "step_b": { ... } } { "next_step": { ... } } ]
Substitua
STEP_NAME_TO_JUMP_TO
pelo nome da etapa que você quer que o fluxo de trabalho execute em seguida. Por exemplo,next_step
.Salve o arquivo do fluxo de trabalho.
Para implantar o fluxo de trabalho, digite o seguinte comando:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Substitua:
WORKFLOW_NAME
: obrigatório. O nome do fluxo de trabalho.WORKFLOW_FILE.YAML
: obrigatório. O arquivo de origem do fluxo de trabalho.
Exemplo
Por exemplo, o fluxo de trabalho a seguir tem etapas fora de ordem:
YAML
- get_time: call: http.get args: url: https://us-central1-workflowsample.cloudfunctions.net/datetime result: currentTime - return_daylight_savings_bool: return: ${daylightSavings} - get_daylight_savings_bool: assign: - daylightSavings: ${currentTime.body.isDayLightSavingsTime}
JSON
[ { "get_time": { "call": "http.get", "args": { "url": "https://us-central1-workflowsample.cloudfunctions.net/datetime" }, "result": "currentTime" } }, { "return_daylight_savings_bool": { "return": "${daylightSavings}" } }, { "get_daylight_savings_bool": { "assign": [ { "daylightSavings": "${currentTime.body.isDayLightSavingsTime}" } ] } } ]
Neste exemplo, os campos next
foram adicionados às etapas
get_daylight_savings_bool
e return_daylight_savings_bool
para que sejam executadas
na ordem correta:
YAML
- get_time: call: http.get args: url: https://us-central1-workflowsample.cloudfunctions.net/datetime result: currentTime next: get_daylight_savings_bool - return_daylight_savings_bool: return: ${daylightSavings} - get_daylight_savings_bool: assign: - daylightSavings: ${currentTime.body.isDayLightSavingsTime} next: return_daylight_savings_bool
JSON
[ { "get_time": { "call": "http.get", "args": { "url": "https://us-central1-workflowsample.cloudfunctions.net/datetime" }, "result": "currentTime", "next": "get_daylight_savings_bool" } }, { "return_daylight_savings_bool": { "return": "${daylightSavings}" } }, { "get_daylight_savings_bool": { "assign": [ { "daylightSavings": "${currentTime.body.isDayLightSavingsTime}" } ], "next": "return_daylight_savings_bool" } } ]
Saltos condicionais
Use saltos condicionais para determinar qual etapa será executada a seguir em um fluxo de trabalho.
Os saltos condicionais usam blocos switch
, que pularão para um passo especificado se uma
condição específica for atendida. Cada
bloco switch
pode incluir no máximo 50 condições.
Console
Abra a página "Fluxos de trabalho" no Console do Google Cloud:
Acessar fluxos de trabalhoSelecione o nome do fluxo de trabalho a que você quer adicionar um bloco
switch
.Na página Editar fluxo de trabalho, selecione Avançar para acessar o editor de fluxo de trabalho.
A definição atual do fluxo de trabalho é exibida na página Definir fluxo de trabalho. Para editar o fluxo de trabalho para que ele execute uma determinada etapa com base em uma instrução condicional, adicione uma etapa que use um bloco
switch
:YAML
- SWITCH_STEP_NAME: switch: - condition: ${EXPRESSION_ONE} next: STEP_A - condition: ${EXPRESSION_TWO} next: STEP_B ... next: STEP_C - STEP_A ... - STEP_B ... - STEP_C ...
JSON
[ { "SWITCH_STEP_NAME": { "switch": [ { "condition": "${EXPRESSION_ONE}", "next": "STEP_A" }, { "condition": "${EXPRESSION_TWO}", "next": "STEP_B" } ], "next": "STEP_C" } "STEP_A": { ... } "STEP_B": { ... } "STEP_C": { ... } } ]
Substitua:
SWITCH_STEP_NAME
: o nome da etapa. que contém o blocoswitch
.EXPRESSION_ONE
: a primeira expressão a ser avaliar. Se essa expressão for avaliada como verdadeira, o fluxo de trabalho vai executarSTEP_A
em seguida. Se esta expressão for avaliada como falsa, o fluxo de trabalho avalia a próxima expressão.EXPRESSION_TWO
: a segunda expressão a ser avaliada. Se essa expressão for avaliada como verdadeira, o fluxo de trabalho será executadoSTEP_B
a seguir. Se esta expressão for avaliada como falsa, o fluxo de trabalho executaSTEP_C
.STEP_A
,STEP_B
.STEP_C
: nomes das etapas do marcador de posição.
Selecione Implantar.
gcloud
Abra a definição do fluxo de trabalho no editor de texto de sua preferência.
Para editar o fluxo de trabalho para que ele execute uma determinada etapa com base em uma instrução condicional, adicione uma etapa que use um bloco
switch
:YAML
- SWITCH_STEP_NAME: switch: - condition: ${EXPRESSION_ONE} next: STEP_A - condition: ${EXPRESSION_TWO} next: STEP_B ... next: STEP_C - STEP_A ... - STEP_B ... - STEP_C ...
JSON
[ { "SWITCH_STEP_NAME": { "switch": [ { "condition": "${EXPRESSION_ONE}", "next": "STEP_A" }, { "condition": "${EXPRESSION_TWO}", "next": "STEP_B" } ], "next": "STEP_C" } "STEP_A": { ... } "STEP_B": { ... } "STEP_C": { ... } } ]
Substitua:
SWITCH_STEP_NAME
: o nome da etapa. que contém o blocoswitch
.EXPRESSION_ONE
: a primeira expressão a ser avaliar. Se essa expressão for avaliada como verdadeira, o fluxo de trabalho vai executarSTEP_A
em seguida. Se esta expressão for avaliada como falsa, o fluxo de trabalho avalia a próxima expressão.EXPRESSION_TWO
: a segunda expressão a ser avaliada. Se essa expressão for avaliada como verdadeira, o fluxo de trabalho será executadoSTEP_B
a seguir. Se esta expressão for avaliada como falsa, o fluxo de trabalho executaSTEP_C
.STEP_A
,STEP_B
,STEP_C
: nomes de etapas de marcador de posição.
Salve o arquivo do fluxo de trabalho.
Para implantar o fluxo de trabalho, digite o seguinte comando:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Substitua:
WORKFLOW_NAME
: obrigatório. O nome do fluxo de trabalho.WORKFLOW_FILE.YAML
: obrigatório. O arquivo de origem do fluxo de trabalho.
Exemplo
Por exemplo, este fluxo de trabalho usa um bloco de troca para controlar a ordem de execução:
YAML
- getCurrentTime: call: http.get args: url: https://us-central1-workflowsample.cloudfunctions.net/datetime result: currentTime - conditionalSwitch: switch: - condition: ${currentTime.body.dayOfTheWeek == "Friday"} next: friday - condition: ${currentTime.body.dayOfTheWeek == "Saturday" OR currentTime.body.dayOfTheWeek == "Sunday"} next: weekend next: workWeek - friday: return: "It's Friday! Almost the weekend!" - weekend: return: "It's the weekend!" - workWeek: return: "It's the work week."
JSON
[ { "getCurrentTime": { "call": "http.get", "args": { "url": "https://us-central1-workflowsample.cloudfunctions.net/datetime" }, "result": "currentTime" } }, { "conditionalSwitch": { "switch": [ { "condition": "${currentTime.body.dayOfTheWeek == "Friday"}", "next": "friday" }, { "condition": "${currentTime.body.dayOfTheWeek == "Saturday" OR currentTime.body.dayOfTheWeek == "Sunday"}", "next": "weekend" } ], "next": "workWeek" } }, { "friday": { "return": "It's Friday! Almost the weekend!" } }, { "weekend": { "return": "It's the weekend!" } }, { "workWeek": { "return": "It's the work week." } } ]
Neste exemplo, o bloco switch
tem duas condições. O analisador avalia
cada condição na ordem. Se o resultado da expressão da condição for true
,
a etapa next
dessa condição será chamada. Se nenhuma das condições for atendida,
o fluxo de trabalho chamará a etapa especificada pelo campo next
fora do
bloco switch
, que neste exemplo é a etapa workWeek
.
Por exemplo, se o dia da semana for "Saturday"
, o fluxo de trabalho pulará para
a etapa weekend
e retornará a mensagem "It's the weekend!"
. O fluxo de trabalho
não executa a etapa friday
porque ela é pulada no salto condicional
e o fluxo de trabalho não executa a etapa workWeek
porque return
interrompe a
execução do fluxo de trabalho ao final da etapa weekend
.
Usar repetições for
para iterar
Use repetições for
para iterar uma sequência de números ou por meio de uma
coleção de dados, como uma lista ou um mapa.
É possível percorrer todos os itens em uma lista ou mapa usando a iteração baseada em item. Se você tiver um intervalo específico de valores numéricos para iterar, use a iteração baseada em intervalo.
Para mais informações e exemplos, consulte a referência de sintaxe na iteração.