É possível recuperar o histórico de uma execução de fluxo de trabalho especificada como uma lista de entradas de etapa. 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 é especialmente útil ao depurar um fluxo de trabalho não linear grande ou complicado (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 uma lista completa de tipos de etapa, consulte
StepType.
Nível do histórico de execução
Ao criar ou executar um fluxo de trabalho, é possível especificar um histórico de execução básico ou detalhado. É possível aplicar essa configuração no nível do fluxo de trabalho ou da execução.
Por padrão, nenhum nível de histórico de execução é especificado, e as entradas de etapa básicas são retornadas.
Se você quiser que o histórico de execução inclua valores de variáveis no escopo e, se aplicável, o número esperado de iterações (por exemplo, ao usar um loop for
ou uma ramificação ou iteração paralela), defina o nível do histórico de execução como Detalhado.
Se um nível de histórico de execução não for especificado para uma execução, ele será determinado pelo nível aplicado ao fluxo de trabalho. Se os níveis forem diferentes, a configuração aplicada no nível de execução vai substituir a configuração aplicada no nível do fluxo de trabalho para essa execução.
Como recuperar entradas de etapas
É possível recuperar entradas de etapa enviando uma solicitação para a API REST de execuções de fluxo de trabalho ou pelo console do Google Cloud :
Google Cloud console: neste documento, consulte Ver entradas de etapas no console.
Além de listar as entradas de etapa e os detalhes delas, o console fornece 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 de execuções do Workflows: neste documento, consulte Recuperar uma entrada de etapa e Listar entradas de etapa.
Informações de entrada da etapa
Uma entrada de etapa inclui as seguintes informações: As entradas de etapas detalhadas também incluem as informações básicas.
Para mais informações, consulte os Exemplos neste documento.
Informações básicas de entrada de etapas
Nome | Nome completo do recurso da entrada da 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 for concluída, updateTime vai indicar o horário 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 .
|
Tipo de estado e progresso | Estado da entrada da etapa. Por exemplo, se a entrada foi concluída ou falhou, ou se uma entrada da etapa está em andamento e o tipo de progresso. Para uma lista completa de estados e tipos de progresso, consulte State e ProgressType. |
Informações de navegação | Posição da entrada da etapa para que você entenda 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 de etapa. Para mais detalhes, consulte NavigationInfo. |
Metadados | Dados relacionados a uma entrada de etapa iterativa, que pode incluir o seguinte:
|
Exceções | Payload relacionado a exceções e que fornece uma descrição do motivo da falha de uma entrada de etapa. |
Informações detalhadas sobre a entrada de etapas
Metadados | Se aplicável, o número esperado de iterações no progresso da etapa. Por exemplo, ao usar um loop A contagem calculada não vai funcionar como esperado se os limites do loop incluírem expressões que incorporem qualquer um dos seguintes elementos:
|
Dados variáveis | Dados relacionados a valores de variáveis no escopo associados a esta etapa, incluindo os nomes e valores de variáveis locais definidas pelo usuário e os resultados das avaliações de expressões. O escopo exclui variáveis internas vinculadas a funções integradas do Workflows. Para mais detalhes, consulte VariableData. |
Ver entradas de etapas no console
É possível conferir as entradas de etapa de uma execução de fluxo de trabalho específica no console doGoogle Cloud .
No console Google Cloud , acesse a página Fluxos de trabalho.
Clique no nome do fluxo de trabalho para acessar a página Detalhes do fluxo de trabalho.
Para detalhes sobre uma determinada execução, clique no ID dela.
Na guia Resumo, são fornecidas informações sobre a execução geral, incluindo qualquer exceção que tenha causado a falha. 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 da execução do fluxo de trabalho são listadas.
Para filtrar as entradas de etapa, 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 Principal, Filhos, Próxima e Anterior, clique em uma entrada de etapa específica.
Se você clicar em um link, os outros serão atualizados automaticamente. Por exemplo, Pai vai vincular ao pai da entrada de etapa em que você clicou.
O painel Visualização oferece uma representação gráfica das etapas do fluxo de trabalho e ajuda você a entender o caminho dele.
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 etapa.No painel, você pode fazer o seguinte:
- Aumentar ou diminuir o zoom da visualização
- Recolher ou expandir as entradas da etapa principal
- Clique em uma entrada de etapa para ver as entradas anterior e seguinte
- Confirme as entradas de etapas bem-sucedidas e com falha, indicadas por uma marca de seleção verde ou um ponto de exclamação vermelho.
- Clique na seta de expansão para fechar o painel Visualização. Clique 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 do Workflows (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 de 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 Google Cloudlistado na página Configurações do IAM e 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 é retornada após a execução de um fluxo de trabalho.STEPENTRY_ID
: o ID exclusivo de uma entrada 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": "2024-08-15T19:03:08.328851864Z", "updateTime": "2024-08-15T19:03:08.331099634Z", "routine": "main", "step": "checkSearchTermInInput", "stepType": "STEP_CONDITION", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "children": [ "3" ], "parent": "1", "next": "3", "previous": "1" }, "variableData": {} }
Antes de listar entradas de etapas
Para receber as permissões necessárias para listar entradas de etapas,
peça ao administrador para conceder a você o
papel do IAM de
Administrador do Workflows (workflows.stepEntries.list
) no 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 Google Cloudlistado na página Configurações do IAM e 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 é retornada 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": "2024-08-15T19:03:08.328807964Z", "updateTime": "2024-08-15T19:03:08.331099694Z", "routine": "main", "step": "checkSearchTermInInput", "stepType": "STEP_SWITCH", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "children": [ "2" ], "next": "2" }, "variableData": {} }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/2", "createTime": "2024-08-15T19:03:08.328851864Z", "updateTime": "2024-08-15T19:03:08.331099634Z", "routine": "main", "step": "checkSearchTermInInput", "stepType": "STEP_CONDITION", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "children": [ "3" ], "parent": "1", "next": "3", "previous": "1" }, "variableData": {} }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/3", "createTime": "2024-08-15T19:03:08.331037314Z", "updateTime": "2024-08-15T19:03:08.331099554Z", "routine": "main", "step": "checkSearchTermInInput.condition1", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "3", "navigationInfo": { "parent": "2", "next": "4", "previous": "2" }, "variableData": { "variables": { "input": { "searchTerm": "asia" }, "searchTerm": "asia" } } }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/4", "createTime": "2024-08-15T19:03:08.331100404Z", "updateTime": "2024-08-15T19:03:08.633741469Z", "routine": "main", "step": "readWikipedia", "stepType": "STEP_CALL", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "next": "5", "previous": "3" }, "variableData": {} }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/5", "createTime": "2024-08-15T19:03:08.633969694Z", "updateTime": "2024-08-15T19:03:08.634063018Z", "routine": "main", "step": "returnOutput", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "5", "navigationInfo": { "previous": "4" }, "variableData": { "variables": { "wikiResult": { "headers": { ... }, "body": [ ... ], "code": 200 }, "input": { "searchTerm": "asia" }, "searchTerm": "asia" } } } ], "totalSize": 5 }
Excluir entradas de etapas
Para excluir todas as entradas de etapa de uma determinada execução de fluxo de trabalho, use o método
projects.locations.workflows.executions.deleteExecutionHistory
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
WORKFLOW_NAME
: o nome do fluxo de trabalho.PROJECT_NUMBER
: o número do projeto Google Cloud.LOCATION
: a região em que o fluxo de trabalho é implantado, por exemplo,us-central1
.EXECUTION_ID
: o ID da execução para a qual as entradas de etapa serão excluídas.
Para enviar a solicitação, expanda uma destas opções:
Se a solicitação for concluída, o corpo da resposta estará vazio.
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
for
(clique no diagrama para ampliar).Entradas de etapa
{ "stepEntries": [ { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/1", "createTime": "2024-08-15T19:32:18.119578307Z", "updateTime": "2024-08-15T19:32:18.119661828Z", "routine": "main", "step": "assignStep", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "next": "2" }, "variableData": { "variables": { "sum": 0 } } }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/2", "createTime": "2024-08-15T19:32:18.119662643Z", "updateTime": "2024-08-15T19:32:18.120893531Z", "routine": "main", "step": "forStep", "stepType": "STEP_FOR", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "children": [ "3", "5" ], "next": "3", "previous": "1" }, "stepEntryMetadata": { "progressType": "PROGRESS_TYPE_FOR", "expectedIteration": "2" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/3", "createTime": "2024-08-15T19:32:18.119732820Z", "updateTime": "2024-08-15T19:32:18.120463449Z", "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" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/4", "createTime": "2024-08-15T19:32:18.119737066Z", "updateTime": "2024-08-15T19:32:18.120463358Z", "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" }, "variableData": { "variables": { "sum": 1, "v": 1 } } }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/5", "createTime": "2024-08-15T19:32:18.120465172Z", "updateTime": "2024-08-15T19:32:18.120893471Z", "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" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/6", "createTime": "2024-08-15T19:32:18.120470187Z", "updateTime": "2024-08-15T19:32:18.120893389Z", "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" }, "variableData": { "variables": { "sum": 3, "v": 2 } } }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-for-block/executions/0bc47b85-a399-4101-b629-1f623802e32d/stepEntries/7", "createTime": "2024-08-15T19:32:18.120894873Z", "updateTime": "2024-08-15T19:32:18.121003185Z", "routine": "main", "step": "returnStep", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "7", "navigationInfo": { "previous": "6" }, "variableData": { "variables": { "sum": 3 } } } ], "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 etapa
{ "stepEntries": [ { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-subworkflow-call/executions/e203bc96-a1cf-47ba-b6de-f3d1b0909664/stepEntries/1", "createTime": "2024-08-15T19:37:44.162778920Z", "updateTime": "2024-08-15T19:37:44.168683007Z", "routine": "main", "step": "callStep", "stepType": "STEP_CALL", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "children": [ "2", "3" ], "next": "2" }, "variableData": { "variables": { "t": 100 } } }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-subworkflow-call/executions/e203bc96-a1cf-47ba-b6de-f3d1b0909664/stepEntries/2", "createTime": "2024-08-15T19:37:44.168598736Z", "updateTime": "2024-08-15T19:37:44.168657969Z", "routine": "square", "step": "assignStep", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "parent": "1", "next": "3", "previous": "1" }, "variableData": { "variables": { "y": 100, "x": 10 } } }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-subworkflow-call/executions/e203bc96-a1cf-47ba-b6de-f3d1b0909664/stepEntries/3", "createTime": "2024-08-15T19:37:44.168659349Z", "updateTime": "2024-08-15T19:37:44.168676547Z", "routine": "square", "step": "retStep", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "3", "navigationInfo": { "parent": "1", "next": "4", "previous": "2" }, "variableData": { "variables": { "x": 10, "y": 100 } } }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-subworkflow-call/executions/e203bc96-a1cf-47ba-b6de-f3d1b0909664/stepEntries/4", "createTime": "2024-08-15T19:37:44.168693503Z", "updateTime": "2024-08-15T19:37:44.168702324Z", "routine": "main", "step": "retStep", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "previous": "3" }, "variableData": { "variables": { "t": 100 } } } ], "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 etapa
{ "stepEntries": [ { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/1", "createTime": "2024-08-15T19:42:51.415433810Z", "updateTime": "2024-08-15T19:42:51.416106923Z", "routine": "main", "step": "tryStep", "stepType": "STEP_TRY_RETRY_EXCEPT", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "children": [ "2", "4" ], "next": "2" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/2", "createTime": "2024-08-15T19:42:51.415439617Z", "updateTime": "2024-08-15T19:42:51.416065206Z", "routine": "main", "step": "tryStep", "stepType": "STEP_TRY", "state": "STATE_FAILED", "entryId": "2", "navigationInfo": { "children": [ "3" ], "parent": "1", "next": "3", "previous": "1" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/3", "createTime": "2024-08-15T19:42:51.415441815Z", "updateTime": "2024-08-15T19:42:51.416064665Z", "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" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/4", "createTime": "2024-08-15T19:42:51.416071869Z", "updateTime": "2024-08-15T19:42:51.416106840Z", "routine": "main", "step": "tryStep", "stepType": "STEP_EXCEPT", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "children": [ "5" ], "parent": "1", "next": "5", "previous": "3" }, "variableData": {} }, { "name": "projects/1051295516635/locations/us-central1/workflows/workflow-failed-step/executions/a19d20d1-e446-4d37-b548-8005297b7d3d/stepEntries/5", "createTime": "2024-08-15T19:42:51.416087217Z", "updateTime": "2024-08-15T19:42:51.416106742Z", "routine": "main", "step": "tryStep.except", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "5", "navigationInfo": { "parent": "4", "previous": "4" }, "variableData": {} } ], "totalSize": 5 }
A seguir
- Visão geral da depuração
- Monitorar fluxos de trabalho
- Resolver problemas
- Problemas conhecidos do Workflows