Tous les produits
Search
Centre de documentation

CloudFlow:Task state

Dernière mise à jour :Aug 11, 2026

Un état de tâche exécute une opération d'API d'un service intégré en tant qu'unité de travail unique au sein d'un flux de travail. Utilisez les états de tâche pour appeler des fonctions Function Compute, des API de service Alibaba Cloud ou des services tiers via HTTP/HTTPS.

Dans le langage de définition de flux (FDL), définissez Type sur Task pour configurer un état de tâche.

Types de services pris en charge

Un état de tâche peut interagir avec trois catégories de services. Indiquez la cible dans le champ Action en utilisant le format <ServiceName>:<APIOperation>.

Catégorie Format d'action Description Exemple
Function Compute FC:<APIOperation> Appelle une fonction Function Compute de manière synchrone ou asynchrone FC:InvokeFunction
API de service Alibaba Cloud <ServiceName>:<APIOperation> Appelle n'importe quelle opération OpenAPI Alibaba Cloud ECS:DescribeInstances
Endpoint HTTP tiers HTTP:Request Envoie une requête HTTP/HTTPS à un service externe HTTP:Request

Modes d'intégration

Le champ TaskMode contrôle la manière dont CloudFlow interagit avec le service cible :

Mode Comportement Quand l'utiliser
RequestComplete Attend la réponse du service, puis passe à l'état suivant. Appels synchrones standards où la réponse est immédiate.
WaitForCustomCallback Met en pause le flux de travail jusqu'à ce qu'un système externe envoie un rappel avec le jeton de tâche. Approbations humaines, processus externes de longue durée ou tout scénario nécessitant l'attente d'un signal externe.
WaitForSystemCallback Met en pause le flux de travail jusqu'à ce que le service intégré envoie automatiquement un rappel à la fin du traitement. Opérations Alibaba Cloud de longue durée qui prennent en charge les notifications de fin au niveau du système.

Pour plus de détails, consultez la rubrique Modes d'intégration de service.

Paramètres

Paramètre Type Obligatoire Description
Name string Oui Le nom de l'état.
Type string Oui Le type d'état. Définissez-le sur Task.
Action string Oui Le service et l'opération à appeler. Format : <ServiceName>:<APIOperation>.
TaskMode enum Non Le mode d'intégration : RequestComplete, WaitForCustomCallback ou WaitForSystemCallback.
Parameters map[string]any Non Les paramètres d'entrée pour l'appel d'API. Les valeurs peuvent être des constantes ou des expressions JSONPath.
InputConstructor map[string]any Non Construit l'entrée de la tâche à partir de l'entrée de l'état. Consultez la section Entrées et sorties.
OutputConstructor map[string]any Non Construit la sortie de l'état à partir du résultat de la tâche. Consultez la section Entrées et sorties.
Timeout string Non La période de délai d'attente en secondes. Valeurs valides : 0 à 604800. 0 signifie aucun délai d'attente. Vous pouvez définir le délai d'attente dynamiquement à partir de l'entrée d'exécution avec une expression JSONPath (voir l'exemple ci-dessous).
Retry map[string]any Non La politique de nouvelle tentative pour les erreurs. Consultez la section Gestion des erreurs.
Catch map[string]any Non La politique de capture d'erreurs. Consultez la section Gestion des erreurs.
Description string Non Une description de l'état.
Next string Non L'état suivant à exécuter après la fin de cet état. Laissez vide si End est défini sur true.
End bool Non Indique si cet état est l'état terminal de la portée actuelle.

Définissez le délai d'attente dynamiquement à partir de l'entrée d'exécution avec une expression JSONPath :

Timeout.$: $Input.timeout

Exemples

Invoquer une fonction Function Compute

Cet exemple définit deux états de tâche qui appellent une fonction Function Compute, l'un de manière synchrone et l'autre de manière asynchrone. Spécifiez la fonction et le type d'invocation dans le champ Parameters. Pour plus de détails sur les paramètres, consultez la section Configurer les paramètres d'invocation.

Les fonctions peuvent être appelées en mode d'intégration optimisé ou via l'OpenAPI Alibaba Cloud.

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: an example of synchronous function invocation
States:
  - Name: an example of synchronous function invocation
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::functions/myFunction1/LATEST
      invocationType: Sync
      body:
        key: name
    Next: an example of asynchronous function invocation
  - Type: Task
    Name: an example of asynchronous function invocation
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      invocationType: Async
      resourceArn: acs:fc:{region}:{accountID}:functions/myFunction/LATEST
      body:
        key: name
    Next: SucceededExit
  - Type: Pass
    Name: SucceededExit
    End: true

Appeler une API de service Alibaba Cloud

Appelez n'importe quelle API de service Alibaba Cloud en définissant le champ Action sur le nom du service et de l'opération. L'exemple suivant appelle ECS:DescribeInstances pour répertorier les instances ECS dans un VPC spécifique :

Type: StateMachine
SpecVersion: v1
Name: MyWorkflow
StartAt: DescribeInstances
States:
  - Type: Task
    Name: DescribeInstances
    Action: ECS:DescribeInstances
    TaskMode: RequestComplete
    Parameters:
      RegionId: cn-hangzhou
      VpcId: vpc-bp11y195luy47h8****
      VSwitchId: vsw-bp1wb297ekw7xyh****
    End: true

Appeler un endpoint HTTP avec délai d'attente et gestion des erreurs

Cet exemple envoie une requête HTTP POST et définit un délai d'attente dynamique à partir de l'entrée d'exécution. Si la tâche ne se termine pas dans le délai imparti, CloudFlow génère une erreur FnF.TaskTimeout. La règle Catch capture cette erreur et redirige le flux de travail vers un état de notification.

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: SubmitTask
States:
  - Type: Task
    Name: SubmitTask
    Action: HTTP:Request
    TaskMode: RequestComplete
    Timeout.$: $Input.timeout
    Parameters:
      method: POST
      url: https://*****
      body:
        taskName: fly
      headers:
        Content-Type: multipart/form-data
    Catch:
      - Errors:
          - FnF.TaskTimeout
        Description: 'Error capture rule #1'
        Next: NotifyOnTaskTimeout
        OutputConstructor:
          ErrorCode: TaskTimeout
          ErrorMessage: Task timed out.
    End: true
  - Type: Task
    Name: NotifyOnTaskTimeout
    Action: HTTP:Request
    TaskMode: RequestComplete
    Parameters:
      method: POST
      url: https://******
      body:
        taskName: fly
        errorCode.$: $Input.ErrorCode
        errorMessage.$: $Input.ErrorMessage
      headers:
        Content-Type: multipart/form-data
    End: true

L'entrée d'exécution fournit la valeur du délai d'attente :

{
  "timeout": 10
}

Si la tâche ne se termine pas dans les 10 secondes, l'erreur FnF.TaskTimeout est capturée et le flux de travail passe à l'état NotifyOnTaskTimeout pour envoyer une notification de délai d'attente dépassé.

Timeout workflow