UML Activity Diagrams: Guidelines

 

Veröffentlicht: Juli 2016

Die neueste Dokumentation zu Visual Studio 2017 finden Sie unter Dokumentation zu Visual Studio 2017.

In Visual Studio können Sie ein Aktivitätsdiagramm zeichnen, um einen Geschäftsprozess oder einen Softwarealgorithmus als Arbeitsfluss zu beschreiben, der eine Reihe von Aktionen durchläuft. Diese Aktionen können von Personen, Softwarekomponenten oder Geräten ausgeführt werden. Unter Erfassen von Geschäftsworkflows mithilfe von Aktivitätsdiagrammen finden Sie eine Videodemonstration.

Welche Versionen von Visual Studio dieses Feature unterstützen, finden Sie unter Versionsunterstützung für Architektur- und Modellierungstools.

Wenn Sie ein UML-Aktivitätsdiagramm erstellen möchten, klicken Sie im Menü Architektur auf Neues UML- oder Ebenendiagramm.

Sie können ein Aktivitätsdiagramm für viele Zwecke verwenden:

Prozesse lassen sich durch das Zeichnen eines Aktivitätsdiagramms optimieren. Wenn sich das Diagramm eines vorhandenen Prozesses als sehr komplex erweist, können Sie überlegen, wie der Prozess vereinfacht werden kann.

Referenzinformationen zu den Elementen in Aktivitätsdiagrammen finden Sie unter UML Activity Diagrams: Reference.

Beziehung zu anderen Diagrammen

Grundlegende Schritte zum Zeichnen von Aktivitätsdiagrammen

Beschreiben der Ablaufsteuerung

Beschreiben des Datenflusses

Definieren einer Aktion im Detail

Parallele Flüsse

Wenn Sie ein Aktivitätsdiagramm zeichnen, um einen Geschäftsprozess oder die Art und Weise der Verwendung des Systems durch Benutzer zu beschreiben, können Sie ein Anwendungsfalldiagramm zeichnen, das eine andere Ansicht der gleichen Informationen liefert. Im Anwendungsfalldiagramm zeichnen Sie Aktionen als Anwendungsfälle. Weisen Sie den Anwendungsfällen den gleichen Namen zu wie den entsprechenden Aktionen. Die Anwendungsfallansicht bietet Ihnen folgende Vorteile:

  • Sie können in einem Diagramm mithilfe einer Includes-Beziehung darstellen, wie größere Aktionen/Anwendungsfälle aus kleineren Aktionen/Anwendungsfällen zusammengesetzt sind.

  • Sie können jede Aktion bzw. jeden Anwendungsfall explizit mit den Benutzern oder externen Systemen verknüpfen, die an der Ausführung beteiligt sind.

  • Sie können Begrenzungen um die vom System unterstützten Aktionen/Anwendungsfälle oder jede Hauptkomponente zeichnen.

Sie können auch ein Aktivitätsdiagramm zeichnen, um den Detailentwurf eines Softwarevorgangs zu beschreiben.

In einem Aktivitätsdiagramm können Sie den Fluss der zwischen Aktionen übergebenen Daten darstellen. Weitere Informationen finden Sie im Abschnitt Beschreiben des Datenflusses. Ein Aktivitätsdiagramm beschreibt jedoch nicht die Struktur der Daten. Zu diesem Zweck können Sie ein UML-Klassendiagramm zeichnen. Informationen hierzu finden Sie unter UML Class Diagrams: Guidelines.

Eine ausführliche Beschreibung der Schritte zum Erstellen der Modellierungsdiagramme finden Sie unter Edit UML models and diagrams.

So zeichnen Sie ein Aktivitätsdiagramm

  1. Klicken Sie im Menü Architektur auf Neues UML- oder Ebenendiagramm.

  2. Klicken Sie unter Vorlagen auf UML-Aktivitätsdiagramm.

  3. Benennen Sie das Diagramm.

  4. Wählen Sie unter Zu Modellierungsprojekt hinzufügen ein in der Projektmappe vorhandenes Modellierungsprojekt aus, oder wählen Sie Neues Modellierungsprojekt erstellen aus.

So zeichnen Sie Elemente in einem Aktivitätsdiagramm

  1. Ziehen Sie Elemente aus der Toolbox in das Diagramm.

    Fügen Sie zunächst die Hauptaktivitäten in das Diagramm ein, verbinden Sie sie, und nehmen Sie dann letzte Änderungen vor, indem Sie z. B. den Start- und Endknoten hinzufügen.

    System_CAPS_ICON_note.jpg Hinweis

    Sie können keine vorhandenen Elemente aus dem UML-Modell-Explorer in das Diagramm ziehen.

  2. Gehen Sie folgendermaßen vor, um die Elemente zu verbinden:

    1. Klicken Sie in der Toolbox Aktivitätsdiagramm auf Konnektor.

    2. Klicken Sie im Diagramm auf das Quellelement.

    3. Klicken Sie auf das Zielelement.

      System_CAPS_ICON_note.jpg Hinweis

      Um ein Tool mehrmals zu verwenden, doppelklicken Sie in der Toolbox auf das Tool.

