执行工作流

本页面介绍了如何在 Google Cloud Console 中使用 gcloud 命令行工具或通过向 Workflows REST API 发送请求来执行工作流。执行某个工作流会运行与该工作流关联的当前工作流定义。

准备工作

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

执行工作流

控制台

  1. 如需执行工作流,请转到 Google Cloud Console 中的“工作流”页面:
    转到“工作流”页面

  2. 在控制台中的“工作流”页面上,选择您要运行以转到其详情页面的工作流。

  3. 工作流详情页面上,选择执行

  4. 执行工作流页面上,您可以输入要在执行之前传递到工作流的可选运行时参数。参数必须采用 JSON 格式;例如 {"animal":"cat"}。如果您的工作流不使用运行时参数,请将此字段留空。

  5. 选择执行

  6. 输出窗格中查看工作流的结果。

    工作流快速入门输出

gcloud

  1. 打开终端。

  2. 找到您要执行的工作流的名称。如果您不知道工作流的名称,则可以输入以下命令列出所有工作流:

    gcloud workflows list
    
  3. 输入以下命令以执行工作流:

    gcloud workflows run WORKFLOW_NAME [--data=DATA]
    

    请替换以下内容:

    • WORKFLOW_NAME:工作流的名称。

    • DATA:可选。您的工作流的运行时参数,其采用 JSON 格式。

    该命令会返回执行尝试的结果。输出内容类似如下:

    argument: 'null'
    endTime: '2020-06-23T16:21:35.266171131Z'
    name: projects/123456789012/locations/us-central1/workflows/myFirstWorkflow/executions/f72bc6d4-5ea0-4dfb-bb14-2dae82303120
    result: '["Tuesday","Tuesday Weld","Tuesday Night Music Club","Tuesday (ILoveMakonnen
      song)","Tuesdays with Morrie","Tuesday Group","Tuesday Knight","Tuesday (Burak Yeter
      song)","Tuesday Morning Quarterback","Tuesday Maybe"]'
    startTime: '2020-06-23T16:21:34.826993288Z'
    state: SUCCEEDED
    workflowVersionId: '1'
    

如需执行工作流而不等待执行尝试完成,请输入以下命令:

gcloud workflows execute WORKFLOW_NAME [--data=DATA]

请替换以下内容:

  • WORKFLOW_NAME:工作流的名称。

  • DATA:可选。您的工作流的运行时参数,其采用 JSON 格式。

这将返回一个 workflows executions describe 命令,其中包含工作流执行尝试的唯一 ID。输出内容类似如下:

Created [f72bc6d4-5ea0-4dfb-bb14-2dae82303120].

To view the workflow status, you can use following command:
gcloud workflows executions describe f72bc6d4-5ea0-4dfb-bb14-2dae82303120 --workflow myWorkflow

如需查看执行状态,请输入上一步返回的命令。这将返回有关工作流执行的数据,包括执行成功的结果。输出类似于以下内容:

argument: 'null'
endTime: '2020-06-23T16:21:35.266171131Z'
name: projects/123456789012/locations/us-central1/workflows/myFirstWorkflow/executions/f72bc6d4-5ea0-4dfb-bb14-2dae82303120
result: '["Tuesday","Tuesday Weld","Tuesday Night Music Club","Tuesday (ILoveMakonnen
   song)","Tuesdays with Morrie","Tuesday Group","Tuesday Knight","Tuesday (Burak Yeter
   song)","Tuesday Morning Quarterback","Tuesday Maybe"]'
startTime: '2020-06-23T16:21:34.826993288Z'
state: SUCCEEDED
workflowVersionId: '1'

检查长时间运行的执行操作的状态

您可以使用多个命令来帮助检查工作流执行的状态。

  • 如需检索工作流的执行尝试及其 ID 列表,请输入以下命令:

    gcloud workflows executions list WORKFLOW_NAME
    

    WORKFLOW_NAME 替换为工作流的名称。

  • 如需检查执行尝试的状态并等待尝试完成,请输入以下命令:

    gcloud workflows executions wait EXECUTION_ID
    

    EXECUTION_ID 替换为执行尝试的 ID。

    该命令会等到执行尝试完成后,再返回结果。

  • 如需检查最后一次执行尝试的状态,请输入以下命令:

    gcloud workflows executions wait-last
    

    如果您在同一个 gcloud 会话中进行了先前的执行尝试,该命令将等到前一个执行尝试完成后,再返回结果。如果前一个尝试不存在,gcloud 将返回以下错误:

    ERROR: (gcloud.workflows.executions.wait-last) [NOT FOUND] There are no cached executions available.
    
  • 如需获取最后一次完成的执行的状态,请输入以下命令:

    gcloud workflows executions describe-last
    

    如果您在同一个 gcloud 会话中进行了先前的执行尝试,该命令会返回最后一次完成的执行的结果。如果前一个尝试不存在,gcloud 将返回以下错误:

    ERROR: (gcloud.beta.workflows.executions.describe-last) [NOT FOUND] There are no cached executions available.
    

REST API

  1. 打开终端。

  2. 找到您要执行的工作流的名称。如果您不知道工作流的名称,则可以输入以下命令列出所有工作流:

    gcloud workflows list
    
  3. 要进行身份验证,您需要具备足够权限的服务帐号来执行工作流。如需详细了解如何使用服务帐号从命令行进行身份验证,请参阅身份验证入门

  4. 输入以下命令以执行工作流,并根据需要修改变量:

    curl \
    --request POST \
    --header "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    --header 'Content-Type: application/json' \
    "https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/WORKFLOW_NAME/executions"
    

    如果您执行的工作流采用了参数,请添加 data 标志。data 的值是一个 JSON 格式的字符串,它包含的参数的值是一个或多个转义的“参数-值”对。例如:

    --data '{"argument":"{\"PARAMETER\":\"VALUE\"}"}'
    

如果工作流访问其他 Google Cloud 资源,请确保它与具有正确访问权限的服务帐号相关联。如需了解哪个服务帐号与现有工作流相关联,请参阅验证工作流的关联服务帐号

后续步骤