Skip to content

Interactions entre briques applicatives

Utilisation générale de l'API

Les appels API nécessite une authentification, réalisée auprès d'une IAM (Keycloak).

sequenceDiagram participant U as Utilisateur participant F as Front participant I as IAM participant A as API U ->> I : Envoie une requête d'authentification activate I I ->> I: Contrôle les paramètres d'authentification (login / mot de passe) alt Paramètres corrects I -->> U: Retourne le jeton de session else I -->> U: Retourne une erreur end deactivate I U ->> F: Réalise un appel API muni du jeton activate F F ->> I: Demande si le jeton est valide activate I I ->> I: Contrôle la validité du jeton alt Jeton non valide I -->> F: NOK F -->> U: Retourne une erreur d'authentification else I -->> F: OK F ->> A: Transmet l'appel API activate A A ->> A: Traite la requête A -->> F: Retourne la réponse (peut être une erreur d'autorisation) deactivate A F -->> U: Transmet la réponse de l'API end deactivate I deactivate F

Les interactions avec l'orchestration

3 tâches sont déléguées à l'orchestration, car potentiellement gourmandes en temps et en capacité de calcul : l'exécution des vérifications et des traitements, ainsi que la suppression des données (livraisons et données stockées).

Les vérifications

sequenceDiagram participant U as Utilisateur participant A as API participant B as Bus participant O as Orchestrateur activate O activate B U ->> A : Ferme une livraison dont le type est concerné par des vérifications automatiques<br/>ou<br/>Demande des vérifications sur une livraison activate A A ->> A: Ignore les vérifications qui ont déjà été lancées sur la livraison<br/>Crée la ou les nouvelles exécutions de vérification en statut WAITING<br/>La livraison passe en statut CHECKING A ->> B: Publie un message de déclenchement du job associé, avec l'identifiant de l'exécution en paramètre A -->> U: OK deactivate A O ->> B: Demande le message qui lui est destiné B -->> O: Retourne le message de déclenchement O ->> O: Déclenche le job précisé, avec l'identifiant de l'exécution en paramètre activate O O ->> A: Signale le début de l'exécution, en donnant le numéro de build activate A A ->> A: Enregistre le numéro de build, la date de début et passe<br/> l'exécution de vérification en statut PROGRESS A -->> O: OK deactivate A Note over O: Tâches métier... O ->> A: Signale la fin de l'exécution (Succès ou échec) activate A A ->> A: Enregistre la date de fin et passe <br/> l'exécution de vérification en statut SUCCESS ou FAILURE opt Plus aucune exécution en cours sur la livraison A ->> A: Passe le statut de la livraison en CLOSED end A -->> O: OK deactivate A deactivate O deactivate O deactivate B

Les traitements

sequenceDiagram participant U as Utilisateur participant A as API participant B as Bus participant O as Orchestrateur activate O activate B U ->> A : Crée l’exécution de traitement activate A A ->> A: Crée une nouvelle exécution de traitement en statut CREATED<br/>Si la donnée en sortie est une nouvelle : on la crée en statut CREATED A -->> U: OK deactivate A U ->> A : Demande le lancement de l’exécution de traitement activate A A ->> A: Change le statut de l’exécution de traitement en WAITING opt La donnée en sortie est en statut CREATED ou GENERATED A ->> A: Si la donnée en sortie est nouvelle (CREATED) : son statut passe en GENERATING<br/>Si la donnée en sortie est déjà existante (GENERATED) : son statut passe en MODIFYING A ->> B: Publie un message de déclenchement du job associé, avec l'identifiant de l'exécution en paramètre end A -->> U: OK deactivate A O ->> B: Demande le message qui lui est destiné B -->> O: Retourne le message de déclenchement O ->> O: Déclenche le job précisé, avec l'identifiant de l'exécution en paramètre activate O O ->> A: Signale le début de l'exécution, en donnant le numéro de build activate A A ->> A: Enregistre le numéro de build, la date de début et passe<br/> l'exécution de traitement en statut PROGRESS A -->> O: OK deactivate A Note over O: Tâches métier... O ->> A: Signale la fin de l'exécution (Succès ou échec) activate A A ->> A: Enregistre la date de fin et passe <br/> l'exécution de traitement en statut SUCCESS ou FAILURE A ->> A: Récupère l'exécution de traitement suivante<br/> qui a en sortie la même donnée alt Pas d'exécution suivante A ->> A: Passe le statut de la donnée en sortie en GENERATED (donnée stockée) ou CLOSED (livraison) else A ->> B: Publie un message de déclenchement du job associé, avec l'identifiant de l'exécution en paramètre end A -->> O: OK deactivate A deactivate O deactivate O deactivate B

Les suppressions

sequenceDiagram participant U as Utilisateur participant A as API participant B as Bus participant O as Orchestrateur activate O activate B U ->> A : Demande la suppression de la donnée activate A alt la donnée n’est pas en entrée d’une exécution de traitement lancée (PROGRESS ou WAITING) A ->> A: Supprime les exécutions de traitement CREATED<br/>ayant la donnée en entrée ou en sortie<br/>La donnée passe en statut DELETED A ->> B: Publie un message de déclenchement du job de suppression, avec<br/>l'identifiant de la donnée à supprimer en paramètre A -->> U: OK else A -->> U: NOK end deactivate A O ->> B: Demande le message qui lui est destiné B -->> O: Retourne le message de déclenchement O ->> O: Déclenche le job de suppression, avec<br/>l'identifiant de la donnée à supprimer en paramètre activate O Note over O: Suppression des données... deactivate O deactivate O deactivate B

Les annulations

Il est possible d'annuler un traitement ou une vérification en cours via l'API.

sequenceDiagram participant U as Utilisateur participant A as API participant B as Bus participant O as Orchestrateur activate O activate O activate B U ->> A : Demande l'annulation d'une exécution activate A alt Exécution de traitement A ->> A: Change le statut de l’exécution en ABORTED else A ->> A: Supprime l’exécution end A ->> B: Publie un message de déclenchement du job d'annulation, avec<br/>le numéro de build et le nom du job à annuler en paramètre A -->> U: OK deactivate A O ->> B: Demande le message qui lui est destiné B -->> O: Retourne le message de déclenchement O ->> O: Déclenche le job d'annulation, avec<br/>le numéro de build et le nom du job à annuler en paramètre activate O O ->> O: Récupère le build à annuler en fonction des paramètre et l'annule deactivate O deactivate O deactivate O deactivate B

Les intéractions avec les serveurs de diffusion

Diffusion des données

Création d'une offre

sequenceDiagram participant U as Utilisateur participant A as API participant B as Bus participant P as Agent de publication participant S as Serveur de diffusion activate P activate B U ->> A : Crée une offre sur un point d'accès activate A A ->> A: Vérifie la cohérence de la configuration utilisée et le point d'accès de destination<br/>La configuration passe en statut SYNCHRONIZING<br/>L'offre est en statut PUBLISHING A ->> B: Publie un message de publication avec toutes les informations nécessaire<br/>Données utlisées, stockages, titre... A -->> U: OK deactivate A par Pour chaque agent de publication concerné P ->> B: Demande le message qui lui est destiné B -->> P: Retourne le message de publication P ->> A: Signale la prise en charge de la publication activate A A -->> P: OK deactivate A P ->> S: Configure le service associé activate S alt Configuration OK S -->> P: OK P ->> A: Signale la réussite de la publication activate A A ->> A: La configuration associée passe en statut PUBLISHED<br/>L'offre passe en statut PUBLISHED A -->> P: OK deactivate A else S -->> P: NOK P ->> A: Signale l'échec de la publication activate A A ->> A: La configuration associée revient à son statut initial<br/>L'offre passe en statut UNSTABLE A -->> P: OK deactivate A end end deactivate S

Suppression d'une offre

sequenceDiagram participant U as Utilisateur participant A as API participant B as Bus participant P as Agent de publication participant S as Serveur de diffusion activate P activate B U ->> A : Supprime une offre sur un point d'accès activate A A ->> A: La configuration passe en statut SYNCHRONIZING<br/>L'offre passe en statut UNPUBLISHING A ->> B: Publie un message de dépublication avec le nom<br/>de la couche de la configuration associée A -->> U: OK deactivate A par Pour chaque agent de publication concerné P ->> B: Demande le message qui lui est destiné B -->> P: Retourne le message de dépublication P ->> A: Signale la prise en charge de la dépublication activate A A -->> P: OK deactivate A P ->> S: Supprime le contenu sur le service associé activate S alt Reconfiguration OK S -->> P: OK P ->> A: Signale la réussite de la dépublication activate A A ->> A: La configuration associée passe en statut UNPUBLISHED ou PUBLISHED s'il reste des offres dessus<br/>L'offre est supprimée A -->> P: OK deactivate A else S -->> P: NOK P ->> A: Signale l'échec de la dépublication activate A A ->> A: La configuration associée revient à son statut initial<br/>L'offre passe en statut UNSTABLE A -->> P: OK deactivate A end end deactivate S

Modification d'une configuration

sequenceDiagram participant U as Utilisateur participant A as API participant B as Bus participant P as Agent de publication participant S as Serveur de diffusion activate P activate B U ->> A : Modifie une configuration activate A A ->> A : La configuration passe en statut SYNCHRONIZING<br/>L'offre passe en statut MODIFYING A ->> A : Récupère la liste des offres publiées associées loop Pour chaque offre A ->> B: Publie un message de republication avec toutes les informations nécessaire<br/>Données utlisées, stockages, titre... A -->> U: OK deactivate A par Pour chaque agent de publication concerné P ->> B: Demande le message qui lui est destiné B -->> P: Retourne le message de publication P ->> A: Signale la prise en charge de la dépublication activate A A -->> P: OK deactivate A P ->> S: Modifie le contenu sur le service associé activate S alt Reconfiguration OK S -->> P: OK P ->> A: Signale la réussite de la dépublication activate A A ->> A: La configuration associée revient à PUBLISHED<br/>L'offre passe en statut PUBLISHED A -->> P: OK deactivate A else S -->> P: NOK P ->> A: Signale l'échec de la dépublication activate A A ->> A: La configuration associée revient à PUBLISHED<br/>L'offre passe en statut UNSTABLE A -->> P: OK deactivate A end end end deactivate S

Diffusion des métadonnées

Téléversement d'une nouvelle métadonnée

sequenceDiagram participant U as Utilisateur participant A as API U ->> A : Téléverse une nouvelle métadonnée activate A A ->> A : Extraie le fileIdentifier et contrôle l'unicité A ->> A : Extraie le niveau de métadonnée et contrôle qu'elle est de lot ou de produit A -->> U: OK deactivate A

Publication d'une métadonnée

sequenceDiagram participant U as Utilisateur participant A as API participant B as Bus participant P as Agent de publication participant S as Catalogue de métadonnées activate P activate B U ->> A : Demande la publication d'une métadonnée existante activate A A ->> B: Publie un message de publication avec le contenu de la métadonnée A -->> U: OK deactivate A P ->> B: Demande le message qui lui est destiné B -->> P: Retourne le message de publication P ->> S: Stocke la métadonnée et la rend publique activate S alt Publication OK S -->> P: OK P ->> A: Signale la réussite de la publication de la métadonnée activate A A -->> P: OK deactivate A end deactivate S

Dépublication d'une métadonnée

sequenceDiagram participant U as Utilisateur participant A as API participant B as Bus participant P as Agent de publication participant S as Catalogue de métadonnées activate P activate B U ->> A : Demande la dépublication d'une métadonnée existante activate A A ->> B: Publie un message de dépublication avec le fileIdentifier A -->> U: OK deactivate A P ->> B: Demande le message qui lui est destiné B -->> P: Retourne le message de dépublication P ->> S: Supprime la métadonnée avec le fileIdentifier fourni activate S alt Publication OK S -->> P: OK P ->> A: Signale la réussite de la dépublication de la métadonnée activate A A -->> P: OK deactivate A end deactivate S

Modification d'une métadonnée

sequenceDiagram participant U as Utilisateur participant A as API participant B as Bus participant P as Agent de publication participant S as Catalogue de métadonnées activate P activate B U ->> A : Téléverse la nouvelle version d'une métadonnée existante activate A A ->> A : Extraie le fileIdentifier et vérifie que c'est toujours le même A ->> A : Extraie le niveau de métadonnée et contrôle qu'elle est de lot ou de produit A ->> B : Publie un message de modification avec le contenu de la métadonnée A -->> U: OK deactivate A P ->> B: Demande le message qui lui est destiné B -->> P: Retourne le message de publication P ->> S: Téléverse la nouvelle version de la métadonnée activate S alt Modification OK S -->> P: OK P ->> A: Signale la réussite du stockage de la métadonnée activate A A -->> P: OK deactivate A end deactivate S

Diffusion des annexes

Les annexes sont stockée sur les stockages disponibles de l'entrepôt (Stockage fichier ou objet) et leur état de publication n'est qu'un flag dans le référentiel. L'objectif est d'avoir une diffusion en téléchargement simple, sans contrôle des accès. Une annexe peut avoir plusieurs chemins de téléchargement. La brique de téléchargement des annexes s'appuie sur le référentiel à la consultation pour identifier l'annexe qui possède le chemin d'interrogation fourni, et vérifier si elle est bien publiée.

sequenceDiagram participant P as Producteur participant A as API participant R as Référentiel participant S as Stockage participant D as Diffuseur d'annexe participant C as Consommateur activate R activate S P ->> A : Téléverse une nouvelle annexe activate A A ->> A : Vérifie l'unicité des chemins fournis A ->> A : Récupère les informations sur le stockage prévu pour les annexes A ->> S : Transfert le fichier S -->> A : OK A ->> R : Enregistre l'annexe, avec ses chemins, son poids et son type R -->> A : OK A -->> P: OK deactivate A P ->> A : Publie l'annexe activate A A ->> R : Modifie l'état de publication R -->> A : OK A -->> P: OK deactivate A C ->> D : Demande une annexe activate D D ->> R : Demande l'annexe possédant le chemin d'interrogation alt Une annexe possède ce chemin R -->> D: Retourne l'annexe avec ses informations de publication et de stockage alt L'annexe est publiée D -->> S: Récupère la donnée S -->> D: Retourne la donnée D -->> C: Retourne la donnée else D -->> C: Annexe non trouvée end else R -->> D: Ne retourne rien D -->> C: Annexe non trouvée end deactivate D

Consultation des statistiques de consommation

sequenceDiagram participant U as Utilisateur participant A as API participant I as Indexeur activate I U ->> A : Demande des statistiques de consommation A ->> A : Identifie les entités concernées par la statistiques demandée A ->> A : Compose la requête d'interrogation de l'indexeur A ->> I : Demande les enregistrements I -->> A : Résultats A ->> A : Calcule le résumé des statistiques A -->> U : Réponse