Puoi recuperare la cronologia di un'esecuzione di un flusso di lavoro specificata come elenco di voci dei passaggi. Ogni voce di passaggio fornisce informazioni che possono aiutarti durante l'analisi, il debug o l'ottimizzazione di un flusso di lavoro. Ad esempio, puoi confermare quali passaggi sono effettivamente eseguiti e determinare la durata e il successo di un passaggio. Ciò può essere particolarmente utile quando si esegue il debug di un flusso di lavoro non lineare grande o complicato (ad esempio, un flusso di lavoro con molti rami paralleli).
Una voce di passaggio rappresenta un passaggio effettivo nel codice sorgente (ad esempio assign
o call
) o un blocco di istruzioni (ad esempio, un loop for
o un blocco try/retry/except
). Per un elenco completo dei tipi di passaggi, vedi StepType.
Come recuperare le voci dei passaggi
Puoi recuperare le voci dei passaggi inviando una richiesta all'API REST Workflow Executions o tramite la console Google Cloud:
Console Google Cloud: in questo documento, vedi Visualizzare le voci dei passaggi nella console.
Oltre a elencare le voci dei passaggi e i relativi dettagli, la console fornisce una rappresentazione grafica dei passaggi di esecuzione, semplificando la visualizzazione e l'analisi del percorso di esecuzione di un flusso di lavoro.
API REST Workflow Executions: in questo documento, vedi Recuperare una voce di passaggio ed Elencare le voci di passaggi.
Informazioni per l'inserimento dei passaggi
Una voce di passaggio include le seguenti informazioni. Per maggiori dettagli, in questo documento, consulta gli esempi.
Nome | Nome completo della risorsa della voce del passaggio, che è un ID univoco nel
formato seguente, dove STEPENTRY_ID è un
contatore crescente:
Ad esempio:
|
Orari di creazione e aggiornamento | Timestamp per l'ora di creazione della voce del passaggio e il relativo aggiornamento più recente. Se l'inserimento di un passaggio è stato completato, updateTime indica
il tempo di completamento.
|
Nomi di routine e passi | Nomi della routine e del passaggio a cui appartiene la voce del passaggio. Il nome di una routine è il nome del flusso di lavoro secondario definito nel codice sorgente YAML o JSON. Il nome della routine di primo livello è main .
|
Stato e tipo di avanzamento | Stato dell'inserimento del passaggio, ad esempio se è riuscita o meno o se è in corso un passaggio e il tipo di avanzamento. Per un elenco completo di stati e tipi di avanzamento, consulta State e ProgressType. |
Informazioni di navigazione | Posizione della voce del passaggio in modo da poter comprendere meglio la gerarchia e il flusso del flusso di lavoro, ad esempio quali voci di passaggio vengono prima o dopo la voce del passaggio corrente o quali sono le voci padre o figlio della voce del passaggio. Per maggiori dettagli, vedi NavigationInfo. |
Metadati | Dati relativi a una voce del passaggio iterativa che include un ID che
indica il thread secondario (ad esempio, quale
STEP_PARALLEL_BRANCH_ENTRY in
STEP_PARALLEL_BRANCH ) o l'iterazione di un ciclo for (ad esempio, STEP_FOR_ITERATION in
STEP_FOR ). Per maggiori dettagli, consulta
StepEntryMetadata.
|
Eccezioni | Payload relativo a eventuali eccezioni e che fornisce una descrizione del motivo per cui un passaggio non è riuscito. |
Visualizza le voci dei passaggi nella console
Puoi visualizzare le voci dei passaggi per l'esecuzione di un flusso di lavoro specifico nella console Google Cloud.
Nella console Google Cloud, vai alla pagina Flussi di lavoro.
Fai clic sul nome del flusso di lavoro per andare alla pagina Dettagli flusso di lavoro.
Per informazioni dettagliate su una determinata esecuzione, fai clic sul relativo ID.
Nella scheda Riepilogo vengono fornite informazioni sull'esecuzione complessiva, incluse eventuali eccezioni che hanno portato alla mancata esecuzione. Per ulteriori informazioni, consulta Messaggi di errore di esecuzione.
Per visualizzare la cronologia di esecuzione del flusso di lavoro come elenco di voci dei passaggi, fai clic sulla scheda Passaggi.
Sono elencate tutte le voci dei passaggi per l'esecuzione del flusso di lavoro.
Per filtrare le voci dei passaggi, utilizza il campo Filtro nella parte superiore della tabella per selezionare una proprietà e un valore, ad esempio
State: Failed
.Per visualizzare i link per le voci dei passaggi Genitore, Secondario, Avanti e Precedente, fai clic su una voce specifica del passaggio.
Se fai clic su un link, gli altri link vengono aggiornati automaticamente. Ad esempio, Parent si collegherà all'elemento padre della voce del passaggio su cui hai fatto clic.
Il riquadro Visualizzazione fornisce una rappresentazione grafica dei passaggi del flusso di lavoro e ti aiuta a comprenderne il percorso.
Tieni presente che la visualizzazione può differire dalle voci dei passaggi. Ad esempio, un blocco
for
è rappresentato come un singolo componente nella visualizzazione; tuttavia, a seconda del numero di iterazioni, possono essere presenti più voci di passaggi.Nel riquadro puoi:
- Aumenta o diminuisci lo zoom della visualizzazione
- Comprimi o espandi le voci dei passaggi principali
- Fai clic su una voce del passaggio e visualizza le voci precedente e successiva
- Conferma le voci dei passaggi riusciti e non riuscite, come indicato da un segno di spunta verde o da un punto esclamativo rosso
- Chiudi il riquadro Visualizzazione facendo clic sulla freccia di espansione; fai clic di nuovo per aprire il riquadro
Prima di recuperare una voce di passaggio
Per ottenere le autorizzazioni necessarie per recuperare una voce di passaggio,
chiedi all'amministratore di concederti il ruolo IAM
Amministratore Workflows (workflows.stepEntries.get
)
nel tuo progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Recuperare un passaggio
Per recuperare una voce di passaggio per un'esecuzione specifica del flusso di lavoro, utilizza il metodo projects.locations.workflows.executions.stepEntries.get
.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud elencato nella pagina Impostazioni IAM e amministrazione.LOCATION
: la regione in cui viene eseguito il deployment del flusso di lavoro, ad esempious-central1
.WORKFLOW_ID
: nome definito dall'utente per il flusso di lavoro, ad esempiomyFirstWorkflow
.EXECUTION_ID
: l'ID univoco per l'esecuzione di un flusso di lavoro, che viene restituito dopo l'esecuzione di un flusso di lavoro.STEPENTRY_ID
: l'ID univoco di una voce di passaggio, ad esempio1
.
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "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" } }
Prima di elencare le voci dei passaggi
Per ottenere le autorizzazioni necessarie per elencare le voci dei passaggi, chiedi all'amministratore di concederti il ruolo IAM Amministratore Workflows (workflows.stepEntries.list
) per il tuo progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Elenca le voci dei passaggi
Per elencare le voci dei passaggi per una determinata esecuzione del flusso di lavoro, utilizza il metodo projects.locations.workflows.executions.stepEntries.list
. Per impostazione predefinita, i risultati vengono restituiti in ordine crescente delle createTime
delle voci dei passaggi.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud elencato nella pagina Impostazioni IAM e amministrazione.LOCATION
: la regione in cui viene eseguito il deployment del flusso di lavoro, ad esempious-central1
.WORKFLOW_ID
: nome definito dall'utente per il flusso di lavoro, ad esempiomyFirstWorkflow
.EXECUTION_ID
: l'ID univoco per l'esecuzione di un flusso di lavoro, che viene restituito dopo l'esecuzione di un flusso di lavoro.
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "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 }
Esempi
Flusso di lavoro con un blocco for
Flusso di lavoro
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}" } } ]
Diagramma
Voci dei passaggi
{ "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 }
Flusso di lavoro con una chiamata del flusso di lavoro secondario
Flusso di lavoro
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}" } } ] } }
Diagramma
Voci dei passaggi
{ "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 }
Flusso di lavoro con una voce di passaggio non riuscita
Flusso di lavoro
YAML
- tryStep: try: return: ${1 / 0} except: return: 0
JSON
[ { "tryStep": { "try": { "return": "${1 / 0}" }, "except": { "return": 0 } } } ]
Diagramma
Voci dei passaggi
{ "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 }