So verschieben Sie eine Aktivität in ein anderes Paket

  • Ziehen Sie im UML-Modell-Explorer die Aktivität in ein Paket.

    - oder -

  • Klicken Sie im UML-Modell-Explorer mit der rechten Maustaste auf die Aktivität, und klicken Sie auf Ausschneiden. Klicken Sie dann mit der rechten Maustaste auf das Paket, und klicken Sie auf Einfügen.

    System_CAPS_ICON_note.jpg Hinweis

    Die Aktivität wird erst dann im UML-Modell-Explorer angezeigt, wenn Sie dem Diagramm das erste Element hinzufügen.

Ein Aktivitätsdiagramm beschreibt einen Geschäftsprozess oder einen Softwarealgorithmus als eine Reihe von Aktionen. Konnektorpfeile stellen dar, wie die Kontrolle nacheinander von einer Aktion an die nächste übergeben wird. Normalerweise kann eine Aktion erst gestartet werden, nachdem die vorherige Aktion abgeschlossen wurde.

In der folgenden Beispielabbildung wird gezeigt, wie Sie eine Sequenz von Aktionen mit Aktionen, Konnektoren, Verzweigungen und Schleifen darstellen können. In den folgenden Abschnitten wird jedes Element ausführlicher erläutert.

Einfaches Aktivitätsdiagramm

Aktivitätsdiagramme beschreiben das System oder die Anwendung mithilfe von Aktionen und Konnektoren als eine Reihe von Aktionen, wobei die Kontrolle nacheinander von einer Aktion auf die nächste übergeht.

  • Erstellen Sie eine Aktion (1) für jede Hauptaufgabe, die von einem Benutzer, dem System oder beiden gemeinsam ausgeführt wird.

    System_CAPS_ICON_note.jpg Hinweis

    Versuchen Sie, den Prozess oder Algorithmus mit nur einigen wenigen Aktionen zu beschreiben. Mithilfe von Aktionen zum Aufrufen eines Verhaltens können Sie jede Aktion in einem eigenen Diagramm ausführlicher definieren, wie unter Beschreiben von Unteraktivitäten mit Aktionen zum Aufrufen eines Verhaltens beschrieben.

  • Stellen Sie sicher, dass der Titel jeder Aktion das standardmäßige Resultat der Aktion eindeutig angibt.

  • Verknüpfen Sie die Aktionen nacheinander mithilfe von Konnektoren (2).

  • Jede Aktion endet, bevor die nächste Aktion in der Ablaufsteuerung beginnt. Wenn Sie Aktionen beschreiben möchten, die sich überschneiden, verwenden Sie einen Gabelungsknoten, wie im Abschnitt Parallele Flüsse beschrieben.

Das Diagramm beschreibt zwar die Aktionsfolge, jedoch nicht, wie die Aktionen ausgeführt werden, oder wie die Kontrolle von einer Aktion an die nächste übergeben wird. Wenn Sie mithilfe des Diagramms einen Geschäftsprozess darstellen, kann die Kontrolle z. B. übergeben werden, wenn eine Person eine E-Mail-Nachricht an eine andere Person sendet. Wenn Sie mithilfe des Diagramms einen Softwareentwurf darstellen, wird die Kontrolle möglicherweise durch den normalen Ausführungsfluss von einer Anweisung an die nächste übergeben.

Beschreiben von Entscheidungen und Schleifen

  • Geben Sie mit einem Entscheidungsknoten (3) einen Punkt an, an dem das Ergebnis einer Entscheidung den nächsten Schritt bestimmt. Sie können beliebig viele ausgehende Pfade zeichnen.

  • Wenn Sie mithilfe des Aktivitätsdiagramms einen Teil einer Anwendung definieren, sollten Sie die Wächter (4) definieren, um eindeutig anzugeben, unter welchen Bedingungen die einzelnen Pfade verwendet werden sollten. Klicken Sie mit der rechten Maustaste auf den Konnektor, klicken Sie auf Eigenschaften, und geben Sie dann im Eigenschaftenfenster einen Wert für das Feld Guard ein.

  • Es ist nicht immer erforderlich, die Wächter zu definieren. Wenn Sie z. B. mithilfe des Aktivitätsdiagramms einen Geschäftsprozess oder ein Interaktionsprotokoll beschreiben, definiert eine Verzweigung den Bereich von Optionen, die für den Benutzer oder die interagierenden Komponenten verfügbar sind.

  • Verwenden Sie einen Zusammenführungsknoten (5), um zwei oder mehr alternative Flüsse zusammenzuführen, die sich an einem Entscheidungsknoten verzweigt haben.

    System_CAPS_ICON_note.jpg Hinweis

    Führen Sie alternative Flüsse mithilfe eines Zusammenführungsknotens zusammen, statt sie an einer Aktion zusammenzuführen. Im Beispiel wäre es nicht richtig, den Entscheidungsknoten direkt wieder mit Gericht wählen zu verbinden. Der Grund hierfür ist, dass eine Aktion erst gestartet wird, wenn alle Kontrollthreads an allen Eingangskonnektoren angekommen sind. Daher sollten Sie nur parallele Flüsse an einer Aktion zusammenführen. Weitere Informationen finden Sie unter Parallele Flüsse.

  • Beschreiben Sie Schleifen mithilfe von Verzweigungen, wie im Beispiel gezeigt.

    System_CAPS_ICON_note.jpg Hinweis

    Versuchen Sie, Schleifen wie in Programmcode in einer sinnvollen Struktur zu schachteln. Wenn Sie einen vorhandenen Geschäftsprozess beschreiben, lassen sich hierdurch eventuell Verbesserungsmöglichkeiten erkennen.

