Каркас¶
Огляд¶
Gaphor побудований у легкій, сервіс-орієнтованій манері. Додаток розділено на низку сервісів, таких як менеджери файлів, подій та скасувань. Ці сервіси завантажуються на основі точок входу, визначених у файлі pyproject.toml. Щоб дізнатися більше про архітектуру, будь ласка, перегляньте опис Сервісно-орієнтованої архітектури.
Керується подією¶
Частини Gaphor спілкуються між собою за допомогою подій. Щоразу, коли відбувається щось важливе, наприклад, змінюється атрибут елемента моделі, надсилається подія. Коли інші частини програми зацікавлені у зміні, вони реєструють обробник події для цього типу подій. Події надсилаються через центральний брокер, тому вам не потрібно реєструвати кожен окремий елемент, який може надіслати подію, що їх цікавить. Наприклад, елемент діаграми може зареєструвати правило події, а потім перевірити, чи елемент, який надіслав подію, насправді є тією подією, яку представляє цей елемент. Для отримання додаткової інформації зверніться до повного опису системи подій.
Трансакційний¶
Gaphor є транзакційним, що означає, що він відстежує функції, які він виконує, як серію транзакцій. Транзакції працюють, надсилаючи подію, коли транзакція починається, і надсилаючи іншу, коли транзакція закінчується. Це дозволяє, наприклад, менеджеру скасувань вести журнал попередніх транзакцій, щоб можна було скасувати транзакцію, якщо натиснути кнопку скасування.
Основні компоненти¶
Основна частина Gaphor, яка виконується першою, називається «Додаток». У Gaphor може бути відкрито декілька моделей одночасно. Кожна модель зберігається у «Сесії». Активним є лише один екземпляр додатку. Кожен сеанс завантажує власні сервіси, визначені як gaphor.services.
Найпомітніші послуги:
event_manager¶
Це центральний компонент, який використовується для диспетчеризації подій. Кожна служба, яка щось робить з подіями (як надсилання, так і отримання), залежить від цього компонента.
element_factory¶
Сама модель даних зберігається у фабриці елементів (ElementFactory). Цей сервіс використовується для створення елементів моделі, а також для пошуку елементів або запиту набору елементів.
undo_manager¶
Одна з найдорожчих послуг. Це дозволяє користувачам час від часу робити помилки!
Менеджер скасувань є транзакційним. Дії, виконані користувачем, зберігаються лише тоді, коли транзакція активна. Якщо транзакцію завершено (зафіксовано), зберігається нова дія скасування. Транзакції також можна відкотити, в цьому випадку всі зміни відтворюються безпосередньо. Для отримання додаткової інформації дивіться повний опис менеджер відміни.
file_manager¶
Завантаження та збереження моделі здійснюється через цей сервіс.