En esta página, se muestra cómo usar saltos o bucles for para controlar el orden en el que se ejecutan los pasos de tu flujo de trabajo. Los saltos básicos te permiten definir qué paso se ejecutará a continuación el flujo de trabajo. Los saltos condicionales se basan en 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 cumpla con criterios específicos.
En los ejemplos de esta página, se usa una API de muestra que muestra el día de la semana.
Antes de comenzar
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
- Ya deberías tener un flujo de trabajo existente en el que quieras cambiar el orden de ejecución. Para obtener más información sobre cómo crear y, luego, 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 se ordenan con listas en las que cada paso se ejecuta en el orden que defines en el código fuente del flujo de trabajo. Puedes optar por anular este orden predeterminado mediante saltos.
Saltos básicos
Puedes especificar qué paso se debe ejecutar a continuación en un flujo de trabajo mediante saltos básicos.
Console
Abre la página Workflows en la consola de Google Cloud:
Ir a WorkflowsSelecciona 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 del 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 ejecute el flujo de trabajo 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. El nombre de tu flujo de trabajo.WORKFLOW_FILE.YAML
: obligatorio. El archivo fuente para el flujo de trabajo.
Ejemplo
Por ejemplo, el siguiente flujo de trabajo tiene sus 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 los campos next
a los pasos get_daylight_savings_bool
y return_daylight_savings_bool
para que los pasos 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 específica. Cada bloque switch
puede incluir un máximo de 50 condiciones.
Console
Abre la página Workflows en la consola de Google Cloud:
Ir a WorkflowsSelecciona 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 del flujo de trabajo.
En la página Definir flujo de trabajo, se muestra la definición actual de tu flujo de trabajo. Si deseas editar el flujo de trabajo para que ejecute un determinado paso 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 evaluará. Si esta expresión se evalúa como verdadera, el flujo de trabajo ejecutaSTEP_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 evaluará. Si esta expresión se evalúa como verdadera, el flujo de trabajo ejecutaSTEP_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
: Indica los nombres de los pasos del marcador de posición.
Selecciona Implementar.
gcloud
Abre la definición de tu flujo de trabajo en el editor de texto que prefieras.
Si deseas editar el flujo de trabajo para que ejecute un paso determinado según una declaración 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 evaluará. Si esta expresión se evalúa como verdadera, el flujo de trabajo ejecutaSTEP_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 evaluará. Si esta expresión se evalúa como verdadera, el flujo de trabajo ejecutaSTEP_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
: Indica los nombres de los pasos del 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. El nombre de tu flujo de trabajo.WORKFLOW_FILE.YAML
: obligatorio. El archivo fuente para el flujo de trabajo.
Ejemplo
Por ejemplo, el siguiente flujo de trabajo usa un bloque switch 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 el flujo de trabajo 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 una colección de datos, como una lista o un mapa.
Puedes revisar cada elemento de una lista o un mapa con una iteración basada en elementos. Si tienes un rango específico de valores numéricos para iterar, puedes usar una iteración basada en rangos.
Para obtener más información y ejemplos, consulta la referencia de la sintaxis en la iteración.