======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()" -->(*)