Anleitung zum manuellen Erstellen von Sequenzdiagrammen
Wenn Sie ein Sequenzdiagramm aus einem Programm heraus über die UModel API von Grund auf neu erstellen, werden im Prinzip einfach Interaktionsfragmente wie z.B. Lebenslinien in ein Diagramm platziert und mit Nachrichten verknüpft.
Nachrichten können ganz einfach mit Hilfe der AddUMLLineElement() Methode von IUMLGuiLineLink erstellt werden, wodurch nicht mehrere zugrunde liegende UML-Elemente wie z.B. MessageEnds, ExecutionOccurrences und ähnliches manuell erstellt werden müssen.
Um das Erstellen von Nachrichten zwischen zwei Interaktionsfragmenten wie z.B. Lebenslinien einfacher zu machen, erstellen Sie eine kleine Hilfsfunktion, die AddUMLLineElement()aufruft und die erstellte Linie positioniert:
// Creates a message between two interaction fragments (i.e. lifelines, interaction uses, |
Wie Sie sehen, akzeptiert IUMLDiagram.AddUMLLineElement() als Parameter nicht nur den String "Message", um eine Nachrichtenzeile zu erstellen, sondern auch "Reply", "Create" und "Destruct" für Antwortnachrichten, Erstellungsnachrichten und Löschungsnachrichten.
Um ein einfaches Diagramm zu erstellen, müssen Sie nur im GuiRoot-Objekt ein Sequenzdiagramm erstellen, das Diagramm öffnen, ein paar Lebenslinien hinzufügen und diese mit Hilfe dieser Hilfsfunktion mit Nachrichten verbinden:
IDocument document = theapplication.ActiveDocument; |
Das erzeugte Diagramm sollte folgendermaßen aussehen:
Definieren des Typs einer Lebenslinie
Um den von einer Lebenslinie repräsentierten Typ - sei es eine Klasse, Schnittstelle, ein Datentyp oder ähnliches - anzuzeigen, verwenden Sie die Eigenschaft IUMLLifeline.Represents, die eine IUMLProperty referenziert. Wenn der Typ dieser Eigenschaft definiert ist, wird er ebenfalls im Diagramm angezeigt.
Mit dem folgenden Code wird eine Lebenslinie erstellt, die eine Klasse referenziert:
// create a class to be referenced by the lifeline |
Die erzeugte Lebenslinie würde folgendermaßen aussehen:
Definieren der Operation einer Nachricht
Nachrichten repräsentieren normalerweise den Aufruf einer Operation eines Objekts. Bitte beachten Sie: Je nach Typ der Nachricht (normale Nachricht, Erstellungsnachricht, Löschungsnachricht oder Antwortnachricht) und dem Vorhandensein bzw. Fehlen eines zugrunde liegenden UML-Elements wie z.B. MessageOccurenceSpecifications oder CallEvents, kann eine Nachricht nicht immer eine Operation repräsentieren und der Abruf des richtigen UML-Elements, das auf die Operation verweist, ist nicht immer so einfach.
Aus diesem Grund bietet die Schnittstelle IUMLMessage in der UModel API die Methode SetOperation(), mit Hilfe derer man eine Nachricht eine Operation referenzieren lassen kann, falls dies möglich ist:
// create a message, an operation in a class and let the message refer this operation |