Цель примера:
- Предоставить пример модификации метамодели
- Предоставить новый способ описания связей между сущностями
В примере реализован новый вид описания связей между сущностями. Задействованы механизмы изменения метамодели, кастомных сущностей(entity) и датасетов.
Связь в данном примере описывается в следующем формате:
links:
front.app-orders.backend:
from: front.app
to: orders.backend
via:
- orders.gateway
title: Передача заказа
contract: dh.contract.id
front.web-orders.backend:
from: front.web
to: orders.backend
via:
- orders.gateway
title: Передача заказаОбязательными являются только параметры from/to. Новый параметр via позволяет отметить шлюзы, через которые работает связь между компонентами.
Также улучшена поддержка контекстов, добавлены свойства group.by и group.except. С помощью этих свойств можно несколько компонентов низкого уровня объеденить в один компонент более выского. Очень хорошо может помочь при рендеринге больших схем. В примере ниже компоненты orders.db, orders.backend будут отображены на схеме как один компонент orders. Внутри этого компонента отдельно будет отрисован компонент orders.gateway, т.к. он был исключен из группировки с помощью свойства except.
contexts:
L2:
title: L2 уровень
location: L2
components:
- customer.*
- payments.*
- front.*
group:
by:
- orders
except:
- orders.gateway
- Связь между компонентами - это отдельный объект, который можно расширить.
- Несколько связей между компонентами на схемах группируется в одну. При клике по такой связи мы попадаем на страницу со списком.
- В SELF контексте компонента будут отображены все связи, которые у него существуют. Неважно при этом где они описаны. Также будут показаны связи, которые проходят через шлюзы.
- Все связи всплывают наверх, если вы используете модель DDD, при всплытии также происходит группировка.
- Работает ТОЛЬКО с plantUML представлением.
- Реализована возможнсть упрощать схему с помощью объединения компонентов низкого уровня в один компонент уровнем выше.
- Корректно работает в случае указания элемнтов разного уровня на контекстной диаграмме. При этом прозводительность упадет.
- Заменить файлы, находящиеся в папке metamodel/dochub/entities/contexts на файлы в соотвествующей папке из примера.
- Использовать converter.json, которые сделает первичную конвертацию из формата старых ссылок в новый формат.
- Подключить файлы entities/links.yaml и datasets/links.yaml в архитектуру
- Подключить файл с новыми данными.
- Старые связи можно не удалять