Directus Automatisation : guide du développeur pour les flux en production
Directus Automatisation : guide du développeur pour les flux en production Directus Les flux sont le moteur d’automatisation intégré et piloté par les événements de la plateforme. Pour la plupart des orchestrations de contenu, des intégrations légères et des tâches en arrière-plan, ils constituent l’outil approprié.
Directus Flux : le moteur d’automatisation intégré de la plateforme pour réagir aux événements, recevoir des webhooks, exécuter des tâches planifiées et coordonner des workflows de courte durée. Ils conviennent parfaitement aux opérations de contenu, aux validations, aux notifications, aux intégrations sortantes, à l’enrichissement léger et aux actions administratives contrôlées.
Ils ne remplacent pas une solution générale pour les services applicatifs, les files d’attente durables ou les moteurs de workflow de longue durée. La décision importante en production n’est pas de savoir si un flux peut effectuer une tâche. Il s’agit de déterminer si le temps d’exécution, le comportement en cas d’échec, la frontière de sécurité, la gestion de l’état et la responsabilité opérationnelle de cette tâche correspondent à ce qu’un flux peut prendre en charge en toute sécurité.
Ce guide explique comment concevoir une automatisation Directus qui reste fiable au-delà de la démonstration : comment choisir les déclencheurs, gérer les autorisations, sécuriser les webhooks, éviter les effets de bord en double, surveiller les exécutions et reconnaître lorsqu’une extension personnalisée ou un worker externe constitue un meilleur choix architectural.
Directus Flux en production : aperçu
| Cas d’utilisation | Solution la plus adaptée | Pourquoi |
|---|---|---|
| Notifier une équipe lorsqu’un contenu est prêt à être révisé | Directus Flux | Courte durée, piloté par les événements et visible par les personnes non développeuses |
| Déclencher la reconstruction d’un site web après publication | Flux + webhook sortant sécurisé | Une intégration asynchrone simple avec des critères de réussite clairs |
| Valider ou transformer un élément avant son enregistrement | Flux avec filtre ou extension personnalisée | Utilisez un filtre uniquement lorsque le traitement est rapide et doit affecter la transaction |
| Traiter des fichiers volumineux ou des dizaines de milliers d’enregistrements | Worker de file d’attente ou service dédié | Nécessite une concurrence contrôlée, des nouvelles tentatives durables et un isolement des ressources |
| Attendre plusieurs jours une approbation externe ou une intervention humaine | Workflow applicatif ou orchestrateur externe | Un état de longue durée ne doit pas dépendre d’une seule exécution de flux |
| Réutiliser une logique propre au domaine dans plusieurs projets | Extension d’opération personnalisée ou service | Permet les tests, le versionnage, la réutilisation et une responsabilité mieux définie |
À quoi servent les Directus flux
Un flux associe un déclencheur à une suite d’opérations. Le déclencheur crée un contexte d’exécution, et chaque opération peut lire les données de la chaîne ou y ajouter des données au fur et à mesure de la progression de l’automatisation. Directus prend en charge les hooks d’événements, les webhooks, les planifications, les déclencheurs manuels et les déclencheurs de flux à flux.
Ce modèle est utile, car il maintient les automatisations métier courantes à proximité du contenu et du modèle de données. Une équipe éditoriale peut utiliser un déclencheur manuel pour approuver et publier du contenu. La mise à jour d’un enregistrement peut notifier une équipe chargée de la diffusion. Un flux planifié peut identifier les enregistrements obsolètes à réviser. Une requête sortante peut informer une plateforme frontend que le contenu publié a changé.
Pour les équipes qui utilisent Directus comme backend composable, les flux constituent un composant d’une architecture plus large de CMS et de plateforme de contenu. La base de données, les contrats d’API, le modèle de rôles, les workflows éditoriaux, le processus de diffusion frontend et les limites d’intégration doivent encore être conçus comme un système unique.
Choisir le déclencheur en fonction du risque transactionnel
Le déclencheur détermine le moment où un flux s’exécute, mais aussi la manière dont les échecs affectent les utilisateurs et les systèmes connectés. Choisissez-le en fonction de ce qui doit se produire avant qu’une transaction puisse se terminer, de ce qui peut se produire ensuite et de la personne ou du système responsable du lancement du traitement.
Hooks d’événements : utilisez les filtres avec parcimonie
Les hooks d’événements réagissent à des activités telles que la création, la mise à jour ou la suppression d’un élément. Directus distingue les hooks de filtrage et les hooks d’action :
- Les filtres s’exécutent avant la fin de la transaction avec la base de données. Ils peuvent modifier une charge utile ou empêcher une action de se poursuivre.
- Les actions s’exécutent après la fin de la transaction. Elles conviennent mieux aux notifications, aux intégrations en aval et aux tâches qui ne doivent pas bloquer un éditeur ou un client d’API.
Un filtre convient à une validation rapide et déterministe : empêcher, par exemple, la publication d’un article sans statut de révision requis. En revanche, il est déconseillé d’y placer des appels lents à des API externes, du traitement de documents ou toute opération susceptible d’échouer parce qu’un autre fournisseur passe une mauvaise journée.
Si un workflow n’a pas besoin de bloquer l’enregistrement de l’utilisateur, privilégiez une action. Cela sépare une défaillance opérationnelle de la transaction initiale de contenu ou de données et facilite la reprise.
Webhooks : considérez chaque appelant comme non fiable
Les flux déclenchés par webhook sont utiles lorsqu’un autre système doit lancer une opération dans Directus : une plateforme de commerce reçoit la confirmation d’un paiement, un outil de formulaires envoie un prospect ou une plateforme de déploiement signale l’état d’une compilation. Ils constituent également un point d’entrée exposé.
Ne vous fiez pas à une URL obscure comme mécanisme de contrôle. Exigez un mécanisme d’authentification, validez la requête entrante avant d’effectuer des effets de bord et gardez les identifiants hors des journaux et des notifications du flux. Selon le système appelant, cela peut prendre la forme d’un en-tête contenant un secret partagé, d’une vérification de signature, de restrictions d’adresse IP au niveau du réseau ou d’une passerelle qui authentifie la requête avant qu’elle n’atteigne Directus.
Pour une intégration qui écrit dans plusieurs systèmes métier, séparez le webhook entrant de l’étape de traitement durable. Le webhook doit accuser réception rapidement ; un processus worker ou un service d’intégration peut effectuer les tâches coûteuses et signaler l’état de manière asynchrone. C’est le même principe que celui qui sous-tend l’architecture d’intégration CRM : le système qui reçoit un événement ne doit pas devenir étroitement couplé à chaque dépendance en aval.
Planifications et déclencheurs manuels
Les planifications conviennent bien aux tâches récurrentes délimitées : un rappel nocturne, un contrôle qualité hebdomadaire ou une tâche de nettoyage assortie d’une politique de conservation claire. Elles ne justifient pas la création d’une boucle d’interrogation mal contrôlée vers un autre système.
Les déclencheurs manuels sont utiles lorsqu’un éditeur ou un administrateur doit effectuer explicitement une action, comme « envoyer pour approbation », « régénérer l’aperçu » ou « resynchroniser cet enregistrement ». Donnez au déclencheur un libellé précis, expliquez son effet dans l’interface et rendez l’action répétable sans danger lorsque c’est possible. Les bons workflows administratifs font partie d’une conception UX et d’une accessibilité, et ne sont pas qu’une simple tuyauterie backend.
Utilisez délibérément la chaîne de données
Chaque opération d’un flux Directus peut accéder à des valeurs contextuelles telles que $trigger, $accountability, $env, et $last. C’est pratique, mais c’est aussi à cet endroit que des flux autrement simples deviennent difficiles à déboguer.
$last contient le résultat de l’opération immédiatement précédente. Ce n’est pas un espace de stockage durable pour les variables. Si plusieurs étapes ultérieures ont besoin d’une valeur, stockez-la sous une clé nommée ou structurez-la dans une charge utile explicite avant d’effectuer une bifurcation. Un flux doit rendre ses entrées et ses sorties compréhensibles pour quelqu’un qui ne l’a pas créé.
Gardez les charges utiles réduites. Ne transmettez pas un enregistrement entier, un objet utilisateur complet ou un graphe relationnel volumineux à chaque webhook simplement parce que ces données sont disponibles. Envoyez l’identifiant et les champs dont le service en aval a réellement besoin, puis laissez ce service récupérer davantage de données via une API authentifiée si nécessaire. Cela réduit l’exposition accidentelle des données et rend les intégrations moins fragiles lorsque la collection évolue.
Opérations, scripts et extensions personnalisées
Les opérations intégrées couvrent les besoins courants : actions CRUD, conditions, transformations de charges utiles, notifications, requêtes sortantes, scripts et appel d’un autre flux. L’opération Exécuter le script est utile pour la transformation de données délimitée et la logique de décision, mais il ne s’agit volontairement pas d’un environnement d’exécution applicatif complet.
Si une tâche nécessite des dépendances de paquets, des connexions persistantes, une durée d’exécution prolongée, des tests complexes ou une logique métier réutilisable, créez une extension d’opération personnalisée ou déplacez la tâche dans un service dédié. C’est ici qu’une petite dose de rigueur d’ingénierie évite une prolifération importante des flux par la suite.
Une couche bien conçue de développement logiciel personnalisé peut assurer le traitement durable des files d’attente, les adaptateurs d’intégration, la transformation de documents, la validation métier et une limite d’API versionnée, tout en permettant aux Directus Flows de rester la couche d’orchestration visible.
Rendez chaque Flow sûr à relancer
Les automatisations en production échouent de façon ordinaire : un point de terminaison expire, un hook de déploiement renvoie une erreur 500, un utilisateur clique deux fois, deux mises à jour arrivent presque simultanément ou un worker redémarre en plein traitement. La fiabilité repose sur la décision de ce qui doit se passer ensuite avant que l’échec ne survienne.

