Tous les produits
Search
Centre de documentation

CloudFlow:Étapes de tâche

Dernière mise à jour :Aug 11, 2026

Une étape de tâche appelle une fonction Function Compute et prend en charge les nouvelles tentatives, la capture d'erreurs ainsi que les mappages d'entrée et de sortie.

Attributs

Une étape de tâche appelle une fonction Function Compute.

Une étape de tâche contient les attributs suivants :

  • type : type d'étape. La valeur task indique qu'il s'agit d'une étape de tâche.

  • name : nom de l'étape.

  • resourceArn : identifiant de la ressource. Types pris en charge : fonctions, files d'attente MNS et flux Serverless workflow. Exemple :acs:fc:cn-shanghai:18807708****3420:services/fnf_test/functions/hello. Consultez Intégration des services.

  • Facultatif : pattern : mode d'exécution du service d'intégration. Valeur par défaut :requestResponse. Valeurs possibles :

    • requestResponse : attend la fin de la tâche avant de poursuivre.

    • sync : soumet la tâche de manière asynchrone et attend le résultat de l'exécution avant de poursuivre.

    • waitForCallback : soumet la tâche de manière asynchrone et suspend l'étape jusqu'à la réception d'un rappel ou l'expiration du délai.

  • Facultatif :timeoutSeconds : délai d'expiration de la tâche, en secondes. L'étape expire si l'exécution dépasse cette durée.

  • Facultatif :end : indique s'il faut passer aux étapes suivantes après la fin de cette étape.

  • Facultatif :inputMappings : mappages d'entrée. L'entrée de l'étape est transmise en tant qu'événement d'appel de fonction. Pour plus d'informations, consultez InvokeFunction.

  • Facultatif :outputMappings : mappages de sortie.$local correspond au résultat de l'appel de fonction et doit être au format JSON.

    Remarque

    Si aucun mappage de sortie n'est spécifié,

    $local

    est la sortie par défaut de l'étape.

  • Facultatif :errorMappings : mappages d'erreur. Valide uniquement lorsqu'une erreur se produit lors de l'exécution de l'étape et que le paramètre catch est spécifié. Utilisez les valeurs $local.cause et $local.error pour mapper les informations d'erreur vers la sortie de l'étape suivante.

    Remarque

    Les valeurs

    $local.error

    et

    $local.code

    sont réservées au système. Le champ

    source

    dans errorMappings doit être défini sur ces deux valeurs.

    Exemples

    . Le paramètre

    errorMappings

    est facultatif. S'il est omis, les informations d'erreur ne seront pas disponibles dans l'étape suivante.

  • retry : politiques de nouvelle tentative. Chaque politique possède les attributs suivants :

    • errors : une ou plusieurs erreurs issues du tableau Définitions des erreurs.

    • intervalSeconds : intervalle initial entre les nouvelles tentatives, en secondes. Maximum : 86 400. Par défaut : 1.

    • maxIntervalSeconds : intervalle maximal entre les nouvelles tentatives. Maximum et valeur par défaut : 86 400 secondes.

    • maxAttempts : nombre maximal de nouvelles tentatives. Par défaut : 3.

    • multiplier : multiplicateur appliqué à chaque intervalle de nouvelle tentative successif. Par défaut : 2.

  • catch : politiques de capture d'erreurs. Chaque politique possède les attributs suivants :

    • errors : une ou plusieurs erreurs issues du tableau des définitions d'erreurs.

    • goto : nom de l'étape de destination.

      Remarque

      L'étape de destination doit être parallèle à l'étape de tâche actuelle.

Tableau 1. Définitions des erreurs
État d'exécution de la fonction Code d'état HTTP d'une réponse Function Compute Réponse Function Compute **Échec de l'étape Serverless workflow (for retry and catch)** Retry
Non exécutée 429 ResourceExhausted FC.ResourceExhausted Oui
Non exécutée 4xx sauf 429 ServiceNotFound, FunctionNotFound ou InvalidArgument FC.ServiceNotFound, FC.FunctionNotFound ou FC.InvalidArgument Non
Incertain 500 InternalServerError FC.InternalServerError Oui
Non exécutée 503 ResourceThrottled FC.ResourceThrottled Oui
Exécution réussie, avec un code d'erreur renvoyé 200 Une erreur personnalisée, incluant errorType errorType Déterminé selon la logique métier
Échec de l'exécution, avec un code d'erreur renvoyé 200 Aucun errorType FC.Unknown Oui
Exécution réussie, avec un objet non JSON renvoyé 200 Aucun errorType FC.InvalidOutput Non