Starten der Aktivität

Es gibt zwei Möglichkeiten, Einstiegspunkte einer Aktivität anzugeben:

  • Startknoten

    Erstellen Sie einen Startknoten (6), um die erste Aktion der Aktivität anzugeben.

    Diese Methode ist besonders hilfreich, wenn Sie eine Unteraktivität beschreiben, oder wenn Sie nicht explizit angeben müssen, wodurch die Aktivität ausgelöst wird. Beispielsweise beginnt die Aktivität „Gericht bestellen“ zweifelsfrei, wenn ein Kunde hungrig wird.

  • Knoten zum Akzeptieren eines Ereignisses

    Erstellen Sie einen Knoten zum Akzeptieren eines Ereignisses, wie im Abschnitt Parallele Flüsse beschrieben, um den Anfang eines Threads anzugeben, der auf ein bestimmtes Ereignis wie z. B. eine Benutzereingabe reagiert. Geben Sie keinen eingehenden Fluss für den Knoten an. Wenn kein eingehender Fluss angegeben wird, bedeutet dies, dass bei jedem Eintreten des Ereignisses ein Thread gestartet wird.

    Diese Methode ist besonders hilfreich, wenn Sie eine Reaktion auf ein bestimmtes externes Ereignis beschreiben.

Beenden der Aktivität

Verwenden Sie einen Aktivitätsendknoten (7), um das Ende einer Aktivität anzugeben.

  • Wenn ein Kontrollthread einen Aktivitätsendknoten erreicht, werden alle gleichzeitigen Aktionen und Unteraktivitäten der Aktivität beendet.

  • Sie können mehrere Aktivitätsendknoten verwenden, um durch eine geringere Anzahl von Konnektoren die Übersichtlichkeit zu verbessern.

Unterbrechen der Aktivität

Um zu beschreiben, wie der normale Fluss einer Aktivität unterbrochen werden kann, beispielsweise wenn sich der Benutzer entscheidet, den Vorgang abzubrechen, können Sie einen Knoten zum Akzeptieren eines Ereignisses erstellen, der auf dieses Ereignis lauscht. Weitere Informationen finden Sie im Abschnitt Parallele Flüsse. Erstellen Sie eine Ablaufsteuerung von diesem Knoten zu einem Aktivitätsendknoten (7).

Verantwortlichkeitsbereiche

Manchmal ist es sinnvoll, die Aktionen einer Aktivität in Bereiche aufzuteilen, die unterschiedlichen Objekten oder Geschäftsrollen entsprechen, die die Aktionen ausführen. Diese Bereiche werden herkömmlicherweise in Spalten angeordnet und als Verantwortlichkeitsbereiche bezeichnet.

  • Zeichnen Sie Verantwortlichkeitsbereiche oder andere Bereiche mithilfe von Linien oder Rechtecken aus dem Abschnitt Einfache Formen der Toolbox.

  • Um die einzelnen Verantwortlichkeitsbereiche zu beschriften, erstellen Sie einen Kommentar, und legen Sie dessen Eigenschaft Transparent auf True fest.

Einfache Formen sind kein Bestandteil des UML-Modells und werden nicht im UML-Modell-Explorer angezeigt.

Sie können die eingehenden und ausgehenden Daten einer Aktivität auf zweierlei Weise beschreiben:

  • Mit einem Objektknoten. Dies ist die einfachste Methode, um die zwischen Aktivitäten fließenden Informationen zu beschreiben. Ein Objektknoten ist mit einer Variablen in einem Programm vergleichbar. Er stellt ein Element dar, das einen oder mehrere Werte speichert, die zwischen Aktionen übergeben werden.

  • Mit einem Ausgabepin und einem Eingabepin. Mit dieser Methode können Sie die Ausgaben einer Aktion und die Eingaben einer anderen Aktion getrennt beschreiben. Pins sind mit Parametern in einem Programm vergleichbar. Pins stellen Ports dar, an denen Objekte in eine Aktion eintreten und eine Aktion verlassen können.

    System_CAPS_ICON_note.jpg Hinweis

    Eine Übersicht über die in diesem Abschnitt verwendeten Elemente finden Sie im Abschnitt „Datenflüsse“ der UML Activity Diagrams: Reference.

Beschreiben des Datenflusses mit Objektknoten

