Traitement des événements
Comme le modèle de données sur le serveur diffère de celui sur le client, les clients doivent convertir les événements distants reçus sur le bus de messages en événements locaux. Si l’événement local résultant est vide (le type de données ou les attributs modifiés dans l’événement distant ne sont pas définis sur le modèle de données client), l’événement est ignoré.
Lors de la mise à jour du modèle de données client, le client peut générer des événements locaux qui n’ont pas d’événement distant correspondant, i.e. pour mettre à jour une valeur d’attribut calculée avec un modèle Jinja qui vient d’être modifié.
flowchart TB subgraph Hermes-client direction TB datamodelUpdate[["mise à jour du modèle de données"]] remoteevent["Événement distant"] localevent["Événement local"] eventHandler(["Méthode de gestion de l'événement du plugin client"]) end datamodelUpdate-->|génère|localevent MessageBus["Bus de message"]-->|fournit|remoteevent remoteevent-->|convertit en|localevent localevent-->|passe à la bonne|eventHandler eventHandler-->|traite|Target["Cible"] classDef external fill:#fafafa,stroke-dasharray: 5 5 class MessageBus,Target external