Cette page a été traduite par l'API Cloud Translation.
Switch to English

Contrôler l'ordre d'exécution des étapes d'un workflow

Cette page vous explique comment utiliser les sauts pour contrôler l'ordre dans lequel les étapes de votre workflow s'exécutent. Les sauts de base vous permettent de définir l'étape suivante du 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 via un workflow. Par exemple, vous ne pouvez exécuter certaines étapes que lorsqu'une variable ou une réponse d'une autre étape de workflow répond à certains critères.

L'exemple décrit sur cette page utilise un exemple d'API qui renvoie le jour de la semaine.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Vous devez disposer d'un workflow existant dont 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 dans des listes où chaque étape est exécutée dans l'ordre que vous définissez dans le code source du workflow. Vous pouvez ignorer ce tri par défaut à l'aide de sauts.

Sauts simples

Vous pouvez spécifier l'étape à exécuter dans un workflow en utilisant des sauts de base.

Console

  1. Ouvrez la page "Workflows" dans Google Cloud Console:
    Accéder à la page "Workflows"

  2. Sélectionnez le nom du workflow dont vous souhaitez modifier l'ordre d'exécution des étapes existantes.

  3. Sur la page Modifier le workflow, sélectionnez Suivant pour accéder à l'éditeur de workflow.

  4. Ajoutez le champ next à la fin d'une étape pour indiquer au workflow d'accéder à une étape donnée:

    - step_a:
        ...
        next: STEP_NAME
    - step_b:
        ...
    - next_step:
        ...
    

    Remplacez STEP_NAME par le nom de l'étape à laquelle vous souhaitez que le workflow s'exécute. Exemple :next_step

  5. Sélectionnez Deploy (Déployer).

gcloud

  1. Ouvrez le fichier de définition de votre workflow dans l'éditeur de texte de votre choix.

  2. Ajoutez le champ next à la fin d'une étape pour indiquer au workflow d'accéder à une étape donnée:

    - step_a:
        ...
        next: STEP_NAME
    - step_b:
        ...
    - next_step:
        ...
    

    Remplacez STEP_NAME par le nom de l'étape à laquelle vous souhaitez que le workflow s'exécute. Exemple :next_step

  3. Enregistrez le fichier de workflow.

  4. Pour déployer le workflow, saisissez la commande suivante:

    gcloud workflows deploy WORKFLOW_NAME \
    --source=WORKFLOW_FILE.YAML
    

    Remplacez l'élément suivant :

    • WORKFLOW_NAME : valeur obligatoire. Nom de votre workflow.

    • WORKFLOW_FILE.YAML : valeur obligatoire. Fichier source du workflow.

Exemple

Prenons l'exemple du workflow suivant, qui comporte des étapes dans le désordre:

- 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}

Ajoutez les champs next pour les étapes get_time et get_daylight_savings_bool afin que le workflow s'exécute dans le bon ordre:

- 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 des sauts conditionnels pour déterminer l'étape à exécuter dans un workflow. Les sauts conditionnels utilisent des blocs switch, qui passent directement à une étape spécifiée si une condition particulière est remplie. Chaque bloc switch peut inclure jusqu'à 10 conditions.

Console

  1. Ouvrez la page "Workflows" dans Google Cloud Console:
    Accéder à la page "Workflows"

  2. Sélectionnez le nom du workflow auquel vous souhaitez ajouter un bloc switch.

  3. Sur la page Modifier le workflow, sélectionnez Suivant pour accéder à l'éditeur de workflow.

  4. La définition actuelle de votre workflow s'affiche sur la page Définir le workflow. Pour modifier le workflow de sorte qu'il exécute une étape spécifique en fonction d'une instruction conditionnelle, ajoutez une étape qui utilise un bloc switch:

    - 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 l'élément suivant :

    • SWITCH_STEP_NAME: nom de l'étape contenant le bloc switch.

    • EXPRESSION_ONE: première expression à évaluer. Si cette expression renvoie la valeur "true", le workflow exécute ensuite STEP_A. 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 exécute ensuite STEP_B. Si cette expression renvoie la valeur "false", le workflow exécute STEP_C.

    • STEP_A, STEP_B, STEP_C: noms d'étape d'espace réservé.

  5. Sélectionnez Deploy (Déployer).

gcloud

  1. Ouvrez la définition de votre workflow dans l'éditeur de texte de votre choix.

  2. Pour modifier le workflow de sorte qu'il exécute une certaine étape basée sur une instruction conditionnelle, ajoutez une étape qui utilise un bloc switch:

    - 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 l'élément suivant :

    • SWITCH_STEP_NAME: nom de l'étape contenant le bloc switch.

    • EXPRESSION_ONE: première expression à évaluer. Si cette expression renvoie la valeur "true", le workflow exécute ensuite STEP_A. 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 exécute ensuite STEP_B. Si cette expression renvoie la valeur "false", le workflow exécute STEP_C.

    • STEP_A, STEP_B, STEP_C: noms d'étape d'espace réservé.

    L'instruction switch peut contenir autant de conditions que nécessaire.

  3. Enregistrez le fichier de workflow.

  4. Pour déployer le workflow, saisissez la commande suivante:

    gcloud workflows deploy WORKFLOW_NAME \
    --source=WORKFLOW_FILE.YAML
    

    Remplacez l'élément suivant :

    • WORKFLOW_NAME : valeur obligatoire. Nom de votre workflow.

    • WORKFLOW_FILE.YAML : valeur 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:

- 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 la condition est appelée. Si aucune condition n'est remplie, le workflow appelle l'étape spécifiée par le champ next en dehors du bloc switch, qui, dans cet exemple, correspond à 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.

Étape suivante