Skip to content

Commit 1c1db8e

Browse files
Сделал работающий макет
1 parent 8eb11e7 commit 1c1db8e

28 files changed

Lines changed: 1874 additions & 0 deletions
Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
# Пример управления бизнес-сущностями
2+
3+
**Цель примера:** Показать возможности по управлению бизнес-сущностями
4+
в инструменте управления архитектурой [DocHub](https://dochub.info).
5+
6+
Помимо заявленной цели пример содержит еще несколько интересных реализаций. Например, отчет показывающий список систем/сервисов с реализацией передачи параметра в другой отчет для установки значения фильтра.
7+
8+
# Суть примера
9+
Стояла реальная бизнес-задача показать в каких системах используются те или иные бизнес-сущности.
10+
11+
Вторая задача определилась по ходу реализации. Оказалось, что в компании нет процесса управления бизнес-сущностями на логическом уровне, что приводит к тому, что в разных системах/сервисах одну и ту же бизнес-сущность логически и физически реализуют по-разному. Начиная с того, что реквизиты могут называются по разному и иметь разный физический смысл и заканчивая тем, что часть сущностей с одинаковым названием физически означают разные вещи. Все это вызывает большие проблемы в первую очередь с интеграцией между сервисами.
12+
13+
Поэтому было решено на базе DocHub реализовать управление логическим уровнем бизнес-сущностей и создать эталонный список бизнес-сущностей, который команды смогут использовать в качестве шаблона для создания физической реализации у себя в проектах.
14+
15+
## Логическое описание реализации и файловая структура примера
16+
Для реализации был выбран вариант создания нового entity, который называется "business_entities". Физически "business_entities" было реализовано через 2 файла:
17+
* business_entities/business_entities_model.yaml - в этом файле была описана сама модель, реализован вывод в меню и несколько вариантов визуализации в виде отчетов. Все запросы переиспользуемые, так как они были добавлены в datasets/datasets.yaml
18+
19+
```yaml
20+
entities: # Сущности расширенной метамодели
21+
# Бизнес-сущности
22+
business_entities: # Секция, где будет описываться объекты сущности "взаимодействие". Обязательно.enti
23+
title: Бизнес-сущности # Название сущности. Обязательно.
24+
description: > # Описание сущности текст или ссылка на документ. Необязательно.
25+
Ключевые бизнес-сущности ГК Болото
26+
menu: > # Генератор раcположения в меню. Запрос или явное описание объета. Необязательно.
27+
(
28+
Запрос
29+
)
30+
presentations:
31+
business_entities_table_list:
32+
type: table
33+
headers:
34+
Описание полей таблицы
35+
source: swamp.dataset.business_entities_list
36+
37+
# Выводим список бизнес-сущностей, полученных в запросе выше business_entities_list
38+
business_entities_list:
39+
type: markdown
40+
template: business_entities_list.md
41+
42+
# Выводим карточку выбранной бизнес-сущности
43+
business_entity_card:
44+
type: markdown
45+
template: business_entity_card.md
46+
source: >
47+
(
48+
$entities := [$.business_entities.$spread().$merge([$.*, {"id": $keys($)}])];
49+
$entities [id=$params.id];
50+
)
51+
52+
# Получаем список бизнес-сущностей, используемых в системах, все это выводим в таблицу
53+
business_entities_table_in_systems:
54+
type: table
55+
headers:
56+
Описание полей таблицы
57+
source: swamp.dataset.business_entities_in_systems
58+
59+
# Выводим писок бизнес-сущностей, используемых в системах полученных в запросе выше business_entities.in_systems
60+
business_entities_in_systems:
61+
type: markdown
62+
template: business_entities_in_systems.md
63+
64+
# Наследуемся от таблицы business_entities.in_systems и делаем фильтр по конкретной системе
65+
business_entities_table_in_systems.filtered: # Дочерняя таблица
66+
type: table
67+
headers:
68+
Описание полей таблицы
69+
origin: swamp.dataset.business_entities_in_systems # Базовый источник данных
70+
source: >
71+
(
72+
$[system_id=$params.system_id]
73+
)
74+
75+
```
76+
77+
* business_entities/business_entities.yaml - в этом файле хранятся значения "business_entities"
78+
79+
```yaml
80+
business_entities:
81+
bank:
82+
title: Банки
83+
description: pass
84+
parameters:
85+
- name: bank_name
86+
description: Наименование банка
87+
- name: bik
88+
description: БИК банка
89+
90+
chekingaccount:
91+
title: Расчетные счета
92+
description: pass
93+
94+
contractor:
95+
title: Контрагенты
96+
description: pass
97+
98+
contractoraccount:
99+
title: Счета контрагентов
100+
description: pass
101+
```
102+
103+
Для реализации привязки бизнес-сущностей в системах/сервисах необходимо добавлять массив используемых бизнес-сущностей в раздел "business_entities":
104+
```yaml
105+
# Описываем L1 Context в нотации C4 Model
106+
components:
107+
swamp.frog.spoll:
108+
title: S.POLL # Название компоненты
109+
entity: system # Сущность компонента из PlantUML (https://plantuml.com/ru/deployment-diagram)
110+
short_description: Сервис формирования опросов
111+
description: Сервис формирования опросов
112+
business_owners:
113+
- Пиявки
114+
application_owner: Лунтик
115+
critical_level: business_operational #administrative/business_operational/business_critical/mission_critical
116+
system_category: business_app #channel_app/business_app/ext_business_app/it_app/ext_it_app
117+
aspects: # Аспекты, которе реализует компонент
118+
- hr
119+
business_entities:
120+
- bank
121+
- currency
122+
- region
123+
- chekingaccount
124+
- contractoraccount
125+
- contract
126+
links:
127+
# Интеграции между системами разных БЮ
128+
- id: swamp.frog.1cbit_finance
129+
direction: <--
130+
- id: swamp.crocodile.crm
131+
direction: <--
132+
- id: swamp.crocodile.spact
133+
direction: <--
134+
135+
```
136+
137+
Также было разработано несколько отчетов. Практически все отчеты реализуются через markdown путём встраивания различных объектов DocHub внутрь, например, таблиц.
138+
139+
* **business_entities/business_entity_card.md** — это карточка бизнес-сущности. Если добавить реквизиты к сущности, то в карточке они тоже будут выводиться. Для примера можно сформировать карточу бизнес-сущности "bank".
140+
* **business_entities/business_entities_list.md** — это список всех бизнес-сущностей с возможностью перехода в карточку конкретной бизнес-сущности.
141+
* **business_entities/business_entities_in_systems.md** — это список показывающий список бизнес-сущностей используемых в каждой системе. В этом отчете реализован пример установки фильтра по конкретной системе. Также реализована возможность сортировки практически по всем полям.
142+
* **systems_table.md** — этот отчет выводит список систем, но также к нему была добавлена ссылка для возможности выводить отфильтрованный по системе список бизнес-сущностей.
143+
144+
Концептуальная схема примера ниже:
145+
146+
![Концептуальная схема примера](./images/conceptual_schema.jpg)
147+
148+
149+
## Использование
150+
В меню плагина DocHub выберите пункт Документы/Моё болото. В меню вы увидите ссылки на 3 отчета.
151+
152+
![Меню DocHub](./images/menu.jpg)
153+
154+
**1. Выберите пункт "1. Бизнес-сущности":**
155+
156+
![Список бизнес-сущностей](./images/business_entities.jpg)
157+
158+
Нажмите на ссылку "Банки" и перейдите в карточку бизнес-сущности:
159+
160+
![Карточка бизнес-сущности](./images/card.jpg)
161+
162+
**2. Выберите пункт "2. Список бизнес-сущностей в системах":**
163+
164+
![Список бизнес-сущностей в системах](./images/business_entities_in_systems.jpg)
165+
166+
Так как в системе CRM указан ошибочный идентификатор, то в колонке "Бизнес-сущность" для этого идентификатора указана ошибка "Ошибка в идентификаторе бизнес-сущности".
167+
168+
При нажатии на заголовок таблицы "Бизнес-сущность" вы можете отсортировать список по имени бизнес-сущности и посмотреть в каких системах используется та или иная бизнес-сущность.
169+
170+
Нажав ссылку "Отбор по системе" можно отфильтровать список по конкретной системе:
171+
172+
![Отбор по системе](./images/filtred_system.jpg)
173+
174+
**3. Выберите пункт "3. Список систем":**
175+
176+
![Список систем](./images/system_list.jpg)
177+
178+
В колонке "Бизнес-сущности" нажмите "Ссылка". В результате выведется список бизнес-сущностей отфильтрованный по выбранной системе, аналогично пункту 2 этого раздела.
179+
180+
## Задания для практики
181+
* Разберитесь со структурой примера, особе внимание обратите на алгоритмы формирования запросов. Если что-то не понятно, то можно почитать [документацию по JSONata](http://docs.jsonata.org/overview.html);
182+
* Попробуйте реализовать какой-нибудь свой вариант отчета переиспользовав один из запросов описанных datasets/datasets.yaml.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
imports:
2+
- systems_table.yaml
3+
- systems/_root.yaml
4+
- clusters/_root.yaml
5+
- datasets/_root.yaml
6+
- artefacts/_root.yaml
7+
8+
components:
9+
swamp:
10+
title: Экосистема Болото
11+
swamp.frog:
12+
title: Бизнес-юнит лягушки
13+
swamp.hippo:
14+
title: Бизнес-юнит бегемота
15+
swamp.crocodile:
16+
title: Бизнес-юнит крокодила
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
imports:
2+
- pal1_landscape.yaml
3+
- sid_contexts.yaml
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
contexts: # Контексты представления архитектурных компонентов
2+
arch.swamp.as_is:
3+
title: ГК Болото
4+
location: L1/ГК Болото
5+
# extra-links: true
6+
extra-links: false
7+
uml:
8+
$notation: plantuml # sber C4Model plantuml
9+
$autor: Frog
10+
$version: 0.0.1
11+
$moment: 20.11.2022
12+
components:
13+
- swamp.frog.*
14+
- swamp.hippo.*
15+
- swamp.crocodile.*
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
contexts: # Контексты представления прикладной архитектуры (pa - ПА)
2+
swamp.crocodile.sid:
3+
title: Архитектура S.ID (уровень ПА-L2)
4+
location: L2/S.ID # Размещение документа в дереве навигации
5+
extra-links: true
6+
uml:
7+
$notation: plantuml # sber C4Model plantuml
8+
$autor: Трубников Александр
9+
$version: 0.0.1
10+
$moment: 14.09.2022
11+
components:
12+
- swamp.crocodile.sid.app
13+
- swamp.crocodile.sid.celery
14+
- swamp.crocodile.sid.celery_beat
15+
- swamp.crocodile.sid.crmclientvalid
16+
- swamp.crocodile.sid.web
17+
- swamp.crocodile.sid.profile_producer
18+
- swamp.crocodile.sid.consumers.catalog_consumer
19+
- swamp.crocodile.sid.consumers.smail_consumer
20+
- swamp.crocodile.sid.consumers.spass_consumer
21+
- swamp.crocodile.sid.consumers.zup_consumer
22+
- swamp.crocodile.sid.pgbouncer
23+
- swamp.crocodile.sid.db_postgresql
24+
- swamp.crocodile.sid.redis_master
25+
- swamp.crocodile.sid.celery_exporter
26+
- swamp.crocodile.sid.postgres_exporter
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
imports:
2+
- clusters_model.yaml
3+
- clusters.yaml

0 commit comments

Comments
 (0)