Lompat ke konten Lompat ke sidebar Lompat ke footer

Uml State Transition Diagram Final State

Zustandsdiagramme

Einfache Zustandsdiagramme

Für den Startpunkt und den Endpunkt im Zustandsdiagramms können Sie das Symbol [*] verwenden. Verwenden Sie --> um Pfeile zu definieren.

🎉 Copied!

@startuml  [*] --> State1 State1 --> [*] State1 : this is a string State1 : this is another string  State1 -> State2 State2 --> [*]  @enduml                        

Ändern Sie die Darstellung des Zustands

Sie können hide empty description verwenden, um den Zustand als einfache Box darzustellen

🎉 Copied!

@startuml hide empty description [*] --> State1 State1 --> [*] State1 : this is a string State1 : this is another string  State1 -> State2 State2 --> [*] @enduml                        

Verschachtelter Zustand

Ein Zustand kann auch verschachtelt werden. Dies funktioniert mit dem state Schlüsselwort und den geschweiften Klammern.

🎉 Copied!

@startuml scale 350 width [*] --> NotShooting  state NotShooting {   [*] --> Idle   Idle --> Configuring : EvConfig   Configuring --> Idle : EvConfig }  state Configuring {   [*] --> NewValueSelection   NewValueSelection --> NewValuePreview : EvNewValue   NewValuePreview --> NewValueSelection : EvNewValueRejected   NewValuePreview --> NewValueSelection : EvNewValueSaved    state NewValuePreview {      State1 -> State2   }  } @enduml                        

Lange Bezeichnungen für einen Zustand

Mit dem state Schlüsselwort können auch längere Bezeichnungen eines Status definiert werden.

🎉 Copied!

@startuml scale 600 width  [*] -> State1 State1 --> State2 : Succeeded State1 --> [*] : Aborted State2 --> State3 : Succeeded State2 --> [*] : Aborted state State3 {   state "Accumulate Enough Data\nLong State Name" as long1   long1 : Just a test   [*] --> long1   long1 --> long1 : New Data   long1 --> ProcessData : Enough Data } State3 --> State3 : Failed State3 --> [*] : Succeeded / Save Result State3 --> [*] : Aborted  @enduml                        

History [[H], [H*]]

You can use [H] for the history and [H*] for the deep history of a substate.

🎉 Copied!

@startuml [*] -> State1 State1 --> State2 : Succeeded State1 --> [*] : Aborted State2 --> State3 : Succeeded State2 --> [*] : Aborted state State3 {   state "Accumulate Enough Data" as long1   long1 : Just a test   [*] --> long1   long1 --> long1 : New Data   long1 --> ProcessData : Enough Data   State2 --> [H]: Resume } State3 --> State2 : Pause State2 --> State3[H*]: DeepResume State3 --> State3 : Failed State3 --> [*] : Succeeded / Save Result State3 --> [*] : Aborted @enduml                        

Fork [fork, join]

You can also fork and join using the <<fork>> and <<join>> stereotypes.

🎉 Copied!

@startuml  state fork_state <<fork>> [*] --> fork_state fork_state --> State2 fork_state --> State3  state join_state <<join>> State2 --> join_state State3 --> join_state join_state --> State4 State4 --> [*]  @enduml                        

Nebenläufige Zustände

Nebenläufige Zustände können mit dem -- oder || Symbol in einem zusammengesetzten Zustand zusammengefasst werden..

🎉 Copied!

@startuml [*] --> Active  state Active {   [*] -> NumLockOff   NumLockOff --> NumLockOn : EvNumLockPressed   NumLockOn --> NumLockOff : EvNumLockPressed   --   [*] -> CapsLockOff   CapsLockOff --> CapsLockOn : EvCapsLockPressed   CapsLockOn --> CapsLockOff : EvCapsLockPressed   --   [*] -> ScrollLockOff   ScrollLockOff --> ScrollLockOn : EvCapsLockPressed   ScrollLockOn --> ScrollLockOff : EvCapsLockPressed }  @enduml                        

Conditional [choice]

The stereotype <<choice>> can be used to use conditional state.

🎉 Copied!

@startuml state "Req(Id)" as ReqId <<sdlreceive>> state "Minor(Id)" as MinorId state "Major(Id)" as MajorId   state c <<choice>>   Idle --> ReqId ReqId --> c c --> MinorId : [Id <= 10] c --> MajorId : [Id > 10] @enduml                        

Stereotypes full example [choice, fork, join, end]

🎉 Copied!