Die meisten Ablaufsteuerungen übertragen Daten. Beispielsweise überträgt der Ausgabefluss der Aktion „Kunde gibt Details an“ einen Verweis auf die Lieferadresse.

Wenn Sie diese Daten im Diagramm beschreiben möchten, können Sie einen Konnektor durch einen Objektknoten und zwei Konnektoren ersetzen, wie in der folgenden Abbildung gezeigt.

Objektknoten können zwischen Aktionen übergebene Daten anzeigen

Beachten Sie, dass die Rechtecke mit abgerundeten Ecken, z. B. „Waren senden“, Aktionen darstellen, bei denen eine Verarbeitung erfolgt. Die Rechtecke mit rechtwinkligen Ecken, z. B. „Lieferadresse“, stellen einen Fluss von Objekten zwischen zwei Aktionen dar.

Weisen Sie dem Objektknoten einen Namen zu, der die Rolle des Knotens als Kanal oder Puffer der Objekte widerspiegelt, die zwischen den Aktionen übertragen werden.

Sie können den Typ des Objektknotens im Eigenschaftenfenster festlegen. Der Typ kann ein primitiver Typ wie z. B. „Integer“ oder eine Klasse, Schnittstelle oder Enumeration sein, die Sie in einem Klassendiagramm definiert haben. Sie können z. B. die Klasse „Lieferadresse“ mit den Attributen „Anschrift“, „Ort“ usw. zusammen mit einer Zuordnung zur Klasse „Kunde“ erstellen. Weitere Informationen finden Sie unter UML Class Diagrams: Guidelines.

System_CAPS_ICON_note.jpg Hinweis

Wenn Sie den Namen eines Typs eingeben, der noch nicht definiert wurde, wird im UML-Modell-Explorer unter Nicht spezifizierte Typen ein Element hinzugefügt. Wenn Sie anschließend einen Typ dieses Namens in einem Klassendiagramm definieren, setzen Sie den Typ des Objektknotens zurück, sodass er auf den neuen Typ verweist.

Puffern von Daten in Objektknoten

Ein Objektknoten kann als Puffer für mehrere Objekte fungieren. In der folgenden Abbildung zeigt die Ablaufsteuerung, dass der Benutzer die Schleife „[weitere auswählen]“ (1) mehrfach durchlaufen kann, während die vom Benutzer ausgewählten Gerichte im Objektknoten „Gewählte Gerichte“ (2) gesammelt werden. Wenn schließlich die Auswahl durch den Benutzer abgeschlossen ist, geht die Kontrolle an die Aktion „Bestellung bestätigen“ (3) über, mit der die vollständige Liste der ausgewählten Elemente aus dem Puffer „Gewählte Gerichte“ akzeptiert wird.

Puffern von Daten in Objektknoten

Sie können angeben, wie die Elemente in einem Puffer gespeichert werden, indem Sie Eigenschaften des Objektknotens festlegen:

  • Legen Sie die Eigenschaft Ordering fest:

    • Unordered, um eine zufällige oder nicht angegebene Sortierung festzulegen. (Standardeinstellung)

    • Ordered, um eine Sortierung nach einem bestimmten Schlüssel anzugeben.

    • Fifo, um eine Fifo-Reihenfolge (First In, First Out) anzugeben.

    • Lifo, um eine Lifo-Reihenfolge (Last In, First Out) anzugeben.

  • Legen Sie die Eigenschaft Upper Bound fest, um die maximale Anzahl von Objekten anzugeben, die im Puffer enthalten sein können. Der Standardwert ist *. Dies bedeutet, dass keine Begrenzung definiert ist.

Beschreiben des Datenflusses mit Eingabe- und Ausgabepins

Verwenden Sie einen Ausgabepin und einen Eingabepin, um die Ausgaben einer Aktion und die Eingaben einer anderen Aktion getrennt zu beschreiben.

Eingabe- und Ausgabepins sind Aktionsparameter

Um einen Pin zu erstellen, klicken Sie in der Toolbox auf Eingabepin oder Ausgabepin, und klicken Sie dann auf eine Aktion. Anschließend können Sie den Pin im Umkreis der Aktion verschieben und seinen Namen ändern. Sie können Eingabe- und Ausgabepins für jede Art von Aktion erstellen, einschließlich Aktionen zum Aufrufen eines Verhaltens, Aktionen zum Aufrufen eines Vorgangs, Aktionen zum Senden eines Signals und Aktionen zum Akzeptieren eines Ereignisses.

Ein Konnektor zwischen zwei Pins stellt ebenso wie die Flüsse zu und von einem Objektknoten einen Objektfluss dar.

Weisen Sie jedem Pin einen Namen zu, der die Rolle der von ihm erzeugten bzw. akzeptierten Objekte angibt, z. B. einen Parameternamen.

In der Eigenschaft Type können Sie den Typ der übertragenen Objekte festlegen. Dies muss ein Typ sein, den Sie in einem UML-Klassendiagramm erstellt haben.

Die Objekte, die zwischen verbundenen Pins übertragen werden, müssen auf irgendeine Weise kompatibel sein. Beispielsweise können sie kompatibel sein, weil der Typ der vom Ausgabepin erzeugten Objekte vom Typ des Eingabepins abgeleitet wird.

