É possível recuperar o histórico de uma execução de fluxo de trabalho especificada como uma lista de etapas de entradas de registro. 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ção (por exemplo, uma repetição for
ou um
bloco try/retry/except
). Para uma lista completa dos tipos de etapa, consulte
StepType (link em inglês).
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 Confira as entradas das etapas no console.
Além de listar as entradas das etapas e seus detalhes, o console fornece uma representação gráfica das etapas de execução, facilitando para visualizar e analisar o caminho da execução de um 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, documento, consulte os Exemplos.
Nome | Nome completo do recurso da entrada da etapa, que é um ID exclusivo com o
formato a seguir, e em que STEPENTRY_ID é um
contador crescente:
|
Horários de criação e atualização | 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 da etapa pertence. Um
o nome da rotina é o nome do subfluxo de trabalho definido na fonte YAML ou JSON
o código-fonte. O nome da rotina de nível superior é main .
|
Estado e tipo de progresso | Estado da entrada da etapa, por exemplo, se a entrada foi bem-sucedida 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 fluxo do fluxo de trabalho, por exemplo, quais entradas de etapa vêm antes ou depois da entrada da etapa 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, incluindo um ID que
indica o thread filho (por exemplo, qual
STEP_PARALLEL_BRANCH_ENTRY pol.
STEP_PARALLEL_BRANCH ) ou a iteração de um for
loop (por exemplo, que STEP_FOR_ITERATION na
STEP_FOR ). Para mais detalhes, consulte
StepEntryMetadata.
|
Exceções | Payload relacionado a exceções e que fornece uma descrição do por que uma entrada de etapa falhou. |
Conferir entradas de etapas no console
É possível visualizar as entradas das etapas 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 tenha causado a falha na execução. Para mais informações, consulte Mensagens de erro de execução.
Para exibir o histórico de execução do fluxo de trabalho como uma lista de entradas de etapas, clique no botão Guia Etapas.
Todas as entradas de etapas para a execução do fluxo de trabalho são listadas.
Para filtrar as entradas das etapas, use o campo Filter na parte superior da 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 da etapas no fluxo de trabalho e ajuda você a entender o caminho do fluxo de trabalho.
A visualização pode ser diferente das entradas das etapas. 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 ponto de exclamação vermelho
- Feche o painel Visualização clicando no botão seta de expansã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 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 de 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
: o 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 do fluxo de trabalho que é retornada depois que um fluxo de trabalho é executado.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 das etapas
Para ter as permissões necessárias para listar as entradas de etapas,
peça ao administrador para conceder a você
Administrador do Workflows (workflows.stepEntries.list
)
o papel do IAM 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 da etapa
Para listar as entradas de etapas 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
: o 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 do Workflows