@startuml state choice1 <<choice>> state fork1   <<fork>> state join2   <<join>> state end3    <<end>>  [*]     --> choice1 : from start\nto choice choice1 --> fork1   : from choice\nto fork choice1 --> join2   : from choice\nto join choice1 --> end3    : from choice\nto end  fork1   ---> State1 : from fork\nto state fork1   --> State2  : from fork\nto state  State2  --> join2   : from state\nto join State1  --> [*]     : from state\nto end  join2   --> [*]     : from join\nto end @enduml                        

[Ref. QA-404 and QA-1159]

Point [entryPoint, exitPoint]

You can added point with <<entryPoint>> and <<exitPoint>> stereotypes:

🎉 Copied!

@startuml state Somp {   state entry1 <<entryPoint>>   state entry2 <<entryPoint>>   state sin   entry1 --> sin   entry2 -> sin   sin -> sin2   sin2 --> exitA <<exitPoint>> }  [*] --> entry1 exitA --> Foo Foo1 -> entry2 @enduml                        

Pin [inputPin, outputPin]

You can added pin with <<inputPin>> and <<outputPin>> stereotypes:

🎉 Copied!

@startuml state Somp {   state entry1 <<inputPin>>   state entry2 <<inputPin>>   state sin   entry1 --> sin   entry2 -> sin   sin -> sin2   sin2 --> exitA <<outputPin>> }  [*] --> entry1 exitA --> Foo Foo1 -> entry2 @enduml                        

[Ref. QA-4309]

Expansion [expansionInput, expansionOutput]

You can added expansion with <<expansionInput>> and <<expansionOutput>> stereotypes:

🎉 Copied!

@startuml state Somp {   state entry1 <<expansionInput>>   state entry2 <<expansionInput>>   state sin   entry1 --> sin   entry2 -> sin   sin -> sin2   sin2 --> exitA <<expansionOutput>> }  [*] --> entry1 exitA --> Foo Foo1 -> entry2 @enduml                        

[Ref. QA-4309]

Pfeilrichtung

Mit dem -> Symbol können waagerechte Pfeile erzeugt werden. Man kann die Richtung der Pfeile außerdem mit der folgenden Syntax festlegen:
  • -down-> (default arrow)
  • -right-> or ->
  • -left->
  • -up->

🎉 Copied!

@startuml  [*] -up-> First First -right-> Second Second --> Third Third -left-> Last  @enduml                        

Man kann die Länge eines Pfeils verkürzen, in dem man nur den ersten Buchstaben der Richtung verwendet (zum Beispiel, -d- anstelle von -down-) oder die ersten beiden Buchstaben (-do-).

Beachten Sie, dass sie mit dieser Möglichkeit sorgfältig umgehen: GraphViz liefert normalerweise recht gute Ergebnisse, ohne das manuell eingegriffen werden muss.

Change line color and style

You can change line color and/or line style.

🎉 Copied!

