Hier lernen Sie, wie Übergänge in PAgraph verwaltet werden.

Erstellen von Übergängen

Übergänge können nur im grafischen Bereich erstellt werden. Sie können nur zwischen zwei vorhandenen Elementen erstellt werden, da diese immer ein definiertes Quell- und Zielelement erfordern.

Sie haben folgende Optionen, um Übergänge zu erstellen:

  • Erstellen Sie automatisch einen Übergang, wenn Sie ein neues Element erstellen, indem Sie es in den Diagrammbereich ziehen. Es wird automatisch ein Übergang zwischen Quell- und Zielelement erstellt.
  • Erstellen Sie nachträglich Übergänge, indem Sie zwischen zwei vorhandenen Elementen im Diagrammbereich ziehen.
Abbildung 44. Erstellen eines neuen Übergangs zwischen zwei vorhandenen Zuständen durch Ziehen
Diagramm, das anzeigt, wie ein neuer Übergang von State1 in State 2 gezogen wird.

Alle in der Toolbox enthaltenen Elemente sind als Quell- oder Zielelement zulässig, mit Ausnahme der folgenden:

  • Comment
  • Do4Ever
  • DoAtStateChange

Verschieben eines Übergangs

Ein Übergang muss immer ein Quell- und ein Zielelement enthalten. Daher können Sie einen Übergang nicht in den leeren Diagrammbereich ziehen.

Um einen Übergang zu verschieben, müssen Sie ihn im Diagrammbereich markieren. Anschließend können Sie die ausgewählten Start- oder Endpunkte des Übergangs in das gewünschte Quell- oder Zielelement ziehen. Der Übergang wird in dieses Element verschoben, wenn er als neuer Start- oder Endpunkt zulässig ist.

In der folgenden Abbildung wird links der Ausgangszustand geändert und rechts ist der Zielzustand.

Abbildung 45. Verschieben von Übergängen

Diagramm, das die Änderung des Ausgangszustands anzeigt.

Umbenennen eines Übergangs

Benennen Sie Übergänge in Ihren Diagrammen um, um die Namen im Code-, Explorer- und Diagrammbereich anzuzeigen.

Übergänge haben nach ihrer Erstellung keinen Namen. In der Codeansicht und im Explorer werden Übergänge mit dem Zustand beschriftet, zu dem der Übergang führt. Beispiel: zu state 2 (2). Namen für solche Übergänge werden im Diagrammbereich nicht angezeigt. Wenn Sie die Übergänge benennen, wird der Name in der Codeansicht, im Explorer und im Diagrammbereich angezeigt.

Sie haben folgende Optionen, um Übergänge umzubenennen:

  • Wählen Sie den markierten Übergang im Diagrammbereich aus und drücken Sie <F2>.
  • Wählen Sie im Diagrammbereich aus dem Kontextmenü die Option Rename aus.

In beiden Fällen wird die Anzeige des Übergangsnamens zu einem Eingabefeld. Sie können den neuen Namen im Eingabefeld eingeben.

Sie können den Namen zurücksetzen, so dass der Diagrammbereich nicht angezeigt wird. Gehen Sie zum Zurücksetzen des Namens wie folgt vor:

  1. Wechseln Sie in den Bearbeitungsmodus.
  2. Löschen Sie den Namen aus dem Eingabefeld.

Löschen von Übergängen

Sie haben folgende Optionen, um Übergänge zu löschen:

  • Wählen Sie im Explorer oder Diagrammbereich den Übergang aus und drücken Sie <Entf>.
  • Wählen Sie im Explorer oder Diagrammbereich aus dem Kontextmenü die Option Delete aus.
Wichtig Nach dem Löschen eines Übergangs kann die Aktion nicht rückgängig gemacht werden.

Übergänge mit und ohne Bedingung

Übergänge, die keinen Programmcode für die Bedingung enthalten, sind als Pfeile mit durchgehender Linie gekennzeichnet. Übergänge, die eine Bedingung enthalten, werden durch Pfeile mit gepunkteter Linie dargestellt.

Tabelle 67. Darstellung von Übergängen
Bedingung Anzeige im Diagramm Anzeige im Explorer
Keine Bedingung
Vertikaler Pfeil mit durchgehender Linie mit der Beschriftung &quot;Transition 1&quot;.


Durchgehende horizontale Linie links von &quot;Transition 1&quot; im Explorer.

Mit Bedingung
Vertikaler Pfeil mit gepunkteter Linie mit der Beschriftung &quot;Transition 2&quot;.


Gepunktete horizontale Linie links von &quot;Transition 2&quot; im Explorer.

Der Programmcode für die Bedingung wird in den Codeeintrag für Übergänge in der Codeansicht eingegeben.

Abfolge von Übergängen

Die Abfolge von Übergängen gilt, wenn die Bedingungen von mindestens zwei Übergängen, die vom aktiven Zustand wegführen, gleichzeitig erfüllt sind.

