Skip to content

Commit 8eb11e7

Browse files
Merge pull request #2 from rpiontik/main
Обновился с родительского репозитория
2 parents dd08770 + f388ee0 commit 8eb11e7

15 files changed

Lines changed: 247 additions & 4 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
3. [Управление бизнес-сущностями](src/business_entity_management)
1717
4. [Пример сущности для бизнес-процессов](src/sequences_entity_example)
1818
5. [Динамические контексты](src/DynamicContext)
19+
6. [Встраивание виджетов в представления стандартных сущностей](src/widgets)
1920

2021

2122
## Разворачивание

dochub.yaml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
imports:
2-
# Пример создания метамодели для описания в нотации C4 Model
3-
- src/C4Model/dochub.yaml
2+
# 1. Пример создания метамодели для описания в нотации C4 Model
3+
# - src/C4Model/dochub.yaml
4+
# 2. Валидации сущностей в DocHub с выводом информации в меню
45
# - src/validator_example/dochub.yaml
6+
# 3. Управление бизнес-сущностями
57
# - src/business_entity_management/dochub.yaml
8+
# 4. Пример сущности для бизнес-процессов
69
# - src/sequences_entity_example/dochub.yaml
7-
# - src/DynamicContext/dochub.yaml
10+
# 5. Динамические контексты
11+
# - src/DynamicContext/dochub.yaml
12+
# 5. Пример встраивание виджетов в представления Components и Aspects
13+
- src/widgets/dochub.yaml

src/DynamicContext/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
* components - данные архитектуры для рендеринга
2828
* components.yaml - компоненты уровня L2
2929
* root.yaml - корневой манифест данных архитектуры
30-
* contexts - архитектурные контакты;
30+
* contexts - архитектурные контексты
3131
* l1.yaml - манифест контекста уровня L1
3232
* l2.yaml - манифест контекста уровня L2
3333
* root.yaml - корневой манифест контекстов

src/widgets/README.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Пример встраивания виджетов в представления стандартных сущностей
2+
3+
**Цель примера:** Познакомить с возможностями расширения представлений
4+
стандартных сущностей.
5+
6+
## Суть примера
7+
Создаются виджеты, которые встраиваются в представления Aspects и Components.
8+
9+
В components встраиваивается виджет, демонстрирующий, кто зависит
10+
от данного компонента:
11+
12+
![Зависимые компоненты](./images/components.png)
13+
14+
В aspects встраивается виджет, демонстрирующий, кто отвечает за
15+
реализацию данного архитектурного аспекта.
16+
17+
![Реализацторы аспекта](./images/aspects.png)
18+
19+
## Требования
20+
Верия платформы: > 2.5.2
21+
22+
## Файловая структура примера
23+
* entities - расширения сущностей
24+
* templates - шаблоны виджетов
25+
* people.md - Markdown шаблон для виджета сущности aspects
26+
* aspect.yaml - расширение сущности aspects
27+
* components.yaml - расширение сущности components
28+
* root.yaml - корневой манифест пакета расширения сущностей
29+
* images - картинки для настоящей документации
30+
* aspects.yaml - архитектурные аспекты
31+
* components.yaml - архитектурные компоненты
32+
* contexts.yaml - архитектурные контексты
33+
* dochub.yaml - корневой манифест примера
34+
35+
## Использование
36+
В меню плагина DocHub выберите "Архитектура" -> "Контексты" -> "General".
37+
В открывшемся контексте кликните по архитектурному компоненту или аспекту.
38+
Найдите в карточке встроенный виджет.
39+
40+
![Контекст](./images/context.png)
41+
42+
Вносите изменения в код архитектуры в файлах каталога
43+
[components.yaml](./components.yaml) и [aspects.yaml](./aspects.yaml).
44+
Наблюдайте изменения в рендеринге карточек объектов.
45+
46+
## Задания для практики
47+
* Создайте дополнительные компоненты, которые будут связаны с компонентом backend.
48+
Проверьте, что в карточке компонента backend появилась информация об
49+
этих зависимостях;
50+
* Добавьте новое поле в шаблон виджета aspects в [расширении](./entities/aspects.yaml).
51+
Добейтесь корректного вывода значания этого поля в карточке аспектов при заполнении
52+
в коде архитектуры.
53+
* Измените виджет вывода зависимостей внешних компонентов в расширении [components](./entities/components.yaml)
54+
так, чтобы зависомости наглядно отображались в виде диаграммы.

src/widgets/aspects.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Описываем акрхитектурные аспекты - https://dochub.info/docs/dochub.aspects
2+
aspects:
3+
ordering:
4+
location: Заказы
5+
title: Заказ товаров
6+
prodact: Буренин Ольгерт Юрьевич
7+
analyst: Семенов Руслан Вазгенович
8+
curator: Кучменко Татьяна Вадимовна
9+
payment:
10+
location: Оплаты
11+
title: Оплаты товаров
12+
prodact: Федоров Илья Степанович
13+
analyst: Семенов Руслан Вазгенович
14+
curator: Зайчик Иван Макарович

