umlsysml

Join node interaction with previous action block


If the next element of a action is a join node, will the action executed as long as not all join node input token are there?

Or will the action exited and the flow is just stopped till the event appears in the example?

enter image description here


Solution

  • If the next element of a action is a join node, will the action executed as long as not all join node input token are there?

    no, the action decides itself when it finishes and then when it offers a token on its outgoing flow, the fact there is after a join or anything else is not relevant

    Or will the action exited and the flow is just stopped till the event appears in the example?

    as I already answer in your other question Multiple event actions at Join Node allowed the token offered on the incoming edges of a JoinNode are blocked while the join is not passing, and the moment a JoinNode is passing depends on its joinSpec.

    If you want do something until an event you can use an InterruptibleRegion and an interruptingEdge from your AcceptEventAction.

    Here an example from the documentation of my tool BoUML where an AcceptEventAction (here in red) interrupts what is done in the region, the interruptingEdge is indicated by a lightning-bolt (zigzag) :

    enter image description here

    See §15.6.3.2 Interruptible Activity Regions from page 407 and Figure 15.5 ActivityEdge notation page 380 of formal/2017-12-05