Skip to content

Appeler un workflow ​

Exécute un autre workflow publié, avec les données de cette exécution. En mode « attendre », sa sortie devient celle du nœud.

Le nœud Appeler un workflow exécute un autre workflow publié. Il permet d’écrire une routine une fois, par exemple un accusé de réception ou une recherche de contact, et de la réutiliser depuis plusieurs workflows au lieu de la dupliquer. Le workflow appelé est référencé par son identifiant : le renommer, ou renommer ses nœuds, ne casse rien côté appelant.

Appeler un workflow : attendre l’enfant, ou lancer sans attendreLe nœud Appeler un workflow du workflow A lance une exécution enfant du workflow B, qui doit être publié et commencer par Appelé par un workflow. B reçoit les données de travail de A sous data.input, et le mail déclencheur de A s’il y en a un. En mode Attendre la fin, l’étape de A attend ; quand l’enfant se conclut, ses données deviennent data.<appel>.output, et un enfant en échec fait échouer l’étape appelante. Après l’attente maximale (60 minutes par défaut), A reprend avec le statut timeout. En mode Lancer et continuer, A continue tout de suite. Les appels s’enchaînent sur trois niveaux au plus, et un cycle d’appels est refusé.Workflow AWorkflow B (publié)Appeler un workflowworkflow.callÉtape suivante{{ data.call.output.…}}Appelé par unworkflowdata.input + même mailÉtapes de Blance uneexécution enfant« Attendre la fin » : enfantconclu, ou délai dépassé« Lancer et continuer » :tout de suite
Appeler un workflow : attendre l’enfant, ou lancer sans attendre

Le workflow appelé doit être publié et commencer par le déclencheur Appelé par un workflow. Il reçoit toutes les données de travail de l’appelant sous {{ data.input }}, par exemple {{ data.input.<étape appelante>.montant }}, et il conserve le mail déclencheur de l’appelant : {{ email.subject }} y fonctionne donc aussi. Il s’exécute pour le même membre et dans le même mode : un test appelle un test.

Deux modes sont proposés :

  • Attendre la fin (wait) : l’exécution appelante se suspend jusqu’à la fin de l’exécution appelée, puis continue par main. Ce que le workflow appelé a produit devient {{ data.<step>.output }}.
  • Lancer et continuer (fireAndForget) : le workflow appelé part de son côté et l’appelant continue aussitôt. Son issue n’est visible que dans ses propres exécutions.

En bref ​

  • Type : workflow.call · version 1
  • Catégorie : Logique
  • Nature : Étape — s’exécute pendant une exécution
  • Effet : Sans effet externe (none) — rien n’est écrit hors de Loop & Roll ; rejouable sans risque
  • Exige un mail porteur : Non
  • Connexion : Aucune
  • Entrées : main
  • Sorties : main
Les ports de « Appeler un workflow » : ce qui entre à gauche, ce qui sort à droiteEntrée : main. Sorties : main. Une sortie error apparaît quand son réglage d’échec est « Suivre la sortie Erreur ».Appeler un workflowworkflow.callmainmainerror · seulement avec « Suivre la sortie Erreur »
Les ports de « Appeler un workflow » : ce qui entre à gauche, ce qui sort à droite

Paramètres ​

workflowId ​

Workflow à appeler — Le workflow cible, choisi dans la liste. Il doit être publié et son déclencheur doit être « Appelé par un autre workflow ».

  • Type : Texte (string)
  • Requis : Oui
  • Défaut : "" (vide)
  • 128 caractères au plus
  • Expressions : {{ }} refusé

mode ​

Mode

  • Type : Un choix (options)
  • Requis : Oui
  • Défaut : wait
  • Options :
    • wait — Attendre la fin : L’exécution se suspend, et la sortie du sous-workflow devient celle du nœud.
    • fireAndForget — Lancer et continuer : Le sous-workflow part de son côté ; la suite s’exécute immédiatement.

waitMinutes ​

Attente maximale (minutes) — Passé ce délai, la branche repart avec status: "timeout". Une exécution ne reste jamais en attente indéfiniment.

  • Type : Nombre (number)
  • Requis : Non
  • Défaut : 60
  • Nombre entier, de 1 à 4320
  • Affiché quand : mode vaut wait

Sorties ​

  • main — « Attendre la fin » : emprunté quand le workflow appelé s’est terminé avec succès, ou quand l’attente maximale est écoulée (status timeout). « Lancer et continuer » : emprunté aussitôt l’appel fait.

Données produites ​

Ce que ce nœud ajoute aux données de l’exécution, et comment le lire dans une expression. <step> désigne la clé de l’étape : le nom du nœud ramené à un identifiant (voir Données et expressions).

  • {{ data.<step>.executionId }} — string. L’identifiant de l’exécution lancée pour le workflow appelé.
  • {{ data.<step>.workflowId }} — string. L’identifiant du workflow appelé.
  • {{ data.<step>.mode }} — string. wait ou fireAndForget. Absent après une attente terminée.
  • {{ data.<step>.status }} — string. « Attendre la fin » : succeeded une fois le workflow appelé terminé, timeout quand l’attente maximale s’est écoulée avant, settled (sans output) dans le cas rare où il était déjà terminé au retour de l’appel. « Lancer et continuer » : started.
  • {{ data.<step>.output }} — object. « Attendre la fin » uniquement : tout ce que le workflow appelé a produit, sous les noms de ses propres nœuds — par exemple {{ data.<step>.output.<étape appelée>.message }}.
  • {{ data.<step>.simulated }} — boolean. true quand l’appel a eu lieu en essai (le workflow appelé s’exécute alors aussi en essai).

Example ​

Un workflow « Retrouver le client », déclenché par Appelé par un workflow, cherche {{ data.input.extraire.email }} dans une table et rédige une synthèse dans un nœud nommé Synthèse. Dans chaque workflow qui en a besoin, ajoutez :

workflowId:  <Retrouver le client>
mode:        wait
waitMinutes: 10

Après l’appel, {{ data.<step>.output.synthese.message }} contient la synthèse, et {{ data.<step>.status }} vaut succeeded.

Tips ​

  • Les échecs se propagent. Quand le workflow appelé échoue ou est annulé, l’étape appelante échoue avec subworkflow_failed, et la politique d’erreur du nœud appelant s’applique.
  • Attente maximale. En mode attente, passé « Attente maximale (minutes) » (60 par défaut, de 1 à 4 320, soit 3 jours), l’appelant cesse d’attendre et continue par main avec le status timeout. Le workflow appelé n’est pas interrompu. Testez status avec une Condition quand une réponse tardive compte.
  • Bornes. Une chaîne d’appels est limitée à trois niveaux sous la première exécution, et un workflow ne peut pas s’appeler lui-même, directement ou non : un cycle visible dans les graphes est refusé à la publication, et un cycle apparu plus tard (après une republication) échoue à l’exécution.
  • Refus à l’exécution. L’étape échoue quand la cible est inconnue ou appartient à un autre membre, archivée, non publiée, ou sans déclencheur Appelé par un workflow actif.
  • Une étape retentée ne lance jamais deux fois le workflow appelé.
  • Si le workflow appelé a aussi d’autres déclencheurs, un appel n’exécute que la partie de son graphe reliée à Appelé par un workflow.

Loop & Roll — le constructeur de workflows pour l’e-mail.