Idempotence : éviter les effets de bord en double
Une opération est idempotente lorsque sa répétition produit le même résultat attendu au lieu de créer un nouvel effet de bord. Cela concerne tout Flow qui envoie un e-mail, démarre une compilation, crée un enregistrement dans un autre système, publie un message ou modifie un état lié à l’argent.
Utilisez si possible des identifiants stables provenant de l’enregistrement source. Par exemple, un système externe peut stocker un Directus ID d’élément et un type d’opération comme clé d’idempotence, en rejetant une requête en double au lieu de créer une seconde ressource. Pour les reconstructions de contenu, utilisez une stratégie de déploiement avec temporisation plutôt que de démarrer une nouvelle compilation à chaque petite modification.
Posez-vous cette question avant de publier un Flow : que se passe-t-il s’il s’exécute deux fois au cours de la même seconde ? Si la réponse est « cela dépend », le Flow nécessite une nouvelle phase de conception.
Évitez les déclencheurs récursifs
Un Flow déclenché par items.update peut facilement modifier le même élément et se déclencher à nouveau. Ne comptez pas sur la chance pour éviter cette boucle.
- Utilisez des conditions pour vérifier que le champ concerné a réellement changé.
- Utilisez un champ d’état ou de source dédié lorsqu’un Flow doit marquer un élément comme traité.
- Limitez un déclencheur de mise à jour à la collection et aux champs pertinents.
- Lorsque c’est possible, séparez les champs d’enrichissement des champs qui déclenchent le workflow.
Un champ tel que automation_processed_at peut être utile lorsqu’il enregistre un résultat métier significatif. N’ajoutez pas de marqueurs uniquement pour corriger une conception de déclencheur peu claire ; cela tend à créer un état auquel plus personne ne fait confiance six mois plus tard.
Attribuez un responsable aux échecs
Chaque requête sortante et chaque branche importante doivent avoir une issue explicite en cas d’échec. Il n’existe que quelques choix légitimes :
- Réessayer automatiquement lorsque l’erreur est temporaire et que l’opération peut être répétée sans danger.
- Transférer à un humain lorsque l’issue nécessite un jugement ou affecte un processus visible par le client.
- Enregistrer et continuer lorsque l’opération n’est pas critique et que l’entreprise accepte une exécution retardée ou manquante.
- Échouer de manière visible lorsque la poursuite laisserait le système dans un état dangereux ou trompeur.
« Le journal du Flow contient l’erreur » n’est pas une stratégie de récupération. Définissez qui reçoit une alerte, quelles informations cette personne doit avoir pour enquêter, comment elle peut rejouer ou corriger le traitement et si une action échouée doit être rapprochée du système source.
Revue d’architecture Directus
Un Flow est-il devenu critique pour votre activité ?
Nous pouvons vous aider à évaluer ses autorisations, ses chemins d’échec, la conception de ses déclencheurs, sa responsabilité opérationnelle et s’il doit appartenir à Directus ou être placé derrière un service dédié.
Découvrir les CMS et les plateformes de contenu → Parler à un ingénieur →
Utilisez la limite d’autorisation la plus restreinte qui fonctionne
Un Flow peut s’exécuter dans le contexte de l’utilisateur qui le déclenche ou dans un contexte de responsabilité configuré. Cette décision fait partie de votre modèle d’autorisation.
Pour les actions éditoriales, hériter du contexte de l’utilisateur déclencheur peut être utile : le Flow respecte les autorisations de la personne qui l’a initié et crée une piste d’audit compréhensible. Pour les webhooks externes ou les tâches opérationnelles planifiées, utilisez un compte de service dédié avec les privilèges minimaux nécessaires. N’exécutez pas chaque intégration avec un compte administrateur étendu par simple commodité.
Examinez ces contrôles pour chaque Flow en production :
- Quel rôle ou compte de service effectue chaque opération ?
- Cette identité peut-elle lire ou modifier uniquement les collections et les champs dont elle a besoin ?
- Les clés API, secrets partagés et hooks de déploiement sont-ils stockés dans des variables d’environnement ou dans un système de gestion des secrets ?
- Les journaux des Flows peuvent-ils exposer des données personnelles, des jetons d’accès ou des informations client sensibles ?
- L’appelant du webhook est-il authentifié avant la création d’un enregistrement ou le début d’une action externe ?
Pour les organisations qui connectent Directus à des services d’IA, des processeurs de documents ou des systèmes de connaissances, maintenez une limite d’autorisation tout aussi explicite. Un assistant de contenu ne devrait recevoir que les documents nécessaires à sa tâche et ne devrait pas bénéficier d’un accès administratif sans restriction simplement pour résumer ou classer du contenu. Notre développement et notre automatisation de l’IA suivent le même principe : une automatisation utile nécessite une limite de données étroite et vérifiable.
Traitez les journaux comme un produit opérationnel
Les journaux d’exécution des Flows sont précieux pour le débogage, car ils affichent les données de déclenchement, les résultats des opérations et les erreurs. Ce sont également des données stockées dans votre base de données, qui peuvent contenir des informations que vous ne souhaiteriez pas conserver indéfiniment.
Définissez une politique de conservation avant que le volume d’exécution ne prenne la décision à votre place. La durée de conservation appropriée dépend des besoins de dépannage, du budget de stockage, de la sensibilité des données et des exigences commerciales ou réglementaires applicables. Testez soigneusement le nettoyage : vous devez supprimer les anciens enregistrements d’exécution sans effacer les informations nécessaires à la résolution d’un incident en cours.
L’observabilité en production doit aller au-delà de « le Flow s’est-il exécuté ? » Suivez l’état métier qui compte :
- Combien d’enregistrements sont entrés dans le workflow ?
- Combien ont été traités avec succès ?
- Combien nécessitent une vérification humaine ou une correction manuelle ?
- Combien de temps les automatisations importantes prennent-elles entre le déclenchement et le résultat ?
- Quelle dépendance externe est à l’origine du plus grand nombre d’exécutions échouées ou retardées ?
Pour les plateformes de contenu, cela peut signifier surveiller le nombre d’événements de publication qui déclenchent correctement une reconstruction du frontend. Pour un workflow e-commerce, il peut s’agir de comparer les commandes reçues aux commandes correctement envoyées à l’ERP. Le principe est le même que pour l’automatisation des commandes clients : la réussite technique ne suffit pas si le résultat métier attendu ne se produit jamais.
Déployez les Flows comme du code applicatif
Les Flows contiennent souvent une véritable logique métier : décisions de routage, intégrations, règles de publication et opérations sensibles du point de vue des autorisations. Les traiter comme une configuration de production non suivie constitue un risque évitable.
Au minimum, établissez un processus reproductible pour :
- Conception. Consignez le déclencheur, les autorisations, la charge utile d’entrée, les sorties attendues, le comportement en cas d’échec, le responsable et la stratégie de restauration.
- Test. Utilisez un projet de préproduction avec des données représentatives et de vrais scénarios d’échec — pas uniquement le parcours nominal.
- Vérification. Demandez à une personne autre que l’auteur d’examiner les autorisations, le risque de récursion, l’exposition de la charge utile et les effets secondaires externes.
- Déploiement. Faites passer la configuration du Flow entre les environnements au moyen d’un processus de déploiement réfléchi, plutôt que de la reconstruire manuellement en production.
- Exploitation. Tenez à jour un runbook pour les alertes, le retraitement, les modes de défaillance connus et les changements de responsabilité.
Cette discipline devient particulièrement importante lorsqu’un projet Directus constitue un élément d’une architecture composable. Un frontend, un entrepôt de données, un index de recherche, un CRM et un portail client peuvent tous dépendre de la stabilité du modèle de contenu et du comportement des événements. Si le périmètre dépasse quelques Flows simples, le conseil logiciel et l’accompagnement au déploiement peuvent contribuer à mettre en place l’architecture et le modèle d’exploitation avant que la plateforme ne devienne difficile à modifier.
Quand utiliser un worker de file d’attente ou un service externe à la place
Déplacez le traitement hors d’un Flow lorsque ses exigences de fiabilité dépassent celles d’une tâche d’orchestration de courte durée. Un worker ou un service dédié convient généralement mieux lorsque vous avez besoin de :
- Traitement de longue durée ou intensif en CPU
- Files d’attente durables et concurrence contrôlée
- Importations, exportations ou traitement de fichiers par lots volumineux
- Politiques complexes de nouvelle tentative, limitation du débit et gestion des files d’attente de lettres mortes
- État de workflow persistant, par exemple lorsqu’une approbation est attendue pendant plusieurs jours
- Tests automatisés approfondis et gestion des versions de publication
- Logique métier réutilisable partagée par plusieurs applications

