Scrydon

Workflow

Exécutez d'autres workflows comme composants réutilisables au sein de votre workflow actuel

Le bloc Workflow vous permet d'exécuter d'autres workflows comme composants réutilisables au sein de votre workflow actuel. Cette fonctionnalité puissante favorise la conception modulaire, la réutilisation du code et la création de workflows imbriqués complexes composés de workflows plus petits et ciblés.

Workflow Block

Les blocs Workflow favorisent la conception modulaire en vous permettant de composer des workflows complexes à partir de composants plus petits et réutilisables.

Vue d'ensemble

Le bloc Workflow sert de pont entre les workflows, vous permettant de :

Réutiliser des workflows existants : exécuter des workflows déjà créés comme composants au sein de nouveaux workflows

Créer des conceptions modulaires : décomposer des processus complexes en workflows plus petits et gérables

Maintenir la séparation des responsabilités : isoler les différentes logiques métier dans des workflows distincts

Faciliter la collaboration en équipe : partager et réutiliser des workflows entre différents projets et membres d'équipe

Fonctionnement

Le bloc Workflow :

  1. Prend une référence vers un autre workflow de votre espace de travail
  2. Transmet les données d'entrée du workflow actuel au workflow enfant
  3. Exécute le workflow enfant dans un contexte isolé
  4. Renvoie les résultats au workflow parent pour un traitement ultérieur

Options de configuration

Sélection du workflow

Choisissez le workflow à exécuter depuis une liste déroulante des workflows disponibles dans votre espace de travail. La liste inclut :

  • Tous les workflows auxquels vous avez accès dans l'espace de travail actuel
  • Les workflows partagés avec vous par d'autres membres de l'équipe
  • Les workflows activés et désactivés (seuls les workflows activés peuvent être exécutés)

Données d'entrée

Définissez les données à transmettre au workflow enfant :

  • Entrée à variable unique : sélectionnez une variable ou une sortie de bloc à passer au workflow enfant
  • Références de variables : utilisez <variable.name> pour référencer les variables du workflow
  • Références de blocs : utilisez <blockName.field> pour référencer les sorties des blocs précédents
  • Correspondance automatique : les données sélectionnées sont automatiquement disponibles sous start.input dans le workflow enfant
  • Optionnel : le champ d'entrée est facultatif — les workflows enfants peuvent s'exécuter sans données d'entrée
  • Préservation des types : les types de variables (chaînes, nombres, objets, etc.) sont préservés lors de leur transmission au workflow enfant

Accéder aux résultats

Après l'exécution d'un workflow, vous pouvez accéder à ses sorties :

  • <workflow.response> : la sortie complète du workflow enfant
  • <workflow.name> : le nom du workflow enfant exécuté
  • <workflow.success> : booléen indiquant la réussite de l'exécution
  • <workflow.error> : détails de l'erreur si le workflow a échoué
  • <workflow.execution_time> : temps d'exécution du workflow

Contexte d'exécution

Le workflow enfant s'exécute avec :

  • Son propre contexte d'exécution isolé
  • Accès aux mêmes ressources de l'espace de travail (clés API, variables d'environnement)
  • Vérifications appropriées de l'appartenance à l'espace de travail et des permissions
  • Journalisation et monitoring indépendants

Sécurité et limitations

Pour prévenir la récursion infinie et garantir la stabilité du système, le bloc Workflow inclut plusieurs mécanismes de sécurité :

Détection des cycles : le système détecte et prévient automatiquement les dépendances circulaires entre workflows afin d'éviter les boucles infinies.

  • Limite de profondeur maximale : les workflows imbriqués sont limités à une profondeur maximale de 10 niveaux
  • Détection des cycles : détection et prévention automatiques des dépendances circulaires entre workflows
  • Protection contre les délais d'expiration : les workflows enfants héritent des paramètres de délai d'expiration pour éviter une exécution indéfinie
  • Limites de ressources : des limites de mémoire et de temps d'exécution s'appliquent pour prévenir l'épuisement des ressources

Fonctionnalités avancées

Sélection dynamique de workflow

