Menunggu menggunakan polling

Menjeda eksekusi alur kerja memungkinkan Anda melakukan polling layanan eksternal atau menunggu hingga operasi yang berjalan lama selesai. sys.sleep Fungsi pustaka standar menangguhkan eksekusi selama beberapa detik yang ditentukan, hingga maksimum 31536000 (satu tahun).

Menjeda alur kerja

Anda dapat menjeda eksekusi alur kerja dengan menambahkan langkah penonaktifan ke definisi alur kerja. Langkah ini mencakup panggilan ke sys.sleep dan menentukan dalam detik berapa lama Anda ingin menjeda alur kerja:

YAML

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

JSON

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

Meminta data

Anda juga dapat menggunakan sys.sleep untuk melakukan polling data selama interval tertentu. Misalnya, Anda mungkin ingin melakukan polling API hingga kondisi tertentu terpenuhi:

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"
          }
        }
      ]
    }
  }