Usando Structurizr Lite con más de un espacio de trabajo

Publicado el 2025-05-16

Structurizr es una herramienta con la que elaborar esquemas de arquitectura de software siguiendo el modelo C4. Un ‘espacio de trabajo’ ('workspace' en inglés) es la manera que tiene Structurizr de aislar modelos, vistas y documentación perteneciente a un solo sistema.

Rara vez queremos documentar un solo sistema de manera aislada. Por tanto, el hecho de que Structurizr Lite solo permita tener un único espacio de trabajo es una limitación un tanto artificial. Este artículo muestra cómo emplear la versión gratuita de Structurizr Lite en modo multiespacio ('multi-workspace').

La página web de Structurizr indica que Lite es una versión monoespacial (https://structurizr.com/help/tour).

A pesar de ello, si consultamos las notas de versión para v2024.06.18 estas afirman: "[la versión] añade compatibilidad para el modo multiespacios de trabajo (todavía sin documentar)"1.

¿Cómo podemos utilizar pues esta función en Structurizr Lite?

Nuestro objetivo es pasar de la siguiente estructura de directorios:

proyecto/
    ┣━ workspace.dsl
    ┗━ workspace.json (auto-generated)

a:

proyecto/
    ┣━ structurizr.properties
    ┣━ 1/
    ┃  ┣━ workspace.dsl
    ┃  ┗━ workspace.json
    ┗━ 2/
       ┣━ workspace.dsl
       ┗━ workspace.json

Y con ello poder disfrutar de más de un espacio de trabajo bajo la misma instancia de Structurizr. Para lograrlo:

  1. Crea un fichero structurizr.properties con el siguiente contenido:

    structurizr.workspaces=2

    (Structurizr sólo comprueba si el número es superior a 1; el valor no tiene por qué coincidir con el número de espacios de trabajo).

  2. Crea directorios para cada espacio de trabajo. El nombre de los directorios debe ajustarse a la expresión regular \d* 2 3

Esto lo averigüé leyendo el fichero Configuration.java y siguiendo el rastro que comienza con la variable STRUCTURIZR_PROPERTIES_FILENAME. Se trata de un buen punto de partida si sientes curiosidad por conocer los entresijos de Structurizr Lite.


1 En el original: "Adds support for multi-workspace mode (not yet documented)".
2 Esta expresión regular la define la constante `WORKSPACE_ID_REGEX` en WorkspaceDirectory.java.
3 Advertencia: en el momento de redactar esta nota existe un parche que permite directorios con nombres alfanuméricos. Este ha sido integrado - véase structurizr/lite#189. Este parche fue integrado el 2025-04-11 pero la última imagen de Docker `structurizr/lite` fue etiquetada el 2025-03-28.

Usando Structurizr Lite con más de un espacio de trabajo

Imagen: Herzog August Bibliothek https://diglib.hab.de/wdb.php?dir=mss/74-1-aug-2f, usado bajo licencia CC BY-SA.