Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
1. [Пример создания пользовательской метамодели C4 Model](src/C4Model)
2. [Простой пример валидации сущностей в DocHub с выводом информации в меню](src/validator_example)
3. [Пример управления бизнес-сущностями](src/business_entity_management)
4. [Пример сущности для бизнес-процессов](src/sequences_entity_example)


## Разворачивание
Expand Down
3 changes: 3 additions & 0 deletions dochub.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
imports:
# Пример создания метамодели для описания в нотации C4 Model
- src/C4Model/dochub.yaml
# - src/validator_example/dochub.yaml
# - src/business_entity_management/dochub.yaml
# - src/sequences_entity_example/dochub.yaml
92 changes: 92 additions & 0 deletions src/sequences_entity_example/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Пример сущности для бизнес-процессов

**Цель примера:** Показать возможности связки Dochub+plantuml для генерации диаграмм последовательности
(например, описание бизнес-процессов) в контексте имеющегося описания архитектуры предприятия.

Пример является доработанной версией сущности interactions из [официальной документации](https://dochub.info/docs/dochub.entities), опубликованной на одном из воркшопов по Dochub.
Добавлена автоматическая линковка компонентов в качестве участников, а также поддержка ссылок в шагах. Это могут быть ссылки на другие диаграммы, swagger-контракты и тд.

## Суть примера

Показать, как с помощью сущностей можно "затащить" в dochub бизнес-документацию и связать ее с архитектурой компании. Как простой пример последовательности была выбрана сказка "Колобок".

В результате аналитики и технические писатели получают возможность описать с помощью текста (а значит - и положить в git) бизнес-процессы:

```yaml
sequences:
story.pigs:
title: Сказка "колобок"
location: Документы/Колобок/Диаграмма
icon: swap_horiz
groups:
- title: Рождение колобка
triggers:
- Жили-были дед и баба
steps:
- from: grandpa
to: grandma
value: Испеки, старуха, колобок!
- from: grandma
to: grandma
value: Поскрести по сусекам
- from: grandma
to: kolobok
value: Испекла баба колобок
contract: kolobok.receipt
results:
- Колобок полежал—полежал, да вдруг и покатился
...
```

Dochub сам превратит найденные упоминания компонентов из полей from/to в ссылки на их профили и подтянет названия, а поле contract позволит обеспечить перелинковку с другими документами, в том числе внешними.

## Файловая структура примера
* components - данные архитектуры для рендеринга
* heroes.yaml - компоненты-участники сказки
* root.yaml - корневой манифест данных архитектуры
* docs - документы в формате markdown для демонстрации возможностей линковки через contract
* entities - метамодель;
* templates - шаблоны, используемые для рендеринга диаграмм
* tree.puml - Plantuml-шаблон для вывода всех диаграмм в виде дерева
* blank.puml - Plantuml-шаблон для просмотра конкретной диаграммы
* manifest.yaml - манифест пользовательских сущностей (там определена сущность sequences)
* sequences.yaml - пример сущности
* root.yaml - корневой манифест метамодели
* dochub.yaml - корневой манифест примера

## Валидация

Dochub имеет встроенные механизмы контроля корректности заполнения описания. Чтобы его активировать, для создаваемых сущностей мы описываем правила валидации:

"Из коробки" это позволяет проверять соответствие сущностей при работе в IDE через плагин Dochub. Чтобы валидация выполнялась также в приложении Dochub, а ошибки выводились в блоке "Проблемы", необходимо добавить вызов валидатора:

```yaml
rules:
validators:
sequences:
title: Валидатор последовательностей
source: >
(
$validator := $jsonschema($.entities.sequences.schema.patternProperties.*); /* Передаем схему в части отдельного объекта, а не всех sequences */
([([
$.sequences.$spread().( /* Сканируем все последовательности */
$ID := $keys()[0];
{
"id": $ID, /* Запоминаем идентификатор компонента */
"isvalid": $validator($.*) /* Валидируем компонент по схеме */
}
)
][isvalid != true]).isvalid.{ /* Генерируем отклонения по выявленным нарушениям */
"uid": $.params.*[0] & "-sequence-" & %.id, /* Уникальный идентификатор выявленной ошибки */
"location": "/entities/sequences/blank?id=" & %.id, /* Ссылка на расположение объекта ошибки */
"correction": "Исправьте ошибку",
"description": $.message
}])

)
```

## Задания для практики

* Реализуйте документ со списком диаграмм и задействованных в них компонентов
* Добавьте поддержку [активации/деактивации](https://plantuml.com/ru/sequence-diagram#5cc0040514e70f7b) участников через дополнительный атрибут сущности
22 changes: 22 additions & 0 deletions src/sequences_entity_example/components/heroes.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
components:
grandma:
entity: actor
title: Баба
grandpa:
entity: actor
title: Дед
kolobok:
entity: entity # Для демонстрации автоопределения entity
title: Колобок
animals.hair:
entity: actor
title: Заяц
animals.wolf:
entity: actor
title: Волк
animals.bear:
entity: actor
title: Медведь
animals.fox:
entity: actor
title: Лиса
2 changes: 2 additions & 0 deletions src/sequences_entity_example/components/root.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
imports:
- heroes.yaml
4 changes: 4 additions & 0 deletions src/sequences_entity_example/dochub.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
imports:
- components/root.yaml
- entities/root.yaml
- docs/root.yaml
3 changes: 3 additions & 0 deletions src/sequences_entity_example/docs/receipt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Рецепт колобка

Взяла старуха крылышко, по коробу поскребла, по сусеку помела, и набралось муки пригоршни с две. Замесила на сметане, изжарила в масле и положила на окошечко постудить.
21 changes: 21 additions & 0 deletions src/sequences_entity_example/docs/root.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
docs:
kolobok.receipt:
type: markdown
location: Колобок/Рецепт
source: receipt.md
kolobok.song4hair:
type: markdown
location: Колобок/Песня для зайца
source: song4hair.md
kolobok.song4wolf:
type: markdown
location: Колобок/Песня для волка
source: song4wolf.md
kolobok.song4bear:
type: markdown
location: Колобок/Песня для медведя
source: song4bear.md
kolobok.song4fox:
type: markdown
location: Колобок/Песня для лисы
source: song4fox.md
13 changes: 13 additions & 0 deletions src/sequences_entity_example/docs/song4bear.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Песня колобка для медведя

Я Колобок, Колобок!
Я по коробу скребен,
По сусеку метен,
На сметане мешон,
Да в масле пряжон,
На окошке стужон;
Я от дедушки ушел,
Я от бабушки ушел,
Я от зайца ушел,
Я от волка ушел,
И от тебя, медведь, не хитро уйти!
14 changes: 14 additions & 0 deletions src/sequences_entity_example/docs/song4fox.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Песня колобка для лисы

Я Колобок, Колобок!
Я по коробу скребен,
По сусеку метен,
На сметане мешон,
Да в масле пряжон,
На окошке стужон;
Я от дедушки ушел,
Я от бабушки ушел,
Я от зайца ушел,
Я от волка ушел,
И от медведя ушел,
А от тебя, лиса, и подавно уйду!
11 changes: 11 additions & 0 deletions src/sequences_entity_example/docs/song4hair.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Песня колобка для зайца

Я Колобок, Колобок!
Я по коробу скребен,
По сусеку метен,
На сметане мешон,
Да в масле пряжон,
На окошке стужон;
Я от дедушки ушел,
Я от бабушки ушел,
И от тебя, зайца, не хитро уйти!
12 changes: 12 additions & 0 deletions src/sequences_entity_example/docs/song4wolf.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Песня колобка для волка

Я Колобок, Колобок!
Я по коробу скребен,
По сусеку метен,
На сметане мешон,
Да в масле пряжон,
На окошке стужон;
Я от дедушки ушел,
Я от бабушки ушел,
Я от зайца ушел,
И от тебя, волка, не хитро уйти!
Loading