Hi Mikael and Jim C,
This is a very interesting discussion. I like exploring new ideas for ways to use and improve the JKI State Machine.
It seems, Mikael, that you are using the JKI State Machine as a hybrid between a finite state machine (where each state determines the next state) and a queued state machine (where states are queued up and then executed). For example, each of the work steps (Test A, Test B, Test C, Test D) is driving the subsequent work step, but only when there is nothing left on the queue.
What I would usually do in type of situation (as Jim C suggests) is define some macros that invoke all the needed functionality. For example, for a full test, I would create the following macro:
Macro: Full Test
----------------
Test A
Test B
Test C
Test D
UpdateGUI
And, if a half-test is required, I would create the following macro:
Macro: Half Test
----------------
Test A
Test B
UpdateGUI
The reason I prefer macros, and defining as much of the sequence up front, is that it is very readable. I don't have to scroll through every frame to try to reverse engineer the order in which my state machine will execute. Now, I see that you are using the Endevo GDS UML tool to reverse engineer a state diagram

Still, I think that making work steps define other work steps, when it's not absolutely necessary, obfuscates the code by "hiding" pre-determinable sequences (macros).
BTW, the explicit call to "Idle" that you make is not required, if it's the last thing you want to do. The JKI State Machine will always go to an "Idle" state when there is nothing left on the state queue.
Thanks,
-Jim