Visualizza la cronologia dei passaggi di esecuzione

Puoi recuperare la cronologia di una specifica esecuzione di un flusso di lavoro sotto forma di elenco di passaggi . Ogni passaggio fornisce informazioni utili per l'analisi, il debug 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 di 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 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:

Informazioni per l'inserimento dei passaggi

Una voce di 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:
projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/STEPENTRY_ID
Ad esempio:
projects/123456789012/locations/us-central1/workflows/myFirstWorkflow/executions/ae8a66a1-cefa-4d16-8a2f-d50c712d8ef1/stepEntries/2
Orari di creazione e aggiornamento Timestamp per l'ora di creazione della voce del passaggio e la sua ultima aggiornamento. Se l'inserimento di un passaggio è stato completato, updateTime indica per il tempo di completamento.
Nomi di routine e passi 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 è riuscita o o se è in corso un passaggio e il tipo di avanzamento. Per un un elenco completo di stati e tipi di avanzamento, consulta Stato 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 iterativa tra cui un ID che indica il thread secondario (ad esempio, STEP_PARALLEL_BRANCH_ENTRY pollici STEP_PARALLEL_BRANCH) o l'iterazione di un for (ad esempio, STEP_FOR_ITERATION in STEP_FOR). Per maggiori dettagli, vedi StepEntryMetadata.
Eccezioni Payload relativo a eventuali eccezioni e che fornisce una descrizione il motivo per cui un passaggio non è riuscito.

Visualizza 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.

  1. Nella console Google Cloud, vai alla pagina Flussi di lavoro.

    Vai a Flussi di lavoro

  2. Fai clic sul nome del flusso di lavoro per andare alla pagina Dettagli flusso di lavoro.

  3. 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 le informazioni, vedi Messaggi di errore di esecuzione.

  4. Per visualizzare la cronologia di esecuzione del flusso di lavoro come elenco di voci di passaggio, fai clic sull'icona Scheda Passaggi.

    Sono elencate tutte le voci dei passaggi per l'esecuzione del flusso di lavoro.

  5. Per filtrare le voci dei passaggi, utilizza il campo Filtro nella parte superiore della per selezionare una proprietà e un valore, ad esempio State: Failed.

  6. Per visualizzare i link per qualsiasi elemento Genitore, Secondario, Avanti e Precedente le voci di passaggio, 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.

  7. Il riquadro Visualizzazione fornisce una rappresentazione grafica dei passaggi del flusso di lavoro e ti aiuta a comprenderne il percorso.

    Esempio di riquadro di visualizzazione

    Fai clic sul diagramma per ingrandirlo:

    Riquadro di visualizzazione che mostra il flusso di lavoro con passaggi non riusciti

    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 di passaggi riuscite e non riuscite, come indicato da un segno di spunta verde o 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.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.

Recupera una voce relativa a un passaggio

Per recuperare l'immissione di un passaggio per una determinata esecuzione del flusso di lavoro, utilizza la projects.locations.workflows.executions.stepEntries.get .

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_NUMBER: il tuo account Google Cloud di progetto elencato nella sezione IAM e Amministratore Impostazioni.
  • LOCATION: il valore regione in cui viene eseguito il deployment del flusso di lavoro, ad esempio us-central1.
  • WORKFLOW_ID: nome definito dall'utente per il flusso di lavoro, ad esempio myFirstWorkflow.
  • EXECUTION_ID: l'ID univoco di un che viene restituita dopo l'esecuzione di un flusso di lavoro.
  • STEPENTRY_ID: l'ID univoco di un passo passo, ad esempio 1.

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 Amministratore Workflows (workflows.stepEntries.list) ruolo IAM 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 la ruoli o altri ruoli predefiniti ruoli.

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 di createTime delle voci dei passaggi.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_NUMBER: il tuo account Google Cloud di progetto elencato nella sezione IAM e Amministratore Impostazioni.
  • LOCATION: il valore regione in cui viene eseguito il deployment del flusso di lavoro, ad esempio us-central1.
  • WORKFLOW_ID: nome definito dall'utente per il flusso di lavoro, ad esempio myFirstWorkflow.
  • EXECUTION_ID: l'ID univoco di un che viene restituita 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

Flusso di lavoro con un blocco for

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

Flusso di lavoro con una chiamata del flusso di lavoro secondario

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

Flusso di lavoro con una voce di passaggio non riuscita

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
}

Passaggi successivi