Alternativ können Sie angeben, dass der Objektfluss eine Transformation einschließt, mit der Daten vom Typ des Ausgabepins in den Typ des Eingabepins (oder umgekehrt) konvertiert werden. Die häufigste Transformation dieser Art extrahiert einfach den entsprechenden Teil aus einem größeren Typ. Im Beispiel in der Abbildung wird eine Transformation vorausgesetzt, die die Lieferadresse aus den Bestellungsdetails extrahiert.

Sie können nicht nur das normalerweise zu erzielende Ergebnis einer Aktion anhand ihres Namens angeben, sondern einer Aktion mit den folgenden Methoden auch weitere Informationen hinzufügen:

  • Schreiben Sie in der Eigenschaft Body eine ausführlichere Beschreibung. Sie können z. B. ein Fragment von Programmcode oder Pseudocode oder eine vollständige Beschreibung der erzielten Ergebnisse schreiben.

  • Ersetzen Sie die Aktion durch eine Aktion zum Aufrufen eines Verhaltens, und beschreiben Sie das ausführliche Verhalten in einem eigenen Aktivitätsdiagramm. Siehe Beschreiben von Unteraktivitäten mit Aktionen zum Aufrufen eines Verhaltens.

  • Legen Sie die Eigenschaften Local Postconditions und Local Preconditions der Aktion fest, um ihr Ergebnis ausführlicher zu beschreiben. Weitere Informationen finden Sie unter Definieren von Nachbedingungen und Vorbedingungen.

Beschreiben von Unteraktivitäten mit Aktionen zum Aufrufen eines Verhaltens

Sie können das Verhalten einer Aktion mithilfe eines eigenen Aktivitätsdiagramms ausführlich beschreiben. Ein aufgerufenes Verhalten ist ein Aktivitätsdiagramm, das im Hauptaktivitätsdiagramm durch eine Aktion zum Aufrufen eines Verhaltens dargestellt wird. Sie können mit der Aktion zum Aufrufen eines Verhaltens auch Verhalten beschreiben, das unterschiedlichen Aktivitäten gemeinsam ist, sodass Sie die Unteraktivität nicht mehrmals zeichnen müssen.

In der folgenden Abbildung zeigt Diagramm 1 eine Aktivität, die über eine Aktion zum Aufrufen eines Verhaltens verfügt, und Diagramm 2 zeigt das Unteraktivitätsdiagramm, in dem das aufgerufene Verhalten dargestellt wird.

Separates Aktivitätsdiagramm mit ausführlichen Aktionen

So beschreiben Sie eine Unteraktivität mit einer Aktion zum Aufrufen eines Verhaltens
  1. Um das Diagramm für die Unteraktivität zu erstellen, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Modellierungsprojekt, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  2. Klicken Sie im Dialogfeld Neues Element hinzufügen unter Vorlagen auf Aktivitätsdiagramm, und geben Sie im Feld Name den Namen ein, den Sie der Aktion zum Aufrufen eines Verhaltens zuweisen möchten.

  3. Zeichnen Sie den ausführlichen Arbeitsfluss für die Unteraktivität. Dies ist das aufgerufene Verhalten.

    • Im Diagramm für die aufgerufene Unteraktivität gibt der Startknoten an, wo die Kontrolle beginnt, wenn das Verhalten aufgerufen wird. Der Aktivitätsendknoten stellt dar, an welcher Stelle die Kontrolle zur übergeordneten Aktivität zurückkehren soll.
  4. Legen Sie die Eigenschaft Behavior der Aktion zum Aufrufen eines Verhaltens fest, um auf das Diagramm für das aufgerufene Verhalten zu verweisen.

    System_CAPS_ICON_note.jpg Hinweis

    Das Unteraktivitätsdiagramm muss über Elemente verfügen, andernfalls ist das Diagramm nicht in der Dropdownliste für die Eigenschaft Behavior verfügbar. Außerdem wird das Dreizacksymbol für die Form Aktion zum Aufrufen eines Verhaltens erst angezeigt, wenn Sie die zugehörige Eigenschaft Behavior festgelegt haben.

  5. Legen Sie die Eigenschaft Is Synchronous der Aktion fest, um anzugeben, ob die Aktivität erst gestartet werden soll, wenn die aufgerufene Aktivität abgeschlossen ist.

    • Wenn Sie Is Synchronous auf „false“ festlegen, geben Sie an, dass der Fluss mit der nächsten Aktion fortgesetzt werden kann, bevor die aufgerufene Aktivität beendet wurde. Definieren Sie keine Ausgabepins oder ausgehenden Datenflüsse von der Aktion.

Beschreiben des Datenflusses in und aus Unteraktivitäten