Sélectionnez des workflows dynamiquement en fonction des conditions d'exécution :

// In a Function block before the Workflow block
const workflowId = <condition.result> ? 'premium-workflow' : 'standard-workflow';
return { selectedWorkflow: workflowId };

Gestion des erreurs et mécanismes de repli

Implémentez une gestion robuste des erreurs pour les workflows enfants :

// In a Function block after the Workflow block
if (!<workflow.success>) {
  console.error('Child workflow failed:', <workflow.error>);
  // Implement fallback logic
  return { fallback: true, error: <workflow.error> };
}
return <workflow.response>;

Chaînage de workflows

Chaînez plusieurs workflows ensemble :

// Pass output from one workflow to another
Workflow 1 Input: <start.input>
Workflow 2 Input: <workflow1.response>
Workflow 3 Input: <workflow2.response>

Entrées et sorties

  • Sélection du workflow : choisissez quel workflow exécuter

  • Données d'entrée : référence de variable ou de bloc à passer au workflow enfant

  • Contexte d'exécution : environnement isolé avec les ressources de l'espace de travail

  • workflow.response : sortie complète du workflow enfant

  • workflow.name : nom du workflow enfant exécuté

  • workflow.success : booléen indiquant le statut d'achèvement

  • workflow.error : détails de l'erreur si le workflow a échoué

  • workflow.execution_time : temps d'exécution

  • Réponse du workflow : sortie principale du workflow enfant

  • Statut d'exécution : statut de réussite et informations sur les erreurs

  • Accès : disponible dans les blocs situés après le workflow

Exemples d'utilisation

Onboarding client modulaire

Scénario : décomposer un onboarding complexe en composants réutilisables

  1. Le workflow principal reçoit les données client
  2. Le bloc Workflow exécute le workflow de validation
  3. Le bloc Workflow exécute le workflow de création de compte
  4. Le bloc Workflow exécute le workflow d'e-mail de bienvenue

Architecture microservices

Scénario : créer des workflows de service indépendants

  1. Le workflow de traitement des paiements gère les transactions
  2. Le workflow de gestion des stocks met à jour les niveaux
  3. Le workflow de notification envoie les confirmations
  4. Le workflow principal orchestre tous les services

Traitement conditionnel

Scénario : exécuter différents workflows selon les conditions

  1. Le bloc Condition évalue le type d'utilisateur
  2. Utilisateurs entreprise → Workflow d'approbation complexe
  3. Utilisateurs standard → Workflow d'approbation simple
  4. Utilisateurs gratuits → Workflow de traitement de base

Exemple : Workflow de validation client

validation-workflow.js
// Main workflow passes customer data to validation workflow
const customerData = <start.input>;

// Validation workflow processes the data
const emailValid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(customerData.email);
const phoneValid = /^\+?[1-9]\d{1,14}$/.test(customerData.phone);

return {
  customer: customerData,
  validation: {
    email: emailValid,
    phone: phoneValid,
    overall: emailValid && phoneValid
  }
};

Bonnes pratiques

  • Gardez les workflows ciblés : concevez les workflows enfants pour gérer des tâches spécifiques et bien définies avec des entrées et sorties claires
  • Minimisez la profondeur d'imbrication : évitez les hiérarchies de workflows profondément imbriquées pour une meilleure maintenabilité et de meilleures performances
  • Gérez les erreurs avec élégance : implémentez une gestion appropriée des erreurs pour les échecs des workflows enfants et prévoyez des mécanismes de repli
  • Documentez les dépendances : documentez clairement quels workflows dépendent d'autres et maintenez des cartes de dépendances
  • Testez de manière indépendante : assurez-vous que les workflows enfants peuvent être testés et validés indépendamment des workflows parents
  • Surveillez les performances : sachez que les workflows imbriqués peuvent avoir un impact sur le temps d'exécution total et l'utilisation des ressources
  • Utilisez des noms sémantiques : donnez aux workflows des noms descriptifs qui indiquent clairement leur objet et leur fonctionnalité
Sur cette page

Sur cette page