Sie können den Verlauf einer bestimmten Workflowausführung als Liste von Schritteinträgen abrufen. Jeder Schritteintrag enthält Informationen, die Ihnen bei der Analyse, Fehlerbehebung oder Optimierung eines Workflows helfen können. Sie können beispielsweise prüfen, welche Schritte tatsächlich ausgeführt wurden, und die Dauer und den Erfolg eines Schritts ermitteln. Das kann besonders hilfreich sein, wenn ein großer oder komplizierter nicht linearer Workflow (z. B. mit vielen parallelen Verzweigungen) debuggt wird.
Ein Schritteintrag steht entweder für einen tatsächlichen Schritt im Quellcode (z. B. assign
oder call
) oder für einen Anweisungsblock (z. B. eine for
-Schleife oder einen try/retry/except
-Block). Eine vollständige Liste der Schritttypen finden Sie unter StepType.
Schritteinträge abrufen
Sie können Schritteinträge entweder durch Senden einer Anfrage an die REST API für Workflowausführungen oder über die Google Cloud Console abrufen:
Google Cloud Console: In diesem Dokument finden Sie unter Schritteinträge in der Console ansehen weitere Informationen.
Die Console enthält nicht nur die Schritteinträge und ihre Details, sondern auch eine grafische Darstellung der Ausführungsschritte, die es einfacher macht, den Pfad einer Workflowausführung anzusehen und zu analysieren.
REST API zur Workflow-Ausführung: In diesem Dokument finden Sie die Abschnitte Schritteintrag abrufen und Schritteinträge auflisten.
Informationen zum Schritt
Ein Schritteintrag enthält die folgenden Informationen. Weitere Informationen finden Sie in diesem Dokument unter Beispiele.
Name | Vollständiger Ressourcenname des Schritteintrags, eine eindeutige ID im folgenden Format, wobei STEPENTRY_ID ein inkrementeller Zähler ist:
|
Zeiten erstellen und aktualisieren | Zeitstempel für die Erstellungszeit des Schritts und seine letzte Aktualisierung. Wenn ein Schritt abgeschlossen ist, gibt updateTime den Zeitpunkt des Abschlusses an.
|
Namen von Abläufen und Schritten | Namen der Routine und des Schritts, zu dem der Schritteintrag gehört. Der Name einer Routine ist der Name des untergeordneten Workflows, der im YAML- oder JSON-Quellcode definiert ist. Der Name der Routine auf oberster Ebene lautet main .
|
Status und Fortschritt | Status des Schritts – z. B. ob der Schritt erfolgreich war oder fehlgeschlagen ist oder ob ein Schritt in Bearbeitung ist und welche Art von Fortschritt vorliegt. Eine vollständige Liste der Status und Fortschrittstypen finden Sie unter Status und ProgressType. |
Navigationsinformationen | Position des Schritteintrags, damit Sie die Hierarchie und den Ablauf des Workflows besser nachvollziehen können, z. B. welche Schritteinträge vor oder nach dem aktuellen Schritteintrag kommen oder welche über- oder untergeordnet sind. Weitere Informationen finden Sie unter NavigationInfo. |
Metadaten | Daten zu einem iterativen Schritteintrag mit einer ID, die den untergeordneten Thread angibt (z. B. welche STEP_PARALLEL_BRANCH_ENTRY in STEP_PARALLEL_BRANCH ) oder die Iteration einer for -Schleife (z. B. welche STEP_FOR_ITERATION in STEP_FOR ). Weitere Informationen finden Sie unter StepEntryMetadata.
|
Ausnahmen | Nutzlast, die sich auf Ausnahmen bezieht und eine Beschreibung enthält, warum ein Schritt nicht ausgeführt werden konnte. |
Schritteinträge in der Console ansehen
Sie können die Schritteinträge für eine bestimmte Workflowausführung in der Google Cloud Console aufrufen.
Öffnen Sie in der Google Cloud Console die Seite Workflows.
Klicken Sie auf den Namen des Workflows, um die Seite Workflow-Details aufzurufen.
Klicken Sie auf die ID der Ausführung, um Details zu einer bestimmten Ausführung zu erhalten.
Auf dem Tab Zusammenfassung finden Sie Informationen zur gesamten Ausführung, einschließlich aller Ausnahmen, die zum Fehler geführt haben. Weitere Informationen finden Sie unter Zuordnungen von Ausführungsfehlern.
Wenn Sie den Ausführungsverlauf des Workflows als Liste von Schritten aufrufen möchten, klicken Sie auf den Tab Schritte.
Alle Schritteinträge für die Workflowausführung werden aufgeführt.
Wenn Sie die Schritteinträge filtern möchten, wählen Sie oben in der Tabelle im Feld Filter eine Property und einen Wert aus, z. B.
State: Failed
.Wenn Sie Links für die Schritte Übergeordnet, Untergeordnet, Nächster und Vorheriger aufrufen möchten, klicken Sie auf einen bestimmten Schritt.
Wenn Sie auf einen Link klicken, werden die anderen Links automatisch aktualisiert. Beispiel: Übergeordnet verweist beispielsweise auf das übergeordnete Element des Schritts, auf den Sie geklickt haben.
Im Bereich Visualisierung finden Sie eine grafische Darstellung der Schritte im Workflow, die Ihnen dabei helfen, den Workflowpfad zu verstehen.
Die Visualisierung kann von den Schritten abweichen. Ein
for
-Block wird beispielsweise als einzelne Komponente in der Visualisierung dargestellt. Je nach Anzahl der Iterationen kann es jedoch mehrere Schritteinträge geben.Im Steuerfeld haben Sie folgende Möglichkeiten:
- In die Visualisierung hinein- oder herauszoomen
- Einträge für übergeordnete Schritte minimieren oder maximieren
- Auf einen Schritteintrags klicken und die vorherigen und nächsten Einträge aufrufen
- Bestätigen Sie erfolgreiche und fehlgeschlagene Schritteinträge mit einem grünen Häkchen oder einem roten Ausrufezeichen.
- Schließen Sie den Bereich Visualisierung, indem Sie auf den Maximierungspfeil klicken. Klicken Sie noch einmal darauf, um den Bereich zu öffnen.
Bevor Sie einen Schritteintrag abrufen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle
„Workflows Admin“ (workflows.stepEntries.get
) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Abrufen eines Schritteintrags benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Schritteintrag abrufen
Verwenden Sie die Methode projects.locations.workflows.executions.stepEntries.get
, um einen Schritteintrag für eine bestimmte Workflowausführung abzurufen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_NUMBER
: Ihre Google Cloud-Projektnummer, die auf der Seite IAM- und Administratoreinstellungen aufgeführt ist.LOCATION
: die Region, in der der Workflow bereitgestellt wird, z. B.us-central1
.WORKFLOW_ID
: Der benutzerdefinierte Name für den Workflow, z. B.myFirstWorkflow
.EXECUTION_ID
: Die eindeutige ID für eine Workflowausführung, die nach der Ausführung eines Workflows zurückgegeben wird.STEPENTRY_ID
: Die eindeutige ID für einen Schritteintrag, z. B.1
.
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/STEPENTRY_ID", "createTime": "2023-10-19T13:49:56.522717646Z", "updateTime": "2023-10-19T13:49:56.525439354Z", "routine": "main", "step": "checkSearchTermInInput", "stepType": "STEP_CONDITION", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "children": [ "3" ], "parent": "1", "next": "3", "previous": "1" } }
Bevor Sie Schritte auflisten
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Workflows Admin (workflows.stepEntries.list
) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Auflisten von Schritten benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Schrittseinträge auflisten
Verwenden Sie die Methode projects.locations.workflows.executions.stepEntries.list
, um die Schritteinträge für eine bestimmte Workflowausführung aufzulisten. Standardmäßig werden die Ergebnisse in aufsteigender Reihenfolge des createTime
der Schritteinträge zurückgegeben.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_NUMBER
: Ihre Google Cloud-Projektnummer, die auf der Seite IAM- und Administratoreinstellungen aufgeführt ist.LOCATION
: die Region, in der der Workflow bereitgestellt wird, z. B.us-central1
.WORKFLOW_ID
: Der benutzerdefinierte Name für den Workflow, z. B.myFirstWorkflow
.EXECUTION_ID
: Die eindeutige ID für eine Workflowausführung, die nach der Ausführung eines Workflows zurückgegeben wird.
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "stepEntries": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/1", "createTime": "2023-10-19T13:49:56.522705770Z", "updateTime": "2023-10-19T13:49:56.525439429Z", "routine": "main", "step": "checkSearchTermInInput", "stepType": "STEP_SWITCH", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "children": [ "2" ], "next": "2" } }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/2", "createTime": "2023-10-19T13:49:56.522717646Z", "updateTime": "2023-10-19T13:49:56.525439354Z", "routine": "main", "step": "checkSearchTermInInput", "stepType": "STEP_CONDITION", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "children": [ "3" ], "parent": "1", "next": "3", "previous": "1" } }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/3", "createTime": "2023-10-19T13:49:56.525379814Z", "updateTime": "2023-10-19T13:49:56.525439285Z", "routine": "main", "step": "checkSearchTermInInput.condition1", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "3", "navigationInfo": { "parent": "2", "next": "4", "previous": "2" } }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/4", "createTime": "2023-10-19T13:49:56.525440360Z", "updateTime": "2023-10-19T13:49:56.716973793Z", "routine": "main", "step": "readWikipedia", "stepType": "STEP_CALL", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "next": "5", "previous": "3" } }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/5", "createTime": "2023-10-19T13:49:56.717263008Z", "updateTime": "2023-10-19T13:49:56.717353199Z", "routine": "main", "step": "returnOutput", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "5", "navigationInfo": { "previous": "4" } } ], "totalSize": 5 }
Beispiele
Workflow mit einem for
-Block
Workflow
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}" } } ]
Diagramm
Schritteinträge
{ "stepEntries": [ { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/1", "createTime": "2023-10-20T17:19:37.889232683Z", "updateTime": "2023-10-20T17:19:37.889275457Z", "routine": "main", "step": "assignStep", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "next": "2" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/2", "createTime": "2023-10-20T17:19:37.889276124Z", "updateTime": "2023-10-20T17:19:37.889474759Z", "routine": "main", "step": "forStep", "stepType": "STEP_FOR", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "children": [ "3", "5" ], "next": "3", "previous": "1" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/3", "createTime": "2023-10-20T17:19:37.889313107Z", "updateTime": "2023-10-20T17:19:37.889382353Z", "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" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/4", "createTime": "2023-10-20T17:19:37.889317653Z", "updateTime": "2023-10-20T17:19:37.889382265Z", "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" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/5", "createTime": "2023-10-20T17:19:37.889383134Z", "updateTime": "2023-10-20T17:19:37.889474707Z", "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" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/6", "createTime": "2023-10-20T17:19:37.889384893Z", "updateTime": "2023-10-20T17:19:37.889474649Z", "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" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/7", "createTime": "2023-10-20T17:19:37.889475882Z", "updateTime": "2023-10-20T17:19:37.889483477Z", "routine": "main", "step": "returnStep", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "7", "navigationInfo": { "previous": "6" } } ], "totalSize": 7 }
Workflow mit Aufruf eines untergeordneten Workflows
Workflow
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}" } } ] } }
Diagramm
Schritteinträge
{ "stepEntries": [ { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/69da2159-1039-4f88-8d8a-12baf398f372/stepEntries/1", "createTime": "2023-10-21T15:25:55.406007695Z", "updateTime": "2023-10-21T15:25:55.412984492Z", "routine": "main", "step": "callStep", "stepType": "STEP_CALL", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "children": [ "2", "3" ], "next": "2" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/69da2159-1039-4f88-8d8a-12baf398f372/stepEntries/2", "createTime": "2023-10-21T15:25:55.412921902Z", "updateTime": "2023-10-21T15:25:55.412967631Z", "routine": "square", "step": "assignStep", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "parent": "1", "next": "3", "previous": "1" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/69da2159-1039-4f88-8d8a-12baf398f372/stepEntries/3", "createTime": "2023-10-21T15:25:55.412968712Z", "updateTime": "2023-10-21T15:25:55.412978913Z", "routine": "square", "step": "retStep", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "3", "navigationInfo": { "parent": "1", "next": "4", "previous": "2" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/69da2159-1039-4f88-8d8a-12baf398f372/stepEntries/4", "createTime": "2023-10-21T15:25:55.412992302Z", "updateTime": "2023-10-21T15:25:55.412998396Z", "routine": "main", "step": "retStep", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "previous": "3" } } ], "totalSize": 4 }
Workflow mit einem fehlgeschlagenen Schritt
Workflow
YAML
- tryStep: try: return: ${1 / 0} except: return: 0
JSON
[ { "tryStep": { "try": { "return": "${1 / 0}" }, "except": { "return": 0 } } } ]
Diagramm
Schritteinträge
{ "stepEntries": [ { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/8ec49dae-ab0c-4b55-b1c4-b809244be913/stepEntries/1", "createTime": "2023-10-20T18:06:50.395938752Z", "updateTime": "2023-10-20T18:06:50.396525946Z", "routine": "main", "step": "tryStep", "stepType": "STEP_TRY_RETRY_EXCEPT", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "children": [ "2", "4" ], "next": "2" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/8ec49dae-ab0c-4b55-b1c4-b809244be913/stepEntries/2", "createTime": "2023-10-20T18:06:50.395942598Z", "updateTime": "2023-10-20T18:06:50.396497992Z", "routine": "main", "step": "tryStep", "stepType": "STEP_TRY", "state": "STATE_FAILED", "entryId": "2", "navigationInfo": { "children": [ "3" ], "parent": "1", "next": "3", "previous": "1" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/8ec49dae-ab0c-4b55-b1c4-b809244be913/stepEntries/3", "createTime": "2023-10-20T18:06:50.395944871Z", "updateTime": "2023-10-20T18:06:50.396497499Z", "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" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/8ec49dae-ab0c-4b55-b1c4-b809244be913/stepEntries/4", "createTime": "2023-10-20T18:06:50.396506860Z", "updateTime": "2023-10-20T18:06:50.396525900Z", "routine": "main", "step": "tryStep", "stepType": "STEP_EXCEPT", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "children": [ "5" ], "parent": "1", "next": "5", "previous": "3" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/8ec49dae-ab0c-4b55-b1c4-b809244be913/stepEntries/5", "createTime": "2023-10-20T18:06:50.396516994Z", "updateTime": "2023-10-20T18:06:50.396525818Z", "routine": "main", "step": "tryStep.except", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "5", "navigationInfo": { "parent": "4", "previous": "4" } } ], "totalSize": 5 }