list of dots Digital Research Alliance of Canada logo  NSERC logo  University of Ottawa logo / UniversitĂ© d'Ottawa

User Manual    [Previous]   [Next]   

Auto-Transitions

It is possible to arrange for a state machine to transition automatically from one state to the next immediately after completing entry actions or upon completion of a do activity. This is specified using a transition without any preceding event. Such transitions may have guards and transition actions.

Example


// In this example, the system will transition to s2 automatically
// when the do activity ends
class X {
  sm {
    s1 {
      entry / {
        System.out.println("Starting first sleep");
      }
      do {
        Thread.sleep(2000);
        System.out.println("Ending first sleep");
      }
      -> s2;
    }
    s2 {
      entry / {
        System.out.println("Starting second sleep");
      }
      do {
        Thread.sleep(2000);
        System.out.println("Ending second sleep");
      }
    }
  }
  public static void main(String [ ] args) {
    X x = new X();
  }
}

      

Load the above code into UmpleOnline

 

Syntax


autoTransition : [[activity]]? [[autoTransitionBlock]]

// Autotransitions have no event. The transition is immediately taken
// or taken after the do activity ends[[guard]]? -> [[action]]?
// The action can come before or after the arrow
autoTransitionBlock- : [[guard]]?
  ( [[action]] -> | -> [[action]] | ->
  ) [stateName] ;