ASCII Art

Il est possible de générer des diagrammes de séquence en utilisant l' ASCII Art.

@startuml
participant Bob
actor Alice

Bob -> Alice : hello
Alice -> Bob : Is it ok?
@enduml

Vous devez utiliser l'indicateur -txt dans la ligne de commande, ou la balise format dans la tâche Ant

<target name="main">
  <plantuml dir="./src" format="txt" />
</target>

Les fichiers générés utilisent l'extension .atxt. ("a" comme art ASCII : pour ne pas écraser les fichiers .txt existants !). Voici le résultat

                      ,-.
                      `-'
                      /|\
     ,---.             |
     |Bob|            / \
     `-+-'           Alice
       |    hello      |
       |-------------->|
       |               |
       |  Is it ok?    |
       |<- - - - - - - |
     ,-+-.           Alice
     |Bob|            ,-.
     `---'            `-'
                      /|\
                       |
                      / \

Vous pouvez contrôler le nombre maximum de caractères entre les participants en utilisant skinparam maxAsciiMessageLength. Cela peut être utile si vous devez limiter la largeur de votre ASCII Art.

Par exemple

@startuml
skinparam maxAsciiMessageLength 8
participant Bob
actor Alice

Bob -> Alice : hello
Alice -> Bob : Is it ok?
@enduml

ressemblera à

          ,-.  
          `-'  
          /|\  
 ,---.     |   
 |Bob|    / \  
 `-+-'   Alice 
   |hello  |   
   |------>|   
   |       |   
   Is it ok?   
   |<------|   
 ,-+-.   Alice 
 |Bob|    ,-.  
 `---'    `-'  
          /|\  
           |   
          / \  

Unicode

Le format par défaut de txt utilise uniquement des caractères ASCII ordinaires. Il est possible d'utiliser quelques caractères Unicode étendus pour obtenir un résultat légèrement meilleur. Vous devriez utiliser l'indicateur -utxt dans la ligne de commande, ou le format utxt dans la tâche Ant

                      ┌─┐
                      ║"│
                      └┬┘
                      ┌┼┐
     ┌───┐             │
     │Bob│            ┌┴┐
     └─┬─┘           Alice
       │    hello      │
       │──────────────>│
       │               │
       │  Is it ok?    │
       │<─ ─ ─ ─ ─ ─ ─ │
     ┌─┴─┐           Alice
     │Bob│            ┌─┐
     └───┘            ║"│
                      └┬┘
                      ┌┼┐
                       │
                      ┌┴┐

L'utilisation d'utxt présente deux inconvénients :

  • Le résultat est encodé en UTF-8, ce qui pose parfois problème (passerelle de messagerie, éditeurs...)
  • La police utilisée doit avoir les caractères étendus utilisés (comme Courier, Courier New...)

Complexe Diagram

You can even try complex example if you wish.

@startuml
'hide footbox

participant "Bob on\nseveral lines" as Bob
actor Alice

Bob -> Alice : hello
note right of Alice
  this is a note
end note

Alice -> Bob : Is it ok\nwith a message that is\non several lines?

note right
  This other note
  should work
  on several lines
end note

== This is a separation ==

Bob -> Last : Yes it works!
Last -> Last : working in progress
note left : this is\nanother note

Last --> Last : working in progress

Last --> Bob : done

opt dummy comment
  Bob -> Last : Error\nOn\nSeveral\nLine
  Last --> Bob : None
else
  Last --> Bob : None
  Last -> Bob : None
else other
  Last -> Bob : None
  note over Alice, Last
    This is a long note
    over Alice and Last
  end note
  Last -> Bob : None
  Last -> Bob : None
end
@enduml

Résultat

                                             ,-.
                                             `-'
               ,-------------.               /|\
               |Bob on       |                |             ,----.
               |several lines|               / \            |Last|
               `------+------'              Alice           `-+--'
                      |        hello          |               |
                      |---------------------->|               |
                      |                       |               |
                      |                       | ,--------------!.
                      |                       | |this is a note|_\
                      |                       | `----------------'
                      |Is it ok               | ,----------------!.
                      |with a message that is | |This other note |_\
                      |on several lines?      | |should work       |
                      |<----------------------| |on several lines  |
                      |                       | `------------------'
                      |                       |               |
                      |              ======================== |
