Nœuds d'action
Nœuds non-LLM programmatiques pour des opérations de flux de travail déterministes. Les nœuds d'action complètent les LLM agents en gérant la transformation de données, les API intégrations, le flux de contrôle et la logique d'automatisation.
Aperçu
Les nœuds d'action sont visuellement distincts des LLM nœuds d'agent — ils utilisent des couleurs et des icônes uniques pour faciliter la lecture des flux de travail. Chaque type de nœud gère une catégorie d'opération spécifique, des HTTP requêtes aux requêtes de base de données en passant par le branchement conditionnel.
Tous les nœuds d'action partagent un ensemble de propriétés standard pour la gestion des erreurs, le traçage, le contrôle d'exécution et le mappage d'E/S. Ils prennent en charge l'{{variable}} interpolation dans les champs de chaîne et reçoivent automatiquement les sorties des nœuds prédécesseurs.

Nœuds disponibles
| Nœud | Icône | Couleur | Description |
|---|---|---|---|
| Déclencheur | 🎯 | Indigo | Point d'entrée du workflow (manuel, webhook, planification, événement) |
| HTTP | 🌐 | Bleu | Effectue des requêtes HTTP vers des APIs externes |
| Définir | 📝 | Violet | Définir et manipuler les variables d'état du workflow |
| Transformer | ⚙️ | Rose | Transformer les données à l'aide d'expressions ou d'opérations intégrées |
| Commutateur | 🔀 | Ambre | Branchement conditionnel basé sur des conditions |
| Boucle | 🔄 | Émeraude | Itérer sur des tableaux ou répéter des opérations |
| Fusionner | 🔗 | Cyan | Combiner plusieurs branches en un seul flux |
| Attendre | ⏱️ | Gray | Mettre en pause le flux de travail pour une durée ou une condition |
| Code | 💻 | Red | Exécuter JavaScript personnalisé dans un environnement d'exécution sandboxé |
| Base de données | 🗄️ | Teal | Opérations de base de données (PostgreSQL, MySQL, SQLite, MongoDB, Redis) |
| 📧 | Rose | Envoyer des e-mails via SMTP ou surveiller via IMAP | |
| Notification | 🔔 | Orange | Envoyer vers Slack, Discord, Teams, ou des webhooks |
| RSS | 📡 | Lime | Surveiller les flux RSS/Atom pour de nouvelles entrées |
| Fichier | 📁 | Sky | Opérations de fichier sur le stockage local ou cloud (S3, GCS, Azure) |
Propriétés standard
Chaque nœud d'action hérite de ces propriétés partagées :
Identité
| Propriété | Type | Rôle |
|---|---|---|
id | string | Identifiant unique |
name | string | Nom d'affichage |
description | string? | Description optionnelle de l'info-bulle |
Gestion des erreurs
| Mode | Comportement |
|---|---|
stop | Arrêter le workflow en cas d'erreur (par défaut) |
continue | Enregistrer l'erreur et passer au nœud suivant |
retry | Réessayer avec un nombre configurable (1-10) et un délai (ms) |
fallback | Utiliser une valeur de repli en cas d'erreur |
Traçage
| Propriété | Type | Rôle |
|---|---|---|
enabled | boolean | Activer les traces d'exécution détaillées |
logLevel | none | error | info | debug | Niveau de verbosité des logs |
Contrôle d'exécution
| Propriété | Type | Rôle |
|---|---|---|
timeout | number | Délai d'attente en ms (par défaut : 30000) |
condition | string? | Ignorer le nœud si l'expression est évaluée à faux |
Mappage Entrée/Sortie
| Propriété | Type | Rôle |
|---|---|---|
inputMapping | Record<string, string>? | Mappe les champs d'état aux entrées du nœud |
outputKey | string | Clé où le résultat est stocké dans l'état du workflow |
Référence des Nœuds
Nœud Déclencheur 🎯
Point d'entrée du workflow. Chaque workflow commence par un nœud déclencheur. Consultez le Guide des Déclencheurs dédié pour plus de détails.
| Type de déclencheur | Description |
|---|---|
| Manuel | Initiée par l'utilisateur via une entrée de chat |
| Webhook | HTTP endpoint (POST/GET) avec authentification optionnelle |
| Planification | Synchronisation basée sur Cron avec prise en charge des fuseaux horaires |
| Événement | Événements de système externe avec filtrage JSONPath |
HTTP Node 🌐
Effectue HTTP des requêtes vers des APIs externes avec une gestion complète de l'authentification, des en-têtes, du corps et de la réponse.
Configuration :
| Propriété | Type | Rôle |
|---|---|---|
method | GET, POST, PUT, PATCH, DELETE | Méthode HTTP |
url | string | URL avec interpolation {{variable}} |
auth | objet | Authentification (aucune, bearer, basic, api_key) |
headers | Record<string, string> | En-têtes de requête |
body | objet | Corps (aucun, json, formulaire, brut) |
response | objet | Gestion de la réponse (json, texte, binaire) avec extraction JSONPath optionnelle |
rateLimit | objet ? | Limitation de débit (requêtes par fenêtre) |
Exemple :
{
"type": "http",
"name": "Fetch User Data",
"method": "GET",
"url": "https://api.example.com/users/{{userId}}",
"auth": {
"type": "bearer",
"bearer": { "token": "{{API_TOKEN}}" }
},
"headers": { "Accept": "application/json" },
"body": { "type": "none" },
"response": { "type": "json", "jsonPath": "$.data" },
"errorHandling": { "mode": "retry", "retryCount": 3, "retryDelay": 1000 },
"mapping": { "outputKey": "userData" }
}
Nœud Set 📝
Définit et manipule les variables d'état du workflow. Prend en charge les valeurs littérales, les expressions et les secrets.
Configuration :
| Propriété | Type | Rôle |
|---|---|---|
mode | set, merge, delete | Opération sur les variables |
variables | Variable[] | Liste des variables à définir |
envVars | object? | Charger depuis le fichier .env avec un filtre de préfixe optionnel |
Types de variables : string, number, boolean, json, expression
Les variables marquées isSecret: true sont masquées dans les journaux et l'interface utilisateur.
Nœud de transformation ⚙️
Transforme les données à l'aide d'expressions ou d'opérations intégrées.
Types de transformations :
| Type de valeur | Rôle |
|---|---|
jsonpath | Expression JSONPath |
jmespath | Expression JMESPath |
template | Modèle de chaîne avec interpolation |
javascript | JavaScript expression |
Opérations intégrées : pick, omit, rename, flatten, sort, unique
Cibles de conversion de type : string, number, boolean, array, object
Nœud Switch 🔀
Branchement conditionnel avec plusieurs ports de sortie. Chaque condition correspond à un port de sortie distinct sur le nœud.

