Cette page explique comment utiliser des sauts ou des boucles pour contrôler l'ordre dans lequel les étapes de votre workflow s'exécutent. Les sauts de base vous permettent de définir la prochaine étape qui sera exécutée par le workflow. Les sauts conditionnels reposent sur des sauts de base, ce qui vous permet d'utiliser des expressions conditionnelles pour contrôler l'ordre d'exécution d'un workflow. Par exemple, vous ne pouvez exécuter certaines étapes que lorsqu'une variable ou une réponse d'une autre étape du workflow répond à des critères spécifiques.
Les exemples de cette page utilisent un exemple d'API qui renvoie le jour de la semaine.
Avant de commencer
- 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.
- Vous devez déjà disposer d'un workflow existant dans lequel vous souhaitez modifier l'ordre d'exécution. Pour savoir comment créer et déployer un workflow, consultez la page Créer et mettre à jour un workflow.
Utiliser des sauts pour modifier l'ordre d'exécution
Par défaut, tous les workflows sont classés en tant que listes dans lesquelles chaque étape est exécutée dans l'ordre que vous définissez dans le code source du workflow. Vous pouvez choisir de remplacer cet ordre par défaut à l'aide de sauts.
Sauts de base
Vous pouvez spécifier la prochaine étape à exécuter dans un workflow en utilisant des sauts de base.
Console
Ouvrez la page "Workflows" de Google Cloud Console :
Accéder à WorkflowsSélectionnez le nom du workflow dans lequel vous souhaitez modifier l'ordre d'exécution des étapes existantes.
Sur la page Modifier le workflow, sélectionnez Suivant pour accéder à l'éditeur de workflow.
Ajoutez le champ
next
à la fin d'une étape pour indiquer au workflow de passer à une étape particulière: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": { ... } } ]
Remplacez
STEP_NAME_TO_JUMP_TO
par le nom. de l'étape que vous souhaitez que le workflow exécute ensuite. Par exemple,next_step
.Sélectionnez Deploy (Déployer).
gcloud
Ouvrez le fichier de définition de votre workflow dans l'éditeur de texte de votre choix.
Ajoutez le champ
next
à la fin d'une étape pour indiquer au workflow de passer à une étape particulière: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": { ... } } ]
Remplacez
STEP_NAME_TO_JUMP_TO
par le nom du à laquelle vous souhaitez que le workflow s'exécute ensuite. Exemple :next_step
Enregistrez le fichier de workflow.
Pour déployer le workflow, saisissez la commande suivante:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Remplacez les éléments suivants :
WORKFLOW_NAME
: Obligatoire. Nom de votre workflow.WORKFLOW_FILE.YAML
: Obligatoire. Fichier source du workflow.
Exemple
Par exemple, le workflow suivant comporte les étapes dans le désordre:
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}" } ] } } ]
Dans cet exemple, des champs next
ont été ajoutés aux étapes get_daylight_savings_bool
et return_daylight_savings_bool
afin que les étapes s'exécutent dans l'ordre approprié:
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" } } ]
Sauts conditionnels
Vous pouvez utiliser les sauts conditionnels pour déterminer la prochaine étape à exécuter dans un workflow.
Les sauts conditionnels utilisent des blocs switch
qui passent à une étape spécifiée si une condition particulière est remplie. Chaque bloc switch
peut inclure un maximum de 50 conditions.
Console
Ouvrez la page "Workflows" de Google Cloud Console :
Accéder à WorkflowsSélectionnez le nom du workflow auquel vous souhaitez ajouter un bloc
switch
.Sur la page Modifier le workflow, sélectionnez Suivant pour accéder à l'éditeur de workflow.
Sur la page Définir le workflow, la définition actuelle de votre workflow s'affiche. Pour modifier le workflow de sorte qu'il exécute une étape donnée en fonction d'une instruction conditionnelle, ajoutez une étape qui utilise un bloc
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": { ... } } ]
Remplacez les éléments suivants :
SWITCH_STEP_NAME
: nom de l'étape contenant le blocswitch
.EXPRESSION_ONE
: première expression à évaluer. Si cette expression renvoie la valeur "true", le workflow s'exécuteSTEP_A
ensuite. Si cette expression renvoie la valeur "false", le workflow évalue l'expression suivante.EXPRESSION_TWO
: deuxième expression à évaluer. Si cette expression renvoie la valeur "true", le workflow s'exécuteSTEP_B
ensuite. Si cette expression renvoie la valeur "false", le workflow exécuteSTEP_C
.STEP_A
,STEP_B
,STEP_C
: noms d'étape d'espace réservé.
Sélectionnez Deploy (Déployer).
gcloud
Ouvrez la définition de votre workflow dans l'éditeur de texte de votre choix.
Pour modifier le workflow de sorte qu'il exécute une étape donnée en fonction d'une instruction conditionnelle, ajoutez une étape qui utilise un bloc
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": { ... } } ]
Remplacez les éléments suivants :
SWITCH_STEP_NAME
: nom de l'étape contenant le blocswitch
.EXPRESSION_ONE
: première expression à évaluer. Si cette expression renvoie la valeur "true", le workflow s'exécuteSTEP_A
ensuite. Si cette expression renvoie la valeur "false", le workflow évalue l'expression suivante.EXPRESSION_TWO
: deuxième expression à évaluer. Si cette expression renvoie la valeur "true", le workflow s'exécuteSTEP_B
ensuite. Si cette expression renvoie la valeur "false", le workflow exécuteSTEP_C
.STEP_A
,STEP_B
STEP_C
: noms des étapes d'espace réservé.
Enregistrez le fichier de workflow.
Pour déployer le workflow, saisissez la commande suivante:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Remplacez les éléments suivants :
WORKFLOW_NAME
: Obligatoire. Nom de votre workflow.WORKFLOW_FILE.YAML
: Obligatoire. Fichier source du workflow.
Exemple
Par exemple, ce workflow utilise un bloc de commutateur pour contrôler l'ordre d'exécution du workflow:
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." } } ]
Dans cet exemple, le bloc switch
a deux conditions. L'analyseur évalue chaque condition dans l'ordre et si le résultat de l'expression de la condition est true
, l'étape next
de cette condition est appelée. Si aucune des conditions n'est remplie, le workflow appelle l'étape spécifiée par le champ next
en dehors du bloc switch
, qui est, dans cet exemple, l'étape workWeek
.
Par exemple, si le jour de la semaine est "Saturday"
, le workflow passe à l'étape weekend
et renvoie le message "It's the weekend!"
. Le workflow n'exécute pas l'étape friday
, car le saut conditionnel l'ignore et le workflow n'exécute pas l'étape workWeek
, car return
arrête l'exécution. du workflow à la fin de l'étape weekend
.
Utiliser les boucles for
pour effectuer une itération
Vous pouvez utiliser des boucles for
pour effectuer une itération sur une séquence de nombres ou sur une collection de données, telle qu'une liste ou une carte.
Vous pouvez parcourir chaque élément d'une liste ou d'une carte en utilisant une itération basée sur les éléments. Si vous avez une plage spécifique de valeurs numériques à itérer, vous pouvez utiliser une itération basée sur une plage.
Pour plus d'informations et d'exemples, consultez la documentation de référence sur la syntaxe concernant l'itération.