Blame libs/statechart/doc/uml_mapping.html

Packit 58578d
Packit 58578d
Packit 58578d
<html>
Packit 58578d
<head>
Packit 58578d
  <meta http-equiv="Content-Language" content="en-us">
Packit 58578d
  <meta name="GENERATOR" content="Microsoft FrontPage 6.0">
Packit 58578d
  <meta name="ProgId" content="FrontPage.Editor.Document">
Packit 58578d
  <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
Packit 58578d
  <link rel="stylesheet" type="text/css" href="../../../boost.css">
Packit 58578d
Packit 58578d
  <title>The Boost Statechart Library - Definitions</title>
Packit 58578d
</head>
Packit 58578d
Packit 58578d
<body link="#0000FF" vlink="#800080">
Packit 58578d
  
Packit 58578d
  "header">
Packit 58578d
    
Packit 58578d
      
Packit 58578d
        

Packit 58578d
        "../../../boost.png" border="0" width="277" height="86">
Packit 58578d
      
Packit 58578d
Packit 58578d
      
Packit 58578d
        

The Boost Statechart Library

Packit 58578d
Packit 58578d
        

UML to Boost.Statechart mapping summary

Packit 58578d
      
Packit 58578d
    
Packit 58578d
  
Packit 58578d
  
Packit 58578d
Packit 58578d
  

Contents

Packit 58578d
Packit 58578d
  
Packit 58578d
    
State machine
Packit 58578d
Packit 58578d
    
States
Packit 58578d
Packit 58578d
    
Normal state
Packit 58578d
Packit 58578d
    
Initial pseudostate
Packit 58578d
Packit 58578d
    
Final pseudostate
Packit 58578d
Packit 58578d
    
Shallow history
Packit 58578d
    pseudostate
Packit 58578d
Packit 58578d
    
Deep history pseudostate
Packit 58578d
Packit 58578d
    
Junction point
Packit 58578d
Packit 58578d
    
Dynamic choice point
Packit 58578d
Packit 58578d
    
Join and fork bars
Packit 58578d
Packit 58578d
    
Events
Packit 58578d
Packit 58578d
    
Call event
Packit 58578d
Packit 58578d
    
Signal event
Packit 58578d
Packit 58578d
    
Time event
Packit 58578d
Packit 58578d
    
Change event
Packit 58578d
Packit 58578d
    
Reactions
Packit 58578d
Packit 58578d
    
Guard
Packit 58578d
Packit 58578d
    
Transition
Packit 58578d
Packit 58578d
    
Deferral
Packit 58578d
Packit 58578d
    
Internal transition (in-state
Packit 58578d
    reaction)
Packit 58578d
Packit 58578d
    
Actions
Packit 58578d
Packit 58578d
    
Entry action
Packit 58578d
Packit 58578d
    
Exit action
Packit 58578d
Packit 58578d
    
Transition action
Packit 58578d
Packit 58578d
    
Do activity
Packit 58578d
  
Packit 58578d
  
Packit 58578d
Packit 58578d
  

State machine

