La actual sintaxis para los diagramas de actividades tiene varias limitaciones e inconvenientes (por ejemplo, es difícil de mantener). Entonces, una implementación y sintaxis nueva propuesta como versión beta , es ofrecida a los usuarios (empezando con V7947), sólo así podremos definir un mejor formato y sintaxis. Otra ventaja de esta nueva implementación es que acaba con la necesidad de tener Graphviz instalado (como en los diagramas de secuencia). La nueva sintaxis reemplazará la anterior. Sin embargo, por razones de compatibilidad, la sintaxis vieja seguirá siendo reconocida, para asegurarse la retrocompatibilidad . Los usuarios están siendo motivados para migrarse a la nueva sintaxis. Las etiquetas de las actividades inician con un dos puntos (: ) y terminan con un punto y coma (; ). Se puede aplicar formato a un texto usando sintaxis de WikiCreole. Están implícitamente enlazados en el orden de su definición. 🎉 Copied! 
 | @startuml
:Hello world;
:This is on defined on
several **lines**;
@enduml
| Puedes usar las palabras reservadas start y stop para denotar el comienzo y el final del diagrama. 🎉 Copied! 
 | @startuml
start
:Hello world;
:This is on defined on
several **lines**;
stop
@enduml
| También puedes usar la palabra reservada end . 🎉 Copied! 
 | @startuml
start
:Hello world;
:This is on defined on
several **lines**;
end
@enduml
| Puedes usar las palabras reservadas if , then y else para colocar condiciones en tus diagramas. Las etiquetas pueden ser proporcionadas usando paréntesis. 🎉 Copied! 
 | @startuml
start
if (Graphviz installed?) then (yes)
:process all\ndiagrams;
else (no)
:process only
__sequence__ and __activity__ diagrams;
endif
stop
@enduml
| Puedes usar la palabra reservada elseif para tener varias condiciones : 🎉 Copied! 
 | @startuml
start
if (condition A) then (yes)
:Text 1;
elseif (condition B) then (yes)
:Text 2;
stop
elseif (condition C) then (yes)
:Text 3;
elseif (condition D) then (yes)
:Text 4;
else (nothing)
:Text else;
endif
stop
@enduml
| *[Refs. [QA-3931](https:forum.plantuml.net/3931/please-provide-elseif-structure-vertically-activity-diagrams), [issue-582](https:github.com/plantuml/plantuml/issues/582)]* WARNING This translation need to be updated. WARNING You can use switch , case and endswitch keywords to put switch in your diagram. Labels can be provided using parentheses. 🎉 Copied! 
 | @startuml
start
switch (test?)
case ( condition A )
:Text 1;
case ( condition B )
:Text 2;
case ( condition C )
:Text 3;
case ( condition D )
:Text 4;
case ( condition E )
:Text 5;
endswitch
stop
@enduml
|
You can stop action on a if loop. 🎉 Copied! 
 | @startuml
if (condition?) then
:error;
stop
endif
#palegreen:action;
@enduml
| But if you want to stop at the precise action, you can use the kill or detach keyword: 🎉 Copied! 
 | @startuml
if (condition?) then
#pink:error;
kill
endif
#palegreen:action;
@enduml
| [Ref. QA-265] 🎉 Copied! 
 | @startuml
if (condition?) then
#pink:error;
detach
endif
#palegreen:action;
@enduml
|
Puedes usar las palabras reservadas repeat y repeatwhile para colocar bucles. 🎉 Copied! 
 | @startuml
start
repeat
:read data;
:generate diagrams;
repeat while (more data?)
stop
@enduml
| It is also possible to use a full action as repeat target and insert an action in the return path using the backward keyword. 🎉 Copied! 
 | @startuml
start
repeat :foo as starting label;
:read data;
:generate diagrams;
backward:This is backward;
repeat while (more data?)
stop
@enduml
|
You can use the break keyword after an action on a loop. 🎉 Copied! 
 | @startuml
start
repeat
:Test something;
if (Something went wrong?) then (no)
#palegreen:OK;
break
endif
->NOK;
:Alert "Error with long text";
repeat while (Something went wrong with long text?) is (yes) not (no)
->//merged step//;
:Alert "Success";
stop
@enduml
| [Ref. QA-6105] ⚠ It is currently only experimental 🚧 You can use label and goto keywords to denote goto processing, with: label <label_name> goto <label_name>
🎉 Copied! 
 | @startuml
title Point two queries to same activity\nwith `goto`
start
if (Test Question?) then (yes)
'space label only for alignment
label sp_lab0
label sp_lab1
'real label
label lab
:shared;
else (no)
if (Second Test Question?) then (yes)
label sp_lab2
goto sp_lab1
else
:nonShared;
endif
endif
:merge;
@enduml
| [Ref. QA-15026, QA-12526 and initially QA-1626] Puedes usar las palabras reservadas while y end while para un ciclo repetitivo. 🎉 Copied! 
 | @startuml
