UML-Aktivitätsdiagramme: Richtlinien
Sie können in Visual Studio Ultimate 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.
Um ein UML-Aktivitätsdiagramm zu erstellen, klicken Sie im Menü Architektur auf Neues Diagramm.
Sie können ein Aktivitätsdiagramm für viele Zwecke verwenden:
Beschreiben eines Geschäftsprozesses oder eines Arbeitsflusses zwischen Benutzern und dem System. Weitere Informationen finden Sie unter Modellieren von Benutzeranforderungen.
Beschreiben der in einem Anwendungsfall ausgeführten Schritte. Weitere Informationen finden Sie unter UML-Anwendungsfalldiagramme: Richtlinien.
Beschreiben einer Methode, einer Funktion oder eines Vorgangs in der Software. Weitere Informationen finden Sie unter Modellieren der Architektur eines Softwaresystems.
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-Aktivitätsdiagramme: Referenz.
In diesem Thema
Beziehung zu anderen Diagrammen
Grundlegende Schritte zum Zeichnen von Aktivitätsdiagrammen
Beschreiben des Kontrollflusses
Beschreiben des Datenflusses
Ausführlicheres Definieren einer Aktion
Parallele Flüsse
Beziehung zu anderen Diagrammen
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 die Namen der entsprechenden Aktionen zu. Die Anwendungsfallansicht bietet Ihnen folgende Vorteile:
Sie können in einem Diagramm mithilfe einer Beziehung vom Typ Einschließen 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 des Systems 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. Siehe den Abschnitt Beschreiben des Datenflusses. Ein Aktivitätsdiagramm beschreibt jedoch nicht die Struktur der Daten. Für diesen Zweck können Sie ein UML-Klassendiagramm zeichnen. Informationen hierzu finden Sie unter UML-Klassendiagramme: Richtlinien.
Grundlegende Schritte zum Zeichnen von Aktivitätsdiagrammen
Eine ausführliche Beschreibung der Schritte zum Erstellen der Modellierungsdiagramme finden Sie unter Gewusst wie: Bearbeiten eines UML-Modells und Bearbeiten von Diagrammen.
So zeichnen Sie ein Aktivitätsdiagramm
Klicken Sie im Menü Architektur auf Neues Diagramm.
Klicken Sie unter Vorlagen auf UML-Aktivitätsdiagramm.
Benennen Sie das Diagramm.
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
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 fügen Sie dann die letzten Elemente, z. B. den Start- und Endknoten, hinzu.
Tipp
Sie können keine vorhandenen Elemente aus dem UML-Modell-Explorer in das Diagramm ziehen.
Um die Elemente zu verbinden, führen Sie folgende Schritte aus:
Klicken Sie in der Toolbox Aktivitätsdiagramm auf Konnektor.
Klicken Sie im Diagramm auf das Quellelement.
Klicken Sie auf das Zielelement.
Tipp
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.
Tipp
Die Aktivität wird im UML-Modell-Explorer nur angezeigt, wenn Sie dem Diagramm das erste Element hinzufügen.
Beschreiben des Kontrollflusses
Ein Aktivitätsdiagramm beschreibt einen Geschäftsprozess oder einen Softwarealgorithmus als Reihe von Aktionen. Konnektorpfeile stellen dar, wie die Kontrolle nacheinander von einer Aktion an die nächste übergeben wird. Normalerweise kann eine Aktion nur 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.
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 zur nächsten übergeht.
Erstellen Sie eine Aktion (1) für jede Hauptaufgabe, die von einem Benutzer, dem System oder beiden gemeinsam ausgeführt wird.
Tipp
Versuchen Sie, den Prozess oder den Algorithmus mit nur einigen Aktionen zu beschreiben. Sie können mithilfe von Aktionen zum Aufrufen eines Verhaltens jede Aktion in einem eigenen Diagramm ausführlicher definieren, wie in Beschreiben von Unteraktivitäten mit Aktionen zum Aufrufen eines Verhaltens erläutert.
Stellen Sie sicher, dass der Titel jeder Aktion das übliche Resultat der Aktion eindeutig angibt.
Verknüpfen Sie die Aktionen nacheinander mithilfe von Konnektoren (2).
Jede Aktion endet, bevor die nächste Aktion im Kontrollfluss 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 beispielsweise die Übergabe der Kontrolle erfolgen, 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 mithilfe eines Entscheidungsknoten (3) einen Punkt an, an dem das Ergebnis einer Entscheidung den nächsten Schritt diktiert. Sie können eine beliebige Anzahl von ausgehenden Pfaden beschreiben.
Wenn Sie mithilfe des Aktivitätsdiagramms einen Teil einer Anwendung beschreiben, 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 Wächter 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 mehrere alternative Flüsse, die an einem Entscheidungsknoten verzweigt sind, zusammenzuführen.
Tipp
Führen Sie alternative Flüsse mithilfe eines Zusammenführungsknotens zusammen, statt sie an einer Aktion zusammenzuführen. In dem Beispiel wäre es nicht richtig, vom Entscheidungsknoten einen Konnektor direkt zurück zu Gericht auswählen zu zeichnen. 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.
Tipp
Schachteln Sie Schleifen wie in Programmcode in einer sinnvollen Struktur. 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 Knoten zum Akzeptieren eines Ereignisses, wie im Abschnitt Parallele Flüsse beschrieben, um den Anfang eines Threads anzugeben, der die Reaktion auf ein bestimmtes Ereignis, z. B. eine Benutzereingabe, darstellt. 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 Antwort 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 erhöhen.
Unterbrechen der Aktivität
Um zu beschreiben, wie der normale Fluss einer Aktivität unterbrochen werden kann, wenn sich beispielsweise der Benutzer entscheidet, den Vorgang abzubrechen, können Sie einen Knoten zum Akzeptieren des Ereignisses erstellen, der auf dieses Ereignis lauscht. Weitere Informationen finden Sie im Abschnitt Parallele Flüsse. Erstellen Sie einen Kontrollfluss 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 im 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 sie werden nicht im UML-Modell-Explorer angezeigt.
Beschreiben des Datenflusses
Sie können die eingehenden und ausgehenden Daten einer Aktivität auf zweierlei Weise beschreiben :
Verwenden Sie einen Objektknoten. Dies ist das einfachste Verfahren, 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.
Verwenden Sie einen Ausgabepin und einen 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.
Tipp
Eine Übersicht über die in diesem Abschnitt verwendeten Elemente finden Sie im Abschnitt "Datenflüsse" des Themas UML-Aktivitätsdiagramme: Referenz.
Beschreiben des Datenflusses mit Objektknoten
Die meisten Kontrollflüsse übertragen Daten. Beispielsweise überträgt der Ausgabefluss von 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.
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 im Eigenschaftenfenster den Typ des Objektknotens festlegen. Der Typ kann ein primitiver Typ 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 zu der Klasse Kunde erstellen. Weitere Informationen finden Sie unter UML-Klassendiagramme: Richtlinien.
Tipp
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, sollten Sie den Typ des Objektknotens zurücksetzen, damit 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 der Kontrollfluss, dass der Benutzer die Schleife [weitere auswählen] (1) mehrfach durchlaufen kann, während der Objektknoten Ausgewählte Gerichte (2) die vom Benutzer ausgewählten Gerichte sammelt. Wenn schließlich die Auswahl durch den Benutzer abgeschlossen wurde, geht die Kontrolle an die Aktion Bestellung bestätigen (3) über, mit der die vollständige Liste der ausgewählten Gerichte aus dem Puffer Ausgewählte Gerichte akzeptiert wird.
Sie können angeben, wie die Elemente in einem Puffer gespeichert werden, indem Sie Eigenschaften des Objektknotens festlegen:
Legen Sie die Eigenschaft Ordering fest:
Unsortiert, um eine Zufallssortierung oder nicht angegebene Sortierung festzulegen. (Standardeinstellung.)
Sortiert, um eine Sortierung nach einem bestimmten Schlüssel anzugeben.
Fifo, um eine Fifo (First In, First Out)-Reihenfolge anzugeben.
Lifo, um eine Lifo (Last In, First Out)-Reihenfolge 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.
Um einen Pin zu erstellen, klicken Sie in der Toolbox auf Eingabepin oder Ausgabepin und dann auf eine Aktion. Sie können dann 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 des 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.
Sie können in der Eigenschaft Typ 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 dem Bestellungsdetail extrahiert.
Ausführlicheres Definieren einer Aktion
Außer dem Angeben des normalerweise zu erzielenden Ergebnisses einer Aktion anhand ihres Namens können einer Aktion mit den folgenden Methoden weitere Informationen hinzugefügt werden:
Schreiben Sie in der Eigenschaft Text eine ausführlichere Beschreibung. Sie können z. B. ein Fragment von Programmcode oder Pseudocode oder eine vollständige Beschreibung der erreichten 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.
So beschreiben Sie eine Unteraktivität mit einer Aktion zum Aufrufen eines Verhaltens
Um das Diagramm für die Unteraktivität zu erstellen, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Testprojekt, wählen Sie Hinzufügen aus, und klicken Sie dann auf Neues Element.
Klicken Sie im Dialogfeld Neues Element hinzufügen unter Vorlagen auf Aktivitätsdiagramme, und geben Sie im Feld Name den Namen ein, den Sie der Aktion zum Aufrufen eines Verhaltens zuweisen möchten.
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, wo die Kontrolle zur übergeordneten Aktivität zurückkehren soll.
Legen Sie die Eigenschaft Verhalten der Aktion zum Aufrufen eines Verhaltens fest, um auf das Diagramm für das aufgerufene Verhalten zu verweisen.
Tipp
Das Unteraktivitätsdiagramm muss über Elemente verfügen, andernfalls ist das Diagramm nicht in der Dropdownliste für die Eigenschaft Verhalten verfügbar. Außerdem wird das Dreizacksymbol in der Form Aktion zum Aufrufen eines Verhaltens erst angezeigt, wenn Sie die zugehörige Eigenschaft Verhalten festgelegt haben.
Legen Sie die Eigenschaft Is Synchronous der Aktion fest, um anzugeben, ob die Aktivität erst gestartet wird, wenn die aufgerufene Aktivität gestartet wurde.
- Wenn Sie Is Synchronous auf false festlegen, geben Sie an, dass der Fluss zur nächsten Aktion fortgesetzt werden kann, bevor die aufgerufene Aktivität beendet wurde. Definieren Sie keine Ausgabepins oder ausgehenden Datenflüsse 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.
Tipp
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 oder aus den einzelnen Aktivitätsparameterknoten darstellen.
Definieren von Nachbedingungen und Vorbedingungen
Sie können mit den Eigenschaften Local Postconditions und Local Preconditions das Ergebnis einer Aktion genau angeben. Diese Eigenschaften beschreiben die Auswirkungen der Aktion, jedoch nicht, wie die Auswirkungen erreicht werden.
Um diese Eigenschaften festzulegen, klicken Sie mit der rechten Maustaste auf die Aktion, und klicken Sie dann auf Eigenschaften. Geben Sie im Eigenschaftenfenster Werte in die Eigenschaften 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. Beispiel:
Der Zinssatz beträgt das Doppelte des vorherigen Zinssatzes.
Sie können Nachbedingungen auf formalere Weise schreiben, indem Sie auf bestimmte Attribute der in den Aktionen behandelten Daten verweisen. 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 in welchem Objekt bzw. welcher 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 nach Abschluss des Vorgangs ausgeführt werden kann.
- Wenn Sie Is Synchronous auf false festlegen, geben Sie an, dass der Fluss zur nächsten Aktion fortgesetzt werden kann, bevor der aufgerufene Vorgang abgeschlossen wurde. Definieren Sie keine Ausgabepins oder ausgehenden Datenflüsse der Aktion.
Parallele Flüsse
Sie können mit dem Gabelungsknoten und dem Joinknoten mehrere Threads von Aktivitäten beschreiben, die gleichzeitig ausgeführt werden können.
Mit dem Gabelungsknoten (1) wird der Kontrollthread auf mehrere 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 wurden.
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 des 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 irgendeiner Art 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 im Kontrollfluss übergeben, sofern vorhanden.
Sie können keine Aktion zum Senden eines Signals verwenden, um zu beschreiben, wie der Prozess auf zurückgegebene Informationen reagiert. Verwenden Sie hierzu eine eigene Aktion zum Akzeptieren des 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 in Beschreiben des Datenflusses.
Warten auf ein Signal oder Ereignis
Verwenden Sie eine Aktion zum Akzeptieren des Ereignisses (4), um anzugeben, dass die 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 zu zeigen, dass die Aktivität an einem angegebenen 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 des Ereignisses mit einem eingehenden Fluss.
Um zu zeigen, dass die Aktivität jederzeit auf ein externes Ereignis oder eine externe Meldung reagieren kann, zeichnen Sie eine Aktion zum Akzeptieren des Ereignisses ohne eingehenden Fluss. Wenn das benannte externe Ereignis eintritt, beginnt in der Aktivität ein neuer Thread an der Aktion zum Akzeptieren des Ereignisses.
Sie können mithilfe einer Aktion zum Akzeptieren des Ereignisses keinen vom Absender des Signals zurückgegebenen Wert beschreiben. Verwenden Sie zu diesem Zweck 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 des Ereignisses fest, die angibt, dass die Aktion das eingehende Signal in seine einzelnen Komponenten zergliedert. Weitere Informationen finden Sie in Beschreiben des Datenflusses.
Beschreiben von mehreren Datenflüssen
Sie können mehrere ausgehende Kontrollflüsse 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 Kontroll- und Objektflüssen verwenden können.
Im folgenden Beispiel werden mehrere eingehende und ausgehende Flüsse von Aktionen gezeigt.
Wenn die Aktion "Kunde gibt Details an" abgeschlossen wurde, 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 zur gleichen Zeit ausgeführt werden und kontinuierlich Daten von einer Aktion an eine andere Aktion übergeben.
Im folgenden Beispiel soll jede Aktion Objekte erzeugen können, während sie weiterhin ausgeführt wird. Da keine Kontrollflüsse 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 an einem Aktivitätsparameterknoten, Objektknoten oder Eingabe- bzw. Ausgabepin verfügen.
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 Obere Begrenzung eines Objektknoten festlegen, um die Anzahl der Objekte anzugeben, die gleichzeitig im Puffer vorhanden sein können.
3. Sie können mithilfe von Entscheidungsknoten zeigen, dass ein Stream unterteilt ist und unterschiedliche Objekte in unterschiedlichen Verzweigungen sendet. Sie können mithilfe von Kommentaren oder der Titel der Knoten das Teilungskriterium erläutern.
4. Mithilfe von Gabelungsknoten können Sie zeigen, dass mehrere Kopien der Objekte erstellt und zur gleichzeitigen Verarbeitung gesendet werden.
5. Sie können mithilfe von Joinknoten 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 oder ausgewählt werden oder dass sie sowohl transformiert als auch ausgewählt werden. Ein Objektfluss ist ein Fluss zu oder von einem Pin bzw. zu oder von einem 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 bei einem Ausgabepin eine Postleitzahl. Dieser Pin wird mit einem Eingabepin an der zweiten Aktion verbunden. Die zweite Aktion erwartet jedoch eine vollständige Adresse. Die Konvertierung von einem Typ in einen anderen Typ wird in einer zweiten Aktivität angegeben, die Adressensuche lautet. Auf diese wird in der Eigenschaft Transformation des Objektflusses verwiesen. Die Aktivität Adressensuche enthält einen Aktivitätsparameterknoten für die eingehende Postleitzahl und einen weiteren Aktivitätsparameterknoten für die ausgehende vollständige Adresse.
Sie können eine Transformation oder Auswahl auf zweierlei Weise angeben:
Fügen Sie an den Eingabe- oder Ausgabepin einen Kommentar 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
Erstellen Sie ein neues Aktivitätsdiagramm, in dem der Transformations- oder Auswahlfluss beschrieben wird.
- Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, zeigen Sie auf Hinzufügen, klicken Sie auf Neues Element und dann auf Aktivitätsdiagramm. Weisen Sie dem Diagramm einen entsprechenden Namen für den Transformations- oder Auswahlfluss zu. Klicken Sie auf Hinzufügen.
Im neuen Diagramm:
Erstellen Sie zwei Aktivitätsparameterknoten, einen für den Eingabefluss und einen für die Ausgabe.
Erstellen Sie mit Objektflüssen verbundene Aktionen. Dies stellt die Funktionsweise der Transformation oder Auswahl dar.
In einem beliebigen Diagramm, in dem Sie die Transformation oder Auswahl verwenden möchten:
Erstellen Sie einen Objektfluss, d. h. einen Konnektor zu oder von einem Eingabepin, Ausgabepin, Objektknoten oder Aktivitätsparameterknoten.
Klicken Sie mit der rechten Maustaste auf den Objektfluss, und klicken Sie dann auf Eigenschaften.
Wählen Sie in der Eigenschaft Transformation oder Auswahl das Diagramm aus, in dem Sie den Transformations- bzw. 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 Auswahl des Objektknotens bzw. des Eingabe- oder Ausgabepins fest.
Siehe auch
Referenz
UML-Sequenzdiagramme: Referenz
Konzepte
Gewusst wie: Bearbeiten eines UML-Modells und Bearbeiten von Diagrammen
UML-Komponentendiagramme: Referenz
UML-Anwendungsfalldiagramme: Referenz
UML-Klassendiagramme: Referenz
UML-Komponentendiagramme: Referenz
Weitere Ressourcen
Video: Erfassen von Geschäftsworkflows mithilfe von Aktivitätsdiagrammen