public ConstantsApp.ProcessState GetNext(ConstantsApp.Command command)
 {            
     StateMachineTransition transition = new StateMachineTransition(CurrentState, command);
     ConstantsApp.ProcessState nextState;
     _smTransitions.TryGetValue(transition, out nextState);
     return nextState;
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="commandToExecute"></param>
 public void Transition(ConstantsApp.Command commandToExecute) 
 {
     try
     {
         _smProcess.MoveNext(commandToExecute);
     }
     catch (Exception ex) 
     {
         throw (ex);
     }
 }
 public ConstantsApp.ProcessState MoveNext(ConstantsApp.Command command)
 {
     try
     {
         CurrentState = GetNext(command);
         return CurrentState;
     }
     catch (Exception ex) 
     {
         throw (ex);
     }
 }
 public StateMachineTransition(ConstantsApp.ProcessState currentState, ConstantsApp.Command command)
 {
     CurrentState = currentState;
     Command = command;
 }