Skip to main content
Voir en Markdown

Contrôle de flux

Les actions de contrôle de flux modifient la forme d'un flux de travail plutôt que ses données : elles branchent, itèrent et arrêtent. Composer une autre automatisation comme sous-workflow est traité à part dans Sous-workflows.

Groupes de conditions

Les branchements path et la barrière filter/continue évaluent tous deux des groupes de conditions — une ou plusieurs comparaisons combinées par and/or.

Élément Description
logic and (toutes doivent correspondre, par défaut) ou or (au moins une).
conditions Tableau de { field, operator, value? }, au moins une entrée.
app.yaml
condition:
  logic: and
  conditions:
    - { field: '{{trigger.data.record.status}}', operator: equals, value: paid }
    - { field: '{{trigger.data.record.amount}}', operator: greaterThan, value: 100 }

Opérateurs de comparaison : equals, notEquals, contains, notContains, startsWith, endsWith, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual, isEmpty, isNotEmpty, isNull, isNotNull, matches.

Deux limites méritent d'être connues avant de concevoir autour :

  • Les groupes ne s'imbriquent pas. conditions ne contient que des comparaisons, jamais un groupe imbriqué : (A et B) ou C n'est donc pas exprimable dans un seul groupe. Exprimez-le avec deux branches path.
  • value est un scalairestring, number, boolean ou null. Les tableaux et objets sont rejetés : il n'y a donc pas de test d'appartenance à une liste ici.

Path — Branchement

L'opérateur path/branch achemine l'exécution vers des branches nommées. Chaque branche a sa propre condition et ses actions imbriquées.

Propriété Description
paths Branches, au moins deux : { name, condition?, actions[] }. name non vide ; actions au moins une entrée.
mode first-match (exécute la première branche correspondante, par défaut) ou all-matching (toutes).

Un path à une seule branche échoue au décodage — une étape conditionnelle unique est un filter/continue, pas un branchement. Une branche sans condition correspond toujours : c'est ainsi qu'on écrit le cas par défaut, en la plaçant en dernier sous first-match.

app.yaml
- name: route
  type: path
  operator: branch
  props:
    mode: first-match
    paths:
      - name: vip
        condition:
          conditions: [{ field: '{{trigger.data.record.tier}}', operator: equals, value: vip }]
        actions:
          - name: vipEmail
            type: email
            operator: send
            props: { to: '{{trigger.data.record.email}}', subject: 'VIP welcome', body: 'Thanks!' }
      - name: standard
        actions:
          - name: stdEmail
            type: email
            operator: send
            props: { to: '{{trigger.data.record.email}}', subject: 'Welcome', body: 'Hi!' }

Loop — Itération

L'opérateur loop/each itère sur un tableau, exécutant ses actions imbriquées une fois par élément.

Propriété Description
items Obligatoire. Modèle se résolvant en le tableau à parcourir.
actions Obligatoire. Actions imbriquées exécutées par élément, au moins une.
maxIterations Plafond d'itérations, 1–10000. Par défaut 1000.
continueOnItemError Lorsque true, un élément en échec n'interrompt pas la boucle. Par défaut false.

Dans la boucle, l'élément courant est à {{loop.item}} (ses champs à {{loop.item.<champ>}}) et la position, à base zéro, à {{loop.index}}. Un {{item.*}} nu ne se résout pas.

app.yaml
- name: notifyEach
  type: loop
  operator: each
  props:
    items: '{{fetchSubscribers.result}}'
    maxIterations: 5000
    continueOnItemError: true
    actions:
      - name: send
        type: email
        operator: send
        props: { to: '{{loop.item.email}}', subject: 'Update', body: 'Hi {{loop.item.name}}' }

Flow — Arrêt

L'opérateur flow/stop interrompt immédiatement l'exécution, avec un statut et une sortie optionnels. Les trois propriétés sont optionnelles.

Propriété Description
message Raison de l'arrêt (peut contenir des modèles).
status success ou error. Par défaut error.
output Sortie clé-valeur renvoyée à l'appelant.

Le défaut error compte : un flow/stop atteint sur un chemin parfaitement normal de type « rien à faire » marquera l'exécution comme échouée — et activera tout déclencheur automation-failure qui la surveille. Passez status: success pour les sorties anticipées attendues.

app.yaml
- name: bail
  type: flow
  operator: stop
  props: { status: success, message: 'Nothing to do', output: { processed: 0 } }

Automation — Call et Return (sous-workflows)

Déplacé vers Sous-workflows.

Pages connexes

Dernière mise à jour 11 août 2026

Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta. Les contributions et corrections sont les bienvenues.

Construit avec Sovrium