Repeat loop starting with action instead of condition

0 votes
asked Mar 30 by Chris38 (390 points)
Hi,

is it possible to replace the empty diamond at the start of a repeat loop with an action? In the following example, if the "data is invalid", I just want to "prompt for data" again:

start

repeat

:prompt for data;

repeat while (data is valid) is (no) not (yes)

:use data;

stop

I looked in past questions and discovered a few things, but nothing about this particular case. It seems like it would make the diagram a little smaller.

Maybe something like repeat (prompt for data)

I can sort of do it with a while loop, but it would not look as nice.

Thank you!

1 Answer

+1 vote
answered Mar 30 by plantuml (131,770 points)
selected Mar 30 by Chris38
 
Best answer

Fortunately, this is a part of code we are currently working on.

So in last beta (beta14):
https://www.dropbox.com/s/koo42q3d9gxw288/plantuml.jar?dl=0

You can now have:

@startuml
start
repeat :foo as starting label;
  :read data;
  :generate diagrams;
backward:This is backward;
repeat while (more data?)
stop
@enduml


This has not been tested very widely, so feedback welcome!
Thanks for your idea!
 

commented Mar 30 by Chris38 (390 points)
Thanks,

I was hoping I could have the starting label be an activity instead of a diamond (in my example, I am prompting for data until the data is valid, the start of my loop is not a test, so a round box seems more appropriate).

backward looks like a nice addition, will it be possible to have several activities in the backward "chain" (ah, so many requests! although this is more of a question really.)

Thanks!
Christophe
commented Mar 30 by plantuml (131,770 points)
Ok, we've removed the diamond in last beta16
https://www.dropbox.com/s/koo42q3d9gxw288/plantuml.jar?dl=0

About backward, adding several activities in the backward chain is not too difficult to implement, so we will probably do it latter.

Welcome still welcome :-)
commented Mar 30 by Chris38 (390 points)
Impressive, thank you!!
Christophe
...