Maybe it's time to add some real variable management inside PlantUML:
@startuml
$i = 0
Alice -> Bob : The value of "i" is ${i}
'It prints: The value of "i" is 0
$i = $i+1
Alice -> Bob : The value of "i" is now ${i}
'It prints: The value of "i" is now 1
$if ( i > 0)
Alice -> Bob : this is printed because i value is ${i}
$endif
$for (i=0; i<10; i++)
Alice -> Bob : in the for loop, "i" value is ${i}
$endfor
@enduml
This would not be preprocessed (like in the current preprocessor) but executed dynamically.
This is probably over-engineering but I am sure that people would be very creative with this feature :-)
In the meantime, with last beta http://beta.plantuml.net/plantuml.jar , you can have:
@startuml
!definelong connect(CALLER)
component "CALLEE" as callee
CALLER -[single]-> callee
!enddefinelong
component test1
connect(test1)
component test2
connect(test2)
connect(test2)
connect(test2)
@enduml
[single] means that you can only have a single link between element.
Sounds good ?