指定したワークフローの実行履歴は、ステップ エントリのリストとして取得できます。各ステップ エントリから、ワークフローを分析、デバッグ、最適化する際に役立つ情報を確認できます。たとえば、実際に実行されたステップを確認し、ステップの期間と成功を判断できます。これは、大規模または複雑な非線形ワークフロー(多数の並列ブランチがあるワークフローなど)をデバッグする場合に特に便利です。
ステップのエントリは、ソースコード内の実際のステップ(例: assign
や call
)、または命令ブロック(例: for
ループや try/retry/except
ブロック)を表します。ステップの種類の一覧については、StepType をご覧ください。
実行履歴のレベル
ワークフローを作成または実行するときに、実行履歴の基本または詳細を指定できます。この設定は、ワークフロー レベルまたは実行レベルで適用できます。
デフォルトでは、実行履歴レベルは指定されず、基本のステップエントリが返されます。
実行履歴にスコープ内の変数値と、必要に応じて予想される反復回数(for
ループ、並列分岐、反復処理を使用する場合など)を含めるには、実行履歴のレベルを [詳細] に設定する必要があります。
実行に実行履歴レベルが指定されていない場合、ワークフローに適用されるレベルによって決まります。レベルが異なる場合、実行レベルで適用された設定が、その実行のワークフロー レベルで適用された設定よりも優先されます。
ステップのエントリを取得する方法
ステップのエントリを取得するには、Workflow Executions REST API にリクエストを送信するか、Google Cloud コンソールを使用します。
Google Cloud コンソール - このドキュメントのコンソールでステップのエントリを表示するをご覧ください。
コンソールには、ステップのエントリとその詳細が一覧表示されるとともに、実行ステップがグラフィカルに表示されるため、ワークフローの実行パスを簡単に表示、分析できます。
Workflow Executions REST API - このドキュメントのステップ エントリを取得するとステップのエントリを一覧表示するをご覧ください。
ステップのエントリの情報
ステップのエントリには、次の情報が含まれます。詳細なステップのエントリには、基本的なステップのエントリ情報も含まれます。
詳細については、このドキュメントの例をご覧ください。
基本的なステップのエントリ情報
名前 | ステップ エントリの完全なリソース名。これは、次の形式の一意の ID です。STEPENTRY_ID は増加するカウンタです。
|
作成および更新の時間 | ステップ エントリの作成と最新の更新のタイムスタンプ。ステップのエントリが完了している場合、updateTime は完了時間を示します。
|
ルーティンとステップの名前 | ステップのエントリが属するルーティンとステップの名前。ルーティン名は、YAML または JSON ソースコードで定義されたサブワークフロー名です。最上位のルーティン名は main です。
|
状態と進行状況の種類 | ステップ エントリの状態(たとえば、エントリが成功したか失敗したか、ステップ エントリが進行中かどうか、進行状況の種類など)。状態と進行状況のタイプの完全なリストについては、State と ProgressType をご覧ください。 |
ナビゲーション情報 | ステップ エントリの位置。これにより、ワークフローの階層とフローをより深く理解できます(たとえば、現在のステップ エントリの前後にあるステップ エントリの把握、ステップ エントリの親や子の把握など)。 詳細については、NavigationInfo をご覧ください。 |
メタデータ | 反復ステップのエントリに関連するデータ。次のようなデータが含まれます。
|
例外 | 例外に関連して、ステップのエントリが失敗した理由の説明を提供するペイロード。 |
詳細なステップのエントリ情報
メタデータ | 該当する場合は、ステップの進行中の予想される反復処理数( ループの境界に次のいずれかを含む式が含まれている場合、計算されたカウントは想定どおりに機能しません。
|
変数データ | このステップに関連付けられたスコープ内の変数値に関連するデータ(ユーザー定義ローカル変数の名前と値、式評価の結果など)。 なお、このスコープには、Workflows の組み込み関数にリンクされている内部変数は含まれません。 詳しくは、VariableData をご覧ください。 |
コンソールでステップのエントリを表示する
特定のワークフロー実行のステップ エントリは、Google Cloud コンソールで表示できます。
Google Cloud コンソールの [ワークフロー] ページに移動します。
ワークフローの名前をクリックして、[ワークフローの詳細] ページに移動します。
特定の実行の詳細については、その実行 ID をクリックします。
[概要] タブには、実行の失敗の原因となった例外など、実行全体に関する情報が表示されます。詳細については、実行エラーマップをご覧ください。
ワークフローの実行履歴をステップ エントリのリストとして表示するには、[ステップ] タブをクリックします。
ワークフロー実行のすべてのステップエントリが一覧表示されます。
ステップのエントリをフィルタリングするには、テーブルの上部にある [フィルタ] フィールドを使用して、プロパティと値を選択します(例:
State: Failed
)。[親]、[子]、[次へ]、[前] のステップ エントリのリンクを表示するには、特定のステップ エントリをクリックします。
リンクをクリックすると、他のリンクも自動的に更新されます。たとえば、[Parent] は、クリックしたステップ エントリの親にリンクします。
[ビジュアリゼーション] パネルにはワークフローのステップがグラフィカルに表示され、ワークフロー パスの把握に役立てることができます。
ビジュアリゼーションは、ステップのエントリとは異なる場合があります。たとえば、
for
ブロックはビジュアリゼーションでは単一のコンポーネントとして示されます。ただし、反復回数によっては、複数のステップのエントリになる場合があります。パネルでは、次の操作を行うことができます。
- ビジュアリゼーションをズームインまたはズームアウトする
- 親ステップのエントリを折りたたんだり展開したりする
- ステップのエントリをクリックして、前後のエントリを表示する
- 緑色のチェックマークと赤い感嘆符で示される、成功したステップと失敗したステップのエントリを確認します。
- 展開の矢印をクリックして [ビジュアリゼーション] パネルを閉じます。もう一度クリックするとパネルが開きます。
ステップのエントリを取得する前に
ステップ エントリを取得するために必要な権限を取得するには、管理者にプロジェクトに対する Workflows 管理者(workflows.stepEntries.get
)IAM ロールを付与するよう依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
ステップのエントリを取得する
特定のワークフロー実行のステップ エントリを取得するには、projects.locations.workflows.executions.stepEntries.get
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_NUMBER
: [IAM と管理] の [設定] ページに表示されるプロジェクト番号。 Google CloudLOCATION
: ワークフローがデプロイされているリージョン(例:us-central1
)。WORKFLOW_ID
: ワークフローのユーザー定義の名前(例:myFirstWorkflow
)。EXECUTION_ID
: ワークフロー実行の一意の ID。ワークフローの実行後に返されます。STEPENTRY_ID
: ステップ エントリの一意の ID(例:1
)。
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/STEPENTRY_ID", "createTime": "2024-08-15T19:03:08.328851864Z", "updateTime": "2024-08-15T19:03:08.331099634Z", "routine": "main", "step": "checkSearchTermInInput", "stepType": "STEP_CONDITION", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "children": [ "3" ], "parent": "1", "next": "3", "previous": "1" }, "variableData": {} }
ステップのエントリを一覧表示する前に
ステップ エントリを一覧表示するために必要な権限を取得するには、プロジェクトに対する Workflows 管理者(workflows.stepEntries.list
)IAM ロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
ステップのエントリを一覧表示する
特定のワークフローの実行のステップ エントリを一覧表示するには、projects.locations.workflows.executions.stepEntries.list
メソッドを使用します。デフォルトでは、結果はステップエントリの createTime
の昇順で返されます。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_NUMBER
: [IAM と管理] の [設定] ページに表示されるプロジェクト番号。 Google CloudLOCATION
: ワークフローがデプロイされているリージョン(例:us-central1
)。WORKFLOW_ID
: ワークフローのユーザー定義の名前(例:myFirstWorkflow
)。EXECUTION_ID
: ワークフロー実行の一意の ID。ワークフローの実行後に返されます。
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "stepEntries": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/1", "createTime": "2024-08-15T19:03:08.328807964Z", "updateTime": "2024-08-15T19:03:08.331099694Z", "routine": "main", "step": "checkSearchTermInInput", "stepType": "STEP_SWITCH", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "children": [ "2" ], "next": "2" }, "variableData": {} }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/2", "createTime": "2024-08-15T19:03:08.328851864Z", "updateTime": "2024-08-15T19:03:08.331099634Z", "routine": "main", "step": "checkSearchTermInInput", "stepType": "STEP_CONDITION", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "children": [ "3" ], "parent": "1", "next": "3", "previous": "1" }, "variableData": {} }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/3", "createTime": "2024-08-15T19:03:08.331037314Z", "updateTime": "2024-08-15T19:03:08.331099554Z", "routine": "main", "step": "checkSearchTermInInput.condition1", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "3", "navigationInfo": { "parent": "2", "next": "4", "previous": "2" }, "variableData": { "variables": { "input": { "searchTerm": "asia" }, "searchTerm": "asia" } } }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/4", "createTime": "2024-08-15T19:03:08.331100404Z", "updateTime": "2024-08-15T19:03:08.633741469Z", "routine": "main", "step": "readWikipedia", "stepType": "STEP_CALL", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "next": "5", "previous": "3" }, "variableData": {} }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/5", "createTime": "2024-08-15T19:03:08.633969694Z", "updateTime": "2024-08-15T19:03:08.634063018Z", "routine": "main", "step": "returnOutput", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "5", "navigationInfo": { "previous": "4" }, "variableData": { "variables": { "wikiResult": { "headers": { ... }, "body": [ ... ], "code": 200 }, "input": { "searchTerm": "asia" }, "searchTerm": "asia" } } } ], "totalSize": 5 }
ステップのエントリを削除する
特定のワークフローの実行のステップ エントリをすべて削除するには、projects.locations.workflows.executions.deleteExecutionHistory
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
WORKFLOW_NAME
: ワークフローの名前。PROJECT_NUMBER
: プロジェクト番号。 Google CloudLOCATION
: ワークフローがデプロイされているリージョン(例:us-central1
)。EXECUTION_ID
: ステップ エントリを削除する実行の ID。
リクエストを送信するには、次のいずれかのオプションを展開します。
成功すると、レスポンスの本文は空になります。
例
for
ブロックを使用したワークフロー
ワークフロー
YAML
- assignStep: assign: - sum: 0 - forStep: for: range: [1, 2] value: v steps: - sumStep: assign: - sum: ${sum + v} - returnStep: return: ${sum}
JSON
[ { "assignStep": { "assign": [ { "sum": 0 } ] } }, { "forStep": { "for": { "range": [ 1, 2 ], "value": "v", "steps": [ { "sumStep": { "assign": [ { "sum": "${sum + v}" } ] } } ] } } }, { "returnStep": { "return": "${sum}" } } ]
図
for
ブロックを使用したワークフロー(図をクリックして拡大)。ステップのエントリ
{ "stepEntries": [ { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/1", "createTime": "2024-08-15T19:32:18.119578307Z", "updateTime": "2024-08-15T19:32:18.119661828Z", "routine": "main", "step": "assignStep", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "next": "2" }, "variableData": { "variables": { "sum": 0 } } }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/2", "createTime": "2024-08-15T19:32:18.119662643Z", "updateTime": "2024-08-15T19:32:18.120893531Z", "routine": "main", "step": "forStep", "stepType": "STEP_FOR", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "children": [ "3", "5" ], "next": "3", "previous": "1" }, "stepEntryMetadata": { "progressType": "PROGRESS_TYPE_FOR", "expectedIteration": "2" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/3", "createTime": "2024-08-15T19:32:18.119732820Z", "updateTime": "2024-08-15T19:32:18.120463449Z", "routine": "main", "step": "forStep", "stepType": "STEP_FOR_ITERATION", "state": "STATE_SUCCEEDED", "entryId": "3", "navigationInfo": { "children": [ "4" ], "parent": "2", "next": "4", "previous": "2" }, "stepEntryMetadata": { "progressType": "PROGRESS_TYPE_FOR", "progressNumber": "1" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/4", "createTime": "2024-08-15T19:32:18.119737066Z", "updateTime": "2024-08-15T19:32:18.120463358Z", "routine": "main", "step": "sumStep", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "parent": "3", "next": "5", "previous": "3" }, "stepEntryMetadata": { "progressType": "PROGRESS_TYPE_FOR", "progressNumber": "1" }, "variableData": { "variables": { "sum": 1, "v": 1 } } }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/5", "createTime": "2024-08-15T19:32:18.120465172Z", "updateTime": "2024-08-15T19:32:18.120893471Z", "routine": "main", "step": "forStep", "stepType": "STEP_FOR_ITERATION", "state": "STATE_SUCCEEDED", "entryId": "5", "navigationInfo": { "children": [ "6" ], "parent": "2", "next": "6", "previous": "4" }, "stepEntryMetadata": { "progressType": "PROGRESS_TYPE_FOR", "progressNumber": "2" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/6", "createTime": "2024-08-15T19:32:18.120470187Z", "updateTime": "2024-08-15T19:32:18.120893389Z", "routine": "main", "step": "sumStep", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "6", "navigationInfo": { "parent": "5", "next": "7", "previous": "5" }, "stepEntryMetadata": { "progressType": "PROGRESS_TYPE_FOR", "progressNumber": "2" }, "variableData": { "variables": { "sum": 3, "v": 2 } } }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/7", "createTime": "2024-08-15T19:32:18.120894873Z", "updateTime": "2024-08-15T19:32:18.121003185Z", "routine": "main", "step": "returnStep", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "7", "navigationInfo": { "previous": "6" }, "variableData": { "variables": { "sum": 3 } } } ], "totalSize": 7 }
サブワークフロー呼び出しを使用したワークフロー
ワークフロー
YAML
main: steps: - callStep: call: square args: x: 10 result: t - retStep: return: ${t} square: params: [x] steps: - assignStep: assign: - y: ${x*x} - retStep: return: ${y}
JSON
{ "main": { "steps": [ { "callStep": { "call": "square", "args": { "x": 10 }, "result": "t" } }, { "retStep": { "return": "${t}" } } ] }, "square": { "params": [ "x" ], "steps": [ { "assignStep": { "assign": [ { "y": "${x*x}" } ] } }, { "retStep": { "return": "${y}" } } ] } }
図
ステップのエントリ
{ "stepEntries": [ { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-subworkflow-call/executions/e203bc96-a1cf-47ba-b6de-f3d1b0909664/stepEntries/1", "createTime": "2024-08-15T19:37:44.162778920Z", "updateTime": "2024-08-15T19:37:44.168683007Z", "routine": "main", "step": "callStep", "stepType": "STEP_CALL", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "children": [ "2", "3" ], "next": "2" }, "variableData": { "variables": { "t": 100 } } }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-subworkflow-call/executions/e203bc96-a1cf-47ba-b6de-f3d1b0909664/stepEntries/2", "createTime": "2024-08-15T19:37:44.168598736Z", "updateTime": "2024-08-15T19:37:44.168657969Z", "routine": "square", "step": "assignStep", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "parent": "1", "next": "3", "previous": "1" }, "variableData": { "variables": { "y": 100, "x": 10 } } }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-subworkflow-call/executions/e203bc96-a1cf-47ba-b6de-f3d1b0909664/stepEntries/3", "createTime": "2024-08-15T19:37:44.168659349Z", "updateTime": "2024-08-15T19:37:44.168676547Z", "routine": "square", "step": "retStep", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "3", "navigationInfo": { "parent": "1", "next": "4", "previous": "2" }, "variableData": { "variables": { "x": 10, "y": 100 } } }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-subworkflow-call/executions/e203bc96-a1cf-47ba-b6de-f3d1b0909664/stepEntries/4", "createTime": "2024-08-15T19:37:44.168693503Z", "updateTime": "2024-08-15T19:37:44.168702324Z", "routine": "main", "step": "retStep", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "previous": "3" }, "variableData": { "variables": { "t": 100 } } } ], "totalSize": 4 }
失敗したステップのエントリを含むワークフロー
ワークフロー
YAML
- tryStep: try: return: ${1 / 0} except: return: 0
JSON
[ { "tryStep": { "try": { "return": "${1 / 0}" }, "except": { "return": 0 } } } ]
図
ステップのエントリ
{ "stepEntries": [ { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/1", "createTime": "2024-08-15T19:42:51.415433810Z", "updateTime": "2024-08-15T19:42:51.416106923Z", "routine": "main", "step": "tryStep", "stepType": "STEP_TRY_RETRY_EXCEPT", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "children": [ "2", "4" ], "next": "2" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/2", "createTime": "2024-08-15T19:42:51.415439617Z", "updateTime": "2024-08-15T19:42:51.416065206Z", "routine": "main", "step": "tryStep", "stepType": "STEP_TRY", "state": "STATE_FAILED", "entryId": "2", "navigationInfo": { "children": [ "3" ], "parent": "1", "next": "3", "previous": "1" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/3", "createTime": "2024-08-15T19:42:51.415441815Z", "updateTime": "2024-08-15T19:42:51.416064665Z", "routine": "main", "step": "tryStep.try", "stepType": "STEP_RETURN", "state": "STATE_FAILED", "exception": { "payload": "{\"message\":\"ZeroDivisionError: division by zero\",\"tags\":[\"ZeroDivisionError\",\"ArithmeticError\"]}" }, "entryId": "3", "navigationInfo": { "parent": "2", "next": "4", "previous": "2" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/4", "createTime": "2024-08-15T19:42:51.416071869Z", "updateTime": "2024-08-15T19:42:51.416106840Z", "routine": "main", "step": "tryStep", "stepType": "STEP_EXCEPT", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "children": [ "5" ], "parent": "1", "next": "5", "previous": "3" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/5", "createTime": "2024-08-15T19:42:51.416087217Z", "updateTime": "2024-08-15T19:42:51.416106742Z", "routine": "main", "step": "tryStep.except", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "5", "navigationInfo": { "parent": "4", "previous": "4" }, "variableData": {} } ], "totalSize": 5 }