Eine Kontrollknoten (engl. ControlNode) ist ein Modellelement in der Unified Modeling Language (UML), einer Modellierungssprache für Software und andere Systeme.
Kontrollknoten werden bei der Spezifikation von Aktivitäten verwendet. Sie stellen spezielle Aktivitätsknoten dar, bei denen Objekt- und Kontrollflüsse koordiniert werden.
Arten von Kontrollknoten
Startknoten
Ein Startknoten (engl. InitialNode) ist ein Knoten, bei dem Kontrolltoken in die Aktivität eingespeist werden, wenn die Aktivität aufgerufen wird.
Endknoten
Ein Endknoten (engl. FinalNode) ist ein Knoten, bei dem ein Fluss in einer Aktivität endet. Die UML unterscheidet zwischen Endknoten für Flüsse und Endknoten für Aktivitäten, die mit eintreffenden Token jeweils unterschiedlich umgehen. Erreicht ein Token einen Endknoten für Aktivitäten, wird das Token konsumiert und die Aktivität terminiert, unabhängig davon, ob allenfalls noch andere Token in der Aktivität fließen. Im Gegensatz dazu läuft die Aktivität weiter, wenn ein Token einen Endknoten für Flüsse erreicht und noch zusätzliche Token in der Aktivität fließen.
Parallelisierungsknoten
Ein Parallelisierungsknoten (engl. ForkNode) hat genau eine einführende Kante. Token, die den Knoten über diese Kante erreichen, werden vervielfacht, so dass eine Kopie über jede ausgehende Kante geschickt werden kann.
Synchronisationsknoten
Ein Synchronisationsknoten (engl. JoinNode) hat mehrere eingehende und eine ausgehende Kante. Der Knoten erwartet im Normalfall ein Token auf jeder eingehenden Kante, bevor er ein Token an die ausgehende Kante weitergibt. Varianten davon sind aber möglich, indem dem Knoten eine Synchronisationsspezifikation (engl. JoinSpecification) zugeordnet wird. Diese könnte zum Beispiel regeln, dass ein Token genau dann weiterzugeben ist, wenn an mindestens zwei eingehenden Kanten ein Token anliegt.
Verzweigungsknoten
Ein Verzweigungsknoten (engl. DecisionNode) ist eine Gabelung im Tokenfluss. Token, die einen Verzweigungsknoten über eine eingehende Kante erreichen, verlassen ihn über genau eine ausgehende Kante. Es sind die Guards der ausgehenden Kanten, die bestimmen, über welche Kante das ausgehende Token den Verzweigungsknoten verlässt.
Verbindungsknoten
Ein Verbindungsknoten (engl. MergeNode) führt mehrere eingehende Flüsse zusammen. Im Gegensatz zum Synchronisationsknoten synchronisiert der Verbindungsknoten diese Flüsse nicht. Jedes Token, das an einer der eingehenden Kanten anliegt, wird über die ausgehende Kante weitergereicht.
Unterschiede zur UML 1.x
Die Kontrollknoten wurden in der UML2 neu eingeführt.