Ein Objektfluss (engl. ObjectFlow) ist ein Modellelement in der Unified Modeling Language (UML), einer Sprache für die Modellierung der Strukturen und des Verhaltens von Software- und anderen Systemen.
Ein Objektfluss ist eine spezielle Aktivitätskante in einer Aktivität. Er verbindet Objektknoten und Kontrollknoten. Er kann nie eine Aktion direkt mit einem Objektknoten oder mit einem Kontrollknoten verbinden, sondern immer nur indirekt über Pins, die der Aktion zugeordnet sind.
Ein Modellierer kann die „Leitfähigkeit“ eines Objektflusses auf zwei Arten steuern. Erstens kann er den Objektfluss mit einer so genannten Guard versehen, einem Booleschen Ausdruck, der immer dann ausgewertet wird, wenn die produzierende Aktion dem Objektfluss ein Token anbietet. Das Token kann nur fließen, wenn dieser Ausdruck als wahr ausgewertet wird. Zweitens kann der Objektfluss mit einem Gewicht (engl. weight) versehen werden. Das Gewicht ist eine positive Zahl. Sie gibt an, wie viele Token im Minimum im Quell-Objektknoten vorliegen müssen, bevor alle bereitstehenden Token gemeinsam über den Objektfluss fließen. Das Gewicht ist also ein Modellierungsparameter, der eine Art „Paketgröße“ für Objektflüsse festlegt.
Ein Objektfluss ist mehr als ein Transportkanal zwischen zwei Objektknoten, denn ihm sind zwei eigene Instrumente zugeordnet, um den Fluss der Token durch eine Aktivität zu beeinflussen:
- Auswahl-Verhalten (engl. selection behavior): Ein Objektfluss kann mit Hilfe eines Auswahl-Verhaltens die Objekte beim Quell-Objektknoten auswählen, die über ihn fließen sollen. Der Quell-Objektknoten bietet also alle bereitstehenden Objekte an, während die Spezifikation des Auswahl-Verhaltens bestimmt, welche Objekte tatsächlich fließen. Ein Auswahl-Verhalten kann in einer der zulässigen Formen für eine Verhaltensspezifikation formuliert sein, zum Beispiel als Aktivität, Interaktion oder als Zustandsautomat.
- Transformations-Verhalten (engl. transformation behavior): Mit einem optionalen Transformations-Verhalten kann ein Objektfluss spezifizieren, wie ein Objekt, das über den Objektfluss fließt, verändert wird.
Notation
Unterschied zur UML 1.x
Das Objektfluss-Modellelement wurde in der UML2 neu eingeführt.