PlantUML Standard Library
Welcome to the guide on PlantUML's official Standard Library (stdlib). Here, we delve into this integral resource that is now included in all official releases of PlantUML, facilitating a richer diagram creation experience. The library borrows its file inclusion convention from the "C standard library", a well-established protocol in the programming world.
Standard Library Overview
The Standard Library is a repository of files and resources, constantly updated to enhance your PlantUML experience. It forms the backbone of PlantUML, offering a range of functionalities and features to explore.Contribution from the Community
A significant portion of the library's contents are generously provided by third-party contributors. We extend our heartfelt gratitude to them for their invaluable contributions that have played a pivotal role in enriching the library. We encourage users to delve into the abundant resources the Standard Library offers, to not only enhance their diagram crafting experience but also possibly contribute and be a part of this collaborative endeavor.
List of Standard Library
You can list standard library folders using the special diagram:
|
🎉 Copied!
|
|
It is also possible to use the command line
java -jar plantuml.jar -stdlib to display the same list.
Finally, you can extract the full standard library sources using java -jar plantuml.jar -extractstdlib. All files will be extracted in the folder stdlib.
Sources used to build official PlantUML releases are hosted here https://github.com/plantuml/plantuml-stdlib. You can create Pull Request to update or add some library if you find it relevant.
ArchiMate [archimate]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/archimate |
src
|
https://github.com/ebbypeter/Archimate-PlantUML |
orig
|
https://en.wikipedia.org/wiki/ArchiMate |
|
🎉 Copied!
|
|
List possible sprites
You can list all possible sprites for Archimate using the following diagram:
|
🎉 Copied!
|
|
Amazon Labs AWS Library [awslib]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/awslib |
src
|
https://github.com/awslabs/aws-icons-for-plantuml |
orig
|
https://aws.amazon.com/en/architecture/icons/ |
@startuml
!include <awslib/AWSCommon>
!include <awslib/InternetOfThings/IoTRule>
!include <awslib/Analytics/KinesisDataStreams>
!include <awslib/ApplicationIntegration/SimpleQueueService>
left to right direction
agent "Published Event" as event #fff
IoTRule(iotRule, "Action Error Rule", "error if Kinesis fails")
KinesisDataStreams(eventStream, "IoT Events", "2 shards")
SimpleQueueService(errorQueue, "Rule Error Queue", "failed Rule actions")
event --> iotRule : JSON message
iotRule --> eventStream : messages
iotRule --> errorQueue : Failed action message
@enduml
Azure library [azure]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/azure |
src
|
https://github.com/RicardoNiepel/Azure-PlantUML/ |
orig
|
Microsoft Azure |
!include <azure/Analytics/AzureEventHub>.
When imported, you can use the sprite as normally you would, using <$sprite_name>.
You may also include the AzureCommon.puml file, eg: !include <azure/AzureCommon>, which contains helper macros defined.
With the AzureCommon.puml imported, you can use the NAME_OF_SPRITE(parameters...) macro.
Example of usage:
|
🎉 Copied!
|
|
C4 Library [C4]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/C4 |
src
|
https://github.com/plantuml-stdlib/C4-PlantUML |
orig
|
https://en.wikipedia.org/wiki/C4_model https://c4model.com |
|
🎉 Copied!
|
|
Cloud Insight [cloudinsight]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/cloudinsight |
src
|
https://github.com/rabelenda/cicon-plantuml-sprites |
orig
|
Cloudinsight icons |
|
🎉 Copied!
|
|
Cloudogu [cloudogu]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/cloudogu |
src
|
https://github.com/cloudogu/plantuml-cloudogu-sprites |
orig
|
https://cloudogu.com |
|
🎉 Copied!
|
|
All cloudogu sprites See all possible cloudogu sprites on plantuml-cloudogu-sprites.
EDGY: An Open Source tool for collaborative Enterprise Design [edgy]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/edgy |
src
|
https://github.com/boessu/plantuml-stdlib/tree/master/edgy |
orig
|
https://enterprise.design/ |
“To become whole, enterprises must embrace a holistic, collaborative way of design: transcending silos, combining perspectives, looking for connections instead of divisions. An enterprise designed together works better together.” – Bard Papegaaij, Wolfgang Goebl and Milan Guenther, curators of EDGY 23EDGY helps to visualize, communicate, and co-design enterprises across different disciplines. EDGY is a design language that provides guidelines for enterprises to create effective and efficient digital products, services, and experiences. It was developed by the EDGY team with input from industry experts, researchers, and practitioners in order to address common challenges faced when developing complex systems. The foundation of Edgy is based on four key principles: simplicity, modularity, scalability, and adaptability. These principles are designed to help enterprises create products that can be easily maintained over time while also being able to scale up or down as needed. Additionally, the language provides a set of guidelines for designing user interfaces, data models, business processes, and more, making it an essential toolkit for any organization looking to improve their offerings.
Basic Elements and Interconnections
EDGY is an open-source language for enterprise design that uses only four base elements: people, activity, object, and outcome. These elements can be specialized into facet and intersection elements, which describe the enterprise from different perspectives: identity, architecture, and experience.Elements
The basic syntax of an element or a facet is:$element/facet("label", [identifier], [lightColor])
| Parameter | Description |
| label | Mandatory: label of the element. |
| identifier | Dependant: Identifies the element (for creating relations). Optional if you don't link them to other elemets/facets. |
| lightColor | Optional: 0 sets the standared color. 1 sets a lighter color. As default, facets do have lighter colors than elements. |
|
🎉 Copied!
|
|
Relationships
The elements (or facets) can be connected with three types of relationships: link, flow and tree.$link/flow/tree(fromIdentifier, toIdentifier, ["Description"])
| Parameter | Description |
| fromIdentifier | Mandatory: Identifies the starting element of a relation. |
| toIdentifier | Mandatory: Identifies the ending element of a relation. |
| label | Optional: label of the element. |
|
🎉 Copied!
|
|
There are quite some hierarchical linking in edgy. Or maps. So it is also possible to group/nesting elements:
|
🎉 Copied!
|
|
Facets
A facet is a perspective that relates to any enterprise, featuring a set of questions that an enterprise needs to answer in order to achieve a coherent design. There are three facets in EDGY: Identity, Architecture, and Experience. Each facet references five enterprise elements: three facet elements, and two intersection elements at the overlap with the neighbouring facets.Identity
The Identity Facet describes why the enterprise exists and what it stands for.
|
🎉 Copied!
|
|
Architecture
The Architecture facet is about the structures and processes that enable the enterprise to operate and deliver.
|
🎉 Copied!
|
|
Experience
The Experience Facet is about the impact that the enterprise has on people and their lives through its interactions.
|
🎉 Copied!
|
|
Intersections
Intersections are lenses that connect facets and disciplines, such as organisation, product, and brand.
|
🎉 Copied!
|
|
Alternative visual styling
Finally, there is also an alternative representation that focuses on rectangles with stereotypes. The approach described above is 100% compatible. It can therefore be activated with a simple swap from!include <edgy/edgy> to !include <edgy/edgy2>.
This can sometimes be useful if the people involved do not immediately know the color codes and concrete meanings of the EDGY elements by heart. Also color-blind people can benefit from this ;-)
|
🎉 Copied!
|
|
Elastic library [elastic]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/elastic |
src
|
https://github.com/Crashedmind/PlantUML-Elastic-icons |
orig
|
Elastic |
!include elastic/elastic_search/elastic_search>.
When imported, you can use the sprite as normally you would, using <$sprite_name>.
You may also include the common.puml file, eg: !include <elastic/common>, which contains helper macros defined.
With the common.puml imported, you can use the NAME//OF//SPRITE(parameters...) macro.
Example of usage:
|
🎉 Copied!
|
|
All Elastic Sprite Set
|
🎉 Copied!
|
|
Google Material Icons [material]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/material |
src
|
https://github.com/Templarian/MaterialDesign |
orig
|
Material Design Icons |
!include <material/ma_folder_move>.
When imported, you can use the sprite as normally you would, using <$ma_sprite_name>.
Notice that this library requires an ma_ prefix on sprites names, this is to avoid clash of names if multiple sprites have the same name on different libraries.
You may also include the common.puml file, eg: !include <material/common>, which contains helper macros defined.
With the common.puml imported, you can use the MA_NAME_OF_SPRITE(parameters...) macro, note again the use of the prefix MA_.
Example of usage:
|
🎉 Copied!
|
|
Notes: When mixing sprites macros with other elements you may get a syntax error if, for example, trying to add a rectangle along with classes. In those cases, add
{ and } after the macro to create the empty rectangle.
Example of usage:
|
🎉 Copied!
|
|
Kubernetes [kubernetes]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/kubernetes |
src
|
https://github.com/michiel/plantuml-kubernetes-sprites |
orig
|
Kubernetes |
|
🎉 Copied!
|
|
Logos [logos]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/logos |
src
|
https://github.com/plantuml-stdlib/gilbarbara-plantuml-sprites |
orig
|
Gil Barbara's logos |
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
Office [office]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/office |
src
|
https://github.com/Roemer/plantuml-office |
orig
|
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
Open Security Architecture (OSA) [osa]
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
Tupadr3 library [tupadr3]
!include <font-awesome/align_center>.
When imported, you can use the sprite as normally you would, using <$sprite_name>.
You may also include the common.puml file, eg: !include <font-awesome/common>, which contains helper macros defined.
With the common.puml imported, you can use the NAME_OF_SPRITE(parameters...) macro.
Example of usage:
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
AWS library [aws]
| Type | Link |
stdlib
|
https://github.com/plantuml/plantuml-stdlib/tree/master/aws |
src
|
https://github.com/milo-minderbinder/AWS-PlantUML |
orig
|
https://aws.amazon.com/en/architecture/icons/ |
<awslib> instead (see above).
The AWS library consists of Amazon AWS icons, it provides icons of two different sizes (normal and large). Use it by including the file that contains the sprite, eg:
!include <aws/Storage/AmazonS3/AmazonS3>.
When imported, you can use the sprite as normally you would, using <$sprite_name>.
You may also include the common.puml file, eg: !include <aws/common>, which contains helper macros defined.
With the common.puml imported, you can use the NAME_OF_SPRITE(parameters...) macro.
Example of usage:
|
🎉 Copied!
|
|