本教學課程說明如何使用 Cloud Scheduler 自動執行 Workflows,以便按照特定排程執行工作流程 (在本例中為每 5 分鐘一次)。
建立接收執行階段引數的工作流程
工作流程定義是由一系列步驟組成,這些步驟使用 Workflows 語法描述,且可採用 YAML 或 JSON 格式編寫。建立工作流程後,請部署工作流程,以便執行。
控制台
- 前往 Google Cloud 控制台的「Workflows」頁面: 
- 點選「建立」。 
- 輸入 - myFirstWorkflow做為新工作流程的名稱。
- 選取「us-central1」區域。 
- 選取您先前建立的服務帳戶。 
- 點選「下一步」。 
- 在工作流程編輯器中,輸入下列工作流程定義。 - YAML- main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar} - JSON- { "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } } - 這個工作流程會向您以執行階段引數形式傳遞名字和姓氏的人,傳回「Hello」問候語。 
- 按一下 [Deploy] (部署)。 
gcloud
- 開啟終端機。
- 將下列工作流程定義儲存為 YAML 或 JSON 檔案,例如 myFirstWorkflow.yaml 或 myFirstWorkflow.json。 - YAML- main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar} - JSON- { "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } } - 這個工作流程會向您以執行階段引數形式傳遞名字和姓氏的人,傳回「Hello」問候語。 
- 輸入下列指令來部署工作流程: - gcloud workflows deploy myFirstWorkflow \ --source=myFirstWorkflow.yaml_OR_json \ --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com - 請將 - yaml_OR_json替換為- yaml或- json,視您先前建立的 Workflows 定義檔格式而定。
排定工作流程
使用先前建立的服務帳戶,建立會觸發工作流程的 Cloud Scheduler 工作。
控制台
- 前往 Google Cloud 控制台的「Cloud Scheduler」頁面: 
- 按一下 [Create Job] (建立工作)。 
- 將「Name」(名稱) 設為 - my-workflow-job。
- 在「頻率」部分輸入: - */5 * * * *
- 針對「Timezone」(時區),選取國家/地區和時區。 - 舉例來說,選取「美國」和「洛杉磯」或「太平洋夏令時間 (PDT)」。 
- 按一下「繼續」。 
- 在「目標類型」中選取「HTTP」。 
- 在「網址」中輸入: - https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions 
- 將「HTTP method」保留預設的「POST」。 
- 新增下列兩個 HTTP 標頭: - 名稱:Content-Type,值:application/octet-stream
- 名稱:User-Agent,值:Google-Cloud-Scheduler
 
- 名稱:
- 在「Body」中輸入: - {"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}- 這會傳遞工作流程引數的 JSON 編碼;在本例中,引數為名字「Sherlock」和姓氏「Holmes」。字串內的雙引號會使用反斜線 (\) 逸出。 
- 在「Auth header」(驗證標頭) 部分,選取「Add OAuth token」(新增 OAuth 權杖)。 
- 輸入您先前建立的服務帳戶。 - sa-name@PROJECT_ID.iam.gserviceaccount.com - https://www.googleapis.com/auth/cloud-platform的預設值。
- 其餘設定均保留預設值,然後點按「建立」。 
gcloud
輸入下列指令,排定名為 my-workflow-job 的工作:
gcloud scheduler jobs create http my-workflow-job \
    --schedule="*/5 * * * *" \
    --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions" \
    --message-body="{\"argument\": \"{\\\"firstName\\\":\\\"Sherlock\\\", \\\"lastName\\\":\\\"Holmes\\\"}\"}" \
    --time-zone="America/Los_Angeles" \
    --oauth-service-account-email="sa-name@PROJECT_ID.iam.gserviceaccount.com"間隔是使用 unix-cron 格式定義。
message-body 標記用於傳遞工作流程引數的 JSON 編碼;在本例中,引數為名字「Sherlock」和姓氏「Holmes」。字串內的雙引號會使用反斜線 (\) 逸出。
工作流程現在每 5 分鐘執行一次。
如要進一步瞭解 gcloud scheduler 標記,以及如何套用通話記錄,以便記錄工作流程執行期間的每個通話步驟,請參閱「為工作流程排程」和gcloud 參考資料。
執行作業並驗證結果
控制台
- 前往 Google Cloud 控制台的「Cloud Scheduler」頁面: - 如果沒有顯示工作,可能需要重新整理頁面。 
- 針對名為 - my-workflow-job的工作,按一下「立即執行」。- 「結果」值應會更新為「成功」。 
- 前往 Google Cloud 控制台的「Workflows」頁面: 
- 在工作流程清單中,按一下「myFirstWorkflow」myFirstWorkflow開啟詳細資料頁面。 - 工作流程的執行狀態應為「Succeeded」(成功)。 
- 按一下工作流程的執行 ID 開啟詳細資料頁面,並在「Output」(輸出) 窗格中查看工作流程結果。 - 輸出內容應為「Hello, Sherlock Holmes!」。 
gcloud
- 執行 Cloud Scheduler 工作,以執行工作流程: - gcloud scheduler jobs run my-workflow-job 
- 擷取工作流程的執行作業 ID: - gcloud workflows executions list myFirstWorkflow - 輸出內容應類似以下內容,且執行 ID 會以粗體顯示: - projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320 
- 擷取工作流程的執行結果: - gcloud workflows executions describe EXECUTION_ID --workflow myFirstWorkflow - 將 - EXECUTION_ID替換為上一步傳回的執行作業 ID。- 輸出應會如下所示: - argument: '{"firstName":"Sherlock","lastName":"Holmes"}' endTime: '2021-09-09T15:15:00.869350639Z' name: projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320 result: '"Hello, Sherlock Holmes!"' startTime: '2021-09-09T15:15:00.839175480Z' state: SUCCEEDED workflowRevisionId: 000001-4f9
恭喜!您已成功建立 Cloud Scheduler 工作,可依特定排程自動執行工作流程。