Skip to main content
View as Markdown

Actions de données et d'état

Ces cinq familles manipulent les données en transit entre les étapes et persistent les valeurs entre les exécutions : data (transformations), state (magasin clé-valeur), filter (filtrage conditionnel), crypto (hachage) et digest (regroupement d'événements pour une libération ultérieure).

Data — Transformations en mémoire

La famille data transforme les tableaux et valeurs qui ont déjà circulé dans le workflow. Neuf operators.

Operator Props Description
set value Définit une valeur (ou en calcule une à partir de gabarits) pour les étapes ultérieures.
aggregate input, function, field?, groupBy? Réduit un tableau — sum/avg/min/max/count, éventuellement groupé.
sort input, field, direction? Trie un tableau par field (asc par défaut / desc).
limit input, count Prend les count premiers éléments.
deduplicate input, key Supprime les éléments en double par key.
merge left, right, joinKey? Fusionne deux tableaux, en joignant éventuellement sur joinKey.
split input, size Découpe un tableau en sous-tableaux de taille size.
compare left, right, key Compare deux tableaux par key (ajoutés / supprimés / modifiés).
lookup input, key, value Construit une carte de correspondance clé→valeur à partir d'un tableau.
- name: revenueByRegion
  type: data
  operator: aggregate
  props:
    input: '{{fetchOrders.result}}'
    function: sum
    field: amount
    groupBy: region

State — Magasin clé-valeur inter-exécutions

La famille state persiste les valeurs entre les exécutions d'automatisation (compteurs, curseurs, marqueurs de déduplication). Un namespace optionnel délimite les clés ; ttl les fait expirer. Cinq operators.

Operator Props Description
get key, namespace? Lit une valeur stockée.
set key, value, namespace?, ttl? Stocke une valeur, éventuellement avec une durée de vie.
increment key, amount?, namespace? Incrémente atomiquement une valeur numérique (par défaut +1).
delete key, namespace? Supprime une valeur stockée.
list prefix?, namespace?, limit? Liste les clés (éventuellement filtrées par préfixe).
- name: bumpCounter
  type: state
  operator: increment
  props: { key: 'orders:{{trigger.data.region}}', namespace: metrics }

Filter — Filtrage conditionnel

La famille filter décide si le workflow se poursuit. Un operator.

Operator Props Description
continue condition, onFalse? Évalue un groupe de conditions ; si faux, stop (arrête) ou skip (saute à l'action suivante). Par défaut stop.
- name: onlyPaid
  type: filter
  operator: continue
  props:
    condition:
      conditions: [{ field: '{{trigger.data.status}}', operator: equals, value: paid }]
    onFalse: stop

Crypto — Hachage et HMAC

La famille crypto calcule des empreintes et des signatures (par ex. vérification de signature de webhook). Deux operators.

Operator Props Description
hash input, algorithm, encoding? Hache avec md5 / sha256 / sha512 ; hex (par défaut) ou base64.
hmac input, secret, algorithm, encoding? HMAC avec sha256 / sha512 ; clé fournie par secret.
- name: signPayload
  type: crypto
  operator: hmac
  props:
    input: '{{trigger.body}}'
    secret: $env.SIGNING_SECRET
    algorithm: sha256
    encoding: hex

Digest — Regroupement et libération

La famille digest collecte des éléments à travers plusieurs exécutions dans un seau nommé, puis les libère sous forme de lot (par ex. regrouper des notifications dans un résumé quotidien). Deux operators.

Operator Props Description
collect bucket, item, deduplicateBy? Ajoute un élément à un seau nommé, en dédupliquant éventuellement.
release bucket, sort?, limit? Vide un seau — éventuellement trié ({ field, direction? }) et plafonné.
# Producer automation (record trigger) collects
- name: queueDigest
  type: digest
  operator: collect
  props: { bucket: daily-summary, item: '{{trigger.data}}', deduplicateBy: id }

# Consumer automation (cron trigger) releases
- name: drain
  type: digest
  operator: release
  props: { bucket: daily-summary, sort: { field: created_at, direction: desc }, limit: 50 }

Pages connexes