Puoi recuperare la cronologia di un'esecuzione del flusso di lavoro specificato come elenco di voci del passaggio. Ogni voce del passaggio fornisce informazioni che possono aiutarti durante l'analisi, il debugging o l'ottimizzazione di un flusso di lavoro. Ad esempio, puoi confermare quali passaggi effettivamente eseguiti, per determinare la durata e il successo di un passaggio. Ciò può essere particolarmente utile per il debug di un'istanza di grandi dimensioni o un flusso di lavoro non lineare, ad esempio con molti rami paralleli.
Una voce del passaggio rappresenta un passaggio effettivo nel codice sorgente (ad esempio assign
o call
) o un blocco di istruzioni (ad esempio un ciclo 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 al flusso di lavoro l'API REST Executions o tramite la console Google Cloud:
Console Google Cloud: in questo documento, consulta Visualizzare le voci dei passaggi nella console.
Oltre a elencare le voci dei passaggi e i relativi dettagli, la console fornisce una rappresentazione grafica delle fasi di esecuzione, semplificando per visualizzare e analizzare il percorso di esecuzione di un flusso di lavoro.
API REST Workflow Executions: in questo documento, consulta Recupero di una voce di passaggio e Elenco delle voci di passaggio.
Informazioni per l'inserimento dei passaggi
Una voce del passaggio include le seguenti informazioni. Per ulteriori dettagli, in questo consulta gli esempi.
Nome | Nome completo della risorsa della voce del passaggio, che è un ID univoco con
seguente e dove STEPENTRY_ID è un
contatore in aumento:
|
Ore di creazione e aggiornamento | Timestamp per l'ora di creazione della voce del passaggio e la sua ultima
aggiornamento. Se la voce di un passaggio è stata completata, updateTime indica
l'ora di completamento.
|
Nomi di routine e passaggi | Nomi della routine e del passaggio a cui appartiene la voce del passaggio. R
il nome della routine è il nome del flusso di lavoro secondario definito nell'origine YAML o JSON
le API nel tuo codice. Il nome della routine di primo livello è main .
|
Stato e tipo di avanzamento | Stato della voce del passaggio, ad esempio se la voce è andata a buon fine o meno o se è in corso e il tipo di avanzamento. Per un elenco completo degli stati e dei tipi di avanzamento, consulta State e ProgressType. |
Informazioni di navigazione | Posizione del passaggio, in modo da poter comprendere meglio gerarchia e flusso del flusso di lavoro, ad esempio quali voci vengono prima o dopo l'immissione del passaggio corrente o che sono genitori o figli della voce del passaggio. Per maggiori dettagli, vedi NavigationInfo. |
Metadati | Dati relativi a una voce di passaggio iterativo, incluso un ID che indica il thread secondario (ad es. STEP_PARALLEL_BRANCH_ENTRY in STEP_PARALLEL_BRANCH ) o l'iterazione di un loop for (ad es. STEP_FOR_ITERATION in STEP_FOR ). Per maggiori dettagli, consulta StepEntryMetadata.
|
Eccezioni | Payload relativo a eventuali eccezioni e che fornisce una descrizione il motivo per cui un passaggio non è riuscito. |
Visualizzare le voci dei passaggi nella console
Puoi visualizzare le voci dei passaggi per l'esecuzione di uno specifico flusso di lavoro nella 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 i dettagli di una determinata esecuzione, fai clic sul relativo ID esecuzione.
Nella scheda Riepilogo vengono fornite informazioni sull'esecuzione complessiva, incluse eventuali eccezioni che hanno portato alla mancata esecuzione. Per ulteriori informazioni, consulta la sezione Messaggi di errore di esecuzione.
Per visualizzare la cronologia di esecuzione del flusso di lavoro come elenco di voci di passaggio, fai clic sulla scheda Passaggi.
Sono elencate tutte le voci dei passaggi per l'esecuzione del flusso di lavoro.
Per filtrare le voci del passaggio, 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 qualsiasi elemento Genitore, Secondario, Avanti e Precedente fai clic su una voce di passaggio specifica.
Se fai clic su un link, gli altri link vengono aggiornati automaticamente. Ad esempio: Principale si collega all'elemento principale 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 comprendere il percorso del flusso di lavoro.
Tieni presente che la visualizzazione può differire dalle voci dei passaggi. Ad esempio, un Il blocco
for
è raffigurato come un singolo componente nella visualizzazione. ma a seconda del numero di iterazioni, possono essere presenti più voci di passaggio.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 riusciti, come indicato da un segno di spunta verde o da un punto esclamativo rosso
- Chiudi il riquadro Visualizzazione facendo clic sull'icona a forma di freccia di espansione; fai di nuovo clic per apri 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
Amministratore Workflows (workflows.stepEntries.get
)
ruolo IAM per il tuo progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Recuperare una voce del passaggio
Per recuperare una voce del passaggio per una determinata esecuzione del flusso di lavoro, utilizza il metodo
projects.locations.workflows.executions.stepEntries.get
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud elencato nella pagina Impostazioni di IAM e amministrazione.LOCATION
: il 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 di un'esecuzione del flusso di lavoro restituito al termine dell'esecuzione.STEPENTRY_ID
: l'ID univoco di un passo passo, ad esempio1
.
Per inviare la richiesta, espandi una di queste 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 della procedura
Per ottenere le autorizzazioni necessarie per elencare le voci dei passaggi,
chiedi all'amministratore di concederti
Amministratore Workflows (workflows.stepEntries.list
)
ruolo IAM per il tuo progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
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 la
projects.locations.workflows.executions.stepEntries.list
. Per impostazione predefinita, i risultati vengono restituiti in ordine crescente del valore createTime
delle voci del passaggio.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud elencato nella pagina Impostazioni di IAM e amministrazione.LOCATION
: la regione in cui è stato 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 di un che viene restituita dopo l'esecuzione di un flusso di lavoro.
Per inviare la richiesta, espandi una di queste 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 del passaggio
{ "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 di 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 del passaggio
{ "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 del passaggio
{ "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 }