Variables dans les Workflows
Introduction aux Variables
Les variables sont des conteneurs nommés qui stockent les données produites par les tâches et peuvent être utilisées par les tâches suivantes. Elles permettent le flux de données et la communication entre différentes étapes du workflow.
Déclaration et Rôles des Variables
Les variables doivent être déclarées dans le nœud START avec ces caractéristiques :
- Nommage : Doivent commencer par
$(préfixe obligatoire) - Portée : Disponibles sur l'ensemble du workflow
- Types Supportés :
String- Valeurs texteDouble- Nombres décimauxJSON- Données structurées complexes
Exemple : Déclaration de Variable dans le nœud START
{
"Start": [
{
"id": "0",
"variables": [
{
"variableName": "$PING_ERROR",
"variableValue": "",
"is_kpi": false
},
{
"variableName": "$NETWORK_STATUS",
"variableValue": "unknown",
"is_kpi": false
},
{
"variableName": "$TEMPERATURE",
"variableValue": "0.0",
"is_kpi": true
}
]
}
]
}
Enregistrement des Outputs de Tâche
Les outputs des tâches peuvent être enregistrés dans les variables déclarées au START pour réutilisation dans d'autres tâches :
{
"CmdStage": [
{
"id": "1",
"cmd_text": "ping -c 1 8.8.8.8",
"cmd_error_output": "$PING_ERROR"
}
]
}
Comment ça fonctionne :
1. Déclarer variable $PING_ERROR dans le nœud START
2. Tâche CmdStage (id:1) exécute la commande ping
3. L'output d'erreur est automatiquement stocké dans $PING_ERROR
4. La variable devient disponible pour les tâches suivantes
Utilisation de Variable dans Autres Tâches
Une fois qu'une variable est remplie par un output de tâche, elle peut être utilisée dans les tâches suivantes :
{
"CompareText": [
{
"id": "2",
"text_x": "$PING_ERROR",
"text_y": "unreachable",
"compare_type": 2
}
]
}
Références de variables :
- Utiliser le nom de la variable avec le préfixe $ : $PING_ERROR
- Peut être utilisée dans n'importe quel paramètre acceptant les variables
- La variable persiste jusqu'à la fin du workflow
Types de Variables et Exemples
| Type | Exemple | Déclaration | Output Tâche | Utilisation |
|---|---|---|---|---|
| String | "$ERROR_MSG" |
"variableValue": "" |
cmd_error_output |
CompareText, TextReport |
| Double | "$TEMPERATURE" |
"variableValue": "0.0" |
ntp_offset_output |
CompareNumber |
| JSON | "$RESPONSE_DATA" |
"variableValue": "{}" |
http_response_output |
Parser, extraire |
Variables String
Stocker les données texte produites par les commandes ou APIs :
Utilisation : Messages d'erreur, sorties de commandes, réponses API
Variables Double
Stocker les nombres décimaux pour les opérations arithmétiques et comparaisons :
Utilisation : Valeurs de température, lectures de capteurs, métriques
Variables JSON
Stocker des données structurées complexes pour un traitement détaillé :
Utilisation : Réponses API, tableaux de données, objets imbriqués
Exemple Complet de Workflow avec Variables
{
"Start": [
{
"id": "0",
"variables": [
{
"variableName": "$PING_ERROR",
"variableValue": "",
"is_kpi": false
},
{
"variableName": "$NETWORK_STATUS",
"variableValue": "unknown",
"is_kpi": false
},
{
"variableName": "$RESPONSE_TIME",
"variableValue": "0.0",
"is_kpi": true
}
]
}
],
"CmdStage": [
{
"id": "1",
"cmd_text": "ping -c 1 8.8.8.8",
"cmd_error_output": "$PING_ERROR"
}
],
"CompareText": [
{
"id": "2",
"text_x": "$PING_ERROR",
"text_y": "unreachable",
"compare_type": 2
}
],
"TextReport": [
{
"id": "3",
"texte": "Réseau inaccessible: $PING_ERROR"
},
{
"id": "4",
"texte": "Réseau disponible - Statut: $NETWORK_STATUS"
}
],
"End": [{"id": "100"}],
"Links": [
{"from": "0", "to": "1"},
{"from": "1", "to": "2"},
{"from": "2", "true": "3", "false": "4"},
{"from": "3", "to": "100"},
{"from": "4", "to": "100"}
]
}
Flux de Données des Variables
flowchart LR
Start["START<br/>Déclarer Variables<br/>$PING_ERROR<br/>$NETWORK_STATUS<br/>$RESPONSE_TIME"] -->|"Enregistrer output"| Task1["CmdStage<br/>ping -c 1 8.8.8.8<br/>→ $PING_ERROR"]
Task1 -->|"Utiliser variable"| Task2["CompareText<br/>$PING_ERROR contient<br/>unreachable?"]
Task2 -->|"VRAI: Utiliser variable"| Task3["TextReport<br/>Afficher $PING_ERROR"]
Task2 -->|"FAUX: Utiliser variable"| Task4["TextReport<br/>Afficher $NETWORK_STATUS"]
Task3 --> End["END"]
Task4 --> End
style Start fill:#e3f2fd
style Task1 fill:#f3e5f5
style Task2 fill:#fff9c4
style Task3 fill:#ffe0e0
style Task4 fill:#e0f0e0
style End fill:#c8e6c9
Bonnes Pratiques
1. Déclarer Toutes les Variables au START
Déclarer les variables au démarrage dans le nœud START :
{
"Start": [
{
"id": "0",
"variables": [
{"variableName": "$VAR1", "variableValue": ""},
{"variableName": "$VAR2", "variableValue": "0.0"}
]
}
]
}
2. Utiliser des Noms de Variables Descriptifs
"$PING_ERROR" // Bon : But clair
"$NETWORK_STATUS" // Bon : Descriptif
"$x" // Mauvais : Pas descriptif
"$var1" // Mauvais : Générique
3. Initialiser avec des Valeurs Par Défaut Appropriées
"$ERROR_MSG": "" // String : chaîne vide
"$TEMPERATURE": "0.0" // Double : valeur zéro
"$RESPONSE": "{}" // JSON : objet vide
4. Utiliser des Variables pour la Continuité des Données
Passer les données entre les tâches en utilisant les variables au lieu de valeurs codées en dur :
// ✅ Bon : Utiliser variable
"text_x": "$PING_ERROR"
// ❌ Mauvais : Valeur codée en dur
"text_x": "Network unreachable"
Cycle de Vie des Variables
- Déclaration - Variable déclarée dans le nœud START
- Initialisation - Donnée une valeur initiale (généralement vide/zéro)
- Population - L'output de la tâche enregistre la valeur dans la variable
- Utilisation - Les tâches suivantes référencent la variable
- Persistance - La valeur persiste jusqu'à la fin du workflow
Cas d'Utilisation Courants
Cas 1 : Gestion des Erreurs
{
"CmdStage": [{"id": "1", "cmd_error_output": "$ERROR"}],
"CompareText": [
{"id": "2", "text_x": "$ERROR", "text_y": "failed"}
]
}
Cas 2 : Branchement Conditionnel
{
"CmdStage": [{"id": "1", "cmd_result_output": "$RESULT"}],
"CompareNumber": [
{"id": "2", "num_x": "$RESULT", "num_y": "100"}
]
}