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
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
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
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
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