実行リクエストでのランタイム引数渡し

ワークフロー実行リクエストでランタイム引数を渡し、ワークフロー変数を使用してこれらの引数にアクセスできます。

ランタイム引数を受け取るワークフローの設定

実行リクエストの一部として渡すランタイム引数を受け取るようにワークフローを設定するには、次の手順を実行します。

  1. 手順に沿って新しいワークフローを作成するか、既存のワークフローを選択して更新しますが、まだデプロイはしないでください。

  2. メイン ワークフローの定義に params フィールドを追加します。引数名が角かっこで囲まれ、メイン ワークフローが main ブロックに配置されていることを確認します。

    YAML

    main:
      params: [ARG_NAME]
      steps:
        ...

    JSON

    {
      "main": {
        "params": ["ARG_NAME"],
        "steps": [
          ...
        ]
        ...
      }
    }
      

    main ブロックは、有効な JSON データ型の名前(配列、オブジェクト、文字列など)である単一の引数を受け入れます。

    おすすめの方法として、複数の名前付き引数を使用してオブジェクトを渡すと、目的の理解や引数の追加が簡単になります。また、その後ドット表記を使用して引数にアクセスすることもできます。

    他のサブワークフローには複数の引数を指定できます。

    たとえば、次のワークフローは、ランタイムの引数として渡された姓と名の人に対する「Hello」というあいさつを返します。

    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}"
            }
          }
        ]
      }
    }
      
  3. ワークフローをデプロイして、作成または更新を完了します。

実行リクエストでのデータ渡し

ランタイム引数を受け取るようにワークフローを設定したら、{"firstName":"Workflows","lastName":"User"} などの JSON 形式の文字列を、実行リクエストのワークフローに渡すことができます。

コンソール

  1. ワークフローを実行するには、 Google Cloud コンソールで [ワークフロー] ページに移動します。

    [ワークフロー] に移動

  2. [ワークフロー] ページで、ワークフローを選択して詳細ページに移動します。

  3. [ワークフローの詳細] ページで [ 実行] を選択します。

  4. [ワークフローの実行] ページが表示されたら、パラメータ名と引数値({"firstName":"Workflows","lastName":"User"} など)を含む JSON 文字列を [入力] 領域に入力します。

    JSON 文字列の例が入力された入力領域

  5. [実行] をクリックします。

    [実行の詳細] ページで、出力 Hello, Workflows User!、実行 ID と状態、ワークフロー実行の現在のステップまたは最後のステップを含む、実行結果を確認できます。詳細については、ワークフローの実行結果にアクセスするをご覧ください。

gcloud

ワークフローの実行に使用する gcloud workflows execute コマンドに --data フラグを追加します。このフラグは、データの JSON 文字列を受け取ります。たとえば、前のワークフローの例に firstNamelastName を渡すには:

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

以下を置き換えます。

  • WORKFLOW_NAME: ワークフローの名前
  • FIRST: ワークフローの firstName に渡す文字列
  • LAST: ワークフローの lastName に渡す文字列

出力例を以下に示します。

Waiting for execution [9379b067-306a-4db1-a58d-c9fc99aebfd4] to complete...done.
argument: '{"firstName":"Workflows","lastName":"User"}'
endTime: '2022-07-19T13:52:47.659199466Z'
name: projects/1051295516635/locations/us-central1/workflows/workflow-6/executions/9379b067-306a-4db1-a58d-c9fc99aebfd4
result: '"Hello, Workflows User!"'
startTime: '2022-07-19T13:52:47.623862835Z'
state: SUCCEEDED
status:
  currentSteps:
  - routine: main
    step: step2
workflowRevisionId: 000002-138

クライアント ライブラリ

クライアント ライブラリの言語によっては、実行リクエストでランタイム引数を渡すことができます。

たとえば、JavaScript を使用する場合は次のようにします。

// Execute workflow
try {
  const createExecutionRes = await client.createExecution({
    parent: client.workflowPath(projectId, location, workflow),
    execution: {
      argument: JSON.stringify({"firstName":"Workflows","lastName":"User"})
    }
});
const executionName = createExecutionRes[0].name;

また、Java を使用する場合は次のようにします。

// Creates the execution object.
CreateExecutionRequest request =
    CreateExecutionRequest.newBuilder()
        .setParent(parent.toString())
        .setExecution(Execution.newBuilder().setArgument("{\"firstName\":\"Workflows\",\"lastName\":\"User\"}").build())
        .build();

Google API クライアント ライブラリを使用してワークフローを実行する方法については、ワークフローを実行するをご覧ください。

REST API

  1. ワークフローの実行に使用するコマンドに data フラグを追加します。data の値は、エスケープされたパラメータ値のペアを 1 つ以上含む引数を持つ JSON 形式の文字列です。たとえば、前のワークフローの例に firstNamelastName を渡すには:

    curl --request POST \
       --header