Pode obter o histórico de uma execução de fluxo de trabalho especificada como uma lista de entradas de passos. Cada entrada de passo fornece informações que podem ajudar na análise, na depuração ou na otimização de um fluxo de trabalho. Por exemplo, pode confirmar que passos foram realmente executados e determinar a duração e o sucesso de um passo. Isto pode ser particularmente útil ao depurar um fluxo de trabalho não linear grande ou complicado (por exemplo, um com muitas ramificações paralelas).
Uma entrada de passo representa um passo real no código fonte (por exemplo, assign
ou call
) ou um bloco de instruções (por exemplo, um ciclo for
ou um bloco try/retry/except
). Para ver uma lista completa dos tipos de passos, consulte
StepType.
Nível do histórico de execuções
Quando cria ou executa um fluxo de trabalho, pode especificar um histórico de execução Básico ou Detalhado. Pode aplicar esta definição ao nível do fluxo de trabalho ou da execução.
Por predefinição, não é especificado nenhum nível do histórico de execução e são devolvidas entradas de passos básicas.
Se quiser que o histórico de execução inclua quaisquer valores de variáveis no âmbito e, se aplicável, o número esperado de iterações (por exemplo, quando usar um ciclo for
ou um ramo ou uma iteração paralela), tem de definir o nível do histórico de execução como Detalhado.
Se não for especificado um nível do histórico de execução para uma execução, este é determinado pelo nível aplicado ao fluxo de trabalho. Se os níveis forem diferentes, a definição aplicada ao nível da execução substitui a definição aplicada ao nível do fluxo de trabalho para essa execução.
Como obter entradas de passos
Pode obter entradas de passos enviando um pedido para a API REST Workflow Executions ou através da Google Cloud consola:
Google Cloud consola: neste documento, consulte a secção Veja as entradas de passos na consola.
Além de apresentar as entradas dos passos e os respetivos detalhes, a consola oferece uma representação gráfica dos passos de execução, o que facilita a visualização e a análise do caminho de uma execução do fluxo de trabalho.
API REST Workflow Executions: neste documento, consulte Obtenha uma entrada de passo e Liste entradas de passos.
Informações de entrada do passo
Uma entrada de passo inclui as seguintes informações. As entradas de passos detalhadas também incluem as informações básicas das entradas de passos.
Para mais informações, consulte os exemplos neste documento.
Informações básicas de introdução de passos
Nome | Nome completo do recurso da entrada do passo, que é um ID exclusivo com o seguinte formato, e onde STEPENTRY_ID é um contador crescente:
|
Criar e atualizar horas | Datas/horas da hora de criação da entrada de passos e da respetiva atualização mais recente. Se uma entrada de passo tiver sido concluída, updateTime indica
a hora de conclusão.
|
Nomes de rotinas e passos | Nomes da rotina e do passo a que a entrada do passo 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 do passo, por exemplo, se a entrada foi bem-sucedida ou falhou, ou se uma entrada do passo está em curso e o tipo de progresso. Para ver uma lista completa dos estados e tipos de progresso, consulte State e ProgressType. |
Informações de navegação | Posição da entrada do passo para que possa compreender melhor a hierarquia e o fluxo do fluxo de trabalho, por exemplo, que entradas de passos vêm antes ou depois da entrada do passo atual, ou quais são pais ou filhos da entrada do passo. Para obter detalhes, consulte o artigo NavigationInfo. |
Metadados | Dados relacionados com uma entrada de passo iterativo, que podem incluir o seguinte:
|
Exceções | Payload relacionado com quaisquer exceções e que fornece uma descrição do motivo pelo qual uma entrada de passo falhou. |
Informações detalhadas de entrada de passos
Metadados | Se aplicável, o número esperado de iterações no progresso do passo, por exemplo, quando usar um ciclo Tenha em atenção que a contagem calculada não funciona como esperado se os limites do ciclo incluírem expressões que incorporem qualquer um dos seguintes elementos:
|
Dados variáveis | Dados relacionados com valores de variáveis no âmbito associados a este passo, incluindo os nomes e os valores das variáveis locais definidas pelo utilizador e os resultados das avaliações de expressões. Tenha em atenção que o âmbito exclui as variáveis internas associadas às funções incorporadas dos fluxos de trabalho. Para obter detalhes, consulte VariableData. |
Veja as entradas de passos na consola
Pode ver as entradas de passos para uma execução de fluxo de trabalho específica na Google Cloud consola.
Na Google Cloud consola, aceda à página Fluxos de trabalho.
Clique no nome do fluxo de trabalho para aceder à respetiva página Detalhes do fluxo de trabalho.
Para ver detalhes sobre uma execução específica, clique no respetivo ID de execução.
No separador Resumo, são fornecidas informações sobre a execução geral, incluindo qualquer exceção que tenha levado à falha da execução. Para mais informações, consulte Mapas de erros de execução.
Para ver o histórico de execução do fluxo de trabalho como uma lista de entradas de passos, clique no separador Passos.
São apresentadas todas as entradas de passos para a execução do fluxo de trabalho.
Para filtrar as entradas de passos, use o campo Filtro na parte superior da tabela para selecionar uma propriedade e um valor, por exemplo,
State: Failed
.Para apresentar links para quaisquer entradas de passos Parent, Children, Next e Previous, clique numa entrada de passo específica.
Se clicar num link, os outros links são atualizados automaticamente. Por exemplo, o elemento Parent vai criar um link para o elemento principal da entrada de passos em que clicou.
O painel Visualização oferece uma representação gráfica dos passos no fluxo de trabalho e ajuda a compreender o caminho do fluxo de trabalho.
Tenha em atenção que a visualização pode diferir das entradas de passos. Por exemplo, um bloco
for
é representado como um único componente na visualização. No entanto, dependendo do número de iterações, podem existir várias entradas de passos.Pode fazer o seguinte no painel:
- Aumente ou diminua o zoom da visualização
- Reduza ou expanda as entradas de passos principais
- Clique numa entrada de passos e veja as entradas anteriores e seguintes
- Confirme as entradas de passos bem-sucedidas e falhadas, conforme indicado por uma marca de verificação verde ou um ponto de exclamação vermelho
- Feche o painel Visualização clicando na seta de expansão. Clique novamente para abrir o painel
Antes de obter uma entrada de passos
Para receber as autorizações de que
precisa para obter uma entrada de passo,
peça ao seu administrador que lhe conceda a função
Administrador de fluxos de trabalho (workflows.stepEntries.get
)
da IAM no seu projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Obtenha uma entrada de passo
Para obter uma entrada de passo para uma determinada execução do fluxo de trabalho, use o método
projects.locations.workflows.executions.stepEntries.get
.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER
: o número do seu Google Cloud projeto indicado na página IAM e administrador Definições.LOCATION
: a região na qual o fluxo de trabalho é implementado, por exemplo,us-central1
.WORKFLOW_ID
: o nome definido pelo utilizador para o fluxo de trabalho, por exemplo,myFirstWorkflow
.EXECUTION_ID
: o ID exclusivo de uma execução do fluxo de trabalho que é devolvido após a execução de um fluxo de trabalho.STEPENTRY_ID
: o ID exclusivo de uma entrada de passos, por exemplo,1
.
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 passos
Para receber as autorizações de que
precisa para listar as entradas de passos,
peça ao seu administrador para lhe conceder a
função IAM de administrador dos fluxos de trabalho (workflows.stepEntries.list
) no seu projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Listar entradas de passos
Para listar as entradas de passos para uma determinada execução do fluxo de trabalho, use o método
projects.locations.workflows.executions.stepEntries.list
. Por predefinição, os resultados são devolvidos por ordem ascendente da createTime
das entradas de passos.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER
: o número do seu Google Cloud projeto indicado na página IAM e administrador Definições.LOCATION
: a região na qual o fluxo de trabalho é implementado, por exemplo,us-central1
.WORKFLOW_ID
: o nome definido pelo utilizador para o fluxo de trabalho, por exemplo,myFirstWorkflow
.EXECUTION_ID
: o ID exclusivo de uma execução do fluxo de trabalho que é devolvido após a execução de um fluxo de trabalho.
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 }
Elimine entradas de passos
Para eliminar todas as entradas de passos para uma determinada execução do fluxo de trabalho, use o método
projects.locations.workflows.executions.deleteExecutionHistory
.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
WORKFLOW_NAME
: o nome do fluxo de trabalho.PROJECT_NUMBER
: o número do seu Google Cloud projeto.LOCATION
: a região na qual o fluxo de trabalho é implementado. Por exemplo,us-central1
.EXECUTION_ID
: o ID da execução para a qual as entradas de passos devem ser eliminadas.
Para enviar o seu pedido, expanda uma destas opções:
Se for bem-sucedido, o corpo da resposta está 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 o ampliar).Entradas de passos
{ "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 passos
{ "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 passo 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 passos
{ "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 }
O que se segue?
- Vista geral da depuração
- Monitorize fluxos de trabalho
- Resolva problemas
- Problemas conhecidos dos fluxos de trabalho