Esta página mostra como usar saltos ou ciclos for para controlar a ordem em que os passos do fluxo de trabalho são executados. Os saltos básicos permitem-lhe definir o passo que o fluxo de trabalho executa a seguir. Os saltos condicionais baseiam-se nos saltos básicos e permitem-lhe usar expressões condicionais para controlar a ordem de execução através de um fluxo de trabalho. Por exemplo, pode executar determinados passos apenas quando uma variável ou uma resposta de outro passo do fluxo de trabalho cumpre critérios específicos.
Os exemplos nesta página usam uma API de exemplo que devolve 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.
-
Verify 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.
-
Verify that billing is enabled for your Google Cloud project.
- Já deve ter um fluxo de trabalho existente no qual quer alterar a ordem de execução. Para saber como criar e implementar um fluxo de trabalho, consulte o artigo Crie e atualize um fluxo de trabalho.
Abra a página Fluxos de trabalho na Google Cloud consola:
aceda a Fluxos de trabalhoSelecione o nome do fluxo de trabalho no qual quer alterar a ordem de execução dos passos existentes.
Na página Editar fluxo de trabalho, selecione Seguinte para aceder ao editor do fluxo de trabalho.
Adicione o campo
next
no final de um passo para indicar ao fluxo de trabalho que deve saltar para um passo específico: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 do passo que quer que o fluxo de trabalho execute a seguir. Por exemplo,next_step
.Selecione Implementar.
Abra o ficheiro de definição do fluxo de trabalho no editor de texto à sua escolha.
Adicione o campo
next
no final de um passo para indicar ao fluxo de trabalho que deve saltar para um passo específico: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 do passo que quer que o fluxo de trabalho execute a seguir. Por exemplo,next_step
.Guarde o ficheiro de fluxo de trabalho.
Para implementar o fluxo de trabalho, introduza o seguinte comando:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Substitua o seguinte:
WORKFLOW_NAME
: obrigatório. O nome do seu fluxo de trabalho.WORKFLOW_FILE.YAML
: obrigatório. O ficheiro de origem para o fluxo de trabalho.
Abra a página Fluxos de trabalho na Google Cloud consola:
aceda a Fluxos de trabalhoSelecione o nome do fluxo de trabalho ao qual quer adicionar um bloco
switch
.Na página Editar fluxo de trabalho, selecione Seguinte para aceder ao editor do fluxo de trabalho.
Na página Definir fluxo de trabalho, é apresentada a definição atual do fluxo de trabalho. Para editar o fluxo de trabalho de modo que execute um determinado passo com base numa declaração condicional, adicione um passo 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 o seguinte:
SWITCH_STEP_NAME
: o nome do passo que contém o blocoswitch
.EXPRESSION_ONE
: a primeira expressão a avaliar. Se esta expressão for avaliada como verdadeira, o fluxo de trabalho executa o passoSTEP_A
seguinte. Se esta expressão for avaliada como falsa, o fluxo de trabalho avalia a expressão seguinte.EXPRESSION_TWO
: a segunda expressão a avaliar. Se esta expressão for avaliada como verdadeira, o fluxo de trabalho executa o passoSTEP_B
seguinte. Se esta expressão for avaliada como falsa, o fluxo de trabalho executaSTEP_C
.STEP_A
,STEP_B
,STEP_C
: nomes dos passos de marcador de posição.
Selecione Implementar.
Abra a definição do fluxo de trabalho no editor de texto à sua escolha.
Para editar o fluxo de trabalho de modo que execute um determinado passo com base numa declaração condicional, adicione um passo 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 o seguinte:
SWITCH_STEP_NAME
: o nome do passo que contém o blocoswitch
.EXPRESSION_ONE
: a primeira expressão a avaliar. Se esta expressão for avaliada como verdadeira, o fluxo de trabalho executa o passoSTEP_A
seguinte. Se esta expressão for avaliada como falsa, o fluxo de trabalho avalia a expressão seguinte.EXPRESSION_TWO
: a segunda expressão a avaliar. Se esta expressão for avaliada como verdadeira, o fluxo de trabalho executa o passoSTEP_B
seguinte. Se esta expressão for avaliada como falsa, o fluxo de trabalho executaSTEP_C
.STEP_A
,STEP_B
,STEP_C
: nomes dos passos de marcador de posição.
Guarde o ficheiro de fluxo de trabalho.
Para implementar o fluxo de trabalho, introduza o seguinte comando:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Substitua o seguinte:
WORKFLOW_NAME
: obrigatório. O nome do seu fluxo de trabalho.WORKFLOW_FILE.YAML
: obrigatório. O ficheiro de origem para o fluxo de trabalho.
Use saltos para alterar a ordem de execução
Por predefinição, todos os fluxos de trabalho são listas ordenadas em que cada passo é executado pela ordem que define no código fonte do fluxo de trabalho. Pode optar por substituir esta ordem predefinida através de saltos.
Saltos básicos
Pode especificar o passo a executar a seguir num fluxo de trabalho através de saltos básicos.
Consola
gcloud
Exemplo
Por exemplo, o fluxo de trabalho seguinte tem os passos 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, foram adicionados campos next
aos passos get_daylight_savings_bool
e return_daylight_savings_bool
para que os passos sejam executados pela 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
Pode usar saltos condicionais para determinar que passo executar a seguir num fluxo de trabalho.
Os saltos condicionais usam blocos switch
, que saltam para um passo especificado se uma condição específica for cumprida. Cada bloco switch
pode incluir um máximo de 50 condições.
Consola
gcloud
Exemplo
Por exemplo, este fluxo de trabalho usa um bloco de comutador para controlar a ordem de execução do fluxo de trabalho:
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 por ordem e, se o resultado da expressão da condição for true
, é chamado o passo next
dessa condição. Se nenhuma das condições for cumprida,
o fluxo de trabalho chama o passo especificado pelo campo next
fora do bloco switch
, que, neste exemplo, é o passo workWeek
.
Por exemplo, se o dia da semana for "Saturday"
, o fluxo de trabalho passa para o passo weekend
e devolve a mensagem "It's the weekend!"
. O fluxo de trabalho não executa o passo friday
porque o salto condicional o ignora e o fluxo de trabalho não executa o passo workWeek
porque return
interrompe a execução do fluxo de trabalho no final do passo weekend
.
Use os ciclos for
para iterar
Pode usar ciclos for
para iterar uma sequência de números ou uma coleção de dados, como uma lista ou um mapa.
Pode percorrer todos os itens numa lista ou num mapa através da iteração baseada em itens. Se tiver um intervalo específico de valores numéricos para iterar, pode usar a iteração baseada em intervalos.
Para mais informações e exemplos, consulte a referência de sintaxe sobre a iteração.