En esta página, se muestra cómo usar saltos o bucles for para controlar el orden en que se ejecutan los pasos de tu flujo de trabajo. Los saltos básicos te permiten definir en qué paso se ejecutará el flujo de trabajo a continuación. Los saltos condicionales se basan en los saltos básicos, lo que te permite usar expresiones condicionales para controlar el orden de ejecución a través de un flujo de trabajo. Por ejemplo, puedes ejecutar ciertos pasos solo cuando una variable o respuesta de otro paso del flujo de trabajo cumple con criterios específicos.
En los ejemplos de esta página, se usa una API de ejemplo que muestra el día de la semana.
Antes de comenzar
- 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.
- Ya deberías tener un flujo de trabajo existente en el que deseas cambiar el orden de ejecución. Para obtener información sobre cómo crear e implementar un flujo de trabajo, consulta Crea y actualiza un flujo de trabajo.
Usa saltos para cambiar el orden de ejecución
De forma predeterminada, todos los flujos de trabajo son listas ordenadas en las que cada paso se ejecuta en el orden que defines en el código fuente del flujo de trabajo. Puedes anular este orden predeterminado con saltos.
Saltos básicos
Puedes especificar qué paso se ejecutará a continuación en un flujo de trabajo con saltos básicos.
Console
Abre la página Workflows en la console de Google Cloud:
Ir a Flujos de trabajoSelecciona el nombre del flujo de trabajo en el que deseas cambiar el orden de ejecución de los pasos existentes.
En la página Editar flujo de trabajo, selecciona Siguiente para ir al editor de flujo de trabajo.
Agrega el campo
next
al final de un paso para indicarle al flujo de trabajo que salte a un paso en particular: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": { ... } } ]
Reemplaza
STEP_NAME_TO_JUMP_TO
por el nombre del paso que deseas que el flujo de trabajo ejecute a continuación. Por ejemplo,next_step
.Selecciona Implementar.
gcloud
Abre el archivo de definición de tu flujo de trabajo en el editor de texto que prefieras.
Agrega el campo
next
al final de un paso para indicarle al flujo de trabajo que salte a un paso en particular: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": { ... } } ]
Reemplaza
STEP_NAME_TO_JUMP_TO
por el nombre del paso que deseas que ejecute el flujo de trabajo a continuación. Por ejemplo,next_step
Guarda el archivo de flujo de trabajo.
Para implementar el flujo de trabajo, ingresa el siguiente comando:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Reemplaza lo siguiente:
WORKFLOW_NAME
: Obligatorio. Es el nombre de tu flujo de trabajo.WORKFLOW_FILE.YAML
: Obligatorio. Es el archivo fuente del flujo de trabajo.
Ejemplo
Por ejemplo, el siguiente flujo de trabajo tiene los pasos desordenados:
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}" } ] } } ]
En este ejemplo, se agregaron campos next
a los pasos get_daylight_savings_bool
y return_daylight_savings_bool
para que se ejecuten en el orden correcto:
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 condicionales
Puedes usar saltos condicionales para determinar qué paso ejecutar a continuación en un flujo de trabajo.
Los saltos condicionales usan bloques switch
, que saltan a un paso especificado si se cumple una condición en particular. Cada bloque switch
puede incluir un máximo de 50 condiciones.
Console
Abre la página Workflows en la console de Google Cloud:
Ir a Flujos de trabajoSelecciona el nombre del flujo de trabajo al que deseas agregar un bloque
switch
.En la página Editar flujo de trabajo, selecciona Siguiente para ir al editor de flujo de trabajo.
En la página Define el flujo de trabajo, se muestra la definición actual de tu flujo de trabajo. Para editar el flujo de trabajo de modo que ejecute un paso determinado según una sentencia condicional, agrega un paso que use un bloque
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": { ... } } ]
Reemplaza lo siguiente:
SWITCH_STEP_NAME
: Es el nombre del paso que contiene el bloqueswitch
.EXPRESSION_ONE
: Es la primera expresión que se debe evaluar. Si esta expresión se evalúa como verdadera, el flujo de trabajo ejecutaráSTEP_A
a continuación. Si esta expresión se evalúa como falsa, el flujo de trabajo evalúa la siguiente expresión.EXPRESSION_TWO
: Es la segunda expresión que se debe evaluar. Si esta expresión se evalúa como verdadera, el flujo de trabajo ejecutaráSTEP_B
a continuación. Si esta expresión se evalúa como falsa, el flujo de trabajo ejecutaSTEP_C
.STEP_A
,STEP_B
,STEP_C
: Son los nombres de los pasos de marcador de posición.
Selecciona Implementar.
gcloud
Abre la definición de tu flujo de trabajo en el editor de texto que prefieras.
Para editar el flujo de trabajo de modo que ejecute un paso determinado según una sentencia condicional, agrega un paso que use un bloque
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": { ... } } ]
Reemplaza lo siguiente:
SWITCH_STEP_NAME
: Es el nombre del paso que contiene el bloqueswitch
.EXPRESSION_ONE
: Es la primera expresión que se debe evaluar. Si esta expresión se evalúa como verdadera, el flujo de trabajo ejecutaráSTEP_A
a continuación. Si esta expresión se evalúa como falsa, el flujo de trabajo evalúa la siguiente expresión.EXPRESSION_TWO
: Es la segunda expresión que se debe evaluar. Si esta expresión se evalúa como verdadera, el flujo de trabajo ejecutaráSTEP_B
a continuación. Si esta expresión se evalúa como falsa, el flujo de trabajo ejecutaSTEP_C
.STEP_A
,STEP_B
,STEP_C
: Son los nombres de los pasos de marcador de posición.
Guarda el archivo de flujo de trabajo.
Para implementar el flujo de trabajo, ingresa el siguiente comando:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Reemplaza lo siguiente:
WORKFLOW_NAME
: Obligatorio. Es el nombre de tu flujo de trabajo.WORKFLOW_FILE.YAML
: Obligatorio. Es el archivo fuente del flujo de trabajo.
Ejemplo
Por ejemplo, este flujo de trabajo usa un bloque de interruptores para controlar el orden de ejecución del flujo de trabajo:
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." } } ]
En este ejemplo, el bloque switch
tiene dos condiciones. El analizador evalúa cada condición en orden y, si el resultado de la expresión de la condición es true
, se llama al paso next
de esa condición. Si no se cumple ninguna de las condiciones, el flujo de trabajo llama al paso especificado por el campo next
fuera del bloque switch
, que, en este ejemplo, es el paso workWeek
.
Por ejemplo, si el día de la semana es "Saturday"
, el flujo de trabajo salta al paso weekend
y muestra el mensaje "It's the weekend!"
. El flujo de trabajo no ejecuta el paso friday
porque el salto condicional lo omite, y no ejecuta el paso workWeek
porque return
detiene la ejecución del flujo de trabajo al final del paso weekend
.
Usa bucles for
para iterar
Puedes usar bucles for
para iterar sobre una secuencia de números o a través de una recopilación de datos, como una lista o un mapa.
Puedes recorrer cada elemento de una lista o un mapa con la iteración basada en elementos. Si tienes un rango específico de valores numéricos para iterar, puedes usar la iteración basada en el rango.
Para obtener más información y ejemplos, consulta la referencia de sintaxis sobre iteración.