src/widgets/components.yaml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Описываем акрхитектурные компоненты - https://dochub.info/docs/dochub.components
2+
components:
3+
user:
4+
entity: actor
5+
title: Пользователь
6+
links:
7+
- id: frontend
8+
direction: <->
9+
frontend:
10+
entity: component
11+
title: Приложение
12+
links:
13+
- id: backend
14+
direction: <->
15+
aspects:
16+
- ordering
17+
- payment
18+
backend:
19+
entity: component
20+
title: Сервер приложения
21+
links:
22+
- id: database
23+
direction: <->
24+
aspects:
25+
- payment
26+
- ordering
27+
database:
28+
entity: database
29+
title: База данных

src/widgets/contexts.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Сформируем диаграмму взаимодействия компонентов
2+
contexts:
3+
general:
4+
title: Диаграмма взаимодействий
5+
location: General
6+
components:
7+
- "**" # Выберем все, что описано в архитектуре

src/widgets/dochub.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
imports:
2+
# Подключаем расширения сущностей
3+
- entities/root.yaml
4+
# Подключаем компоненты
5+
- components.yaml
6+
# Подключаем аспекты
7+
- aspects.yaml
8+
# Подключаем контексты
9+
- contexts.yaml

src/widgets/entities/aspects.yaml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
entities:
2+
# Расширяем сущность "aspects"
3+
aspects:
4+
presentations:
5+
# Встраиваемся в основную перезентацию (т.е. она уже существует)
6+
blank:
7+
widgets:
8+
# Добавляем собственный виджет
9+
people: # Идентификатор виджета
10+
# Название виджета
11+
title: Люди
12+
# Идентификатор презентации, которая будет использоваться в виджете
13+
presentation: people
14+
# В params можно передать дополнительные параметры
15+
# презентации, которые будут доступны в перемнной $params
16+
#params:
17+
# param1: Значение параметра 1
18+
# param2: Значение параметра 2
19+
# Расположение
20+
# < - слева
21+
# > - справа
22+
# = - Растянуть на 100%
23+
align: "<"
24+
# Добавляем собственную презентацию
25+
# Будем показывать членов команды, ответсвенных за аспект
26+
people:
27+
# Контракт по параметрам представления в формате JSONSchema
28+
params:
29+
type: object
30+
properties:
31+
aspect:
32+
title: Идентификатор аспекта
33+
type: string
34+
required:
35+
- aspect
36+
# Тип документа шаблона
37+
type: markdown
38+
# Файл шаблона
39+
template: templates/people.md
40+
# Источник данных
41+
source: >
42+
(
43+
$lookup(aspects, $params.aspect)
44+
)
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
entities:
2+
components:
3+
# Расширяем презентацию сущности
4+
presentations:
5+
# Встраиваемся в основную перезентацию (т.е. она уже существует)
6+
blank:
7+
# Добавляем собственный виджет
8+
widgets:
9+
outside_links: # Идентификатор виджета
10+
# Название виджета
11+
title: Кто зависит от этого компонента
12+
# Идентификатор презентации, которая будет использоваться в виджете
13+
presentation: outside_links
14+
# В params можно передать дополнительные параметры
15+
# презентации, которые будут доступны в перемнной $params
16+
#params:
17+
# param1: Значение параметра 1
18+
# param2: Значение параметра 2
19+
# Расположение
20+
# < - слева
21+
# > - справа
22+
# = - Растянуть на 100%
23+
align: "<"
24+
# Добавляем собственную презентацию
25+
# Будем показывать внешние связи на данный компонент
26+
outside_links: # Идентификатор представления
27+
# Контракт по параметрам представления в формате JSONSchema
28+
params:
29+
type: object
30+
properties:
31+
component:
32+
title: Идентификатор компонента
33+
type: string
34+
required:
35+
- component
36+
# Тип документа шаблона
37+
type: table
38+
# Определяем заголовок таблицы
39+
headers:
40+
- value: id # Идентификатор зависимого компонента
41+
text: Идентификатор # Заголовок колокнки
42+
sortable: true # Производить сортировку по колонке
43+
align: left # Форматирование по горизонтали
44+
width: 40% # Ширина колонки
45+
link: link
46+
- value: title # Наименование зависимого компонента
47+
text: Наименование
48+
sortable: true
49+
align: left # Форматирование по горизонтали
50+
width: 40%
51+
link: link
52+
- value: direction # Направление связи
53+
text: Направление связи
54+
sortable: true
55+
align: center
56+
width: 20%
57+
# Данные для шаблона
58+
source: >
59+
(
60+
[$distinct(components.$spread().(
61+
$id := $keys()[0];
62+
$title := *.title;
63+
$links := $distinct($.*.links[id=$params.component].("" & direction));
64+
$links.{
65+
"id": $id,
66+
"title": $title,
67+
"direction": $links,
68+
"link": "/architect/components/" & $id
69+
}
70+
))^(id)]
71+
)

0 commit comments

Comments
 (0)