Przewodnik po składni diagramu stanów PlantUML

Co to jest diagram stanów?

A Diagram stanów (często nazywany maszyną stanów lub diagramem stanów) to diagram zachowania diagram UML który modeluje cykl życia pojedynczego obiektu systemu, jednostki biznesowej lub procesu uruchomionego w czasie rzeczywistym. Jako podstawowy element specyfikacji języka Unified Modeling Language (UML), ten konkretny typ diagramu UMLilustruje różne stany, które obiekt może przyjmować od momentu jego pierwszego utworzenia aż do całkowitego zniszczenia, wraz z konkretnymi zdarzeniami lub warunkami, które wywołują zmianę stanu z jednego na drugi.

Niezależnie od tego, czy dokumentujesz złożone flagi połączenia połączenia WebSocket, kroki przetwarzania zamówienia w modelu zakupów e-commerce, czy zachowanie autonomicznego systemu sprzętowego, maszyna stanów UML zapewnia programistom i architektom oprogramowania jasny, jednoznaczny szkic złożonej logiki reaktywnej. Dzięki VPasCode, możesz natychmiast zapisać złożone przejścia stanów bez walki z wyrównaniami siatki lub nakładającymi się strzałkami granicznymi.

Podstawowy przewodnik składniowy: elementy i konstrukcje

Aby tworzyć wysokiej jakości, zgodne z normami układy diagramów stanów, musisz zrozumieć punkty początkowe i końcowe, definicje stanów, przejścia zdarzeń, zagnieżdżone stany złożone oraz punkty warunkowych wyborów.

1. Stany początkowy i końcowy

Każda maszyna stanów musi mieć punkt wejścia i opcjonalnie punkt końcowy. W składni PlantUML te elementy graniczne są oznaczane przez czyste otoczenie symbolu gwiazdki:

  • [*] --> NazwaStanu (Określa początkowy stan startowy)
  • NazwaStanu --> [*] (Określa końcowy stan końcowy)

2. Definiowanie stanów i przejść zdarzeń

Stany są deklarowane automatycznie, gdy są połączone strzałką kierunkową (-->). Aby dodać kontekst do przejścia, dołącz dwukropek (:) a następnie konkretne zdarzenie, wyzwalacz API lub wywołanie metody, które powodują zmianę stanu:

[*] --> Odłączony
Odłączony --> Łączenie : "connect()"
Łączenie --> Połączony : "auth_success"

3. Stany złożone / zagnieżdżone

Złożone aplikacje często mają indywidualne stany zawierające własne zagnieżdżone podstany. Te struktury złożone możesz zaimplementować, używając słowa kluczowego stansłowo kluczowe, po którym następuje otwierający nawias klamrowy:

stan AktywnyPrzestrzen {n    [*] --> Pustan    Pusta --> Typowanie : "kliknięcie_klawisza"n    Typowanie --> Pusta : "timeout"n}

4. Punkty wyboru (warunkowe rozgałęzienie)

Gdy występuje zdarzenie, system często musi ocenić wewnętrzne flagi danych przed ustaleniem następnego celu stanu. Aby narysować standardowy diament UML wyboru, użyj tokena stereotypu<<wybór>>stereotypu:

stan sprawdz_wynagrodzenie <<wybór>>nZamowienieZlozone --> sprawdz_wynagrodzenie : "process()"nsprawdz_wynagrodzenie --> Zaplaczone : [saldo >= calkowita]nsprawdz_wynagrodzenie --> Niepowodzenie : [saldo < calkowita]

Najlepsze praktyki dla czystych diagramów stanów

  • Wykorzystaj opisy stanów: Możesz dodać jasne szczegóły operacyjne, funkcje wejścia lub wyjścia bezpośrednio w węźle stanu, używając dwukropka wewnątrz (np., NazwaStanu : wejście / logTimestamp()).
  • Utrzymuj nazwy stanów krótkie: Używaj CamelCase lub snake_case dla kodów zmiennych stanów wewnętrznych (np., PrzetwarzaniePłatnosci), a jeśli potrzebujesz dołączyć długi, czytelny dla człowieka etykietę, użyj cudzysłowów.
  • Zarządzaj kierunkami routingu wektorowego: Jeśli Twoje mapy cyklu życia wielopoziomowego stają się zbyt zatłoczone w pionie, wstaw zasady przestrzenne w linii w strzałkach połączeń (np., -w_prawo-> lub -w_dół->) aby zrównoważyć gęstość układu.

Przykłady diagramów stanów PlantUML z rzeczywistego świata

Przykład 1: Cykl życia sieciowego urządzenia IoT (stanu złożone i wyborów)

Ten szablon śledzi pętle stanów zachowania połączenia modułu czujnika IoT, demonstrując złożone strukturalne zagnieżdżone bloki oraz pin wybierania oceny warunkowej.

@startuml
[*] --> Offline

Offline --> Connecting : "power_on"

state Connecting {
    [*] --> Initializing
    Initializing --> ResolvingDNS : "hardware_ready"
    ResolvingDNS --> SendingHandshake : "ip_acquired"
}

state authentication_check <<choice>>
Connecting --> authentication_check : "receive_server_challenge"

authentication_check --> Online : [token_valid]
authentication_check --> Offline : [token_expired] : "blink_red_led"

state Online {
    [*] --> Idle
    Idle --> TransmittingData : "timer_trigger"
    TransmittingData --> Idle : "ack_received"
    Idle --> PowerSaving : "low_battery_detected"
}

Online --> Offline : "connection_lost"
@enduml

Analiza składni: Ta mapa jasno oddziela poszczególne pętle operacyjne. Gdy sprzęt przechodzi do stanu złożonego Connecting stanu otaczającego, śledzi lokalne podstany, takie jak rozpoznanie DNS, zanim osiągnie authentication_check diament wyboru. Nawiasy ([token_valid]) reprezentują standardowe warunki strażnicze UML.

Przykład 2: Maszyna stanów realizacji zamówienia w e-commerce (podstany współbieżne)

Ten zaawansowany szablon przedsiębiorstwa modeluje system zamówień wielowątkowy, pokazujący ortogonalne zachowania współbieżne (przetwarzanie paczek wysyłkowych i rekordów rozliczeniowych jednocześnie) przy użyciu linii podziału (--).

@startuml
[*] --> ShoppingCart

ShoppingCart --> OrderSubmitted : "checkout_click"
OrderSubmitted --> ProcessingPayment : "authorize_funds"

state ProcessingPayment {
    [*] --> ContactingBank
    ContactingBank --> SettlementSettled : "capture_success"
}

ProcessingPayment --> OrderConfirmed : "payment_cleared"

state OrderConfirmed {
    [*] --> LogisticsHandling
    state LogisticsHandling {
        [*] --> PickingItems
        PickingItems --> PackingBox : "inventory_secured"
        PackingBox --> OutForDelivery : "label_printed"
    }
    --
    [*] --> BillingRecords
    state BillingRecords {
        [*] --> CompilingInvoice
        CompilingInvoice --> InvoiceEmailed : "pdf_generated"
    }
}

OrderConfirmed --> OrderArchived : "delivery_confirmed"
OrderArchived --> [*]
@enduml

Analiza składni: Wewnątrz struktury OrderConfirmed struktury złożonej, dwukrotny myślnik (--) działa jako podział ortogonalny. Informuje PlantUML, aby podzielił diagram na dwa stany współbieżne działające równolegle: fizyczny przepływ logistyczny po lewej, a aktualizacje rozliczeniowe korporacyjne po prawej.

Przewijanie do góry