13.2. States

In SysML2, state machines are modeled as states, which are treated as special kinds of actions, so merge, decision, fork and join actions can also be used in state machine models.

item def DataPacket;
item def Exit;
part def Relay {
  port incoming;
  port outgoing;
  state relay_behavior[1] {
    transition first start then waiting;
    state waiting;
       
    transition
      first waiting
      accept Exit via incoming
      then done;
         
    transition receiveData
      first waiting
      accept packet : DataPacket via incoming
      then sending;
         
    state sending {
      entry send receiveData.packet via outgoing;
    }
    transition first sending then waiting;
  }
}