Ein Übergang wird ausgeführt, wenn die Übergangsbedingung erfüllt ist oder wenn der Übergang keine Bedingung hat. Wenn der aktive Zustand zwei Übergänge mit einer erfüllten Bedingung gleichzeitig hat, ist die Reihenfolge der Übergänge im Explorer kritisch.

Tipp Öffnen Sie zum Ändern der Reihenfolge der Übergänge das Kontextmenü im Explorer. Wählen Sie Move up oder Move down aus.

Beispiel 1


State 1 ohne Bedingung für Übergang 1 und eine Bedingung für Übergang 2.

In diesem Beispiel hat Transition 1 keine Bedingung. Transition 2 hat eine Bedingung. Transition 2 wird erst nach Transition 1 geprüft. Außerdem wird Transition 1 immer ausgeführt. Daher wird Transition 2 nie ausgeführt.

Beispiel 2


State 1, in dem Übergang 1 nach Übergang 2 geprüft wird.

In diesem Beispiel wird Transition 1 nach Transition 2 geprüft. Wenn die Bedingung für Transition 2 erfüllt ist, wird Transition 2 ausgeführt. Transition 1 wird nicht ausgeführt. Wenn die Bedingung für Transition 2 nicht erfüllt ist, wird Transition 1 ausgeführt.

Verwenden von Biegepunkten

Übergänge werden immer als gerade Linie zwischen Quell- und Zielelement erstellt. Durch das Einfügen von Biegepunkten können Sie die Anordnung und Position dieser Linien beeinflussen.

Einfügen von Biegepunkten

Öffnen Sie zum Einfügen von Biegepunkten am entsprechenden Übergang das Kontextmenü und wählen Sie daraus die Option Insert Point aus. Sie können diesen Vorgang beliebig oft wiederholen.

Positionieren von Biegepunkten

Bewegen Sie die Maus über den Biegepunkt, bis sich der Zeiger in einen Pfeil ändert, der in vier Richtungen zeigt. Greifen Sie den Biegepunkt mit der Maus und ziehen Sie ihn an die gewünschte Position.

Abbildung 46. Verschieben von Biegepunkten
Diagramm, das eine Übergangslinie mit verschiebbaren Biegepunkten zwischen State 1 und State 2 anzeigt.

Wenn eine Biegung genau bei 90° liegt, wird die Ecke abgerundet.

Entfernen eines Biegepunkts

Bewegen Sie zum Entfernen eines Biegepunkts die Maus im Diagrammbereich über diesen Biegepunkt, bis die Maus als Zeiger dargestellt wird. Öffnen Sie das Kontextmenü und wählen Sie Remove point aus.

Stopp

Ein Stopp bei einem Übergang bewirkt, dass der Nachfolgezustand erst im nächsten Aufrufzyklus des Zustandsautomaten eingegeben wird. Ohne diesen Stopp wird der nächste Zustand sofort aktiviert und der Programmcode im Initialisierungsteil ausgeführt.

Alle Übergänge werden per Standardeinstellung ohne Stopp erstellt. Wenn ein Stopp gewünscht wird, muss dieser explizit erstellt werden.

Sie können einen Stopp mit einer der folgenden Methoden erstellen:

  • Ziehen Sie ein Stop-Element aus der Toolbox in den Diagrammbereich. In diesem Fall müssen Sie manuell die beiden Übergänge erstellen, die zum Stopp führen oder von diesem weggehen.
  • Wählen Sie Stop aus dem Kontextmenü für einen vorhandenen Übergang aus.
Hinweis Sie können auf ein Stop-Element im Diagrammbereich klicken, aber keinen Programmcode dafür speichern.
Tipp Öffnen Sie zum Entfernen eines Stopps aus einem Übergang das Stop-Element aus dem Kontextmenü und klicken Sie auf Remove stop.

Zustandsautomat mit AnyTransitions

AnyTransitions werden immer zu Beginn eines Zyklus geprüft, bevor der Code des aktuellen Zustands ausgeführt wird. Der Code des Exit-Teils eines Zustands wird ausgeführt, bevor zum AnyTransition gewechselt wird.

Beispiel

Abbildung 47. Zustandsautomat mit AnyTransition
Diagramm eines Zustandsautomaten mit AnyTransition.

Nehmen Sie im Beispiel den Fall, dass State 1 zu Beginn eines neuen Zyklus aktiv ist. Außerdem ist die Bedingung von AnyTransition 1 erfüllt. Dann ergibt sich folgende Abfolge für die Codeausführung:

  1. exit-Teil von State 1
  2. activity-Teil von AnyTransition 1
  3. init-Teil von State 3
  4. cyclic-Teil von State 3
Hinweis Die Bedingung eines AnyTransition wird nur geprüft, wenn der AnyTransition einen Folgezustand hat. Ein AnyTransition ohne Folgezustand wird weder geprüft noch wird der activities-Teil ausgeführt.

AnyTransitions werden einmal in jedem Zyklus geprüft und bei Bedarf ausgeführt. Wenn kein Stop zwischen zwei Zuständen definiert ist, werden die AnyTransitions vor dem Eintritt in den nächsten Zustand nicht erneut geprüft.