Update: Uma atualizaĆ§Ć£o foi feita no repositĆ³rio e os modelos foram reescritos utilizando a ferramenta Structurizr Lite.
Este repositĆ³rio contĆ©m todos os diagramas contidos na apresentaĆ§Ć£o do modelo C4.
PlantUML foi utilizado em conjunto com C4-PlantUML para gerar os diagramas.
Escrevi uma funĆ§Ć£o para facilitar a utilizaĆ§Ć£o do comando:
# structurizr
function structurizr() {
readonly file=${1:?"The workspace filename must be specified."}
if [[ "$file" == *.* ]]; then
echo "The workspace filename should not contains a file extension."
return 1
fi
if [[ ! -f "./structurizr.properties" ]]; then
echo "structurizr.autoRefreshInterval=2000" > structurizr.properties
fi
docker run --rm -it \
-p 8080:8080 \
-u $(id -u ${USER}):$(id -g ${USER}) \
-v "$PWD":/usr/local/structurizr/ \
-e STRUCTURIZR_WORKSPACE_FILENAME=$file \
structurizr/lite
}
Ela serĆ” invocada da seguinte maneira:
structurizr nome_do_arquivo_sem_extensĆ£o
Para exportar os arquivos em png ou svg, mantenha a instĆ¢ncia do structurizr rodando e utilize a seguinte funĆ§Ć£o descrita abaixo.
function export_c4(){
readonly format=${1:?"The format must be specified."}
[ ! -f export-diagram.js ] && wget https://github.com/cassiobotaro/modeloC4/raw/main/export-diagram.js
text=$(docker run -i --init --cap-add=SYS_ADMIN --net=host --name=exporter ghcr.io/puppeteer/puppeteer:latest node -e "$(cat export-diagrams.js)" "" "http://localhost:8080" "$format")
files=($(echo "$text" | grep -o "\S*\.$format"))
for file in "${files[@]}"
do
docker cp exporter:/home/pptruser/"$file" .
done
docker rm exporter
}
Ela serĆ” invocada da seguinte maneira:
export_c4 png
O VS Code possui um plugin para PlantUML que pode ser encontrado na marketplace: PlantUML for Visual Studio Code.
Caso queira rodar localmente serƔ necessƔrio instalar o Graphviz. No sistema operacional Ubuntu o comando Ʃ:
sudo apt-get install graphviz openjdk-17-jre
Os diagramas tambƩm podem ser gerados utilizando o servidor remoto: http://www.plantuml.com/plantuml/uml/.
Abra os arquivos de extensĆ£o .puml
ou copie seu conteĆŗdo para o editor ou navegador.
Caso esteja utilizando a versĆ£o online, clique no botĆ£o Render
para gerar a imagem.
Se estiver rodando localmente, aperte ALT + D
para ter uma prĆ© visualizaĆ§Ć£o, ou CTRL + SHIFT + P
e selecione a opĆ§Ć£o de exportar a imagem ou prĆ© visualizaĆ§Ć£o.