======Activity Diagram======
To be able to generate those diagram, you must have Graphviz_software installed
on your machine in the default directory c:\Program Files\GraphvizX.XX or /usr/
bin/dot.
You can have_a_look_here_if_you_have_installed_Graphviz_somewhere_else.
======Simple Activity======
You can use (*) for the starting point and ending point of the activity
diagram.
In some occasion, you may want to use (*top) to force the starting point to be
at the top of the diagram.
Use --> for arrows.
(*) --> "First Activity"
"First Activity" --> (*)
======Label on arrows======
By default, an arrow starts at the last used activity.
You can put a label on an arrow using brackets [ and ] just after the arrow
definition.
(*) --> "First Activity"
-->[You can put also labels] "Second Activity"
--> (*)
======Changing arrow direction======
You can use -> for horizontal arrows. It is possible to force arrow's direction
using the following syntax:
* -down-> (default arrow)
* -right-> or ->
* -left->
* -up->
(*) -up-> "First Activity"
-right-> "Second Activity"
--> "Third Activity"
-left-> (*)
======Branches======
You can use if/then/else keywords to define branches.
(*) --> "Initialization"
if "Some Test" then
-->[true] "Some Activity"
--> "Another activity"
-right-> (*)
else
->[false] "Something else"
-->[Ending process] (*)
endif
Unfortunately, you will have to sometimes repeat the same activity in the
diagram text:
(*) --> "check input"
If "input is verbose" then
--> [Yes] "turn on verbosity"
--> "run command"
else
--> "run command"
Endif
-->(*)
======More on Branches======
By default, a branch is connected to the last defined activity, but it is
possible to override this and to define a link with the if keywords.
It is also possible to nest branches.
(*) --> if "Some Test" then
-->[true] "activity 1"
if "" then
-> "activity 3" as a3
else
if "Other test" then
-left-> "activity 5"
else
--> "activity 6"
endif
endif
else
->[false] "activity 2"
endif
a3 --> if "last test" then
--> "activity 7"
else
-> "activity 8"
endif
======Synchronization======
You can use === code === to display synchronization bars.
(*) --> ===B1===
--> "Parallel Activity 1"
--> ===B2===
===B1=== --> "Parallel Activity 2"
--> ===B2===
--> (*)
======Long activity description======
When you declare activities, you can span on several lines the description
text. You can also add \n in the description.
You can also give a short code to the activity with the as keyword. This code
can be used latter in the diagram description.
@startuml
(*) -left-> "this activity
is very long2
and defined on several lines
that contains many text" as A1
-up-> "Another activity\n on several lines"
A1 --> "Short activity "
[imgp/activity_007.png]
======Notes======
You can add notes on a activity using the commands note left, note right, note
top or note bottom, just after the description of the activity you want to
note.
If you want to put a note on the starting point, define the note at the very
beginning of the diagram description.
You can also have a note on several lines, using the endnote keywords.
(*) --> "Some Activity"
note right: This activity has to be defined
"Some Activity" --> (*)
note left
This note is on
several lines
end note
======Partition======
You can define a partition using the partition keyword, and optionally declare
a background color for your partition (Using a html color code or name)
When you declare activities, they are automatically put in the last used
partition.
You can close the partition definition using a closing bracket }.
partition Conductor {
(*) --> "Climbs on Platform"
--> === S1 ===
--> Bows
}
partition Audience LightSkyBlue {
=== S1 === --> Applauds
}
partition Conductor {
Bows --> === S2 ===
--> WavesArmes
Applauds --> === S2 ===
}
partition Orchestra #CCCCEE {
WavesArmes --> Introduction
--> "Play music"
}
======Title the diagram======
The title keywords is used to put a title.
You can use title and end title keywords for a longer title, as in sequence
diagrams.
title Simple example\nof title
(*) --> "First activity"
--> (*)
======Skinparam======
You can use the skinparam command to change colors and fonts for the drawing.
You can use this command :
* In the diagram definition, like any other commands,
* In an included_file,
* In a configuration file, provided in the command_line or the ANT_task.
You can define specific color and fonts for stereotyped activities.
skinparam backgroundColor #AAFFFF
skinparam activity {
StartColor red
BarColor SaddleBrown
EndColor Silver
BackgroundColor Peru
BackgroundColor<< Begin >> Olive
BorderColor Peru
FontName Impact
}
(*) --> "Climbs on Platform" << Begin >>
--> === S1 ===
--> Bows
--> === S2 ===
--> WavesArmes
--> (*)
======Octagon======
You can change the shape of activities to octagon using the skinparam
activityShape octagon command.
'Default is skinparam activityShape roundBox
skinparam activityShape octagon
(*) --> "First Activity"
"First Activity" --> (*)
======Complete example======
title Servlet Container
(*) --> "ClickServlet.handleRequest()"
--> "new Page"
if "Page.onSecurityCheck" then
->[true] "Page.onInit()"
if "isForward?" then
->[no] "Process controls"
if "continue processing?" then
-->[yes] ===RENDERING===
else
-->[no] ===REDIRECT_CHECK===
endif
else
-->[yes] ===RENDERING===
endif
if "is Post?" then
-->[yes] "Page.onPost()"
--> "Page.onRender()" as render
--> ===REDIRECT_CHECK===
else
-->[no] "Page.onGet()"
--> render
endif
else
-->[false] ===REDIRECT_CHECK===
endif
if "Do redirect?" then
->[yes] "redirect request"
--> ==BEFORE_DESTROY===
else
if "Do Forward?" then
-left->[yes] "Forward request"
--> ==BEFORE_DESTROY===
else
-right->[no] "Render page template"
--> ==BEFORE_DESTROY===
endif
endif
--> "Page.onDestroy()"
-->(*)