hello,
I use component diagram to draw a worflow, verticaly, with activities in a column, and for each activity of the process :
- input/ouput in a second column,
- actors in a third column,
- link with external processus in another column
I manage to "force" vertical and horizontal alignement of activities with some display tricks :
- -[hidden]-> : to constrain horizontal alignement between 4 columns
- and package together {} : to constrain vertical alignement of activities
But I encounter some limit and lose the vertical alignement when I try do display loops between some activities.
Is there a way to constrain any further the vertical alignement of components ?
ex :
@startuml
Hide stereotype
skinparam componentStyle uml1
skinparam fixCircleLabelOverlapping true
skinparam linetype ortho
skinparam DefaultTextAlignment left
top to bottom direction
hide @unlinked
hide $cache
together {
[1 Process1]
[2 Process2]
[3 Process3]
[4 Process4]
[5 Process5]
[6 Process6]
[7 Process7]
[8 Process8]
[9 Process9]
[10 Process10]
}
package "LOGIGRAMME OPÉRATIONNEL DES ACTIVITÉS" as Process {
frame "frame1" as f1 {
[1 Process1] as p1
[2 Process2] as p2
}
frame "frame2" as f2 {
[3 Process3] as p3
[4 Process4] as p4
[5 Process5] as p5
[6 Process6] as p6
[7 Process7] as p7
}
frame "frame3" as f3 {
[8 Process8] as p8
[9 Process9] as p9
}
frame "frame4" as f4 {
[10 Process10] as p10
}
}
' affichage des acteurs dans leur package dédié
package "ACTEURS" as Acteurs {
[<&person> Actor1] as pa1 <<Actor>>
[<&person> Actor2] as pa2 <<Actor>>
[<&person> Actor3] as pa3 <<Actor>>
[<&person> Actor4] as pa4 <<Actor>>
[<&person> Actor5] as pa5 <<Actor>>
[<&person> Actor6] as pa6 <<Actor>>
[<&person> Actor7] as pa7 <<Actor>>
[<&person> Actor8] as pa8 <<Actor>>
[<&person> Actor9] as pa9 <<Actor>>
[<&person> Actor10] as pa10 <<Actor>>
}
' affichage des E/S dans leur package dédié
package "ENTREES/SORTIES" as ES {
[<&arrow-thick-right> Entrants \n#Entrant1] as pes1 <<ES>>
[<&arrow-thick-right> Entrants \nEntrant4] as pes2 <<ES>>
[<&arrow-thick-right> Entrants \n#Entrant5] as pes3 <<ES>>
[<&arrow-thick-left> Sortants \n#Sortant1] as pes4 <<ES>>
[<&arrow-thick-right> Entrants \n#Entrant8] as pes5 <<ES>>
[<&arrow-thick-right> Entrants \n#Entrant9] as pes6 <<ES>>
[<&arrow-thick-left> Sortants \n#Sortant3] as pes7 <<ES>>
[<&arrow-thick-right> Entrants \n#Entrant9] as pes8 <<ES>>
[<&arrow-thick-left> Sortants \n#Sortant5] as pes9 <<ES>>
[<&arrow-thick-right> Entrants \n#Entrant13\n\n\n<&arrow-thick-left> Sortants \n#Sortant6] as pes10 <<ES>>
}
' affichage des liens acteurs-> ES
pa1 -[#black,thickness=1]> pes1
pa2 -[#black,thickness=1]> pes2
pa3 -[#black,thickness=1]> pes3
pa4 -[#black,thickness=1]> pes4
pa5 -[#black,thickness=1]> pes5
pa6 -[#black,thickness=1]> pes6
pa7 -[#black,thickness=1]> pes7
pa8 -[#black,thickness=1]> pes8
pa9 -[#black,thickness=1]> pes9
pa10 -[#black,thickness=1]> pes10
' affichage des liens ES -> activités
pes1 -[#black,thickness=1]> p1
pes2 -[#black,thickness=1]> p2
pes3 -[#black,thickness=1]> p3
pes4 -[#black,thickness=1]> p4
pes5 -[#black,thickness=1]> p5
pes6 -[#black,thickness=1]> p6
pes7 -[#black,thickness=1]> p7
pes8 -[#black,thickness=1]> p8
pes9 -[#black,thickness=1]> p9
pes10 -[#black,thickness=1]> p10
' affichage des liens entre activités du processus
p1-->p2
p2-->p3
p3-->p4
p4-->p5
p5-->p6
p6-->p7
p7-->p8
p8-->p9
p9-->p10
' boucle entre activités
'-------------------------
' OK si p4, p6 et p8 --> p3 seulement
' OK si p10 --> p3 seulement
' KO si p4, p6 et p8 --> p3 et p10 --> p3
'p4-->p3
'p6-->p3
'p8-->p3
'p10-->p3
' affichage processus externes
package "Lien avec les \nautres processus " as P2 {
[Processus externe 1] as pe1 <<Externe>>
[Processus externe 2] as pe2 <<Externe>>
[fictif1] as pe3 $cache <<Externe>>
[fictif2] as pe4 $cache <<Externe>>
[fictif3] as pe5 $cache <<Externe>>
[fictif4] as pe6 $cache <<Externe>>
[fictif5] as pe7 $cache <<Externe>>
[fictif6] as pe8 $cache <<Externe>>
[fictif7] as pe9 $cache <<Externe>>
[Processus externe 3] as pe10 <<Externe>>
}
' affichage des liens entre activités du processus et processus externes
p1 .[#black,dotted,thickness=3]> pe1
p2 .[#black,dotted,thickness=3]> pe2
p3 .[#black,dotted,thickness=3]> pe3
p4 .[#black,dotted,thickness=3]> pe4
p5 .[#black,dotted,thickness=3]> pe5
p6 .[#black,dotted,thickness=3]> pe6
p7 .[#black,dotted,thickness=3]> pe7
p8 .[#black,dotted,thickness=3]> pe8
p9 .[#black,dotted,thickness=3]> pe9
p10 .[#black,dotted,thickness=3]> pe10
' twick affichage vertical entre processus externes
pe1 -[hidden]-> pe2
pe2 -[hidden]-> pe3
pe3 -[hidden]-> pe4
pe4 -[hidden]-> pe5
pe5 -[hidden]-> pe6
pe6 -[hidden]-> pe7
pe7 -[hidden]-> pe8
pe8 -[hidden]-> pe9
pe9 -[hidden]-> pe10
' twick affichage vertical entre acteurs
pa1 -[hidden]-> pa2
pa2 -[hidden]-> pa3
pa3 -[hidden]-> pa4
pa4 -[hidden]-> pa5
pa5 -[hidden]-> pa6
pa6 -[hidden]-> pa7
pa7 -[hidden]-> pa8
pa8 -[hidden]-> pa9
pa9 -[hidden]-> pa10
' twick affichage vertical entre ES
pes1 -[hidden]-> pes2
pes2 -[hidden]-> pes3
pes3 -[hidden]-> pes4
pes4 -[hidden]-> pes5
pes5 -[hidden]-> pes6
pes6 -[hidden]-> pes7
pes7 -[hidden]-> pes8
pes8 -[hidden]-> pes9
pes9 -[hidden]-> pes10
@enduml