Sie können den Datenfluss in und aus Unteraktivitäten auf die gleiche Weise wie die Verwendung von Parametern in Software beschreiben.

  • Erstellen Sie in der Aktion zum Aufrufen eines Verhaltens Eingabe- und Ausgabepins (1) für jedes Datenelement, das in die Aktion oder aus der Aktion fließt. Weisen Sie jedem Pin einen entsprechenden Namen zu.

  • Erstellen Sie im Unteraktivitätsdiagramm für jeden Eingabe- und Ausgabepin in der aufrufenden Aktion einen Aktivitätsparameterknoten (2). Weisen Sie jedem Knoten den gleichen Namen wie dem entsprechenden Pin zu.

    System_CAPS_ICON_note.jpg Hinweis

    Ein Aktivitätsparameterknoten ähnelt einem Objektknoten. Um zu überprüfen, welcher Typ von Knoten angezeigt wird, klicken Sie mit der rechten Maustaste auf den Knoten, und klicken Sie dann auf Eigenschaften. Der Typ des Knotens wird in der Kopfzeile des Eigenschaftenfensters angezeigt.

  • Zeichnen Sie im Unteraktivitätsdiagramm Konnektoren, die den Fluss von Objekten in die oder aus den einzelnen Aktivitätsparameterknoten darstellen.

Pins werden beim Aufrufen eines Verhaltens Aktivitätsparametern zugeordnet

Definieren von Nachbedingungen und Vorbedingungen

Mit den Eigenschaften Local Postconditions und Local Preconditions können Sie das Ergebnis einer Aktion genau angeben. Diese Eigenschaften beschreiben die Auswirkung der Aktion, jedoch nicht, wie die Auswirkung erreicht wird.

Zum Festlegen dieser Eigenschaften klicken Sie mit der rechten Maustaste auf die Aktion, und klicken Sie dann auf Eigenschaften. Geben Sie Werte in die Eigenschaftenfelder im Eigenschaftenfenster ein.

Local Postconditions

Eine Nachbedingung ist eine Bedingung, die erfüllt sein muss, bevor die Aktion als abgeschlossen betrachtet werden kann. In der Beispielaktion „Bestellung bestätigen“ kann die Nachbedingung wie folgt lauten:

Der Kunde hat vollständige und gültige Informationen angegeben, die zum Verarbeiten seiner Kreditkartendaten erforderlich sind.

Eine Nachbedingung kann eine Beziehung zwischen den Zuständen vor und nach dem Eintreten einer Aktion beschreiben. Zum Beispiel:

Der Zinssatz ist doppelt so hoch wie vorher.

Sie können Nachbedingungen auf formalere Weise schreiben, indem Sie auf bestimmte Attribute der in den Aktionen behandelten Daten verweisen. Zum Beispiel:

InvoiceTotal == Sum(OrderItem.MenuItem.Price)

Local Preconditions

Eine Vorbedingung ist eine Bedingung, die erfüllt sein muss, wenn die Aktion beginnen kann. Beispielsweise kann die Aktion „Bestellung bestätigen“ die folgende Vorbedingung aufweisen:

Der Kunde hat mindestens ein Gericht ausgewählt.

Beschreiben der Aufrufe von Vorgängen

Im Allgemeinen beschreibt eine Aktion Arbeit, die von einer beliebigen Kombination von Personen, Software oder Computern ausgeführt wird. Sie können jedoch mit einer Aktion zum Aufrufen eines Vorgangs den Aufruf einer bestimmten Softwaremethode oder -funktion beschreiben.

  • Legen Sie den Namen der Aktion zum Aufrufen eines Vorgangs fest, um anzugeben, welcher Vorgang für welches Objekt bzw. welche Komponente aufgerufen wird.

  • Fügen Sie der Aktion zum Aufrufen eines Vorgangs Eingabe- und Ausgabepins hinzu, um Parameter und Rückgabewerte zu beschreiben.

  • Sie können die Eigenschaft Is Synchronous der Aktion festlegen, um anzugeben, ob die Aktivität erst gestartet werden soll, wenn der Vorgang abgeschlossen ist.

    • Wenn Sie Is Synchronous auf „false“ festlegen, geben Sie an, dass der Fluss mit der nächsten Aktion fortgesetzt werden kann, bevor der aufgerufene Vorgang abgeschlossen wurde. Definieren Sie keine Ausgabepins oder ausgehenden Datenflüsse von der Aktion.

Mit dem Gabelungsknoten und dem Joinknoten können Sie zwei oder mehr Threads von Aktivitäten beschreiben, die gleichzeitig ausgeführt werden können.

Die Zweig- und Joinknoten zeigen gleichzeitige Flüsse an

Mit dem Gabelungsknoten (1) wird der Kontrollthread in zwei oder mehr Threads aufgeteilt. Wenn die vorherige Aktion endet, können alle Aktionen auf der Ausgabeseite der Gabelung beginnen.

Ein Joinknoten (2) führt parallele Threads zusammen. Die Aktion nach dem Joinknoten kann erst beginnen, wenn alle zum Joinknoten führenden Aktionen abgeschlossen sind.

Beschreiben von Signalen und Ereignissen

Sie können einen Schritt in einem Prozess, der ein Signal sendet, als Aktion zum Senden eines Signals in einer Aktivität darstellen. Einen Schritt, der erst nach einem bestimmten Signal oder Ereignis fortgesetzt werden kann, können Sie als Aktion zum Akzeptieren eines Ereignisses darstellen.