La bonne réponse est souvent hybride : Directus gère les déclencheurs éditoriaux et de modification des données, un service s’appuyant sur une file d’attente effectue les tâches lourdes ou peu fiables, et Directus reçoit une mise à jour du statut lorsque la tâche est terminée. Le workflow reste ainsi visible pour les équipes chargées du contenu et des opérations, sans prétendre que le CMS devrait être une plateforme de traitement des tâches.
C’est aussi pourquoi le débat « sans code contre développement personnalisé » est généralement mal posé. La question pratique est de savoir où chaque responsabilité doit être assumée. Notre guide des outils d’automatisation des workflows métier couvre le compromis plus large entre l’automatisation packagée, les plateformes d’intégration et les systèmes sur mesure.
Directus Checklist de production des Flows
- Déclencheur : Le type de déclencheur est-il approprié et évite-t-il de bloquer inutilement une transaction utilisateur ?
- Autorisations : Le Flow utilise-t-il, lorsque nécessaire, une identité dédiée dotée du principe du moindre privilège ?
- Sécurité : Les webhooks sont-ils authentifiés et les secrets stockés en dehors de la définition du Flow ?
- Charge utile : Chaque système externe reçoit-il uniquement les champs dont il a besoin ?
- Idempotence : Les opérations importantes peuvent-elles être exécutées deux fois sans effets secondaires en double ?
- Récursion : La mise à jour d’un élément peut-elle déclencher à nouveau son propre Flow et, si oui, comment cela est-il empêché ?
- Comportement en cas d’échec : Les nouvelles tentatives, alertes, vérifications manuelles et décisions de rapprochement sont-elles explicites ?
- Observabilité : L’équipe peut-elle voir à la fois les défaillances techniques et les résultats métier ?
- Conservation : Existe-t-il une politique testée pour les journaux d’exécution et les données sensibles des charges utiles ?
- Responsabilité : Un runbook indique-t-il qui intervient lorsque l’automatisation échoue ?
Directus Une automatisation qui ne devient pas un système mystérieux
Directus Les Flows sont puissants, car ils permettent aux équipes d’automatiser le travail au plus près du contenu et du modèle de données. Cette même commodité devient un handicap si une logique critique s’accumule sans autorisations, tests, documentation ou responsabilité opérationnelle clairement définis.
Ridiculous Engineering aide les équipes à concevoir et à développer des plateformes basées sur Directus faciles à exploiter : modèles de contenu, workflows, intégrations, extensions personnalisées, diffusion frontend et pratiques d’ingénierie associées qui assurent la fiabilité du système après son lancement. Nous pouvons vous aider que vous mettiez Directus en œuvre pour la première fois, que vous démêliez une collection existante de Flows ou que vous cherchiez à déterminer où établir la limite entre l’automatisation native et les services personnalisés.
Directus Implémentation et automatisation
Besoin de plus que « simplement ajouter un autre Flow » ?
Apportez-nous le workflow qui pose problème. Nous vous aiderons à cartographier le déclencheur, les données, les scénarios d’échec et la limite d’ingénierie nécessaires pour le rendre fiable.
Découvrir Directus et les plateformes de contenu → Entamer la discussion →
FAQ
À quoi sert Directus ?
Directus est une plateforme de données et de contenu qui fournit des API et une interface d’administration au-dessus d’une base de données. Les équipes l’utilisent comme CMS headless, backend d’opérations internes, plateforme de contenu et couche d’intégration. Les Directus Flows ajoutent une automatisation pilotée par les événements pour les workflows, les notifications, les planifications et les systèmes connectés.
Quand dois-je utiliser un Directus Flow ?
Utilisez un Directus Flow pour les tâches courtes et pilotées par les événements, proches de votre modèle de données Directus : approbations de contenu, notifications, webhooks simples, nettoyage planifié, actions administratives manuelles et enrichissement léger des enregistrements. Utilisez un service dédié ou un worker de file d’attente pour les tâches longues, exigeantes en calcul, à fort volume ou nécessitant un état persistant.
Comment éviter les déclenchements récursifs dans les Directus Flows ?
Limitez les déclencheurs de mise à jour à la collection et aux champs concernés, ajoutez des conditions confirmant que le champ pertinent a réellement changé et évitez de mettre à jour le même élément depuis un Flow, sauf si cette mise à jour est délibérément protégée. Un champ d’état de traitement explicite peut être utile lorsque le workflow doit enregistrer son résultat.
Est-il prudent de conserver indéfiniment les journaux des Directus Flows ?
Non. Les journaux des Flows consomment de l’espace de stockage de la base de données et peuvent contenir des informations sur le déclencheur ou la charge utile qui ne devraient pas être conservées indéfiniment. Définissez une politique de conservation fondée sur les besoins opérationnels, la sensibilité des données et les exigences de conformité, puis testez le processus de nettoyage.
Les Directus Flows peuvent-ils appeler des API externes ?
Oui. Les opérations de requête sortante ou de webhook peuvent appeler des API externes. Définissez des délais d’expiration, authentifiez les requêtes, gérez explicitement les réponses non positives, réduisez la charge utile au minimum et concevez l’opération pour tolérer les nouvelles tentatives sans créer d’effets secondaires en double.
Sources
- Documentation Directus : Flows
- Documentation Directus : Opérations
- Documentation Directus : Options de configuration