É possível recuperar o histórico de uma execução de fluxo de trabalho especificada como uma lista de entradas de etapas. Cada entrada de etapa fornece informações que podem ajudar você a analisar, depurar ou otimizar um fluxo de trabalho. Por exemplo, é possível confirmar quais etapas foram executadas e determinar a duração e o sucesso de uma etapa. Isso pode ser útil principalmente ao depurar um fluxo de trabalho não linear grande ou complicado (um com muitas ramificações paralelas, por exemplo).
Uma entrada de etapa representa uma etapa real no código-fonte (por exemplo,
assign
ou call
) ou um bloco de instruções (por exemplo, um loop for
ou um
bloco try/retry/except
). Para conferir uma lista completa de tipos de etapa, consulte
StepType.
Como recuperar entradas de etapas
É possível recuperar as entradas de etapas enviando uma solicitação para a API REST de execuções de fluxo de trabalho ou pelo console do Google Cloud:
Console do Google Cloud: neste documento, consulte Conferir as entradas de etapa no console.
Além de listar as entradas de etapa e os detalhes delas, o console oferece uma representação gráfica das etapas de execução, facilitando a visualização e a análise do caminho de uma execução de fluxo de trabalho.
API REST para execuções do Workflows: neste documento, consulte Extrair uma entrada de etapa e Listar entradas de etapa.
Informações de entrada da etapa
Uma entrada de etapa inclui as seguintes informações. Para mais detalhes, consulte os exemplos neste documento.
Nome | O nome completo do recurso da entrada de etapa, que é um ID exclusivo com o
seguinte formato, em que STEPENTRY_ID é um
contador crescente:
|
Criar e atualizar horários | Carimbos de data/hora da criação da entrada de etapa e da atualização
mais recente. Se uma entrada de etapa foi concluída, updateTime indica
o tempo de conclusão.
|
Nomes de rotinas e etapas | Nomes da rotina e da etapa a que a entrada de etapa pertence. Um
nome de rotina é o nome do subfluxo de trabalho definido no código-fonte
YAML ou JSON. O nome da rotina de nível superior é main .
|
Estado e tipo de progresso | Estado da entrada da etapa. Por exemplo, se a entrada teve sucesso ou falhou ou se uma entrada de etapa está em andamento e o tipo de progresso. Para uma lista completa de estados e tipos de progresso, consulte Estado e ProgressType. |
Informações de navegação | Posição da entrada da etapa para que você possa entender melhor a hierarquia e o fluxo do fluxo de trabalho. Por exemplo, quais entradas de etapa vêm antes ou depois da entrada atual ou quais são pais ou filhos da entrada da etapa. Para mais detalhes, consulte NavigationInfo. |
Metadados | Dados relacionados a uma entrada de etapa iterativa que inclui um ID que
indica a linha de execução filha (por exemplo, qual
STEP_PARALLEL_BRANCH_ENTRY em
STEP_PARALLEL_BRANCH ) ou a iteração de um loop
for (por exemplo, qual STEP_FOR_ITERATION em
STEP_FOR ). Para mais detalhes, consulte
StepEntryMetadata.
|
Exceções | Payload relacionado a qualquer exceção e que fornece uma descrição do motivo da falha de uma entrada de etapa. |
Conferir as entradas de etapas no console
É possível conferir as entradas de etapa de uma execução de fluxo de trabalho específica no console do Google Cloud.
No console do Google Cloud, abra a página Workflows.
Clique no nome do fluxo de trabalho para acessar a página Detalhes do fluxo de trabalho.
Para detalhes sobre uma execução específica, clique no ID dela.
Na guia Resumo, são fornecidas informações sobre a execução geral, incluindo qualquer exceção que levou à falha da execução. Para mais informações, consulte Mapas de erros de execução.
Para conferir o histórico de execução do fluxo de trabalho como uma lista de entradas de etapas, clique na guia Etapas.
Todas as entradas de etapa para a execução do fluxo de trabalho são listadas.
Para filtrar as entradas de etapas, use o campo Filtro na parte de cima da tabela para selecionar uma propriedade e um valor, por exemplo,
State: Failed
.Para mostrar links para qualquer entrada de etapa Pai, Filhos, Próxima e Anterior, clique em uma entrada de etapa específica.
Se você clicar em um link, os outros links serão atualizados automaticamente. Por exemplo, Pai vai vincular à entrada de etapa que você clicou.
O painel Visualização oferece uma representação gráfica das etapas do fluxo de trabalho e ajuda a entender o caminho do fluxo de trabalho.
A visualização pode ser diferente das entradas de etapa. Por exemplo, um bloco
for
é representado como um único componente na visualização. No entanto, dependendo do número de iterações, pode haver várias entradas de etapas.Você pode fazer o seguinte no painel:
- Aumentar ou diminuir o zoom da visualização
- Recolher ou expandir as entradas de etapas principais
- Clique em uma entrada de etapa e confira as entradas anteriores e seguintes
- Confirme as entradas de etapas bem-sucedidas e com falha, conforme indicado por uma marca de seleção verde ou um ponto de exclamação vermelho.
- Feche o painel Visualização clicando na seta de expansão . Clique nela novamente para abrir o painel.
Antes de recuperar uma entrada de etapa
Para receber as permissões necessárias para recuperar uma entrada de etapa,
peça ao administrador para conceder a você o
papel do IAM de administrador de fluxos de trabalho (workflows.stepEntries.get
)
no seu projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Recuperar uma entrada de etapa
Para recuperar uma entrada de etapa para uma determinada execução de fluxo de trabalho, use o método
projects.locations.workflows.executions.stepEntries.get
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do projeto do Google Cloud listado na página Configurações do IAM e do administrador.LOCATION
: a região em que o fluxo de trabalho é implantado, por exemplo,us-central1
.WORKFLOW_ID
: o nome definido pelo usuário para o fluxo de trabalho. Por exemplo,myFirstWorkflow
.EXECUTION_ID
: o ID exclusivo de uma execução de fluxo de trabalho que é retornado após a execução de um fluxo de trabalho.STEPENTRY_ID
: o ID exclusivo de uma inserção de etapa, por exemplo,1
.
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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" } }
Antes de listar as entradas de etapas
Para receber as permissões necessárias para listar as entradas de etapas,
peça ao administrador para conceder a você o
papel do IAM de
Administrador de fluxos de trabalho (workflows.stepEntries.list
)
no seu projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Listar entradas de etapas
Para listar as entradas de etapa de uma determinada execução de fluxo de trabalho, use o
método
projects.locations.workflows.executions.stepEntries.list
. Por padrão, os resultados são retornados em ordem crescente do createTime
das entradas de etapa.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do projeto do Google Cloud listado na página Configurações do IAM e do administrador.LOCATION
: a região em que o fluxo de trabalho é implantado, por exemplo,us-central1
.WORKFLOW_ID
: o nome definido pelo usuário para o fluxo de trabalho. Por exemplo,myFirstWorkflow
.EXECUTION_ID
: o ID exclusivo de uma execução de fluxo de trabalho que é retornado após a execução de um fluxo de trabalho.
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 }
Exemplos
Fluxo de trabalho com um bloco for
Fluxo de trabalho
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}" } } ]
Diagrama
Entradas de etapas
{ "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 }
Fluxo de trabalho com uma chamada de subfluxo de trabalho
Fluxo de trabalho
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}" } } ] } }
Diagrama
Entradas de etapas
{ "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 }
Fluxo de trabalho com uma entrada de etapa com falha
Fluxo de trabalho
YAML
- tryStep: try: return: ${1 / 0} except: return: 0
JSON
[ { "tryStep": { "try": { "return": "${1 / 0}" }, "except": { "return": 0 } } } ]
Diagrama
Entradas de etapas
{ "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 }
A seguir
- Visão geral da depuração
- Monitorar fluxos de trabalho
- Resolver problemas
- Problemas conhecidos dos fluxos de trabalho