start
while (data available?)
:read data;
:generate diagrams;
endwhile
stop
@enduml
| Es posible proporcionar una etiqueta después de la palabra reservada endwhile , o usar la palabra reservada is . 🎉 Copied! 
 | @startuml
while (check filesize ?) is (not empty)
:read file;
endwhile (empty)
:close file;
@enduml
|
WARNING This translation need to be updated. WARNING Puedes usar las palabras reservadas fork , fork again y end fork para denotar procesamientos paralelos. 🎉 Copied! 
 | @startuml
start
if (multiprocessor?) then (yes)
fork
:Treatment 1;
fork again
:Treatment 2;
end fork
else (monoproc)
:Treatment 1;
:Treatment 2;
endif
@enduml
|
WARNING This translation need to be updated. WARNING Split You can use split , split again and end split keywords to denote split processing. 🎉 Copied! 
 | @startuml
start
split
:A;
split again
:B;
split again
:C;
split again
:a;
:b;
end split
:D;
end
@enduml
|
Input split (multi-start) You can use hidden arrows to make an input split (multi-start): 🎉 Copied! 
 | @startuml
split
-[hidden]->
:A;
split again
-[hidden]->
:B;
split again
-[hidden]->
:C;
end split
:D;
@enduml
|
🎉 Copied! 
 | @startuml
split
-[hidden]->
:A;
split again
-[hidden]->
:a;
:b;
split again
-[hidden]->
(Z)
end split
:D;
@enduml
|
[Ref. QA-8662] Output split (multi-end) You can use kill or detach to make an output split (multi-end): 🎉 Copied! 
 | @startuml
start
split
:A;
kill
split again
:B;
detach
split again
:C;
kill
end split
@enduml
|
🎉 Copied! 
 | @startuml
start
split
:A;
kill
split again
:b;
:c;
detach
split again
(Z)
detach
split again
end
split again
stop
end split
@enduml
|
Se puede aplicar formato a un texto usando sintaxis de WikiCreole. Una nota puede ser flotante, usando la palabra clave floating . 🎉 Copied! 
 | @startuml
