Workflow
hermes-server
- 1. charge son cache local
- 2. vérifie si son schéma de données a changé depuis la dernière exécution, et émet les événements supprimés résultants (le cas échéant), ainsi que le nouveau schéma de données
- 3. récupère toutes les données requises par son modèle de données depuis la ou les sources de données
- 3.1. applique les contraintes de fusion
- 3.2. fusionne les données
- 3.3. remplace les incohérences et les conflits de fusion par les valeurs en cache
- 3.4. applique les contraintes d’intégrité
- 4. génère un différentiel entre son cache et les données distantes récupérées
- 5. boucle sur chaque type de différence : ajout, modification, suppression
- 5.1. pour chaque type de différence, boucle sur chaque type de données selon leur ordre de déclaration dans le modèle de données, à l’exception du type de différence supprimé, pour lequel il s’agit de l’ordre de déclaration inverse
- 5.1.1. boucle sur chaque différence du type de données actuel
- 5.1.1.1. génère l’événement correspondant
- 5.1.1.2. émet l’événement sur le bus de messages
- 5.1.1.3. si l’événement a été émis avec succès :
- 5.1.1.3.1. exécute l’action
commit_one
du modèle de données le cas échéant - 5.1.1.3.2. met à jour le cache pour refléter la nouvelle valeur de l’élément affecté par l’événement
- 5.1.1.3.1. exécute l’action
- 5.1.1. boucle sur chaque différence du type de données actuel
- 5.1. pour chaque type de différence, boucle sur chaque type de données selon leur ordre de déclaration dans le modèle de données, à l’exception du type de différence supprimé, pour lequel il s’agit de l’ordre de déclaration inverse
- 6. une fois que tous les événements ont été émis
- 6.1. exécute l’action
commit_all
du modèle de données le cas échéant - 6.2. enregistre le cache sur le disque
- 6.1. exécute l’action
- 7. attend
updateInterval
et recommence à partir de l’étape3.
si l’application n’a pas été invitée à s’arrêter
Si une exception est levée à l’étape 2.
, cette étape est recommencée jusqu’à ce qu’elle réussisse.
Si une exception est levée aux étapes 3.
à 7.
, le cache est enregistré sur le disque et le serveur recommence à partir de l’étape 3.
.