/export

Export models and views to external formats.

Primary LanguageJavaApache License 2.0Apache-2.0

Structurizr exporters

This library provides the ability to export the model and views defined in a Structurizr workspace to a number of formats, including:

This library is included in the Structurizr CLI via the export command. It is also available on Maven Central, for inclusion in your own Java applications:

  • groupId: com.structurizr
  • artifactId: structurizr-export

Diagram notation

As far as practical, the exporters implemented in this repo try to replicate the way that the Structurizr cloud service/on-premises installation/Lite renders diagrams. See Structurizr - Notation for more details but, in summary, every element/relationship in the model can have one or more text-based tags associated with it, and you can create element/relationship styles associated with those tags to customise how the items are rendered. This concept is similar to how to might add one or more CSS classes to a HTML element, to customise how it's rendered in the browser. The DSL cookbook - Element styles and DSL cookbook - Relationship styles show some examples of how this works if you're using the Structurizr DSL.

It's important to note that some features provided by the Structurizr cloud service/on-premises installation/Lite are not supported by these exporters. For example, the PlantUML exporter doesn't support the same set of element shapes, because PlantUML itself doesn't support many of them. The DSL demo page at https://structurizr.com/dsl provides a way to try out the exporters implemented by this repo, so you can compare and contrast the various features they provide. In general though, the Structurizr cloud service/on-premises installation/Lite will provide the most feature complete and richest set of diagrams.

The following table summarises the features that are available via the exporters implemented in this library.

Feature Structurizr Lite/cloud/on-premises StructurizrPlantUMLExporter C4PlantUMLExporter MermaidExporter DOTExporter
Element styles All Limited Limited (with c4plantuml.tags true) Limited Limited
Relationship styles All Limited Limited (with c4plantuml.tags true) Limited Limited
Shapes All Limited Limited Limited Limited
Icons Yes Limited Limited (with c4plantuml.tags true) No No
Automatic diagram key/legend Yes Yes Yes No No
Click to zoom Yes No No No No
Interactive features (tooltips, perspectives, etc) Yes No No No No
Animation Yes Yes (with plantuml.animation true) Yes (with plantuml.animation true) No No
Automatic layout Yes Yes Yes Yes Yes
Manual layout Yes No No No No

Custom exporters

There are two interfaces defined in this library, that be used as a starting point for building your own custom exporters:

  • DiagramExporter: for exporting a collection of diagram definitions from a workspace (the PlantUML, Mermaid, etc exporters implement this interface), and AbstractDiagramExporter is provided as a convenient starting point.
  • WorkspaceExporter: for exporting a single definition from a workspace (the Ilograph exporter implements this interface).

Links