Kroki fournit une API unifiée avec la prise en charge de Blockdiag (Blockdiag, Seqdiag, Actdiag, Nwdiag, PacketDiag, Rackdiag), BPMN, Bytefield, C4 (avec Plantuml), D2, DBML, Diagrams.net (expérimental), Ditaa, Erd, Excalidraw, Graphviz, Sirmaid, Nomnoml, Pikchr, Plantuml, Svgbob, Symbolator, Umlet, Vega, Vega-Lite, Wavedrom et Wireviz… et plus à venir!
Cette section propose un tutoriel de base pour évaluer Kroki. Des instructions d'installation plus complètes figurent dans la documentation Kroki.
Kroki utilise un algorithme simple (Deflate + Base64) pour coder votre diagramme dans l'URL:
GET /plantuml/svg/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000
Vous pouvez également appeler Kroki avec POST
:
POSTE /
{
"diagram_source" : " Bob -> Alice : hello " ,
"diagram_type" : " plantuml " ,
"output_format" : " svg "
}
Dans ce cas, vous n'avez pas besoin de coder votre diagramme.
Il est également possible d'envoyer votre diagramme sous forme de texte brut à l'aide de l'en-tête Content-Type
. Le format de sortie sera spécifié à l'aide de l'en-tête Accept
et la source de diagramme sera envoyée comme corps de demande:
Post / Plantuml
Accept: image/svg+xml
Content-Type: text/plain
Bob -> Alice : hello
Vous pouvez également définir le format de sortie dans l'URL si vous ne souhaitez pas ajouter un en-tête Accept
:
Post / Plantuml / SVG
Content-Type: text/plain
Bob -> Alice : hello
Le même concept s'applique lors de l'envoi du diagramme que JSON:
Post / Plantuml / SVG
{
"diagram_source" : " Bob -> Alice : hello "
}
Kroki a une architecture modulaire:
Un serveur Web Java (alimenté par vert.x ) qui agit comme une passerelle. Le serveur Kroki est construit à l'aide de maven.
Une minuscule API Java sur Umlet (Mini) pour générer des diagrammes.
Une CLI Node.js au-dessus de la bibliothèque du diagramme Nomnoml .
Un CLI Node.js au-dessus de la bibliothèque du diagramme Vega . Prend également en charge la grammaire concise Vega-Lite.
Un serveur Web compagnon écrit en javascript (alimenté par micro ) qui fournit une bibliothèque de diagrammes de sirène .
Un serveur Web compagnon écrit en JavaScript (alimenté par micro ) qui fournit une bibliothèque de diagrammes BPMN-JS .
Une CLI Node.js au-dessus de la bibliothèque du diagramme Bytefield-SVG .
Une CLI Node.js au-dessus de la bibliothèque du diagramme WaveDrom .
Un serveur Web compagnon écrit en JavaScript (alimenté par micro ) qui fournit Excalidraw .
Un serveur Web compagnon écrit en javascript (alimenté par micro ) qui fournit des schémas.net .
La première étape consiste à construire le projet à l'aide de maven:
$ faire BuildServer
Pour créer toutes les images Docker, utilisez la commande suivante:
$ sudo faire builddockerimages
Note | sudo pourrait ne pas être nécessaire en fonction de votre distribution et de votre configuration docker . |
Une fois les images Docker construites, vous pouvez exécuter Kroki à l'aide docker
:
$ docker run -d -p 8000: 8000 yuzutech / kroki
Si vous souhaitez utiliser l'une des bibliothèques de diagrammes suivantes, vous devrez également démarrer le conteneur compagnon correspondant:
Sirène
Bpmn
Excaliraw
schémas.net
Vous pouvez utiliser docker-compose
pour exécuter plusieurs conteneurs:
services :
core :
image : yuzutech/kroki
environment :
- KROKI_MERMAID_HOST=mermaid
- KROKI_BPMN_HOST=bpmn
- KROKI_EXCALIDRAW_HOST=excalidraw
ports :
- " 8000:8000 "
mermaid :
image : yuzutech/kroki-mermaid
expose :
- " 8002 "
bpmn :
image : yuzutech/kroki-bpmn
expose :
- " 8003 "
excalidraw :
image : yuzutech/kroki-excalidraw
expose :
- " 8004 "
# experimental!
diagramsnet :
image : yuzutech/kroki-diagramsnet
expose :
- " 8005 "
$ docker-compose up -d