vertical alignement in component diagram

0 votes
asked Dec 6, 2023 in Bug by anonymous

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 :

  1. -[hidden]-> : to constrain horizontal alignement between 4 columns
  2. 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

Your answer

Your name to display (optional):
Privacy: Your email address will only be used for sending these notifications.
Anti-spam verification:

[Antispam2 Feature: please please wait 1 or 2 minutes (this message will disappear) before pressing the button otherwise it will fail](--------)
To avoid this verification in future, please log in or register.
...