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 es transaccional, lo que significa que mantiene un registro de las funciones que realiza como una serie de transacciones. Las transacciones funcionan enviando un evento cuando una transacción comienza y enviando otro cuando una transacción termina. Esto permite, por ejemplo, que el gestor de deshacer mantenga un registro de las transacciones anteriores para que una transacción pueda ser revertida si se pulsa el botón de deshacer.

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.

gestor_archivos#

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

fábrica_de_elementos#

El propio modelo de datos se mantiene en la fábrica de elementos (gaphor.core.modeling.elementfactory). Este servicio se usa para crear elementos del modelo, así como para buscar elementos o consultar un conjunto de elementos.

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.