---
# System prepended metadata

title: hackmd PlantUML спецификация на интеграцию

---

# hackmd PlantUML спецификация на интеграцию

## Введение
1. Плагин PlantUML должен быть подключаемым модулем для MarkDown процессора hackMD(codiMD). 
2. Необходимо использовать последние стабильные версии: 
> PlantUML:  1.2019.6 http://plantuml.com/download
> CodiMD 1.3.1 https://github.com/hackmdio/codimd 
3. В комплекте плагина должна быть инструкция по подключению.
4. Прием работы осущевствляется путем демонстрации исполнителем работы плагина(мне нужно протестить как оно будет реализованно на вашей копии hmd)
5. Плагин должен прозрачно интегрироватся с hmd через теги:
```md
@uml[style...](path/to/diagram.puml)
```
и через

```md
@startuml
actor Alice #yellow
participant Bob
Alice->Bob: Auth Request
Bob->Alice: Auth Response
@enduml
```

Подробная инструкция по использованию интегрированного плагина в схожем проекте: https://gitpitch.com/docs/rich-media-features/uml-diagrams

Инструкция по использованию PlantUML : http://plantuml.com/ru/guide

## Путь интеграции

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

2. имплементация рендера внутри js-jvm сервис-воркера( например https://plasma-umass.org/doppio-demo/ )

Я-бы хотел чтоб рендер был реализован в виде сервис-воркера, это позволит нам использовать его для предоставления сервиса редактирования для внешних сотрудников/партнеров.
Подводный камень - внедрение viz.js - компонента, необходимого для работы plantuml. Сам plantuml реализован в виде jvm приложения, и интерпритируется в js в момент загрузки его в doppio. собвстенно наиболее подходящая точка интеграции кмк - интеграция viz.js в doppio и запуск platinumuml без модификаций. 
Также для оценки вероятно будет полезно изучить интерфейс взаимодействия реализации схожей задачи через использование внешнего рендера: 
докер рендера : https://github.com/plantuml/plantuml-server
реализация : https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml#use-plantuml-server-as-render