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.