Autres erreurs

:

  • FnF.ALL : correspond à toutes les erreurs pour les cas d'utilisation de nouvelle tentative ou de capture.

Exemples

  • Étapes de tâche simples

    Le flux d'exemple suivant contient une étape de tâche.

    • Si l'entrée est {"name": "function flow"}, la sortie est {"hello": "function flow"}.

    • Si aucune entrée n'est fournie ou si l'entrée ne contient pas la cléname, l'étape de tâche échoue et le flux échoue.

    • Définissez le flux.

      version: v1
      type: flow
      steps:
        - type: task
          name: hello
          resourceArn: acs:fc:{region}:{accountID}:services/fnf_test/functions/hello           

      Paramètres de

      resourceArn

      :

      • {region} : remplacez par la région réelle, telle que cn-shanghai.

      • {accountID} : remplacez par votre ID de compte. Retrouvez votre ID de compte en cliquant sur l'image de profil sur la page Flows de la console Serverless Workflow.

        create_flow_step1

    • Définissez la fonction.

      import json
      
      class MyError(Exception):
        pass
      
      def handle(event, context):
        evt = json.loads(event)
        if "name" in evt:
          return {
            "hello": evt["name"]
          }
        else:
          raise MyError("My unhandled exception")          
  • Nouvelle tentative

    Cet exemple effectue une nouvelle tentative de tâche en cas d'erreur MyError. Si aucune entrée n'est fournie ou si l'entrée ne contient pas la clé name, Serverless workflow relance la tâche conformément à la politique de nouvelle tentative.

    • Attend 3 secondes après la première erreur, puis réessaie.

    • Attend 6 secondes (intervalSeconds x multiplier) après la deuxième erreur, puis réessaie.

    • Attend 12 secondes (intervalSeconds x multiplier x multiplier) après la troisième erreur, puis réessaie.

    • Si l'erreur persiste après trois nouvelles tentatives, maxAttempts est dépassé, l'étape de tâche échoue et le flux échoue.

    version: v1
    type: flow
    steps:
      - type: task
        name: hello
        resourceArn: acs:fc:{region}:{accountID}:services/fnf_test/functions/hello
        retry:
          - errors:
            - MyError
            intervalSeconds: 3
            maxAttempts: 3
            multiplier: 2            
  • Capture d'erreurs

    Cet exemple capture l'erreur MyError et passe à l'étape final . Comme l'erreur est capturée, le flux aboutit.

    version: v1
    type: flow
    steps:
      - type: task
        name: hello
        resourceArn: acs:fc:{region}:{accountID}:services/fnf_test/functions/hello
        catch:
          - errors:
            - MyError
            goto: final
      - type: pass
        name: pass1
      - type: pass
        name: final           
  • Capture d'erreurs avec mappages d'erreur spécifiés

    Cet exemple capture l'erreur MyError et passe à l'étape final . Grâce aux mappages d'erreur spécifiés, l'étape final peut accéder aux détails de l'erreur. Vous pouvez également utiliser errorMappings pour mapper les entrées de l'étape et les constantes vers les sorties.

    version: v1
    type: flow
    steps:
      - type: task
        name: hello
        resourceArn: acs:fc:{region}:{accountID}:services/fnf_test/functions/hello
        errorMappings:
          - target: errMsg
            source: $local.cause # This value is reserved for the system and can be used directly when an error occurs in this step.
          - target: errCode
            source: $local.error # This value is reserved for the system and can be used directly when an error occurs in this step.
        catch:
          - errors:
            - MyError
            goto: final
      - type: pass
        name: pass1
      - type: pass
        name: final  

    L'event de l'étape finale contient les éléments EventDetail suivants :

    "EventDetail": "{\"input\":{},\"local\":{\"errorCode\":\"MyError\",\"errorMsg\":\"some message\"}}",