Premier workflow — client fictif et réponse selon fidélité
Chargement du diagramme…
Le besoin
Vous débutez sur Ecosystem et vous voulez prendre en main l'éditeur sans enjeu métier : ce workflow génère un client fictif, évalue son score de fidélité, puis répond différemment selon le résultat. Il illustre les premiers réflexes de l'éditeur — manipuler context, écrire une condition et produire une réponse HTTP — sur un flux complet, reproductible tel quel.
Ce que fait le flux
- Demande client — le déclencheur API reçoit une requête et lance l'exécution. Les données de la requête arrivent dans
data. - Générer un client fictif — le nœud Code construit un objet client (
firstName,lastName,birthDate,address,loyaltyScore) danscontext.customer, avec l'aide delibs.uuid(),libs.dayjs()etlibs.lodash.random(). - Client fidèle ? — la condition évalue
context.customer.loyaltyScore >= 50, écrite en JavaScript pur avecreturn(pas de syntaxe Handlebars). - Réponse client VIP — si le score atteint 50, un nœud Réponse HTTP renvoie
SUCCESS_VIP. - Réponse succès standard — sinon, un second nœud Réponse HTTP renvoie
SUCCESS_STANDARD.
Une seule réponse HTTP
Dans ce flux, une seule des deux réponses peut s'exécuter grâce à la condition ; sans branche exclusive, le flux tenterait d'émettre deux réponses.
Ce dont vous avez besoin
- Un compte avec les droits de création (rôles Concepteur, Concepteur avancé ou Propriétaire de l'entreprise) — voir Premiers pas
Le nœud Déclencheur est recréé automatiquement par l'import du snippet : vous n'avez rien à créer à la main.
Construction
- Copiez la définition du workflow ci-dessous.
- Ouvrez l'éditeur d'un flux et collez la définition : le flux est reconstruit avec le nœud Code, la condition et les deux réponses HTTP.
- Nommez le nœud Déclencheur et vérifiez que chaque nœud est configuré comme décrit dans Ce que fait le flux.
[
{
"id": "code-101",
"name": "Générer un client fictif",
"config": {
"type": "CODE",
"code": "const firstNames = ['Marie', 'Jean', 'Sophie', 'Paul', 'Léa', 'Hugo'];\nconst lastNames = ['Martin', 'Bernard', 'Dubois', 'Moreau', 'Laurent', 'Girard'];\nconst streetNames = ['rue de la Paix', 'avenue Victor-Hugo', 'boulevard Voltaire', 'rue Nationale'];\nconst cities = ['Paris', 'Lyon', 'Marseille', 'Nantes'];\n\ncontext.customer = {\n id: libs.uuid(),\n firstName: firstNames[Math.floor(Math.random() * firstNames.length)],\n lastName: lastNames[Math.floor(Math.random() * lastNames.length)],\n birthDate: libs.dayjs().subtract(Math.floor(18 + Math.random() * 50), 'years').format('YYYY-MM-DD'),\n address: {\n street: `${Math.floor(1 + Math.random() * 120)} ${streetNames[Math.floor(Math.random() * streetNames.length)]}`,\n city: cities[Math.floor(Math.random() * cities.length)],\n },\n loyaltyScore: libs.lodash.random(0, 100),\n};"
},
"parents": [
"trigger"
],
"position": {
"x": 400,
"y": 200
},
"next": "cond-101"
},
{
"id": "cond-101",
"name": "Client fidèle ?",
"config": {
"type": "CONDITION",
"conditionCode": "return context.customer.loyaltyScore >= 50;",
"conditions": [
{
"value": true,
"next": "vip-101"
},
{
"value": false,
"next": "std-101"
}
]
},
"parents": [
"code-101"
],
"position": {
"x": 400,
"y": 400
}
},
{
"id": "vip-101",
"name": "Réponse client VIP",
"config": {
"type": "HTTP_RESPONSE",
"statusCode": "200",
"headers": {
"Content-Type": "application/json"
},
"responseTemplate": "{\n \"status\": \"SUCCESS_VIP\",\n \"message\": \"Bienvenue au club VIP, {{ context.customer.firstName }} !\",\n \"loyaltyScore\": {{ context.customer.loyaltyScore }}\n}"
},
"parents": [
"cond-101"
],
"position": {
"x": 0,
"y": 600
}
},
{
"id": "std-101",
"name": "Réponse succès standard",
"config": {
"type": "HTTP_RESPONSE",
"statusCode": "200",
"headers": {
"Content-Type": "application/json"
},
"responseTemplate": "{\n \"status\": \"SUCCESS_STANDARD\",\n \"message\": \"Merci pour vos achats, continuez à gagner des points !\",\n \"loyaltyScore\": {{ context.customer.loyaltyScore }}\n}"
},
"parents": [
"cond-101"
],
"position": {
"x": 800,
"y": 600
}
}
]
Vérifier que ça marche
- Sélectionnez le nœud Code (Générer un client fictif) puis cliquez sur Tester le nœud.
- Lancez l'exécution avec des données de test (ex.
{ "orderId": "CMD-4821" }). - Dans la trace, le nœud Code affiche le client généré dans
context.customer, et l'exécution se termine par l'une des deux réponses HTTP —SUCCESS_VIPsiloyaltyScoreatteint 50,SUCCESS_STANDARDsinon. Relancez plusieurs fois : le score étant aléatoire, les deux branches s'exécutent au fil des tests.
La procédure de test est décrite dans Tester un flux.
Variantes
- Modifier le seuil de fidélité dans le nœud Condition pour explorer d'autres branches.
- Personnaliser le corps des réponses avec des données du client (
context.customer) — nœud Réponse HTTP. - Enchaîner un traitement selon le résultat plutôt que de répondre — nœud Condition.
Voir aussi : Premiers pas · Exemples et intégrations