Beispielsweise können Sie einen Schritt darstellen, der eine Bestellung sendet, und dann einen weiteren Schritt, der die Bestellung empfangen muss, bevor er sie verarbeitet.

Senden eines Signals

Verwenden Sie eine Aktion zum Senden eines Signals (3), um anzugeben, dass ein Signal oder eine Meldung an andere Aktivitäten oder Prozesse gesendet wird. Geben Sie mit dem Namen der Aktion an, welche Art von Meldung von der Aktion gesendet wird.

  • Die Kontrolle wird sofort an die nächste Aktion in der Ablaufsteuerung übergeben, sofern vorhanden.

  • Sie können mit einer Aktion zum Senden eines Signals nicht beschreiben, wie der Prozess auf zurückgegebene Informationen reagiert. Verwenden Sie hierzu eine eigene Aktion zum Akzeptieren eines Ereignisses.

  • Sie können den eingehenden Datenfluss einer Aktion zum Senden eines Signals darstellen, um anzugeben, welche Daten mit der ausgehenden Meldung gesendet werden können. Weitere Informationen finden Sie unter Beschreiben des Datenflusses.

Warten auf ein Signal oder Ereignis

Verwenden Sie eine Aktion zum Akzeptieren eines Ereignisses (4), um anzugeben, dass diese Aktivität auf ein externes Ereignis oder eine externe eingehende Meldung wartet. Geben Sie mit dem Namen der Aktion den Typ des Ereignisses an, auf das die Aktion wartet.

  • Um darzustellen, dass die Aktivität an einem bestimmten Punkt im Fluss auf ein externes Ereignis oder eine externe Meldung wartet, zeichnen Sie an der entsprechenden Stelle in der Aktivität eine Aktion zum Akzeptieren eines Ereignisses mit einem eingehenden Fluss.

  • Um darzustellen, dass die Aktivität jederzeit auf ein externes Ereignis oder eine externe Meldung reagieren kann, zeichnen Sie eine Aktion zum Akzeptieren eines Ereignisses ohne eingehenden Fluss. Wenn das benannte externe Ereignis eintritt, beginnt in der Aktivität ein neuer Thread an der Aktion zum Akzeptieren eines Ereignisses.

  • Sie können mithilfe einer Aktion zum Akzeptieren eines Ereignisses keinen vom Absender des Signals zurückgegebenen Wert beschreiben. Verwenden Sie hierzu eine eigene Aktion zum Senden eines Signals.

  • Sie können ausgehende Datenflüsse der Aktion darstellen, um zu zeigen, wie die Aktivität empfangene Daten des Signals verarbeitet. Wenn Sie mehrere Ausgabeflüsse darstellen möchten, legen Sie die Eigenschaft IsUnmarshall der Aktion zum Akzeptieren eines Ereignisses fest, die angibt, dass die Aktion das eingehende Signal in seine einzelnen Komponenten zergliedert. Weitere Informationen finden Sie unter Beschreiben des Datenflusses.

Beschreiben von mehreren Datenflüssen

Sie können mehrere ausgehende Ablaufsteuerungen oder Objektflüsse einer Aktion zeichnen, um anzugeben, dass am Ende der Aktion mehrere Threads entstehen. Das Resultat ähnelt dem Ergebnis einer Gabelung, mit der Ausnahme, dass Sie eine Kombination von Ablaufsteuerungen und Objektflüssen verwenden können.

Im folgenden Beispiel werden mehrere eingehende und ausgehende Flüsse von Aktionen gezeigt.

Parallele Objektflüsse

Wenn die Aktion „Kunde stellt genau Daten bereit“ abgeschlossen wird, erzeugt sie zwei Objekte: „Lieferadresse“ und „Kreditkartendetails“. Die beiden Objekte werden anschließend durch unterschiedliche Aktionen verarbeitet.

Da eine Aktion erst beginnen kann, wenn alle zugehörigen Eingaben verfügbar sind, beginnt die letzte Aktion erst, wenn alle zu ihr führenden Aktionen abgeschlossen sind.

Streams

Sie können mit einem Aktivitätsdiagramm eine Pipeline oder eine Reihe von Aktionen beschreiben, die gleichzeitig ausgeführt werden und kontinuierlich Daten von einer Aktion an eine andere übergeben.

Im folgenden Beispiel soll jede Aktion Objekte erzeugen können, während sie weiterhin ausgeführt wird. Da keine Ablaufsteuerungen vorhanden sind, kann jede Aktion beginnen, sobald sie die ersten Objekte empfängt.

Beachten Sie, dass die Konnektoren in diesem Beispiel Objektflüsse sind, da sie alle über mindestens ein Ende in einem Aktivitätsparameterknoten, Objektknoten bzw. auf einem Eingabe- oder Ausgabepin verfügen.

