In the Elevator sample model (MagicDraw version), if certain inject buttons are pressed at the wrong time, the Hoist object will stop functioning. The Hoist state machine reaches MoveRequested state, but can never receive a message (DOOR_LOCKED) that lets it get to the next state. This happens consistently if a second button is pressed before the elevator door closes.
For example, press the following two GUI nodes/buttons in rapid succession:
e1_f2 e1_f5
Two things should probably be done:
- update the state machine, possibly adding a timer that will reset to Idle if it doesn't receive DOOR_LOCKED within a specified number of seconds
- add extra control nodes to allow the user to inject the missing events
The root of the problem is that the UI nodes put a human in charge at a low level, and there is an incomplete set of control buttons provided.