@startuml State S1 State S2 S1 -[#DD00AA]-> S2 S1 -left[#yellow]-> S3 S1 -up[#red,dashed]-> S4 S1 -right[dotted,#blue]-> S5  X1 -[dashed]-> X2 Z1 -[dotted]-> Z2 Y1 -[#blue,bold]-> Y2 @enduml                        

[Ref. Incubation: Change line color in state diagrams]

Notizen

Notizen können mit den note left of, note right of, note top of, note bottom of Schlüsselworten an die Zustände gebunden werden. Die Notizen können sich auch über mehrere Zeilen erstrecken.

🎉 Copied!

@startuml  [*] --> Active Active --> Inactive  note left of Active : this is a short\nnote  note right of Inactive   A note can also   be defined on   several lines end note  @enduml                        

Es ist auch möglich, freistehende Notizen hinzuzufügen.

🎉 Copied!

@startuml  state foo note "This is a floating note" as N1  @enduml                        

Note on link

You can put notes on state-transition or link, with note on link keyword.

🎉 Copied!

@startuml [*] -> State1 State1 --> State2 note on link    this is a state-transition note  end note @enduml                        

Mehr über Notizen

Es ist auch möglich, Notizen für einen verbunden Zustand zu erstellen.

🎉 Copied!

@startuml  [*] --> NotShooting  state "Not Shooting State" as NotShooting {   state "Idle mode" as Idle   state "Configuring mode" as Configuring   [*] --> Idle   Idle --> Configuring : EvConfig   Configuring --> Idle : EvConfig }  note right of NotShooting : This is a note on a composite state  @enduml                        

Inline color

🎉 Copied!

@startuml state CurrentSite #pink {     state HardwareSetup #lightblue {        state Site #brown         Site -[hidden]-> Controller         Controller -[hidden]-> Devices     }     state PresentationSetup{         Groups -[hidden]-> PlansAndGraphics     }     state Trends #FFFF77     state Schedule #magenta     state AlarmSupression } @enduml                        

[Ref. QA-1812]

Skinparam

Mit dem skinparam Befehl kann die Farbe und die Schriftart der Zeichnung verändert werden. Sie können den Befehl auf die folgenden Arten verwenden:
  • Wie alle ander Befehle In einer Diagrammdefinition,
  • in einer Include-Datei,
  • In einer Konfigurationsdatei, die durch die Kommandozeile oder den ANT-Task übergeben wird.
Es können spezielle Farben und Schriftarten für stereotypische Zustände definiert werden.

🎉 Copied!

@startuml skinparam backgroundColor LightYellow skinparam state {   StartColor MediumBlue   EndColor Red   BackgroundColor Peru   BackgroundColor<<Warning>> Olive   BorderColor Gray   FontName Impact }  [*] --> NotShooting  state "Not Shooting State" as NotShooting {   state "Idle mode" as Idle <<Warning>>   state "Configuring mode" as Configuring   [*] --> Idle   Idle --> Configuring : EvConfig   Configuring --> Idle : EvConfig }  NotShooting --> [*] @enduml                        

WARNING

This translation need to be updated.

WARNING

Changing style

You can change style.

🎉 Copied!

@startuml  <style> stateDiagram {   BackgroundColor Peru   'LineColor Gray   FontName Impact   FontColor Red   arrow {     FontSize 13     LineColor Blue   } } </style>   [*] --> NotShooting  state "Not Shooting State" as NotShooting {   state "Idle mode" as Idle <<Warning>>   state "Configuring mode" as Configuring   [*] --> Idle   Idle --> Configuring : EvConfig   Configuring --> Idle : EvConfig }  NotShooting --> [*] @enduml                        

Change state color and style (inline style)

You can change the color or style of individual state using the following notation:
  • #color ##[style]color
With background color first (#color), then line style and line color (##[style]color ).

🎉 Copied!

@startuml state FooGradient #red-green ##00FFFF state FooDashed #red|green ##[dashed]blue { } state FooDotted ##[dotted]blue { } state FooBold ##[bold] { } state Foo1 ##[dotted]green { state inner1 ##[dotted]yellow }  state out ##[dotted]gold  state Foo2 ##[bold]green { state inner2 ##[dotted]yellow } inner1 -> inner2 out -> inner2 @enduml                        

[Ref. QA-1487]

  • #color;line:color;line.[bold|dashed|dotted];text:color

FIXME

🚩 text:color seems not to be taken into account

FIXME

🎉 Copied!

@startuml @startuml state FooGradient #red-green;line:00FFFF state FooDashed #red|green;line.dashed;line:blue { } state FooDotted #line.dotted;line:blue { } state FooBold #line.bold { } state Foo1 #line.dotted;line:green { state inner1 #line.dotted;line:yellow }  state out #line.dotted;line:gold  state Foo2 #line.bold;line:green { state inner2 #line.dotted;line:yellow } inner1 -> inner2 out -> inner2 @enduml @enduml                        

🎉 Copied!

@startuml state s1 : s1 description state s2 #pink;line:red;line.bold;text:red : s2 description state s3 #palegreen;line:green;line.dashed;text:green : s3 description state s4 #aliceblue;line:blue;line.dotted;text:blue   : s4 description @enduml                        

[Adapted from QA-3770]

Alias

With State you can use alias, like:

🎉 Copied!

@startuml state alias1  state "alias2" state "long name" as alias3 state alias4 as "long name"  alias1 : ""state alias1"" alias2 : ""state "alias2""" alias3 : ""state "long name" as alias3"" alias4 : ""state alias4 as "long name"""  alias1 -> alias2 alias2 -> alias3 alias3 -> alias4 @enduml                        

or:

🎉 Copied!

@startuml state alias1 : ""state alias1"" state "alias2" : ""state "alias2""" state "long name" as alias3 : ""state "long name" as alias3"" state alias4 as "long name" : ""state alias4 as "long name"""  alias1 -> alias2 alias2 -> alias3 alias3 -> alias4 @enduml                        

Source: https://plantuml.com/de/state-diagram

Posted by: peplaulamontayes.blogspot.com

Posting Komentar untuk "Uml State Transition Diagram Final State"