Skip to content

Latest commit

 

History

History
 
 

README.md

Пример модификации метамодели для описания связей в новом формате

Цель примера:

  1. Предоставить пример модификации метамодели
  2. Предоставить новый способ описания связей между сущностями

Суть примера

В примере реализован новый вид описания связей между сущностями. Задействованы механизмы изменения метамодели, кастомных сущностей(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

Особенности

  1. Связь между компонентами - это отдельный объект, который можно расширить.
  2. Несколько связей между компонентами на схемах группируется в одну. При клике по такой связи мы попадаем на страницу со списком.
  3. В SELF контексте компонента будут отображены все связи, которые у него существуют. Неважно при этом где они описаны. Также будут показаны связи, которые проходят через шлюзы.
  4. Все связи всплывают наверх, если вы используете модель DDD, при всплытии также происходит группировка.
  5. Работает ТОЛЬКО с plantUML представлением.
  6. Реализована возможнсть упрощать схему с помощью объединения компонентов низкого уровня в один компонент уровнем выше.
  7. Корректно работает в случае указания элемнтов разного уровня на контекстной диаграмме. При этом прозводительность упадет.

Подключение:

  1. Заменить файлы, находящиеся в папке metamodel/dochub/entities/contexts на файлы в соотвествующей папке из примера.
  2. Использовать converter.json, которые сделает первичную конвертацию из формата старых ссылок в новый формат.
  3. Подключить файлы entities/links.yaml и datasets/links.yaml в архитектуру
  4. Подключить файл с новыми данными.
  5. Старые связи можно не удалять