Packit 58578d
Packit 58578d
  
    Packit 58578d
        
  • A state machine is defined by deriving a class from either the
  • Packit 58578d
        
    Packit 58578d
        "reference.html#ClassTemplatestate_machine">state_machine or
    Packit 58578d
        the 
    Packit 58578d
        "reference.html#ClassTemplateasynchronous_state_machine">asynchronous_state_machine
    Packit 58578d
        class templates; 
    Packit 58578d
        "tutorial.html#DefiningStatesAndEvents">example
    Packit 58578d
      
    Packit 58578d
    Packit 58578d
      

    States

    Packit 58578d
    Packit 58578d
      

    Normal state

    Packit 58578d
    Packit 58578d
      
      Packit 58578d
          
    • A state is defined by deriving a class from either the
    • Packit 58578d
          "reference.html#ClassTemplatesimple_state">simple_state or
      Packit 58578d
          state class
      Packit 58578d
          templates; 
      Packit 58578d
          "tutorial.html#DefiningStatesAndEvents">example
      Packit 58578d
      Packit 58578d
          
    • The position of a state in the state hierarchy is defined by what is
    • Packit 58578d
          passed as the Context template parameter. 
      Packit 58578d
          "definitions.html#OutermostState">Outermost states pass the
      Packit 58578d
          
      Packit 58578d
          "reference.html#ClassTemplatestate_machine">state_machine<>
      Packit 58578d
          or 
      Packit 58578d
          "reference.html#ClassTemplateasynchronous_state_machine">asynchronous_state_machine<>
      Packit 58578d
          subtype they belong to, inner states pass their direct outer state;
      Packit 58578d
          example
      Packit 58578d
      Packit 58578d
          
    • A state can be made a member of a particular orthogonal region by
    • Packit 58578d
          passing an instantiation of the orthogonal class template
      Packit 58578d
          nested in its outer state; 
      Packit 58578d
          "tutorial.html#OrthogonalStates">example
      Packit 58578d
        
      Packit 58578d
      Packit 58578d
        

      Initial

      Packit 58578d
        pseudostate
      Packit 58578d
      Packit 58578d
        
        Packit 58578d
            
      • The state that is initially entered is identified by template
      • Packit 58578d
            parameters rather than by a default transition from the initial
        Packit 58578d
            pseudostate (there is no such thing in Boost.Statechart)
        Packit 58578d
        Packit 58578d
            
      • For
      • Packit 58578d
            "reference.html#ClassTemplatestate_machine">state_machine<>
        Packit 58578d
            and 
        Packit 58578d
            "reference.html#ClassTemplateasynchronous_state_machine">asynchronous_state_machine<>
        Packit 58578d
            the state that is initially entered needs to be specified with the
        Packit 58578d
            InitialState template parameter; 
        Packit 58578d
            "tutorial.html#DefiningStatesAndEvents">example
        Packit 58578d
        Packit 58578d
            
      • For
      • Packit 58578d
            "reference.html#ClassTemplatesimple_state">simple_state<>
        Packit 58578d
            and 
        Packit 58578d
            "reference.html#ClassTemplatestate">state<> the inner
        Packit 58578d
            state(s) that is/are initially entered can be specified with the
        Packit 58578d
            InnerInitial template parameter; 
        Packit 58578d
            "tutorial.html#DefiningStatesAndEvents">example
        Packit 58578d
          
        Packit 58578d
        Packit 58578d
          

        Final

        Packit 58578d
          pseudostate
        Packit 58578d
        Packit 58578d
          
          Packit 58578d
              
        • There is no such thing as a final pseudostate in
        • Packit 58578d
              Boost.Statechart
          Packit 58578d
          Packit 58578d
              
        • This functionality is implemented with a special reaction
        • Packit 58578d
              (
          Packit 58578d
              "reference.html#ClassTemplatetermination">termination<>)
          Packit 58578d
              and special reaction function (
          Packit 58578d
              "reference.html#simple_state::terminate">simple_state<>::terminate());
          Packit 58578d
              example
          Packit 58578d
            
          Packit 58578d
          Packit 58578d
            

          Packit 58578d
            "ShallowHistoryPseudostate">Shallow history pseudostate
          Packit 58578d
          Packit 58578d
            
            Packit 58578d
                
          • A shallow history transition target or shallow history inner initial
          • Packit 58578d
                state can be specified with 
            Packit 58578d
                "reference.html#ClassTemplateshallow_history">shallow_history<>
            Packit 58578d
              
            Packit 58578d
            Packit 58578d
              

            Deep

            Packit 58578d
              history pseudostate
            Packit 58578d
            Packit 58578d
              
              Packit 58578d
                  
            • A deep history transition target or deep history inner initial state
            • Packit 58578d
                  can be specified with 
              Packit 58578d
                  "reference.html#ClassTemplatedeep_history">deep_history<>;
              Packit 58578d
                  example
              Packit 58578d
                
              Packit 58578d
              Packit 58578d
                

              Junction point

              Packit 58578d
              Packit 58578d
                
                Packit 58578d
                    
              • Does not exist in Boost.Statechart;
              • Packit 58578d
                    "rationale.html#Limitations">rationale
                Packit 58578d
                  
                Packit 58578d
                Packit 58578d
                  

                Dynamic choice

                Packit 58578d
                  point
                Packit 58578d
                Packit 58578d
                  
                  Packit 58578d
                      
                • Does not (yet?) exist in Boost.Statechart;
                • Packit 58578d
                      "rationale.html#Limitations">rationale
                  Packit 58578d
                    
                  Packit 58578d
                  Packit 58578d
                    

                  Join and fork

                  Packit 58578d
                    bars
                  Packit 58578d
                  Packit 58578d
                    
                    Packit 58578d
                        
                  • Do not exist in Boost.Statechart;
                  • Packit 58578d
                        "rationale.html#Limitations">rationale
                    Packit 58578d
                      
                    Packit 58578d
                    Packit 58578d
                      

                    Events

                    Packit 58578d
                    Packit 58578d
                      
                      Packit 58578d
                          
                    • A event is defined by deriving a class from the
                    • Packit 58578d
                          "reference.html#ClassTemplateevent">event class
                      Packit 58578d
                          template; 
                      Packit 58578d
                          "tutorial.html#DefiningStatesAndEvents">example
                      Packit 58578d
                      Packit 58578d
                          
                    • There is no distinction between signal and call events, see
                    • Packit 58578d
                          below
                      Packit 58578d
                        
                      Packit 58578d
                      Packit 58578d
                        

                      Call event

                      Packit 58578d
                      Packit 58578d
                        
                        Packit 58578d
                            
                      • All events passed to
                      • Packit 58578d
                            "reference.html#process_event">state_machine<>::process_event()
                        Packit 58578d
                            are implicitly call events
                        Packit 58578d
                          
                        Packit 58578d
                        Packit 58578d
                          

                        Signal event

                        Packit 58578d
                        Packit 58578d
                          
                          Packit 58578d
                              
                        • All events passed to either
                        • Packit 58578d
                              "reference.html#post_event0">simple_state<>::post_event()
                          Packit 58578d
                              or 
                          Packit 58578d
                              "reference.html#queue_event">fifo_scheduler<>::queue_event()
                          Packit 58578d
                              are implicitly signal events
                          Packit 58578d
                            
                          Packit 58578d
                          Packit 58578d
                            

                          Time event

                          Packit 58578d
                          Packit 58578d
                            
                            Packit 58578d
                                
                          • Does not exist in Boost.Statechart
                          • Packit 58578d
                            Packit 58578d
                                
                          • A time event can be simulated with an external timer that is started
                          • Packit 58578d
                                in the entry action and stopped in the exit action of a particular state.
                            Packit 58578d
                                When starting the timer, it is instructed to call 
                            Packit 58578d
                                "reference.html#queue_event">fifo_scheduler<>::queue_event()
                            Packit 58578d
                                when the due time elapses
                            Packit 58578d
                              
                            Packit 58578d
                            Packit 58578d
                              

                            Change event

                            Packit 58578d
                            Packit 58578d
                              
                              Packit 58578d
                                  
                            • Does not exist in Boost.Statechart
                            • Packit 58578d
                              Packit 58578d
                                  
                            • A change event can be simulated by packing to be monitored variables
                            • Packit 58578d
                                  into an external wrapper with get and set
                              Packit 58578d
                                  methods. Whenever set is called the wrapper posts an
                              Packit 58578d
                                  appropriate event
                              Packit 58578d
                                
                              Packit 58578d
                              Packit 58578d
                                

                              Reactions

                              Packit 58578d
                              Packit 58578d
                                

                              Guard

                              Packit 58578d
                              Packit 58578d
                                
                                Packit 58578d
                                    
                              • A guard can be implemented with a selection statement in a
                              • Packit 58578d
                                    
                                Packit 58578d
                                    "reference.html#ClassTemplatecustom_reaction">custom_reaction<>;
                                Packit 58578d
                                    example
                                Packit 58578d
                                  
                                Packit 58578d
                                Packit 58578d
                                  

                                Transition

                                Packit 58578d
                                Packit 58578d
                                  
                                  Packit 58578d
                                      
                                • A transition can be defined with either a
                                • Packit 58578d
                                      "reference.html#ClassTemplatetransition">transition<> or
                                  Packit 58578d
                                      a call to 
                                  Packit 58578d
                                      "reference.html#transit1">simple_state<>::transit<>
                                  Packit 58578d
                                      in a 
                                  Packit 58578d
                                      "reference.html#ClassTemplatecustom_reaction">custom_reaction<>;
                                  Packit 58578d
                                      example
                                  Packit 58578d
                                    
                                  Packit 58578d
                                  Packit 58578d
                                    

                                  Deferral

                                  Packit 58578d
                                  Packit 58578d
                                    
                                    Packit 58578d
                                        
                                  • A deferral reaction can be defined with either a
                                  • Packit 58578d
                                        "reference.html#ClassTemplatedeferral">deferral<> or a
                                    Packit 58578d
                                        call to 
                                    Packit 58578d
                                        "reference.html#defer_event">simple_state<>::defer_event()
                                    Packit 58578d
                                        in a 
                                    Packit 58578d
                                        "reference.html#ClassTemplatecustom_reaction">custom_reaction<>;
                                    Packit 58578d
                                        example
                                    Packit 58578d
                                      
                                    Packit 58578d
                                    Packit 58578d
                                      

                                    Internal

                                    Packit 58578d
                                      transition (in-state reaction)
                                    Packit 58578d
                                    Packit 58578d
                                      
                                      Packit 58578d
                                          
                                    • An in-state reaction can be defined with either a
                                    • Packit 58578d
                                          "reference.html#ClassTemplatein_state_reaction">in_state_reaction<>
                                      Packit 58578d
                                          or a call to 
                                      Packit 58578d
                                          "reference.html#discard_event">simple_state<>::discard_event()
                                      Packit 58578d
                                          in a 
                                      Packit 58578d
                                          "reference.html#ClassTemplatecustom_reaction">custom_reaction<>
                                      Packit 58578d
                                        
                                      Packit 58578d
                                      Packit 58578d
                                        

                                      Actions

                                      Packit 58578d
                                      Packit 58578d
                                        

                                      Entry action

                                      Packit 58578d
                                      Packit 58578d
                                        
                                        Packit 58578d
                                            
                                      • A state entry action can be defined by adding a constructor to a
                                      • Packit 58578d
                                            state class; example
                                        Packit 58578d
                                          
                                        Packit 58578d
                                        Packit 58578d
                                          

                                        Exit action

                                        Packit 58578d
                                        Packit 58578d
                                          
                                          Packit 58578d
                                              
                                        • A state exit action can be defined by adding a destructor to a state
                                        • Packit 58578d
                                              class; example
                                          Packit 58578d
                                            
                                          Packit 58578d
                                          Packit 58578d
                                            

                                          Transition

                                          Packit 58578d
                                            action
                                          Packit 58578d
                                          Packit 58578d
                                            
                                            Packit 58578d
                                                
                                          • A transition action can be defined by passing a function pointer
                                          • Packit 58578d
                                                referencing the action to either 
                                            Packit 58578d
                                                "reference.html#ClassTemplatetransition">transition<> or
                                            Packit 58578d
                                                
                                            Packit 58578d
                                                "reference.html#transit2">simple_state<>::transit<>();
                                            Packit 58578d
                                                example
                                            Packit 58578d
                                              
                                            Packit 58578d
                                            Packit 58578d
                                              

                                            Do activity

                                            Packit 58578d
                                            Packit 58578d
                                              
                                              Packit 58578d
                                                  
                                            • Not supported in Boost.Statechart
                                            • Packit 58578d
                                              Packit 58578d
                                                  
                                            • A do activity can be simulated with a separate thread that is started
                                            • Packit 58578d
                                                  in the entry action and cancelled (!) in the exit action of a particular
                                              Packit 58578d
                                                  state
                                              Packit 58578d
                                                
                                              Packit 58578d
                                                
                                              Packit 58578d
                                              Packit 58578d
                                                

                                              Packit 58578d
                                                "../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
                                              Packit 58578d
                                                height="31" width="88">

                                              Packit 58578d
                                              Packit 58578d
                                                

                                              Revised

                                              Packit 58578d
                                                03 December, 2006

                                              Packit 58578d
                                              Packit 58578d
                                                

                                              Copyright © 2003-2006

                                              Packit 58578d
                                                Andreas Huber Dönni

                                              Packit 58578d
                                              Packit 58578d
                                                

                                              Distributed under the Boost Software License, Version 1.0. (See

                                              Packit 58578d
                                                accompanying file LICENSE_1_0.txt or
                                              Packit 58578d
                                                copy at 
                                              Packit 58578d
                                                "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt)

                                              Packit 58578d
                                              </body>
                                              Packit 58578d
                                              </html>