-
Notifications
You must be signed in to change notification settings - Fork 0
Example debugging scenario
Here is a simple debugging scenario for the Elevator Case Study models.
...inject
1) UI >|| EVMAN : Stop request -> ASLEV <S1-3>
...running
2) EVMAN >|| UI : XFER<S1> Set destination( Floor=3 )
3) EVMAN >|| TRANS : Cabin<S1> Go to floor( Floor=3 )
...delay 7 sec
...inject
4) TRANS >|| EVMAN : Arrived at floor -> Cabin<S1>
...running
5) EVMAN ~|| UI, SIO : Door<S1> [ OPENING ]
...delay 3 sec
...inject
6) SIO >|| EVMAN : Door opened -> Door<S1>
...completed
We start with this inject action:
UI >|| EVMAN : Stop request -> ASLEV <S1-3>
The action type is signal
The source actor is UI
The target actor is EVMAN:ASLEV<S1-3>
The name of the action is Stop request
A Scenario consists of multiple steps and a Step is characterized as either a Stimulus or a Condition. A Step is associated with an Action. A Stimulus has a delay specified. This is an interval that must pass before injecting the Action.
Let’s move on to the next Step which happens to be a Condition. A Condition is an Action we are interested in. When a Condition occurs we can react by printing some kind of notification or some other task. So the opposite of injecting is to react in some way.
EVMAN >|| UI : XFER<S1> Set destination( Floor=3 )
The action is external event
The source actor is EVMAN:XFER<S1>~UI
The target actor is UI
The name of the action is Set destination
There is a parameter: Floor=3
EVMAN ~|| UI, SIO : Door<S1> [ OPENING ]
The action is bridgeable condition state entry
The source is EVMAN:Door<S1>
The targets are [ UI, SIO ]
The name is OPENING
This last one is interesting for two reasons.
- The action is not just
state entrysince the system is actually communicating the condition across domain boundaries (this means that for every bridgeable condition we may define a separate MDB action - There are multiple targets
—
...inject
1) UI >|| EVMAN : Stop request -> ASLEV <S1-3>
...running
2) EVMAN >|| UI : XFER<S1> Set destination( Floor=3 )
3) EVMAN >|| TRANS : Cabin<S1> Go to floor( Floor=3 )
...delay 7 sec
...inject
4) TRANS >|| EVMAN : Arrived at floor -> Cabin<S1>
...running
5) EVMAN ~|| UI, SIO : Door<S1> [ OPENING ]
...delay 3 sec
...inject
6) SIO >|| EVMAN : Door opened -> Door<S1>
...completed
| Number | Action type | Name |
|---|---|---|
| 1 | signal instance | Stop request |
| 2 | external event | Set destination |
| 3 | external event | Go to floor |
| 4 | signal instance | Arrived at floor |
| 5 | bridgeable condition state entry | OPENING |
| 6 | signal instance | Door opened |
| Number | Target actor | Target role | Delay |
|---|---|---|---|
| 1 | EVMAN:ASLEV | R1 | 0 sec |
| 4 | EVMAN:Cabin | R1 | 7 sec |
| 6 | EVMAN:Door | R1 | 3 sec |
| Number | Source actor | Source role |
|---|---|---|
| 2 | EVMAN:XFER | R1 |
| 3 | EVMAN:Cabin | R1 |
| 5 | EVMAN:Door | R1 |
| Name | Interaction | Value |
|---|---|---|
| Floor | 2 | 3 |
| Floor | 3 | 3 |
| Address |
|---|
| EVMAN:ASLEV |
| UI |
| EVMAN:XFER |
| TRANS |
| EVMAN:Cabin |
| EVMAN:Door |
| SIO |
| Actor | Interaction | Role |
|---|---|---|
| EVMAN:ASLEV | 1 | R1 |
| UI | 1 | R1 |
| EVMAN:XFER | 2 | R1 |
| UI | 2 | R1 |
| TRANS | 3 | R1 |
| EVMAN:Cabin | 3 | R1 |
| TRANS | 4 | R1 |
| EVMAN:Cabin | 4 | R1 |
| EVMAN:Door | 5 | R1 |
| UI | 5 | R1 |
| SIO | 5 | R1 |
| SIO | 6 | R1 |
| EVMAN:Door | 6 | R1 |
| Actor | Role | Interaction |
|---|---|---|
| EVMAN:ASLEV | R1 | 1 |
| TRANS | R1 | 4 |
| SIO | R1 | 6 |
| Actor | Role | Interaction |
|---|---|---|
| UI | R1 | 1 |
| EVMAN:Cabin | R1 | 4 |
| EVMAN:Door | R1 | 6 |
| Actor | Role | Interaction |
|---|---|---|
| EVMAN:XFER | R1 | 2 |
| TRANS | R1 | 3 |
| EVMAN:Door | R1 | 5 |
| Actor | Role | Interaction |
|---|---|---|
| UI | R1 | 2 |
| EVMAN:Cabin | R1 | 3 |
| UI | R1 | 5 |
| SIO | R1 | 5 |
Copyright 2025-2026 © Leon Starr under MIT Open Source License