Configuration :
| Propriété | Type | Rôle |
|---|---|---|
evaluationMode | first_match | all_match | Arrêter à la première correspondance ou tout évaluer |
conditions | SwitchCondition[] | Liste de conditions avec des ports de sortie |
defaultBranch | string? | Port de sortie lorsqu'aucune condition ne correspond |
Opérateurs de condition : eq, neq, gt, lt, gte, lte, contains, startsWith, endsWith, matches, in, empty, exists
Exemple :
{
"type": "switch",
"evaluationMode": "first_match",
"conditions": [
{ "id": "ok", "name": "Success", "field": "status", "operator": "eq", "value": "success", "outputPort": "success" },
{ "id": "err", "name": "Error", "field": "status", "operator": "eq", "value": "error", "outputPort": "error" }
],
"defaultBranch": "unknown"
}
Nœud de boucle 🔄
Itère sur des tableaux, se répète un nombre fixe de fois, ou boucle tant qu'une condition est remplie.
Types de boucles :
| Type de valeur | Rôle |
|---|---|
forEach | Itérer sur un tableau à partir de l'état |
while | Boucler tant que la condition est vraie |
times | Répéter N fois |
Exécution parallèle : Activer parallel.enabled avec les options batchSize et delayBetween pour une itération concurrente.
Agrégation des résultats : Lorsque results.collect est vrai, les résultats de l'itération sont collectés dans un tableau sous results.aggregationKey.
Nœud de fusion 🔗
Combine plusieurs branches parallèles en un seul flux. Possède plusieurs ports d'entrée.
Modes de fusion :
| Mode | Comportement |
|---|---|
wait_all | Attend toutes les branches entrantes |
wait_any | Continue lorsque la première branche est terminée |
wait_n | Continuer après N embranchements terminés |
Combiner les stratégies : array, object, first, last
Délai d'attente optionnel avec continue ou error comportement.
Nœud d'attente ⏱️
Met en pause l'exécution du workflow.
Types d'attente :
| Type de valeur | Rôle |
|---|---|
fixed | Attendre une durée fixe (ms, s, m, h) |
until | Attendre jusqu'à un horodatage spécifique |
webhook | Attendre un webhook entrant |
condition | Vérifier une condition à intervalles réguliers |
Code Node 💻
Exécute du code personnalisé JavaScript dans un environnement d'exécution isolé boa_engine. L'état du graphe est injecté en tant qu'objet global input.
Configuration :
| Propriété | Type | Rôle |
|---|---|---|
language | javascript, typescript | Langage du code |
code | string | Code à exécuter |
sandbox | objet | Limites de sécurité (réseau, système de fichiers, mémoire, temps) |
Paramètres par défaut du bac à sable :
| Limite | Défaut |
|---|---|
| Accès réseau | faux |
| Accès au système de fichiers | faux |
| Limite de mémoire | 128 MB |
| Limite de temps | 5000 ms |
Nœud de base de données 🗄️
Effectue des opérations de base de données avec un pool de connexions et des requêtes paramétrées.
Bases de données prises en charge :
| Base de données | Pilote | Fonctionnalités |
|---|---|---|
| PostgreSQL | sqlx (postgres) | Pool asynchrone, requêtes paramétrées, ligne-à-JSON |
| MySQL | sqlx (mysql) | Pool asynchrone, requêtes paramétrées, ligne-à-JSON |
| SQLite | sqlx (sqlite) | Pool asynchrone, requêtes paramétrées, ligne vers JSON |
| MongoDB | mongodb | BSON natif, rechercher/insérer/mettre à jour/supprimer |
| Redis | redis | GET, SET, DEL, HGET, HSET, LPUSH, LRANGE |
Les chaînes de connexion sont traitées comme des secrets et masquées dans les journaux.
Nœud Email 📧
Envoyez des e-mails via SMTP ou surveillez les e-mails entrants via IMAP.
Mode d'envoi (SMTP) :
- Prise en charge TLS/SSL
- Authentification
- Destinataires À/CC/BCC
- Corps HTML ou texte brut
- Interpolation
{{variable}}dans l'objet et le corps - Pièces jointes à partir de l'état
Mode de surveillance (IMAP) :
- Sélection de dossier (par défaut : INBOX)
- Filtres : expéditeur, objet, plage de dates, non lus uniquement
- Marquer comme lu après traitement
Nœud de Notification 🔔
Envoie des notifications aux plateformes de messagerie.
Canaux : Slack, Discord, Microsoft Teams, webhook personnalisé
Formats de message : texte brut, markdown, blocs spécifiques à la plateforme (Block Kit, Embeds, Adaptive Cards)
Nœud RSS 📡
Surveille les flux RSS/Atom pour les nouvelles entrées.
- Intervalle d'interrogation configurable
- Filtres par mot-clé, auteur, catégorie et date
- Suivi des éléments vus pour éviter les doublons
- Contenu complet ou résumé uniquement (optionnel)
Nœud de Fichier 📁
Opérations de fichier sur le stockage local ou cloud.
Opérations : lire, écrire, supprimer, lister
Fournisseurs cloud : Amazon S3, Google Cloud Storage, Azure Blob Storage
Formats de fichier : JSON, CSV, XML, texte, binaire (avec options d'analyse CSV pour le délimiteur, les en-têtes, les guillemets)
Interpolation de Variables
Tous les champs de chaîne dans les nœuds d'action supportent la syntaxe {{variable}} pour les valeurs dynamiques :
https://api.example.com/users/{{userId}}
Bearer {{API_TOKEN}}
Hello {{user.name}}, your order {{orderId}} is ready.
Les variables sont résolues à partir de l'état du workflow au moment de l'exécution. La notation par points (user.name) accède aux valeurs imbriquées.
Nœuds Multi-Ports
Deux types de nœuds ont des nombres de ports dynamiques :
- Switch — un port de sortie par condition, plus un port par défaut optionnel
- Merge — plusieurs ports d'entrée, un par branche entrante
Ces ports sont représentés visuellement sur le nœud et se connectent à différents nœuds en aval/amont.
Génération de Code
Les nœuds d'action compilent en code Rust de production aux côtés des LLM agents. Les dépendances sont auto-détectées et ajoutées au Cargo.toml généré.
| Nœud | Crate | Ce qu'il génère |
|---|---|---|
| HTTP | reqwest | Requêtes HTTP asynchrones avec authentification, en-têtes, corps, extraction JSONPath |
| Base de données | sqlx / mongodb / redis | Pools de connexions, requêtes paramétrées, commandes Redis |
| Courriel | lettre / imap | SMTP envoi avec TLS; surveillance IMAP avec filtres de recherche |
| Code | boa_engine | Exécution embarquée de JavaScript avec l'état du graphe comme objet input |
| Définir | natif | Affectation de variable (littéral, expression, secret) |
| Transformer | natif | Mapper, filtrer, trier, réduire, aplatir, grouper, sélectionner, fusionner, modèle |
| Fusion | natif | Combinaison de branches (waitAll, waitAny, append) |
Tout le code généré utilise adk-graph FunctionNode closures avec GraphError::NodeExecutionFailed pour la gestion des erreurs.
Exemple de code généré (HTTP node) :
let http_node = FunctionNode::new("fetch_data", |ctx| async move {
let client = reqwest::Client::new();
let resp = client.get("https://api.example.com/data")
.bearer_auth(&ctx.get("API_TOKEN").unwrap_or_default())
.send().await
.map_err(|e| GraphError::NodeExecutionFailed {
node: "fetch_data".into(),
message: e.to_string(),
})?;
let body: serde_json::Value = resp.json().await?;
Ok(NodeOutput::new().with_update("apiData", body))
});
Exemple de code généré (Code node) :
let code_node = FunctionNode::new("process", |ctx| async move {
let mut js_ctx = boa_engine::Context::default();
// Graph state injected as global `input` object
// User code executed in thread-isolated sandbox
Ok(NodeOutput::new().with_update("result", output))
});
Précédent : ← Studio | Suivant : Triggers →