

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Interrogation des flux de travail à l'aide du AWS Glue API
<a name="workflows_api_concepts"></a>

AWS Glue fournit un riche API de gestion des flux de travail. Vous pouvez récupérer la vue statique ou dynamique d'un flux de travail en cours d'exécution à l'aide de l' AWS Glue API. Pour de plus amples informations, veuillez consulter [Flux de travail](aws-glue-api-workflow.md).

**Topics**
+ [Interrogation des vues statiques](#workflows_api_concepts_static)
+ [Interrogation des vues dynamiques](#workflows_api_concepts_dynamic)

## Interrogation des vues statiques
<a name="workflows_api_concepts_static"></a>

Utilisez l'opération d'API `GetWorkflow` pour obtenir une vue statique qui indique la conception d'un flux de travail. Cette opération renvoie un graphe orienté composé de nœuds et d'arcs, où un nœud représente un déclencheur, une tâche ou un crawler. Les arcs définissent les relations entre les nœuds. Ils sont représentés par des connecteurs (flèches) sur le graphique dans la console AWS Glue. 

Vous pouvez également utiliser cette opération avec des bibliothèques de traitement graphique populaires telles que NetworkX, igraph, JGraph T et le Java Universal Network/Graph (JUNG) Framework. Étant donné que toutes ces bibliothèques représentent les graphiques de la même manière, des transformations minimes sont nécessaires.

La vue statique renvoyée par cette API est la plus grande up-to-date vue selon la dernière définition des déclencheurs associés au flux de travail.

### Définition du graphique
<a name="workflows_api_concepts_static_graph"></a>

Un graphe G de flux de travail est une paire ordonnée (N, E), où N est un ensemble de nœuds et E un ensemble d'arcs. Un *nœud* est un sommet du graphique identifié par un numéro unique. Un nœud peut être de type déclencheur, tâche ou crawler. Par exemple : `{name:T1, type:Trigger, uniqueId:1}, {name:J1, type:Job, uniqueId:2}`.

Un *arc* est un 2-tuplet de la forme (`src, dest`), où `src` et `dest` sont les nœuds et il y a un arc dirigé de `src` vers `dest`. 

### Exemple d'interrogation d'une vue statique
<a name="workflows_api_concepts_static_example"></a>

Envisagez un déclencheur conditionnel T, qui déclenche la tâche J2 après la fin de la tâche J1. 

```
J1 ---> T ---> J2
```

Nœuds : J1, T, J2 

Arcs : (J1, T), (T, J2)

## Interrogation des vues dynamiques
<a name="workflows_api_concepts_dynamic"></a>

Utilisez l'opération d'API`GetWorkflowRun` pour obtenir une vue dynamique d'un flux de travail en cours d'exécution. Cette opération renvoie la même vue statique du graphe en même temps que les métadonnées relatives à l'exécution du flux de travail.

Pour l'exécution, les nœuds représentent les tâches dans l'appel `GetWorkflowRun` ont une liste d'exécutions de tâches lancées dans le cadre de la dernière exécution du flux de travail. Vous pouvez utiliser cette liste pour afficher le statut d'exécution de chaque tâche dans le graphique lui-même. Pour les dépendances en aval qui ne sont pas encore exécutées, ce champ est défini sur `null`. Le graphique d'informations vous permet de connaître l'état actuel d'un flux de travail à tout moment.

La vue dynamique renvoyée par cette API est basée sur la vue statique qui était présente lorsque l'exécution du flux de travail a été démarrée.

*Exemple de nœuds d'exécution :* `{name:T1, type: Trigger, uniqueId:1}`, `{name:J1, type:Job, uniqueId:2, jobDetails:{jobRuns}}`, `{name:C1, type:Crawler, uniqueId:3, crawlerDetails:{crawls}}` 

### Exemple 1 : Vue dynamique
<a name="workflows_api_concepts_dynamic_examples"></a>

L'exemple suivant illustre un simple flux de travail à deux déclencheurs. 
+ Nœuds : t1, j1, t2, j2 
+ Arcs : (t1, j1), (j1, t2), (t2, j2)

La réponse `GetWorkflow` contient les éléments suivants.

```
{
    Nodes : [
        {
            "type" : Trigger,
            "name" : "t1",
            "uniqueId" : 1
        },
        {
            "type" : Job,
            "name" : "j1",
            "uniqueId" : 2
        },
        {
            "type" : Trigger,
            "name" : "t2",
            "uniqueId" : 3
        },
        {
            "type" : Job,
            "name" : "j2",
            "uniqueId" : 4
        }
    ],
    Edges : [
        {
            "sourceId" : 1,
            "destinationId" : 2
        },
        {
            "sourceId" : 2,
            "destinationId" : 3
        },
        {
            "sourceId" : 3,
            "destinationId" : 4
        }
}
```

La réponse `GetWorkflowRun` contient les éléments suivants.

```
{
    Nodes : [
        {
            "type" : Trigger,
            "name" : "t1",
            "uniqueId" : 1,
            "jobDetails" : null,
            "crawlerDetails" : null
        },
        {
            "type" : Job,
            "name" : "j1",
            "uniqueId" : 2,
            "jobDetails" : [
                {
                    "id" : "jr_12334",
                    "jobRunState" : "SUCCEEDED",
                    "errorMessage" : "error string"
                }
            ],
            "crawlerDetails" : null
        },
        {
            "type" : Trigger,
            "name" : "t2",
            "uniqueId" : 3,
            "jobDetails" : null,
            "crawlerDetails" : null
        },
        {
            "type" : Job,
            "name" : "j2",
            "uniqueId" : 4,
            "jobDetails" : [
                {
                    "id" : "jr_1233sdf4",
                    "jobRunState" : "SUCCEEDED",
                    "errorMessage" : "error string"
                }
            ],
            "crawlerDetails" : null
        }
    ],
    Edges : [
        {
            "sourceId" : 1,
            "destinationId" : 2
        },
        {
            "sourceId" : 2,
            "destinationId" : 3
        },
        {
            "sourceId" : 3,
            "destinationId" : 4
        }
}
```

### Exemple 2 : Tâches multiples avec un déclencheur conditionnel
<a name="workflows_api_concepts_dynamic_example_2"></a>

L'exemple suivant illustre un flux de travail avec plusieurs tâches et un déclencheur conditionnel (t3).

```
Consider Flow:
T(t1) ---> J(j1) ---> T(t2) ---> J(j2)
             |                    |
             |                    |
             >+------> T(t3) <-----+
                        |
                        |
                      J(j3)

Graph generated:
Nodes: t1, t2, t3, j1, j2, j3
Edges: (t1, j1), (j1, t2), (t2, j2), (j1, t3), (j2, t3), (t3, j3)
```