4 Aufrufverhalten - Basis
Dieses „UML Statechart“-Beispiel zeigt das grundlegende Aufrufverhalten vom UML-Zustandsdiagramm und beinhaltet die folgenden UML SC Elemente:
Beispielprojekt: TF1910_UmlSC_Sample4_CallingBehaviour_Basic.zip
Überblick
Mithilfe der folgenden Teilaspekte wird das Aufrufverhalten von Zuständen und zusammengesetzten Zuständen veranschaulicht. Mithilfe von verschiedenen Programmiermitteln werden die unterschiedlichen Aufrufaspekte veranschaulicht (Programmiermittel => Aufrufaspekt).
- Zähler => Aufrufhäufigkeit
- Eintragung der aufgerufenen Zustandsaktion in ein Array => Aufrufreihenfolge
- Taskzyklus-IDs => Zuordnung des Aufrufs zur Zyklus-ID
Die jeweilige Zuordnung des Programmiermittels zum Aufrufaspekt wird im Folgenden erläutert.
Bzgl. des zusammengesetzten Zustands werden beide Anwendungsfälle verwendet:
- Gruppierung/Verschachtelung, wobei der zusammengesetzte Zustand über eigene ENTRY-/DO-/EXIT-Aktionen verfügt
- Parallele Sub-Zustandsmaschinen
Zähler => Aufrufhäufigkeit
Jede ENTRY-/DO-/EXIT-Aktion, die in einem Zustand oder in einem zusammengesetzten Zustand aufgerufen wird, inkrementiert einen zugehörigen Zähler. Dadurch wird die Aufrufhäufigkeit einer Aktion veranschaulicht, sodass ersichtlich ist:
- dass die ENTRY-Aktion jeweils einmal aufgerufen wird, wenn der zugehörige (zusammengesetzte) Zustand aktiviert wird.
- dass die EXIT-Aktion jeweils einmal aufgerufen wird, wenn der zugehörige (zusammengesetzte) Zustand verlassen wird.
- dass die DO-Aktion permanent aufgerufen wird, solange der zugehörige (zusammengesetzte) Zustand aktiv ist.
- dass ein zusammengesetzter Zustand mit einer Region (Anwendungsfall Gruppierung/Verschachtelung) aktiviert wird, wenn zuvor keiner der inneren Zustände aktiv war und sobald einer der inneren Zustände aktiviert wird.
- dass ein zusammengesetzter Zustand mit einer Region (Anwendungsfall Gruppierung/Verschachtelung) aktiv bleibt, solange einer der inneren Zustände aktiv ist.
- dass ein zusammengesetzter Zustand mit einer Region (Anwendungsfall Gruppierung/Verschachtelung) verlassen wird, wenn zuvor einer der inneren Zustände aktiv war und wenn dieser Zustand verlassen wird, sodass nun keiner der inneren Zustände mehr aktiv ist.
- dass es von der Option „DO-Aktionen auch ausführen, wenn die inneren zusammengesetzten Zustände aktiv sind“ abhängt, ob die DO-Aktion eines äußeren zusammengesetzten Zustands (im Beispiel „CompositeState1“) weiterhin aufgerufen wird, wenn ein innerer zusammengesetzter Zustand aktiv ist (im Beispielprojekt: „CompositeState2“).
Eintragung der aufgerufenen Zustandsaktion in ein Array => Aufrufreihenfolge
Jede ENTRY-/DO-/EXIT-Aktion, die in einem Zustand oder in einem zusammengesetzten Zustand aufgerufen wird, trägt ihren Namen (z.B. „State1__Entry“) in ein Array ein. Dadurch wird die Aufrufreihenfolge der verschiedenen Aktionen veranschaulicht, sodass ersichtlich ist:
- dass die prinzipielle Aufrufreihenfolge bei einem Zustand lautet: erst ENTRY, dann DO, dann EXIT. Im Beispielprojekt:
- State1__Entry
- State1__Do
- State1__Exit
- dass, wenn ein innerer Zustand eines zusammengesetzten Zustands mit einer Region (Anwendungsfall Gruppierung/Verschachtelung) aktiviert wird und wenn damit auch der zusammengesetzte Zustand aktiviert wird, die Aufrufreihenfolge „von außen nach innen“ lautet: äußerer Zustand EXIT, zusammengesetzter Zustand ENTRY, innerer Zustand ENTRY, zusammengesetzter Zustand DO, innerer Zustand DO. Im Beispielprojekt:
- State1__Exit
- Comp1_Entry
- State2__Entry
- Comp1_Do
- State2__Do
- dass ein innerer zusammengesetzter Zustand über eine (Pseudo-) Ausnahmetransition des äußeren zusammengesetzten Zustands verlassen werden kann (im Beispielprojekt über die Transitionen: eLeaveComp1_ToState1, eLeaveComp1_ToComp3).
- dass, wenn ein zusammengesetzter Zustand z.B. über eine (Pseudo-) Ausnahmetransition verlassen wird, die Aufrufreihenfolge „von innen nach außen“ lautet: innerer Zustand EXIT, ggf. innerer zusammengesetzter Zustand EXIT, äußerer zusammengesetzter Zustand EXIT, äußerer Zustand ENTRY. Im Beispielprojekt:
- State4__Exit
- Comp2_Exit
- Comp1_Exit
- State1__Entry / State7__Entry
- dass bei einem zusammengesetzten Zustand mit mehreren Regionen zuerst die Region mit der höheren Priorität, d.h. mit der niedrigeren Prioritätszahl, aufgerufen wird. Im Beispielprojekt:
- State7__Entry
- State7__Do
- State6__Entry
- State6__Do
Taskzyklus-IDs => Zuordnung des Aufrufs zur Zyklus-ID
Jede ENTRY-/DO-/EXIT-Aktion, die in einem Zustand oder in einem zusammengesetzten Zustand aufgerufen wird, speichert die Zyklus-ID des jeweils ersten und letzten Aufrufs. Dadurch wird veranschaulicht, in welchem Zyklus welcher Aufruf stattfindet, sodass ersichtlich ist:
- dass, wenn ein Zustand aktiviert wird, die ENTRY- und die DO-Aktion innerhalb desselben Zyklus aufgerufen werden.
Im Screenshot „Visu_B_CallingOrder_CycleNr“ des ZIPs: - State1 / ENTRY-Call: 516 (ID des Zyklus, in dem der Aufruf stattfand)
- State1 / DO-First Call: 516
- dass, wenn ein Zustand verlassen wird, die EXIT-Aktion im darauffolgenden Zyklus des letzten DO-Aufrufs aufgerufen wird.
Im Screenshot „Visu_B_CallingOrder_CycleNr“ des ZIPs: - State1 / DO-Last Call: 1415
- State1 / EXIT-Call: 1416
- dass, wenn ein Zustand verlassen wird, die EXIT-Aktion dieses Zustands im selben Zyklus aufgerufen wird wie die ENTRY- und DO-Aktion des aktivierten Zustands.
Im Screenshot „Visu_B_CallingOrder_CycleNr“ des ZIPs: - State2 / DO-Last Call: 1762
- State2 / EXIT-Call: 1763
- State3 / ENTRY-Call: 1763
- State3 / DO-First Call: 1763
- dass, wenn ein Zustand verlassen und ein zusammengesetzter Zustand mit einer Region und eigenen Aktionen aktiviert wird, die EXIT-Aktion des verlassenen Zustands im selben Zyklus aufgerufen wird wie die ENTRY- und DO-Aktion des aktivierten (zusammengesetzten) Zustands.
Im Screenshot „Visu_B_CallingOrder_CycleNr“ des ZIPs: - State1 / DO-Last Call: 1415
- State1 / EXIT-Call: 1416
- CompositeState1 / ENTRY-Call: 1416
- State2 / ENTRY-Call: 1416
- CompositeState1 / DO-First Call: 1416
- State2 / DO-First Call: 1416
- dass, wenn ein zusammengesetzter Zustand mit einer Region und eigenen Aktionen über eine Pseudo-Ausnahmetransition verlassen wird, die EXIT-Aktion des verlassenen (zusammengesetzten) Zustands im selben Zyklus aufgerufen wird wie die ENTRY- und DO-Aktion des aktivierten Zustands.
Im Screenshot „Visu_B_CallingOrder_CycleNr“ des ZIPs: - CompositeState1 / DO-Last Call: 2367
- CompositeState2 / DO-Last Call: 2367
- State4 / DO-Last Call: 2367
- State4 / EXIT-Call: 2368
- CompositeState2 / EXIT-Call: 2368
- CompositeState1 / EXIT-Call: 2368
- State7 / ENTRY-Call: 2368
- State7 / DO-First Call: 2368
- State6 / ENTRY-Call: 2368
- State6 / DO-First Call: 2368
- dass, wenn ein zusammengesetzter Zustand mit einer Region und eigenen Aktionen über eine Ausnahmetransition verlassen wird, die EXIT-Aktion des verlassenen (zusammengesetzten) Zustands im selben Zyklus aufgerufen wird wie der letzte Aufruf der DO-Aktion des verlassenen (zusammengesetzten) Zustands und wie die ENTRY- und DO-Aktion des aktivierten Zustands. Zum Beispiel (nicht im Screenshot „Visu_B_CallingOrder_CycleNr“ des ZIPs dargestellt):
- CompositeState1 / DO-Last Call: 1050
- CompositeState2 / DO-Last Call: 1050
- State4 / DO-Last Call: 1050
- State4 / EXIT-Call: 1050
- CompositeState2 / EXIT-Call: 1050
- CompositeState1 / EXIT-Call: 1050
- State1 / ENTRY-Call: 1050
- State1 / DO-First Call: 1050
Visualisierung
Ergänzend zu dem komfortablen Online-Modus des UML SC Diagramms können das Verhalten der Zustandsmaschine sowie die Werte der Zähler, der Tabelle und der Taskzyklus-IDs über die Visualisierungen verfolgt werden. Außerdem befinden sich auf der Visualisierung Schalter, um zwischen den Zuständen hin- und herzuschalten sowie um die Werte zurückzusetzen.
Um den Einstieg in das Beispielprojekt zu erleichtern, sind zwei Visualisierungen mit einem unterschiedlichen Informationsgehalt enthalten:
- Visu_A_CallingOrder enthält:
- Zähler => Aufrufhäufigkeit
- Eintragung der aufgerufenen Zustandsaktion in ein Array => Aufrufreihenfolge
- Visu_B_CallingOrder_CycleNr erweitert Visu_A um:
- Taskzyklus-IDs => Zuordnung des Aufrufs zur Zyklus-ID
![]() | Die Werte der Transitionsbedingungen können Sie nicht nur über die Visualisierung oder über den Deklarationseditor des FBs, sondern auch direkt über das UML SC Diagramm verändern. |
Falls eine Transition aus nur einer Transitionsvariablen besteht, kann der Wert der Variablen per Doppelklick auf den Monitoring-Wert fürs Schreiben oder Forcen verändert werden. Ist ein Wert fürs Schreiben oder Forcen vorbereitet worden, ist dies an der oberen rechten Ecke des Monitoring-Bereichs sichtbar (siehe auch: Online-Modus).