Datenfluss

  1. Das Beispiel enthält drei Aktivitätsparameterknoten, die die Eingaben und Ausgaben darstellen.

  2. Objektknoten, Eingabepins und Ausgabepins können Puffer darstellen. Sie können die Eigenschaft „Upper Bound“ eines Objektknoten festlegen, um die Anzahl der Objekte anzugeben, die gleichzeitig im Puffer vorhanden sein können.

  3. Mithilfe von Entscheidungsknoten können Sie zeigen, dass ein Stream unterteilt ist und unterschiedliche Objekte in unterschiedlichen Verzweigungen sendet. Mithilfe von Kommentaren oder der Titel der Knoten können Sie das Teilungskriterium erläutern.

  4. Mithilfe von Gabelungsknoten können Sie zeigen, dass zwei oder mehr Kopien der Objekte erstellt und zur gleichzeitigen Verarbeitung gesendet werden.

  5. Mithilfe von Joinknoten können Sie zeigen, dass zwei Verarbeitungsstreams zu einem einzigen Stream zusammengeführt werden.

Auswahl und Transformation

Sie können angeben, dass die Objekte in einem Objektfluss transformiert und/oder ausgewählt werden. Ein Objektfluss ist ein Fluss zu oder von einem Pin oder Objektknoten.

  • Eine Transformation beschreibt, wie in einen Fluss eintretende Objekte in einen anderen Typ konvertiert werden.

  • Eine Auswahl beschreibt, wie nur einige der in einen Fluss eintretenden Objekte an die empfangende Aktion übertragen werden.

Im Beispiel wird eine Transformation veranschaulicht. Die erste Aktion in Diagramm 1 erzeugt an einem Ausgabepin eine Postleitzahl. Dieser Pin ist mit einem Eingabepin der zweiten Aktion verbunden. Die zweite Aktion erwartet jedoch eine vollständige Adresse. Die Konvertierung von einem Typ in einen anderen wird in einer zweiten Aktivität (AddressLookup) angegeben. Auf diese wird in der Transformation-Eigenschaft des Objektflusses verwiesen. Die AddressLookup-Aktivität enthält einen Aktivitätsparameterknoten für die eingehende Postleitzahl und einen weiteren Aktivitätsparameterknoten für die ausgehende vollständige Adresse.

In einem anderen Diagramm definierte Objekttransformation

Sie können eine Transformation oder Auswahl auf zweierlei Weise angeben:

  • Fügen Sie einen Kommentar an den Eingabe- oder Ausgabepin an.

    • Um diese Beschreibung von einem allgemeinen Kommentar zu unterscheiden, können Sie den Kommentar mit <<transformation>> oder <<selection>> beginnen.
  • Geben Sie die Details der Transformation oder Auswahl in einem eigenen Aktivitätsdiagramm an.

    • Wenn Sie diese Methode verwenden, fügen Sie auch einen Kommentar an, um für die Leser deutlich zu machen, dass die Transformation definiert wurde.
So geben Sie eine Transformation oder Auswahl in einem eigenen Aktivitätsdiagramm an
  1. Erstellen Sie ein neues Aktivitätsdiagramm, in dem der Transformations- oder Auswahlfluss beschrieben werden soll.

    • Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, zeigen Sie auf Hinzufügen, klicken Sie auf Neues Element, und klicken Sie dann auf Aktivitätsdiagramm. Weisen Sie dem Diagramm einen entsprechenden Namen für den Transformations- oder Auswahlfluss zu. Klicken Sie auf Hinzufügen.
  2. Führen Sie im neuen Diagramm die folgenden Schritte aus:

    1. Erstellen Sie zwei Aktivitätsparameterknoten, einen für den Eingabefluss und einen für die Ausgabe.

    2. Erstellen Sie mit Objektflüssen verbundene Aktionen. Dies veranschaulicht die Funktionsweise der Transformation oder Auswahl.

  3. Führen Sie in jedem Diagramm, in dem Sie die Transformation oder Auswahl verwenden möchten, die folgenden Schritte aus:

    1. Erstellen Sie einen Objektfluss, d. h. einen Konnektor zu oder von einem Eingabepin, Ausgabepin, Objektknoten oder Aktivitätsparameterknoten.

    2. Klicken Sie mit der rechten Maustaste auf den Objektfluss, und klicken Sie dann auf Eigenschaften.

    3. Wählen Sie in der Eigenschaft Transformation oder Selection das Diagramm aus, in dem Sie den Transformations- oder Auswahlfluss angegeben haben.

Sie können auch eine Auswahl für einen Objektknoten sowie für einzelne Eingabe- und Ausgabepins definieren. Definieren Sie wie in der vorherigen Vorgehensweise eine Auswahlaktivität, und legen Sie dann die Eigenschaft Selection des Objektknotens bzw. des Eingabe- oder Ausgabepins fest.

Edit UML models and diagrams
UML Sequence Diagrams: Reference
UML Component Diagrams: Reference
UML Use Case Diagrams: Reference
UML Class Diagrams: Reference
UML Component Diagrams: Reference
Video: Erfassen von Geschäftsworkflows mithilfe von Aktivitätsdiagrammen

Anzeigen: