Grundlagen (3)
 
 
Transitionen und Ereignisse

Die Transitionsbeschriftung ist optional und erfolgt nach folgendem Muster:

  • Ereignis: Ein Ereignis aus dem Ereignismodell


  • [Bedingung]: Ein prädikatenlogischer Ausdruck


  • /Aktion: Eine kurze, nicht zu unterbrechende Operation, die bei der Transition ausgeführt wird.
  • Es gilt folgende allgemeine Beschriftung:


        Ereignis(Argumente) [Bedingung] / Aktion(Argumente)

     
    Arten von Transitionen

    Betrachten wir im folgenden welche Möglichkeiten UML für einen Zustandswechsel vorsieht.

    Wie wir gesehen haben, besteht die Beschriftung einer Transition aus drei Teilen. Bei einem Ereignis kann es sich z.B. um eine Abfrage der Maus oder Tastatur handeln. Wenn das Ereignis "Anwender hat die Abbrechen-Taste gedrückt" erfüllt ist, wird ein Zustandswechsel durchgeführt. Man sagt auch die Transition schaltet oder die Transition feuert.

    Das Ereignis kann auch an eine Bedingung geknüpft werden. Man kann sich leicht vorstellen, dass ein Anwender persönliche Angaben in ein Formular eingegeben hat und nun den "Weiter - Button" drückt. Eine Routine überprüft, ob die Eingaben korrekt sind (z.B. gültige Email Adresse) und gibt den entsprechenden Booleanwert zurück. Die Transition schaltet nur dann, wenn die Bedingung, die an das Ereignis geknüpft ist, zutrifft. Hat der Anwender z.B. seine Kundendaten aktualisiert, könnte im Anschluß die Aktion kundenDatenAktualisieren(Parameter) aufgerufen werden. Das vereinfachte Zustandsdiagramm sieht so aus:

    Abbildung 6 : Ereignis

    Bedingungen werden als guard condition bzw. Überwachungsbedingung oder auch als Wächter bezeichnet.

     
     
     Zwei spezielle Ereignisse

    In der UML Spezifikation werden zwei spezielle Ereignisse aufgeführt:

    when(Ausdruck):
    Der Ausdruck innerhalb der Klammer enthält einen exakten Zeitpunkt. Zum Beispiel könnte man sich die Situation vorstellen, dass ein Kunde zu einem festen Zeitpunkt eine Information zu einem neuen Produkt enthält und dies automatisiert geschehen soll.
    when(datumHeute == neuesProduktdatum) dann erfolgt ein Zustandsübergang.

    after(Ausdruck):
    Der Kunde hat seine Ware erhalten, aber noch nicht bezahlt. Eine Mahnung kann man automatisch verschicken: after(7 Tage) Mahnung verschicken.