Skip to main content
Voir en Markdown

Données et état

Trois familles qui déplacent des valeurs plutôt que de produire des effets de bord : data remodèle ce qui a déjà circulé dans le flux, state retient des valeurs entre exécutions, et filter décide si l'exécution se poursuit.

Data — Transformations en mémoire

Dix opérateurs, tous purs : ils lisent des étapes antérieures et produisent une nouvelle valeur.

Opérateur Propriétés Description
set value Définit une valeur pour les étapes suivantes. Relue à steps.<name>.value.
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 doublons selon key.
merge left, right, joinKey? Fusionne deux tableaux — jointure sur joinKey, ou concaténation si omis.
split input, size Découpe un tableau en sous-tableaux de taille size.
compare left, right, key Compare deux tableaux par keyadded / removed / unchanged.
lookup input, key, value Trouve le premier élément dont le champ key vaut value.
validate-config config, format? Valide une configuration Sovrium (json par défaut / yaml) → { valid, errors }.
app.yaml
- name: revenueByRegion
  type: data
  operator: aggregate
  props:
    input: '{{fetchOrders.result}}'
    function: sum
    field: amount
    groupBy: region

Trois comportements qui surprennent :

  • aggregate exige field pour sum, avg, min et max. Seul count peut s'en passer.
  • lookup renvoie un enregistrement, pas une table clé→valeur — c'est un find, pas un indexBy.
  • set prend une chaîne. value est un modèle de chaîne : un nombre, une liste ou un objet YAML nu est rejeté. Son résultat est à steps.<name>.value, pas .result.

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

Cinq opérateurs qui persistent des valeurs entre les exécutions : compteurs, curseurs, marqueurs de déduplication — tout ce qu'une exécution seule ne peut retenir.

Opérateur Propriétés 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? Ajoute amount atomiquement (défaut 1 ; négatif décrémente).
delete key, namespace? Supprime une valeur stockée.
list prefix?, namespace?, limit? Liste les clés, éventuellement filtrées par préfixe.
app.yaml
- name: bumpCounter
  type: state
  operator: increment
  props: { key: 'orders:{{trigger.data.record.region}}', namespace: metrics }

Les deux propriétés de portée optionnelles ont un format contraint, et une valeur hors format échoue au décodage plutôt qu'à l'exécution :

Propriété Format Valide Rejeté
namespace Kebab-case minuscule, commençant par une lettre. metrics, sync-state Metrics, my_ns
ttl Un nombre suivi de ms, s, m, h ou d. 30s, 24h 1 hour, 3600

Filter — Filtrage conditionnel

Un seul opérateur, qui décide si le flux se poursuit.

Opérateur Propriétés Description
continue condition, onFalse? Évalue un groupe de conditions ; si faux, stop (arrête l'exécution) ou skip (passe à l'action suivante). Par défaut stop.
app.yaml
- name: onlyPaid
  type: filter
  operator: continue
  props:
    condition:
      conditions:
        - field: '{{trigger.data.record.status}}'
          operator: equals
          value: paid
    onFalse: stop

C'est l'outil adapté pour restreindre un déclencheur qui ne sait pas se restreindre lui-même : un déclencheur auth s'active à chaque inscription, et une première étape filter/continue la ramène aux inscriptions qui vous intéressent. Préférez path/branch lorsque les deux issues doivent faire quelque chose.

Crypto — Hachage et HMAC

Déplacé vers Crypto et digest.

Digest — Regroupement et libération

Déplacé vers Crypto et digest.

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