/// <summary>
    /// Signalisiert ein Event, welches den Status der Statusmaschine beeinflussen kann. Der Status wird wenn nötig 
    /// angepasst. Diese Methode enthält die Logik über die möglichen Statusübergänge.
    /// </summary>
    /// <returns>true, wenn eine Änderung erfolgt ist.</returns>    
    /// <param name="NewEvent">Das aufgetretene Ereignis.</param>
    public virtual bool SetEvent(int transition)
    {
      bool changed = false;

      RuleSet.State newState = currentState.GetTransitionTarget(Convert.ToInt32(transition));
      if(null != newState)
      {
        currentState = newState;
        changed = true;
      }

      return changed;
    }
 /// <summary>
 /// Setzt den Zustand der Statusmaschine zurück.
 /// </summary>
 public void ResetState()
 {
   currentState = this.ruleSet.InitialState;
 }
 /// <summary>
 /// Konstruktor, welcher den aktuellen Status übernimmt.
 /// </summary>
 /// <param name="ruleSet">Regelwerk für die Übergänge zwischen den einzelnen Stati</param>
 /// <param name="currentState">Aktuellen Status</param>
 public StateMachine(RuleSet ruleSet, RuleSet.State currentState)
 {
   this.ruleSet = ruleSet;
   this.currentState = currentState;
 }