在执行请求中传递运行时参数

本页面介绍了如何在工作流执行请求中传递运行时参数,以及如何使用工作流变量访问这些参数。

设置接收运行时参数的工作流

您可以在执行请求的过程中创建工作流,这些工作流使用您传递给它们的运行时参数。如需将您的工作流设置为接收运行时参数,请执行以下操作:

  1. 按照相应步骤创建新工作流,或选择现有工作流进行更新,但请勿进行部署。

  2. 在工作流的定义中添加一个 params 字段:

    main:
      params: [DICTIONARY_NAME]
      steps:
        ...
    

    DICTIONARY_NAME 替换为存储您传递给工作流的参数名称和参数值的字典名称。

    例如,以下工作流会向您以运行时参数传递其姓名的用户返回“Hello”问候语:

    main:
      params: [args]
      steps:
        - step1:
            assign:
              - OutputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"}
        - step2:
            return: ${OutputVar}
    
  3. 部署您的工作流以完成创建或更新。

在执行请求中传递数据

如果您的工作流设置为接收运行时参数,您可以将 JSON 格式的字符串(如 {"firstName":"Workflows","lastName":"User"})传递给执行请求中的工作流:

gcloud

--data 标志添加到用于执行工作流的 gcloud workflow execute 命令中。此标志使用 JSON 字符串格式的数据。例如,如需将 firstNamelastName 传递给上一个示例工作流,请执行以下操作:

gcloud workflows run WORKFLOW_NAME \
--data='{"firstName":"FIRST","lastName":"LAST"}'

替换以下内容:

  • WORKFLOW_NAME:工作流的名称
  • FIRST:您要传递给 firstName 的工作流的字符串
  • LAST:您要传递给 lastName 的工作流的字符串

输出类似于以下显示内容:

Waiting for execution [EXECUTION_ID] to complete...done
.
argument: '{"firstName":"Workflows","lastName":"User"}'
endTime: '2020-11-18T23:28:36.134741660Z'
name: projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID
result: '"Hello, Workflows User!"'
startTime: '2020-11-18T23:28:36.003269841Z'
state: SUCCEEDED
workflowRevisionId: 000001-ae2

控制台

  1. 从 Google Cloud Console 的“工作流”页面选择您要执行的工作流:
    转到“工作流”页面

  2. 在工作流的详情页面中,点击 执行

  3. 在显示的“执行工作流”页面上,在“输入”区域中输入包含参数名称和参数值的 JSON 字符串(例如 {"firstName":"Workflows","lastName":"User"}):

    使用示例 JSON 字符串填充的输入区域

  4. 点击“执行”。Cloud Console 将显示您的执行结果:

    执行结果显示输出“Hello, Workflows User!”

REST API

  1. data 标志附加到用于执行工作流的命令。data 的值是一个 JSON 格式的字符串,它包含的参数的值是一个或多个转义的“参数-值”对。例如,如需将 firstNamelastName 传递给上一个示例工作流,请执行以下操作:

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

    替换以下内容:

    • PROJECT_ID:您的项目名称
    • WORKFLOW_NAME:工作流的名称
    • FIRST:您要传递给 firstName 的工作流的字符串
    • LAST:您要传递给 lastName 的工作流的字符串

    输出类似于以下显示内容:

    {
      "name": "projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID",
      "startTime": "2020-11-09T23:51:31.765761331Z",
      "state": "ACTIVE",
      "argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}",
      "workflowRevisionId": "000001-08c"
    }
     ```
    
  2. 如需获取执行结果,请运行以下命令:

    curl --request GET --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/EXECUTION_ID"
    

    EXECUTION_ID 替换为第一个命令返回的输出中的 ID。

    此输出包含如下所示的行:

    "argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}",
    "result": "\"Hello, Workflows User!\"",
    

如需详细了解如何使用 REST API 执行工作流,请参阅执行工作流

后续步骤