Tous les produits
Search
Centre de documentation

CloudFlow:Map state: inline mode

Dernière mise à jour :Aug 11, 2026

Lorsqu'un workflow doit appliquer la même logique de traitement à chaque élément d'un tableau (validation d'un lot de commandes, redimensionnement d'images ou enrichissement d'enregistrements), l'état Map parcourt le tableau et exécute chaque élément via un sous-flux en parallèle. Ce fonctionnement s'apparente à une boucle foreach avec exécution concurrente. Les états Map s'exécutent en mode inline par défaut. Ce mode se concentre sur un nœud unique et convient aux scénarios où chaque élément d'une collection nécessite un traitement spécifique.

Fonctionnement

  1. Extrayez un tableau de l'entrée à l'aide de l'expression ItemsPath.

  2. Lancez un sous-flux indépendant pour chaque élément en exécutant les états définis dans Processor.

  3. Exécutez tous les sous-flux en parallèle, dans la limite définie par MaxConcuccency.

  4. Une fois tous les sous-flux terminés, fusionnez les résultats dans une sortie map[string]any sous la clé Items.

Référence des champs

Champ Type Obligatoire Description
Name string Oui Nom de l'état.
Type string Oui Doit être Map.
ItemsPath string Oui Expression qui extrait le tableau cible de l'entrée. Prend en charge les variables $Input et $Context. Voir ItemsPath.
Processor Processor Oui Définition du sous-flux exécuté pour chaque élément du tableau. Voir Processor.
InputConstructor map[string]any Non Construit ou remodèle l'entrée avant l'itération. Voir Entrées et sorties.
OutputConstructor map[string]any Non Remodèle la sortie fusionnée une fois tous les sous-flux terminés. Voir OutputConstructor de l'état.
MaxConcuccency int Non Nombre maximal de sous-flux parallèles. La limite supérieure est de 40. Voir MaxConcuccency.
Next string Non État vers lequel basculer après la fin de l'exécution. Non requis si End a la valeur true.
End bool Non Indique qu'il s'agit de l'état terminal de la portée actuelle.
Retry Retry Non Politique de nouvelle tentative en cas d'erreur. Voir Gestion des erreurs.
Catch Catch Non Politique de capture d'erreurs. Voir Gestion des erreurs.
Description string Non Description de l'état.

Champs clés

ItemsPath

Expression permettant d'extraire un tableau de l'entrée. Si l'expression renvoie un tableau JSON, l'état Map itère sur chaque élément et le transmet indépendamment au Processor.

Prend en charge les variables d'expression $Input et $Context :

$Input.FieldA

Cette expression extrait le tableau FieldA de l'entrée. Chaque élément est ensuite traité dans un sous-flux parallèle distinct.

Processor

Définit le sous-flux exécuté pour chaque élément du tableau.

Champ Type Obligatoire Description
StartAt string Oui Premier état à exécuter dans le sous-flux.
States array Oui États constituant le sous-flux.

Exemple :

Processor:
  StartAt: Pass1
  States:
    - Type: Pass
      Name: Pass1
      End: true

MaxConcuccency

Nombre maximal de sous-flux exécutés en parallèle. La limite supérieure est de 40.

Exemple

Le flux suivant définit un état Map qui itère sur un tableau de trois éléments. Chaque élément passe par un seul état Pass.

Type: StateMachine
Name: my-wkfl
SpecVersion: v1
StartAt: Map1
States:
  - Type: Map
    Name: Map1
    End: true
    InputConstructor:
      FieldA:
        - a: b
        - c: d
        - e: f
    ItemsPath: $Input.FieldA
    Processor:
      StartAt: Pass1
      States:
        - Type: Pass
          Name: Pass1
          End: true

Entrée

InputConstructor génère l'entrée suivante :

{
  "FieldA": [
    { "a": "b" },
    { "c": "d" },
    { "e": "f" }
  ]
}

Données reçues par chaque itération

ItemsPath extrait le tableau FieldA. Chaque sous-flux reçoit un élément en tant qu'entrée. Par exemple, la première itération reçoit :

{
  "a": "b"
}

La deuxième itération reçoit { "c": "d" } et la troisième reçoit { "e": "f" }. Les trois sous-flux s'exécutent en parallèle.

Sortie

Une fois tous les sous-flux terminés, l'état Map fusionne les résultats sous la clé Items :

{
  "Items": [
    { "a": "b" },
    { "c": "d" },
    { "e": "f" }
  ]
}

Pour remodeler cette sortie fusionnée, utilisez OutputConstructor.