Skip to content

šŸ“Modelo C4 para documentaĆ§Ć£o de arquiteturas

License

Notifications You must be signed in to change notification settings

cassiobotaro/modeloC4

Repository files navigation

Modelo C4 para documentaĆ§Ć£o de arquiteturas

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.

Gerando os diagramas

Structurizr lite

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

PlantUML

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.

About

šŸ“Modelo C4 para documentaĆ§Ć£o de arquiteturas

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •