Vous pouvez récupérer l'historique d'exécution d'un workflow spécifié sous la forme d'une liste d'étapes d'entrée. Chaque entrée d'étape fournit des informations qui peuvent vous aider à analyser, déboguer ou optimiser un workflow. Par exemple, vous pouvez confirmer les étapes exécuté, et vous pouvez déterminer la durée et le succès d'une étape. Cela peut s'avérer particulièrement utile pour déboguer un workflow non linéaire volumineux ou complexe (avec de nombreuses branches parallèles, par exemple).
Une entrée d'étape représente une étape réelle dans le code source (par exemple, assign
ou call
) ou un bloc d'instructions (par exemple, une boucle for
ou un bloc try/retry/except
). Pour obtenir la liste complète des types d'étapes, consultez
StepType.
Récupérer les entrées d'étape
Vous pouvez récupérer les entrées d'étape en envoyant une requête à l'API REST Workflow Executions ou via la console Google Cloud :
Console Google Cloud : dans ce document, consultez la section Afficher les entrées d'étape dans la console.
En plus de répertorier les entrées des étapes et leurs détails, la console fournit une représentation graphique des étapes d'exécution, ce qui facilite pour afficher et analyser le chemin d'exécution d'un workflow.
API REST Workflow Executions : dans ce document, consultez les sections Récupérer une entrée d'étape et Lister les entrées d'étape.
Informations sur la saisie de l'étape
Une entrée d'étape comprend les informations suivantes. Pour en savoir plus, consultez la section Exemples de ce document.
Nom | Nom de ressource complet de l'entrée d'étape, qui est un ID unique au format suivant, où STEPENTRY_ID est un compteur croissant :
|
Heures de création et de mise à jour | Horodatage de l'heure de création de l'entrée de l'étape et de sa date la plus récente
mise à jour. Si une étape est terminée, updateTime indique
l'heure d'exécution.
|
Noms des routines et des étapes | Noms de la routine et de l'étape auxquelles appartient l'entrée d'étape. Un nom de routine est le nom du sous-workflow défini dans le code source YAML ou JSON. Le nom de la routine de niveau supérieur est main .
|
État et type de progression | État de l'entrée de l'étape (par exemple, si l'entrée a réussi ou échoué, ou si une entrée d'étape est en cours et le type d'avancement. Pour une la liste complète des états et des types de progression, consultez État et ProgressType. |
Informations de navigation | Position de l'entrée d'étape afin que vous puissiez mieux comprendre la hiérarchie et le flux du workflow (par exemple, quelles entrées d'étapes se trouvent avant ou après l'entrée d'étape actuelle, ou lesquelles sont des parents ou des enfants de l'entrée d'étape). Pour en savoir plus, consultez NavigationInfo. |
Métadonnées | Données liées à une entrée d'étape itérée, y compris un ID indiquant le thread enfant (par exemple, quel STEP_PARALLEL_BRANCH_ENTRY dans STEP_PARALLEL_BRANCH ) ou l'itération d'une boucle for (par exemple, quel STEP_FOR_ITERATION dans STEP_FOR ). Pour en savoir plus, consultez StepEntryMetadata.
|
Exceptions | Charge utile liée à des exceptions et qui fournit une description de la raison pour laquelle une entrée d'étape a échoué. |
Afficher les entrées d'étape dans la console
Vous pouvez afficher les entrées d'étapes pour une exécution de workflow spécifique dans la console Google Cloud.
Dans la console Google Cloud, accédez à la page Workflows :
Cliquez sur le nom du workflow pour accéder à sa page Détails du workflow.
Pour en savoir plus sur une exécution spécifique, cliquez sur son ID.
Dans l'onglet Récapitulatif, des informations sur l'exécution globale sont fournies, y compris toute exception ayant entraîné l'échec de l'exécution. Pour plus pour en savoir plus, consultez Messages d'erreur d'exécution.
Pour afficher l'historique d'exécution du workflow sous forme de liste d'entrées d'étapes, cliquez sur l'onglet Étapes.
Toutes les entrées d'étapes de l'exécution du workflow sont listées.
Pour filtrer les entrées d'étape, utilisez le champ Filtrer en haut du tableau pour sélectionner une propriété et une valeur (par exemple,
State: Failed
).Pour afficher les liens vers les entrées Parent, Enfants, Suivant et Précédent, cliquez sur une entrée d'étape spécifique.
Si vous cliquez sur un lien, les autres liens sont automatiquement mis à jour. Par exemple : Parent renvoie vers le parent de l'entrée de l'étape sur laquelle vous avez cliqué.
Le panneau Visualisation fournit une représentation graphique des les étapes du workflow et vous aide à comprendre le cheminement du workflow.
Notez que la visualisation peut différer des entrées d'étape. Par exemple, un Le bloc
for
est représenté comme un composant unique dans la visualisation. Toutefois, en fonction du nombre d'itérations, il peut y avoir plusieurs entrées d'étape.Vous pouvez effectuer les opérations suivantes dans le panneau:
- Faire un zoom avant ou arrière sur la visualisation
- Réduire ou développer les entrées de l'étape parente
- Cliquez sur une entrée d'étape, et affichez ses entrées précédentes et suivantes.
- Confirmez les entrées d'étape qui ont réussi et échoué, comme indiqué par une coche verte. ou un point d'exclamation rouge
- Fermez le panneau Visualisation en cliquant sur le bouton flèche de développement ; cliquez à nouveau dessus pour ouvrir le panneau
Avant de récupérer une entrée d'étape
Pour obtenir les autorisations nécessaires pour récupérer une entrée d'étape, demandez à votre administrateur de vous accorder le rôle IAM workflows.stepEntries.get
Administrateur de workflow (workflows.stepEntries.get
) sur votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Récupérer une entrée d'étape
Pour récupérer une entrée d'étape pour une exécution de workflow donnée, utilisez la méthode projects.locations.workflows.executions.stepEntries.get
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_NUMBER
: votre compte Google Cloud le numéro de projet indiqué dans la console d'administration IAM & Administrateur Paramètres.LOCATION
: région dans laquelle le workflow est déployé (par exemple,us-central1
).WORKFLOW_ID
: nom défini par l'utilisateur pour le workflow, par exemple,myFirstWorkflow
.EXECUTION_ID
: ID unique d'une exécution de workflow renvoyé après l'exécution d'un workflow.STEPENTRY_ID
: ID unique d'une entrée d'étape (par exemple,1
).
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "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" } }
Avant de lister les entrées de la procédure
Pour obtenir les autorisations nécessaires
pour lister les entrées d'étape,
demandez à votre administrateur de vous accorder le
Administrateur de workflows (workflows.stepEntries.list
)
Cloud IAM sur votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Lister les entrées d'étape
Pour répertorier les entrées d'étapes d'une exécution de workflow donnée, utilisez la méthode projects.locations.workflows.executions.stepEntries.list
. Par défaut, les résultats sont renvoyés dans l'ordre croissant de createTime
.
des entrées d'étape.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_NUMBER
: votre compte Google Cloud le numéro de projet indiqué dans la console d'administration IAM & Administrateur Paramètres.LOCATION
: le région dans laquelle le workflow est déployé, par exempleus-central1
WORKFLOW_ID
: nom défini par l'utilisateur pour le workflow, par exemple,myFirstWorkflow
.EXECUTION_ID
: ID unique d'une exécution de workflow renvoyé après l'exécution d'un workflow.
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "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 }
Examples
Workflow avec un bloc for
Workflow
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}" } } ]
Diagramme
Entrées d'étape
{ "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 }
Workflow avec un appel de sous-workflow
Workflow
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}" } } ] } }
Diagramme
Entrées d'étape
{ "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 }
Workflow avec une entrée d'étape en échec
Workflow
YAML
- tryStep: try: return: ${1 / 0} except: return: 0
JSON
[ { "tryStep": { "try": { "return": "${1 / 0}" }, "except": { "return": 0 } } } ]
Diagramme
Entrées d'étape
{ "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 }
Étape suivante
- Présentation du débogage
- Surveiller les workflows
- Résoudre les problèmes
- Problèmes connus concernant Workflows