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 lors de l'analyse, le débogage ou l'optimisation d'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 être particulièrement utile lors du débogage d'un problème volumineux ou complexe un workflow non linéaire (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 d'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 au workflow API REST d'exécution ou via la console Google Cloud:
console Google Cloud. Dans ce document, reportez-vous Affichez 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 Récupérer une entrée d'étape et Répertorier 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.
Nom | Nom complet de la ressource de l'entrée de l'étape, qui est un identifiant unique associé au paramètre
le format suivant, où STEPENTRY_ID est un
augmentation du compteur:
Par exemple:
|
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. A
le nom de la routine est le nom du sous-workflow défini dans la source YAML ou JSON
du code source. 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 de l'étape, de façon à mieux comprendre la hiérarchie et le flux du workflow (par exemple, les entrées d'étape qui arrivent avant ou après l'entrée actuelle, ou qui sont des parents ou des enfants de l'entrée de l'étape. Pour en savoir plus, consultez NavigationInfo : |
Métadonnées | Données associées à une entrée d'étape itérative, y compris un identifiant qui
indique le thread enfant (par exemple,
STEP_PARALLEL_BRANCH_ENTRY po
STEP_PARALLEL_BRANCH ) ou l'itération d'une for
(par exemple, quelle commande STEP_FOR_ITERATION
STEP_FOR ). Pour en savoir plus, consultez
StepEntryMetadata.
|
Exceptions | Charge utile liée aux exceptions et qui fournit une description pourquoi une entrée d'étape a échoué. |
Afficher les entrées d'étape dans la console
Vous pouvez afficher les entrées d'étape 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 à la page Workflow details (Détails du workflow).
Pour en savoir plus sur une exécution spécifique, cliquez sur son ID.
L'onglet Résumé contient des informations sur l'exécution globale. 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 la forme d'une liste d'entrées d'étape, cliquez sur le bouton Onglet Steps (Étapes).
Toutes les entrées d'étape d'exécution du workflow sont listées.
Pour filtrer les entrées d'étape, utilisez le champ Filtrer en haut de la table pour sélectionner une propriété et une valeur (par exemple,
State: Failed
).Pour afficher les liens des Parents, Enfants, Suivant et Précédent des entrées d'étape, 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 dont vous avez
besoin pour récupérer une entrée d’étape,
demandez à votre administrateur de vous accorder le
Administrateur de workflows (workflows.stepEntries.get
)
Cloud IAM sur votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
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
: 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
: l'identifiant unique d'un l'exécution d'un workflow qui est renvoyée après l'exécution d'un workflow ;STEPENTRY_ID
: l'identifiant unique d'un l'entrée de l'é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 d'étape
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 section Gérer les accès.
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'étape 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
: l'identifiant unique d'un l'exécution d'un workflow qui est renvoyée 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 ayant échoué
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