Attendre à l'aide de l'interrogation

La mise en veille d'une exécution de workflow vous permet d'interroger un service externe ou d'attendre la fin d'une opération de longue durée. La fonction de bibliothèque standard sys.sleep suspend l'exécution pendant un nombre de secondes spécifié, jusqu'à un maximum de 31 536 000 (un an).

Suspendre un workflow

Vous pouvez suspendre l'exécution d'un workflow en ajoutant une étape de veille à la définition de votre workflow. Cette étape inclut un appel à sys.sleep et spécifie la durée en secondes pendant laquelle vous souhaitez suspendre le workflow:

YAML

  - STEP_NAME:
      call: sys.sleep
      args:
          seconds: SLEEP_IN_SECONDS
    

JSON

    [
      {
        "STEP_NAME": {
          "call": "sys.sleep",
          "args": {
            "seconds": "SLEEP_IN_SECONDS"
          }
        }
      }
    ]
    

Interrogation des données

Vous pouvez également utiliser sys.sleep pour interroger des données sur un intervalle donné. Par exemple, vous pouvez interroger une API jusqu'à ce qu'une condition spécifique soit remplie:

YAML

  main:
      params: [jobId]
      steps:
        - checkJob:
            call: http.get
            args:
                url: ${"https://example.com/jobs/" + jobId}
                auth:
                    type: OAuth2
            result: jobStatus
        - checkIfDone:
            switch:
              - condition: ${jobStatus.complete}
                return: ${jobStatus}
        - wait:
            call: sys.sleep
            args:
                seconds: 60
            next: checkJob
    

JSON

  {
    "main": {
      "params": [
        "jobId"
      ],
      "steps": [
        {
          "checkJob": {
            "call": "http.get",
            "args": {
              "url": "${\"https://example.com/jobs/\" + jobId}",
              "auth": {
                "type": "OAuth2"
              }
            },
            "result": "jobStatus"
          }
        },
        {
          "checkIfDone": {
            "switch": [
              {
                "condition": "${jobStatus.complete}",
                "return": "${jobStatus}"
              }
            ]
          }
        },
        {
          "wait": {
            "call": "sys.sleep",
            "args": {
              "seconds": 60
            },
            "next": "checkJob"
          }
        }
      ]
    }
  }