Framework

Vue d’ensemble

Gaphor est conçu pour être léger et orienté vers les services. L’application est divisée en une série de services, tels que les gestionnaires de fichiers, d’événements et d’annulations. Ces services sont chargés en fonction des points d’entrée définis dans le fichier pyproject.toml. Pour en savoir plus sur l’architecture, veuillez consulter la description de l’architecture orientée services Service Oriented Architecture.

Axé sur les événements

Les parties de Gaphor communiquent entre elles par le biais d’événements. Lorsque quelque chose d’important se produit, par exemple un changement d’attribut d’un élément de modèle, un événement est envoyé. Lorsque d’autres parties de l’application sont intéressées par un changement, elles enregistrent un gestionnaire d’événement pour ce type d’événement. Les événements sont émis par l’intermédiaire d’un courtier central, de sorte qu’il n’est pas nécessaire de s’enregistrer pour chaque élément individuel susceptible d’envoyer un événement qui les intéresse. Par exemple, un élément de diagramme peut enregistrer une règle d’événement et vérifier ensuite si l’élément qui a envoyé l’événement est réellement l’événement que l’élément représente. Pour plus d’informations, voir la description complète du event system.

Transactionnel

Gaphor est transactionnel, ce qui signifie qu’il conserve la trace des fonctions qu’il exécute sous la forme d’une série de transactions. Les transactions s’envoient un événement lorsqu’elles commencent, puis un autre lorsqu’elles se terminent. Cela permet notamment au gestionnaire d’annulation de conserver un journal des transactions précédentes, de sorte qu’il soit possible d’annuler une transaction en appuyant sur le bouton d’annulation.

Composants principaux

La partie principale de Gaphor qui s’exécute en premier est appelée Application. Gaphor peut avoir plusieurs modèles ouverts à tout moment. Chaque modèle est conservé dans une Session. Une seule instance de l’application est active. Chaque session chargera ses propres services définis comme gaphor.services.

Les services les plus importants sont les suivants :

event_manager (gestionnaire d’événements)

Il s’agit du composant central utilisé pour la distribution des événements. Tous les services qui utilisent des événements (à la fois pour l’envoi et la réception) dépendent de ce composant.

element_factory (fabrique d’éléments)

Le “modèle de données” data model lui-même est maintenu dans la fabrique d’éléments (ElementFactory). Ce service est utilisé pour créer des éléments de modèle, ainsi que pour rechercher des éléments ou un ensemble d’éléments.

(undo_manager) Gestionnaire d’annulation

Un des services les plus appréciés. Il permet aux utilisateurs de se tromper de temps en temps !

Le gestionnaire d’annulation est transactionnel. Les actions effectuées par un utilisateur ne sont stockées que si une transaction est active. Si une transaction est terminée (validée), une nouvelle action d’annulation est stockée. Les transactions peuvent également être annulées, auquel cas toutes les modifications sont directement reproduites. Pour plus d’informations, voir la description complète du “gestionnaire d’annulation” undo manager.

file_manager (gestionnaire de fichier)

Le chargement et l’enregistrement d’un modèle s’effectuent par l’intermédiaire de ce service.