Framework

Resumen

Gaphor está construido de una manera ligera y orientada a servicios. La aplicación se divide en una serie de servicios, como un gestor de archivos, eventos y deshacer. Estos servicios se cargan en base a los puntos de entrada definidos en el archivo pyproject.toml. Para obtener más información sobre la arquitectura, consulte la descripción sobre la Arquitectura Orientada a Servicios.

Dirigido por eventos

Las partes de Gaphor se comunican entre sí mediante eventos. Cada vez que algo importante sucede, por ejemplo, un atributo de un elemento del modelo cambia, se envía un evento. Cuando otras partes de la aplicación están interesadas en un cambio, registran un controlador de eventos para ese tipo de evento. Los eventos se emiten a través de un intermediario central, por lo que no es necesario registrarse en cada elemento individual que pueda enviar un evento en el que estén interesados. Por ejemplo, un elemento de diagrama podría registrar una regla de evento y luego comprobar si el elemento que envió el evento es realmente el evento que el elemento está representando. Para más información, consulte la descripción completa del sistema de eventos.

Transaccional

Gaphor is transactional, which means it keeps track of the functions it performs as a series of transactions. The transactions work by sending an event when a transaction starts and sending another when a transaction ends. This allows, for example, the undo manager to keep a running log of the previous transactions so that a transaction can be reversed if the undo button is pressed.

Componentes principales

La parte principal de Gaphor que se ejecuta primero se llama Aplicación. Gaphor puede tener varios modelos abiertos en cualquier momento. Cada modelo se mantiene en una Sesión. Sólo una instancia de la aplicación está activa. Cada sesión cargará sus propios servicios definidos como gaphor.services.

Los servicios más destacados son:

gestor_de_eventos

Este es el componente central usado para el envío de eventos. Cada servicio que hace algo con eventos (tanto enviar como recibir) depende de este componente.

fábrica_de_elementos

The data model itself is maintained in the element factory (ElementFactory). This service is used to create model elements, as well as to lookup elements or query for a set of elements.

gestor_deshacer

Uno de los servicios más apreciados. ¡Permite a los usuarios equivocarse de vez en cuando!

El gestor de deshacer es transaccional. Las acciones realizadas por un usuario sólo se almacenan si hay una transacción activa. Si se completa una transacción (confirmada) se almacena una acción nueva de deshacer. Las transacciones también pueden revertirse, en cuyo caso todos los cambios se reproducen directamente. Para más información consulte la descripción completa del gestor de deshacer.

gestor_archivos

La carga y guardado de un modelo se realiza a través de este servicio.