PlantUML macro

Deprecation notice:

Please note that the URL user and URL password parameters are deprecated and will be removed on March 31, 2022. We recommend using profiles to access your data from remote locations.

Description

The PlantUML macro creates general graphs using the PlantUML language. This language is extremely versatile and powerful, but you can start with a really simple example as shown below, and then gradually improve your knowledge and create more advanced diagrams easily.

PlantUML works with Graphviz versions higher than 2.42.

PlantUML resources

Refer to the PlantUML website to learn more about the language itself and access other resources like guides and examples.



Error on using a third party vendor macro using same macro key as PlantUML:

If you are using a third party vendor's macro that shares the same macro key as this PlantUML macro, perform the following to rectify the issue:

  1. Disable the PlantUML macro from the Graphviz Diagrams for Confluence app.

  2. Go to page with the PlantUML macro from third party app with the macro loading error.

  3. Now, disable and re-enable third party app. This ensures the page reloads correctly.

Parameters

The following parameters are available with all Graphviz macros:
Macro editor labelDefaultDescriptionMacro parameter
Template

Enables users to pick a pre-configured template and make simple changes as per their requirement. Since 3.2.

  • These templates are available in the macro editor only when the macro body is empty. If the macro body is not empty, the user are unable to see the Templates parameter in the macro editor.
  • Only templates listed in the configuration page for the respective diagram types are available to choose from in the macro editor.
  • This parameter is not available in Graph from tableSpace graph and PlantUML macros.
template
Output typepng

Specifies the output type to be generated by Graphviz. Since 2.1.0.

  • png
  • svg
  • pdf
  • jpg
  • gif
output

Location of <type> source

(Where 'type' includes Graphviz/ UML)


Specifies the source from where the macro reads the data. 

  • blank - Data in the body is used.
  • ^attachment - Data is read from an attachment to the current page. Input the value in the format ^Filename.extension.
  • page^attachment - Data is read from an attachment to the page name provided.
  • space:page^attachment - Data is read from an attachment to the page name provided in the space indicated.
  • #filename- Data is read from the file located in the Confluence home directory/script/filename. Subdirectories can be specified.
  • global page template name - Data is read from a global page template.
  • space:page template name - Data is read from a space template.

Graphviz recognizes the commands only when you nest the commands under "noformat", "wiki-markup", "code", or "code-pro" macros, for the sources mentioned below:

  • global page template name 
  • space:page template name 
script

Show <type> markup code

(Where 'type' includes Graphviz/ UML)

FalseShows the markup code, Graphviz or UML, below the generated graph. Useful for fixing syntax errors or to see the markup that is generated by macro processing or macros like the Space graph macro.showCode
Attachment name

Specify the name of the attachment to use, create or update. Use of attachments is optional but can be useful for linking from other places and to work with the Cache macro to improve display performance.

Examples:

  • graphviz.png — the image is saved as an attachment to the current page.
  • page^graphviz.png — the image is saved as an attachment to the page name provided.
  • Space:page^graphviz.png — the image is saved as an attachment to the page name provided in the space indicated.
attachment
Attachment versionnew

Specifies how the generated graph is persisted as an attachment.

  • new — creates a new version of the attachment.
  • replace — replaces all previous versions of the attachment. To replace an existing attachment, the user must be authorized to remove attachments for the page specified.
  • keep — only saves a new attachment if there is no existing attachment. An existing attachment will not be changed or updated.
attachmentVersion
Attachment comment

Specify the comment on the attachment that is created or updated.

attachmentComment
Attachment versions to keep

Limits the number of attachment versions of a file that is attached to a page. If the maximum number of attachments exceeds the limit, then the oldest version is deleted. Since version 3.2. 

This parameter is only applicable if you select new from the drop-down list under Attachment version in the macro editor.

attachmentLimit

ThumbnailFalse

Used when an attachment is specified, and output is PNG, JPG, or GIF. Renders graph as a thumbnail.

  • In some cases, the image and the thumbnail generated are of the same size. This is because the image is too small and fits the preview screen perfectly.
  • This parameter is not applicable for the Flowchart and Space graph macros.
thumbnail
Render wiki markup macros in bodyFalse

Used to render wiki markup macros found in the body before processing as Graphviz markup. This is useful to run macros from Scripting for Confluence or similar that can produce Graphviz markup as output. Since 3.2.

This parameter is not available in the Graph from table and Space graph macros.

macros
Layoutdot

Specifies which default layout algorithm to use. Since 3.2.

  • dot− filter for drawing directed graphs
  • neato − filter for drawing undirected graphs
  • twopi − filter for radial layouts of graphs
  • circo− filter for a circular layout of graphs
  • fdp− filter for drawing undirected graphs

This parameter is not available in the PlantUML macro.

layout
Profile

Specify a profile to be used with the macro. Administrators set up profiles to connect to other applications such as GitHub or GitLab. Profiles contain a basic set of parameters used to access a remote location such as the type of URL, user credentials, and so on. Some profiles may be restricted. Since 3.4.

  • This parameter is not available in the Graph from table and Space graph macros.
  • Contact your administrator to know more about the profiles used in your instance.
  • If a profile is specified, it is recommended to provide the relative path to the location of the required file to be rendered.
profile

URL to <macro> file

(Where 'macro' includes Graphviz/ Diagraph/ Graph/ PlantUML)


Specifies the URL link to the Graphviz file. Administrators may restrict use. Since 3.2.

  • The URLs are restricted to the whitelisted URLs.
  • This parameter is not available in the Graph from table and Space graph macros.
URL
URL user

Specify the user name to access the specified URL via basic authentication. Since 3.2.

user
URL user password
Specify the user password to access the specified URL via basic authentication. Since 3.2.password
URL connection timeout
Specify the time in milliseconds used to increase the wait time to access the specified URL on slower connections. Since 3.2.timeout
File encoding

Specify the encoding of the file attachment if it is different from the Confluence default (like Windows-1252, UTF-8, MacRoman). Since 3.2.

encoding

For multiple macro sources (i.e. template, attachment, and URL), the order of precedence is URL > attachment > template.

Points to remember about profiles:

  • Only raw URLs must be given in either, the URL field in profiles or the URL to Graphviz/Diagraph/Graph/PlantUML file field, in the macros. A raw URL is defined as the part of the URL following the domain information and includes the query string, if present. For example, in the URL string http://www.contoso.com/articles/recent.aspx, the raw URL is /articles/recent.aspx.
  • It is recommended to specify absolute URLs to access files from public locations and to use profiles to access files from private sources. For example, a raw URL that can access a Graphviz file in a public Bitbucket repository is valid. But to render a file located in a private repository, we recommend using a profile.
  • Profiles are a means to access and retrieve contents from external applications such as Bitbucket, GitLab or GitHub. A profile already contains the base URL and the required credentials (user credentials or an access token) to access the relevant application.
  • This method allows multiple users to access a profile across pages and instances of the macro.

Examples

These are some very basic examples of what you can achieve easily. For more advanced layouts and formatting, please refer to the PlantUML resources.

Macro Call

Macro Output

{plantuml}
@startuml
!$ab = "foo1"
!$cd = "foo2"
!$ef = $ab + $cd

Alice -> Bob : $ab
Alice -> Bob : $cd
Alice -> Bob : $ef
@enduml
{plantuml}