start
:foo1;
floating note left: This is a note
:foo2;
note right
This note is on several
//lines// and can
contain <b>HTML</b>
====
* Calling the method ""foo()"" is prohibited
end note
stop
@enduml
| *[Ref. [QA-2398](https://forum.plantuml.net/2398/is-it-possible-to-add-a-comment-on-top-of-a-activity-partition?show=2403#a2403)]* WARNING This translation need to be updated. WARNING Puedes especificar colores en algunas actividades. 🎉 Copied! 
 | @startuml
start
:starting progress;
#HotPink:reading configuration files
These files should edited at this point!;
#AAAAAA:ending of the process;
@enduml
| *[Ref. [QA-4906](https://forum.plantuml.net/4906/setting-ad-hoc-gradient-backgrounds-in-activity?show=4917#a4917)]* WARNING This translation need to be updated. WARNING You can use skinparam ArrowHeadColor none in order to connect activities using lines only, without arrows. 🎉 Copied! 
 | @startuml
skinparam ArrowHeadColor none
start
:Hello world;
:This is on defined on
several **lines**;
stop
@enduml
|
🎉 Copied! 
 | @startuml
skinparam ArrowHeadColor none
start
repeat :Enter data;
:Submit;
backward :Warning;
repeat while (Valid?) is (No) not (Yes)
stop
@enduml
|
Usando la notación -> , puedes añadir texto a una flecha y cambiar su color. También es posible tener flechas punteadas, en linea discontinua, en negrita u ocultas. 🎉 Copied! 
 | @startuml
:foo1;
-> You can put text on arrows;
if (test) then
-[#blue]->
:foo2;
-[#green,dashed]-> The text can
also be on several lines
and **very** long...;
:foo3;
else
-[#black,dotted]->
:foo4;
endif
-[#gray,bold]->
:foo5;
@enduml
| You can use parentheses to denote connector. 🎉 Copied! 
 | @startuml
start
:Some activity;
(A)
detach
(A)
:Other activity;
@enduml
| You can add color on connector. 🎉 Copied! 
 | @startuml
start
:The connector below
wishes he was blue;
#blue:(B)
:This next connector
feels that she would
be better off green;
#green:(G)
stop
@enduml
| [Ref. QA-10077] Puedes agrupar actividades definiendo particiones: 🎉 Copied! 
 | @startuml
start
partition Initialization {
:read config file;
:init internal variable;
}
partition Running {
:wait for user interaction;
:print information;
}
stop
@enduml
| *[Ref. [QA-2793](https://forum.plantuml.net/2793/activity-beta-partition-name-more-than-one-word-does-not-work?show=2798#a2798)]* *[Ref. [QA-542](https://forum.plantuml.net/542/ability-to-define-hyperlink-on-diagram-elements?show=14003#c14003)]* WARNING This translation need to be updated. WARNING Usando la tecla pipe | , puedes definir carriles. También es posible cambiar el color de los carriles. 🎉 Copied! 
 | @startuml
|Swimlane1|
start
:foo1;
|#AntiqueWhite|Swimlane2|
:foo2;
:foo3;
|Swimlane1|
:foo4;
|Swimlane2|
:foo5;
stop
@enduml
| *[Ref. [QA-2681](https://forum.plantuml.net/2681/possible-define-alias-swimlane-place-alias-everywhere-else?show=2685#a2685)]* WARNING This translation need to be updated. WARNING Es posible remover una flecha usando la palabra reservada detach . 🎉 Copied! 
 | @startuml
:start;
fork
:foo1;
:foo2;
fork again
:foo3;
detach
endfork
if (foo4) then
:foo5;
detach
endif
:foo6;
detach
:foo7;
stop
@enduml
| Cambiando el sepador final, ; , puedes configurar diferentes representaciones para una actividad: 🎉 Copied! 
 | @startuml
:Ready;
:next(o)|
:Receiving;
split
:nak(i)<
:ack(o)>
split again
:ack(i)<
:next(o)
on several line|
:i := i + 1]
:ack(o)>
split again
:err(i)<
:nak(o)>
split again
:foo/
split again
:i > 5}
stop
end split
:finish;
@enduml
|
🎉 Copied! 
 | @startuml
start
:ClickServlet.handleRequest();
:new page;
if (Page.onSecurityCheck) then (true)
:Page.onInit();
if (isForward?) then (no)
:Process controls;
if (continue processing?) then (no)
stop
endif
if (isPost?) then (yes)
:Page.onPost();
else (no)
:Page.onGet();
endif
:Page.onRender();
endif
else (false)
endif
if (do redirect?) then (yes)
:redirect process;
else
if (do forward?) then (yes)
:Forward request;
else (no)
:Render page template;
endif
endif
stop
@enduml
|
Inside style (by default) 🎉 Copied! 
 | @startuml
skinparam conditionStyle inside
start
repeat
:act1;
:act2;
repeatwhile (<b>end)
:act3;
@enduml
|
🎉 Copied! 
 | @startuml
start
repeat
:act1;
:act2;
repeatwhile (<b>end)
:act3;
@enduml
|
Diamond style 🎉 Copied! 
 | @startuml
skinparam conditionStyle diamond
start
repeat
:act1;
:act2;
repeatwhile (<b>end)
:act3;
@enduml
|
InsideDiamond (or Foo1) style 🎉 Copied! 
 | @startuml
skinparam conditionStyle InsideDiamond
start
repeat
:act1;
:act2;
repeatwhile (<b>end)
:act3;
@enduml
|
🎉 Copied! 
 | @startuml
skinparam conditionStyle foo1
start
repeat
:act1;
:act2;
repeatwhile (<b>end)
:act3;
@enduml
| [Ref. QA-1290 and #400]Diamond style (by default) 🎉 Copied! 
 | @startuml
skinparam ConditionEndStyle diamond
:A;
if (decision) then (yes)
:B1;
else (no)
endif
:C;
@enduml
|
- With two branches (
B1 , B2 )
🎉 Copied! 
 | @startuml
skinparam ConditionEndStyle diamond
:A;
if (decision) then (yes)
:B1;
else (no)
:B2;
endif
:C;
@enduml
@enduml
|
Horizontal line (hline) style 🎉 Copied! 
 | @startuml
skinparam ConditionEndStyle hline
:A;
if (decision) then (yes)
:B1;
else (no)
endif
:C;
@enduml
|
- With two branches (
B1 , B2 )
🎉 Copied! 
 | @startuml
skinparam ConditionEndStyle hline
:A;
if (decision) then (yes)
:B1;
else (no)
:B2;
endif
:C;
@enduml
@enduml
| [Ref. QA-4015]Without style (by default) 🎉 Copied! 
 | @startuml
start
:init;
-> test of color;
if (color?) is (<color:red>red) then
:print red;
else
:print not red;
note right: no color
endif
partition End {
:end;
}
-> this is the end;
end
@enduml
|
With style You can use style to change rendering of elements. 🎉 Copied! 
 | @startuml
<style>
activityDiagram {
BackgroundColor #33668E
BorderColor #33668E
FontColor #888
FontName arial
diamond {
BackgroundColor #ccf
LineColor #00FF00
FontColor green
FontName arial
FontSize 15
}
arrow {
FontColor gold
FontName arial
FontSize 15
}
partition {
LineColor red
FontColor green
RoundCorner 10
BackgroundColor PeachPuff
}
note {
FontColor Blue
LineColor Navy
BackgroundColor #ccf
}
}
document {
BackgroundColor transparent
}
</style>
start
:init;
-> test of color;
if (color?) is (<color:red>red) then
:print red;
else
:print not red;
note right: no color
endif
partition End {
:end;
}
-> this is the end;
end
@enduml
|
| |