É 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 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.
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ásica 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 Detalhista.
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 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 etapas 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 da 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 da entrada de etapas.
Para mais informações, consulte os exemplos neste documento.
Informações básicas da entrada de etapa
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 falha, 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 pode incluir o seguinte:
|
Exceções | Payload relacionado a qualquer exceção e que fornece uma descrição do motivo da falha de uma entrada de etapa. |
Informações detalhadas sobre a entrada da etapa
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 incorporam qualquer um dos seguintes:
|
Dados variáveis | Dados relacionados aos valores de variáveis no escopo associados a esta etapa, incluindo os nomes e valores de variáveis locais definidos pelo usuário e os resultados das avaliações de expressões. O escopo exclui variáveis internas vinculadas às funções integradas do Workflows. Para mais detalhes, consulte VariableData. |
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 fornece 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 Google Cloud listado na página Configurações do IAM e Admin.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": "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 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 Google Cloud listado na página Configurações do IAM e Admin.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": "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 as entradas de etapa que precisam ser 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 etapas
{ "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 etapas
{ "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 etapas
{ "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 dos fluxos de trabalho