Structurizr for Java also includes a simple exporter that can create diagram definitions compatible with PlantUML. The following diagram types are supported:
- Enterprise Context
- System Context
Simply create your software architecture model and views as usual, and use the PlantUMLWriter class to export the views. For example:
Workspace workspace = new Workspace("PlantUML", "An example workspace that demonstrates the PlantUML writer."); Model model = workspace.getModel(); ViewSet views = workspace.getViews(); SoftwareSystem softwareSystem = model.addSoftwareSystem("My Software System", ""); Person user = model.addPerson("User", ""); user.uses(softwareSystem, "Uses"); SystemContextView view = views.createSystemContextView(softwareSystem, "context", "A simple system context diagram."); view.addAllElements(); StringWriter stringWriter = new StringWriter(); PlantUMLWriter plantUMLWriter = new PlantUMLWriter(); plantUMLWriter.write(workspace, stringWriter); System.out.println(stringWriter.toString());
This code will generate and output a PlantUML diagram definition that looks like this:
@startuml title My Software System - System Context [My Software System] <<Software System>> as MySoftwareSystem actor User User ..> MySoftwareSystem : Uses @enduml
If you copy/paste this into PlantUML online, you will get something like this:
Benefits of using PlantUML with Structurizr
The key benefit of using PlantUML in conjunction with the Structurizr client library is that you can create diagrams from a model of your software system. The model provides a set of rules that must be followed; related to elements, relationships, and how they are exposed using diagrams. This means:
- Rather than looking after a collection of disjointed PlantUML diagram definitions, you can create many PlantUML diagrams from a single model and keep them all up to date easily, especially if integrated with your continous build server and build pipeline.
- The naming of elements and the definition of relationships between elements remains consistent across diagrams.
- The software architecture model at the component level can be created by extracting components from a codebase, using static analysis and reflection techniques. Here's a PlantUML version of the Spring PetClinic component diagram, the content of which has been extracted from the code using the ComponentFinder.