Aller au contenu

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 texte
  • Double - Nombres décimaux
  • JSON - 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 :

"variableName": "$ERROR_MESSAGE",
"variableValue": ""

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 :

"variableName": "$TEMPERATURE",
"variableValue": "0.0"

Utilisation : Valeurs de température, lectures de capteurs, métriques

Variables JSON

Stocker des données structurées complexes pour un traitement détaillé :

"variableName": "$API_RESPONSE",
"variableValue": "{}"

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

  1. Déclaration - Variable déclarée dans le nœud START
  2. Initialisation - Donnée une valeur initiale (généralement vide/zéro)
  3. Population - L'output de la tâche enregistre la valeur dans la variable
  4. Utilisation - Les tâches suivantes référencent la variable
  5. 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"}
  ]
}

Cas 3 : Passage de Données

{
  "HttpRequest": [{"id": "1", "response_output": "$API_DATA"}],
  "TextReport": [
    {"id": "2", "texte": "Response: $API_DATA"}
  ]
}