====================================== This is a separation =======================================
                      |              ======================== |
                      |                       |               |
                      |            Yes it works!              |
                      |-------------------------------------->|
                      |                       |               |
                      |                       ,------------!. |----.
                      |                       |this is     |_\|    | working in progress
                      |                       |another note  ||<---'
                      |                       `--------------'|
                      |                       |               |- - .
                      |                       |               |    | working in progress
                      |                       |               |< - '
                      |                       |               |
                      |                 done  |               |
                      |<- - - - - - - - - - - - - - - - - - - |
                      |                       |               |
     ______________________________________________________________________
     ! OPT  /  dummy comment                  |               |            !
     !_____/          |                       |               |            !
     !                |                       |               |            !
     !                |               Error   |               |            !
     !                |               On      |               |            !
     !                |               Several |               |            !
     !                |               Line    |               |            !
     !                |-------------------------------------->|            !
     !                |                       |               |            !
     !                |                 None  |               |            !
     !                |<- - - - - - - - - - - - - - - - - - - |            !
     !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
     !                |                       |               |            !
     !                |                 None  |               |            !
     !                |<- - - - - - - - - - - - - - - - - - - |            !
     !                |                       |               |            !
     !                |                 None  |               |            !
     !                |<--------------------------------------|            !
     !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
     ! [other]        |                       |               |            !
     !                |                 None  |               |            !
     !                |<--------------------------------------|            !
     !                |                       |               |            !
     !                |                    ,-------------------!.          !
     !                |                    |This is a long note|_\         !
     !                |                    |over Alice and Last  |         !
     !                |                    `---------------------'         !
     !                |                 None  |               |            !
     !                |<--------------------------------------|            !
     !                |                       |               |            !
     !                |                 None  |               |            !
     !                |<--------------------------------------|            !
     !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
               ,------+------.              Alice           ,-+--.
               |Bob on       |               ,-.            |Last|
               |several lines|               `-'            `----'
               `-------------'               /|\
                                              |
                                             / \

Même exemple en utilisant Unicode

                                             ┌─┐
                                             ║"│
                                             └┬┘
               ┌─────────────┐               ┌┼┐
               │Bob on       │                │             ┌────┐
               │several lines│               ┌┴┐            │Last│
               └──────┬──────┘              Alice           └─┬──┘
                      │        hello          │               │
                      │──────────────────────>│               │
                      │                       │               │
                      │                       │ ╔═════════════╧══╗
                      │                       │ ║this is a note ░║
                      │                       │ ╚═════════════╤══╝
                      │Is it ok               │ ╔═════════════╧════╗
                      │with a message that is │ ║This other note  ░║
                      │on several lines?      │ ║should work       ║
                      │<──────────────────────│ ║on several lines  ║
                      │                       │ ╚═════════════╤════╝
                      │                       │               │
                      │              ╔════════╧═════════════╗ │
══════════════════════╪══════════════╣ This is a separation ╠═╪════════════════════════════════════
                      │              ╚════════╤═════════════╝ │
                      │                       │               │
                      │            Yes it works!              │
                      │──────────────────────────────────────>│
                      │                       │               │
                      │                       ╔══════════════╗│────┐
                      │                       ║this is      ░║│    │ working in progress
                      │                       ║another note  ║│<───┘
                      │                       ╚══════════════╝│
                      │                       │               │─ ─ ┐
                      │                       │               │    | working in progress
                      │                       │               │< ─ ┘
                      │                       │               │
                      │                 done  │               │
                      │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
                      │                       │               │
     ╔══════╤═════════╪═══════════════════════╪═══════════════╪════════════╗
     ║ OPT  │  dummy comment                  │               │            ║
     ╟──────┘         │                       │               │            ║
     ║                │                       │               │            ║
     ║                │               Error   │               │            ║
     ║                │               On      │               │            ║
     ║                │               Several │               │            ║
     ║                │               Line    │               │            ║
     ║                │──────────────────────────────────────>│            ║
     ║                │                       │               │            ║
     ║                │                 None  │               │            ║
     ║                │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │            ║
     ╠════════════════╪═══════════════════════╪═══════════════╪════════════╣
     ║                │                       │               │            ║
     ║                │                 None  │               │            ║
     ║                │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │            ║
     ║                │                       │               │            ║
     ║                │                 None  │               │            ║
     ║                │<──────────────────────────────────────│            ║
     ╠════════════════╪═══════════════════════╪═══════════════╪════════════╣
     ║ [other]        │                       │               │            ║
     ║                │                 None  │               │            ║
     ║                │<──────────────────────────────────────│            ║
     ║                │                       │               │            ║
     ║                │                    ╔══╧═══════════════╧══╗         ║
     ║                │                    ║This is a long note ░║         ║
     ║                │                    ║over Alice and Last  ║         ║
     ║                │                    ╚══╤═══════════════╤══╝         ║
     ║                │                 None  │               │            ║
     ║                │<──────────────────────────────────────│            ║
     ║                │                       │               │            ║
     ║                │                 None  │               │            ║
     ║                │<──────────────────────────────────────│            ║
     ╚════════════════╪═══════════════════════╪═══════════════╪════════════╝
               ┌──────┴──────┐              Alice           ┌─┴──┐
               │Bob on       │               ┌─┐            │Last│
               │several lines│               ║"│            └────┘
               └─────────────┘               └┬┘
                                             ┌┼┐
                                              │
                                             ┌┴┐