Vous pouvez récupérer l'historique d'une exécution de workflow spécifiée sous forme de liste d'entrées d'étape. 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 qui ont été exécutées, et déterminer la durée et la réussite d'une étape. Cela peut être particulièrement utile pour déboguer un workflow non linéaire volumineux ou complexe (par exemple, un workflow avec de nombreuses branches parallèles).
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.
Niveau de détail de l'historique des exécutions
Lorsque vous créez ou exécutez un workflow, vous pouvez spécifier un historique d'exécution Basic (Basique) ou Detailed (Détaillé). Vous pouvez appliquer ce paramètre au niveau du workflow ou de l'exécution.
Par défaut, aucun niveau d'historique d'exécution n'est spécifié et les entrées d'étape Basic sont renvoyées.
Si vous souhaitez que l'historique d'exécution inclue toutes les valeurs de variables concernées et, le cas échéant, le nombre d'itérations attendu (par exemple, lorsque vous utilisez une boucle for
, une branche parallèle ou une itération), vous devez définir le niveau de l'historique d'exécution sur Détaillé.
Si aucun niveau d'historique d'exécution n'est spécifié pour une exécution, il est déterminé par le niveau appliqué au workflow. Si les niveaux sont différents, le paramètre appliqué au niveau de l'exécution remplace celui appliqué au niveau du workflow pour cette exécution.
Récupérer les entrées d'étape
Vous pouvez récupérer des entrées d'étape en envoyant une requête à l'API REST Workflow Executions ou via la console Google Cloud :
Google Cloud console : dans ce document, consultez Afficher les entrées d'étape dans la console.
En plus de lister les entrées d'étape et leurs détails, la console fournit une représentation graphique des étapes d'exécution, ce qui facilite l'affichage et l'analyse du chemin d'exécution d'un workflow.
API REST Workflow Executions : dans ce document, consultez Récupérer une entrée d'étape et Lister les entrées d'étape.
Informations sur l'entrée des étapes
Une entrée d'étape inclut les informations suivantes. Les entrées d'étapes détaillées incluent également les informations de base sur les étapes.
Pour en savoir plus, consultez la section Exemples de ce document.
Informations de base sur la saisie des étapes
Nom | Nom complet de la ressource de l'entrée de l'étape, qui est un ID unique au format suivant, où STEPENTRY_ID est un compteur croissant :
|
Créer et modifier des heures | Codes temporels de la date de création de l'entrée de l'étape et de sa dernière mise à jour. Si une entrée d'étape est terminée, updateTime indique l'heure de fin.
|
Noms des routines et des étapes | Noms de la routine et de l'étape auxquelles appartient l'entrée d'étape. Le nom d'une routine est le nom du sous-workflow défini dans le code source YAML ou JSON. Le nom de la routine de premier niveau est main .
|
Type d'état et 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 de progression). Pour obtenir la liste complète des états et des types de progression, consultez State et ProgressType. |
Informations de navigation | Position de l'entrée d'étape pour mieux comprendre la hiérarchie et le flux du workflow (par exemple, quelles entrées d'étape précèdent ou suivent l'entrée d'étape actuelle, ou quelles sont les entrées d'étape parentes ou enfants). Pour en savoir plus, consultez NavigationInfo. |
Métadonnées | Données liées à une entrée d'étape itérative, qui peuvent inclure les éléments suivants :
|
Exceptions | Charge utile liée à toutes les exceptions et fournissant une description de la raison pour laquelle une entrée d'étape a échoué. |
Informations détaillées sur la saisie des étapes
Métadonnées | Le cas échéant, nombre d'itérations attendu dans la progression de l'étape (par exemple, lors de l'utilisation d'une boucle Notez que le nombre calculé ne fonctionnera pas comme prévu si les limites de la boucle incluent des expressions qui intègrent l'un des éléments suivants :
|
Données variables | Données liées aux valeurs de variables incluses dans le champ d'application associées à cette étape, y compris les noms et les valeurs des variables locales définies par l'utilisateur, ainsi que les résultats des évaluations d'expressions. Notez que le champ d'application exclut les variables internes liées aux fonctions intégrées de Workflows. Pour en savoir plus, consultez VariableData. |
Afficher les entrées d'étapes dans la console
Vous pouvez afficher les entrées d'étape pour une exécution de workflow spécifique dans la consoleGoogle Cloud .
Dans la console Google Cloud , accédez à la page Workflows.
Cliquez sur le nom du workflow pour accéder à la page Détails du workflow.
Pour en savoir plus sur une exécution spécifique, cliquez sur son ID.
L'onglet Récapitulatif fournit des informations sur l'exécution globale, y compris toute exception ayant entraîné son échec. Pour en savoir plus, consultez Cartes des erreurs 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'étape pour 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, Enfant, Étape suivante et Étape précédente, 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 au parent de l'entrée d'étape sur laquelle vous avez cliqué.
Le panneau Visualisation fournit une représentation graphique des étapes du workflow et vous aide à comprendre le chemin du workflow.
Notez que la visualisation peut différer des entrées d'étapes. Par exemple, un bloc
for
est représenté comme un seul composant dans la visualisation. Toutefois, en fonction du nombre d'itérations, il peut y avoir plusieurs entrées d'étape.Dans le panneau, vous pouvez :
- Faire un zoom avant ou arrière sur la visualisation
- Réduire ou développer les entrées d'étape parent
- Cliquez sur une entrée d'étape pour afficher les entrées précédentes et suivantes.
- Confirmez les entrées d'étapes réussies et échouées, comme indiqué par une coche verte ou un point d'exclamation rouge.
- Fermez le panneau Visualisation en cliquant sur la flèche d'expansion . Cliquez de nouveau dessus pour ouvrir le panneau.
Avant de récupérer une entrée de pas
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 Administrateur Workflows (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 avec des rôles personnalisés ou d'autres rôles prédéfinis.
Récupérer une entrée de pas
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, effectuez les remplacements suivants :
PROJECT_NUMBER
: numéro de votre projet Google Cloudrépertorié sur la page Paramètres IAM et administration.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 exemplemyFirstWorkflow
.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 exemple1
.
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": "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": {} }
Avant de lister les entrées de pas
Pour obtenir les autorisations nécessaires pour lister les entrées d'étape, demandez à votre administrateur de vous accorder le rôle IAM Administrateur Workflows (workflows.stepEntries.list
) 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 avec des rôles personnalisés ou d'autres rôles prédéfinis.
Lister les entrées d'étapes
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 par ordre croissant de createTime
des entrées de pas.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_NUMBER
: numéro de votre projet Google Cloudrépertorié sur la page Paramètres IAM et administration.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 exemplemyFirstWorkflow
.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": "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 }
Supprimer des entrées d'étapes
Pour supprimer toutes les entrées d'étape d'une exécution de workflow donnée, utilisez la méthode projects.locations.workflows.executions.deleteExecutionHistory
.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
WORKFLOW_NAME
: nom du workflow.PROJECT_NUMBER
: numéro de votre projet Google Cloud.LOCATION
: région dans laquelle le workflow est déployé (par exemple,us-central1
).EXECUTION_ID
: ID de l'exécution pour laquelle les entrées d'étape doivent être supprimées.
Pour envoyer votre requête, développez l'une des options suivantes :
Si la requête aboutit, le corps de la réponse est vide.
Exemples
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
for
(cliquez sur le schéma pour l'agrandir).Entrées d'étape
{ "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 }
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/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 }
Flux de travail 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/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 }
Étapes suivantes
- Présentation du débogage
- Surveiller les workflows
- Résolvez les problèmes
- Problèmes connus liés à Workflows