Proses Taip
Ekspresi grafik
Berfikir Taip
Ekspresi berstruktur
Nota Taip
Ekspresi yang cekap

Rajah KeadaanSintaks

Rajah Keadaan

Sintaks gambar rajah keadaan Mermaid serasi dengan sintaks yang digunakan dalam plantUml, ini akan memudahkan pengguna berkongsi carta antara mermaid dan plantUml.

Kod
                            
Salin
Benamkan
--- title: Simple sample --- stateDiagram-v2 [*] --> Still Still --> [*] Still --> Moving Moving --> Still Moving --> Crash Crash --> [*]

Editor lama:

Kod
                            
Salin
Benamkan
stateDiagram [*] --> Still Still --> [*] Still --> Moving Moving --> Still Moving --> Crash Crash --> [*]

Editor baharu:

Dalam gambar rajah keadaan, sistem diterangkan berdasarkan keadaan dan bagaimana sesuatu keadaan berubah kepada keadaan lain melalui peralihan. Carta contoh di atas menunjukkan tiga keadaan: pegun, bergerak dan berlanggar. Anda bermula dari keadaan pegun, dan dari keadaan pegun boleh berubah kepada keadaan bergerak. Dari keadaan bergerak, anda boleh kembali ke keadaan pegun, atau berubah kepada keadaan berlanggar. Tiada peralihan dari keadaan pegun ke keadaan berlanggar. (Jika kekal pegun, anda tidak akan berlanggar.)

状态

Keadaan boleh diisytiharkan dalam pelbagai cara; cara paling mudah ialah mentakrifkan keadaan dengan hanya satu id:

Kod
                            
Salin
Benamkan
stateDiagram-v2 stateId

Cara lain ialah menggunakan sintaks state, dan menambah penerangan berikut:

Kod
                            
Salin
Benamkan
stateDiagram-v2 state "This is a state description" as s2

Cara lain untuk mentakrifkan keadaan dengan penerangan ialah dengan mentakrifkan ID keadaan dahulu, kemudian menambah titik bertindih dan penerangan:

Kod
                            
Salin
Benamkan
stateDiagram-v2 s2 : This is a state description

Peralihan

Peralihan merujuk kepada garis sambungan apabila satu keadaan masuk ke keadaan lain, diwakili menggunakan anak panah teks "-->".

Apabila anda mentakrifkan peralihan antara dua keadaan, dan keadaan tersebut belum ditakrifkan, keadaan yang tidak ditakrifkan akan ditakrifkan menggunakan id dalam peralihan. Selepas itu, anda boleh menambah penerangan untuk keadaan yang ditakrifkan dengan cara ini.

Kod
                            
Salin
Benamkan
stateDiagram-v2 s1 --> s2

Teks boleh ditambah pada peralihan untuk menerangkan apa yang diwakilinya:

Kod
                            
Salin
Benamkan
stateDiagram-v2 s1 --> s2: A transition

Mula dan tamat

Terdapat dua keadaan khas yang mewakili permulaan dan pemberhentian carta. Kedua-dua keadaan ini diwakili menggunakan sintaks [*], dan arah peralihan ke keadaan tersebut menentukan sama ada ia keadaan mula atau keadaan tamat.

Kod
                            
Salin
Benamkan
stateDiagram-v2 [*] --> s1 s1 --> [*]

Keadaan komposit

Apabila menggunakan gambar rajah keadaan dalam dunia sebenar, anda sering menemui carta berbilang dimensi, kerana satu keadaan boleh mempunyai berbilang keadaan dalaman, ini dipanggil keadaan komposit.

Untuk mentakrifkan keadaan komposit, anda perlu menggunakan sintaks state, diikuti dengan id, dan menulis badan keadaan komposit dalam pendakap besar {}. Anda boleh menamakan keadaan komposit pada baris berasingan, sama seperti mentakrifkan keadaan mudah. Sila rujuk contoh di bawah:

Kod
                            
Salin
Benamkan
stateDiagram-v2 [*] --> First state First { [*] --> second second --> [*] } [*] --> NamedComposite NamedComposite: Another Composite state NamedComposite { [*] --> namedSimple namedSimple --> [*] namedSimple: Another simple }

Anda boleh beroperasi pada beberapa peringkat:

Kod
                            
Salin
Benamkan
stateDiagram-v2 [*] --> First state First { [*] --> Second state Second { [*] --> second second --> Third state Third { [*] --> third third --> [*] } } }

Anda juga boleh mentakrifkan peralihan antara keadaan komposit:

Kod
                            
Salin
Benamkan
stateDiagram-v2 [*] --> First First --> Second First --> Third state First { [*] --> fir fir --> [*] } state Second { [*] --> sec sec --> [*] } state Third { [*] --> thi thi --> [*] }

Nota: peralihan antara keadaan dalaman yang tergolong dalam keadaan komposit berbeza tidak boleh ditakrifkan.

Pilihan

Kadangkala anda perlu memodelkan pemilihan antara dua atau lebih laluan, ia boleh dicapai menggunakan <<choice>>.

Kod
                            
Salin
Benamkan
stateDiagram-v2 state if_state <<choice>> [*] --> IsPositive IsPositive --> if_state if_state --> False: if n < 0 if_state --> True : if n >= 0

Pecah/gabung

Anda boleh menggunakan <<fork>> <<join>> untuk menentukan pecah/gabung dalam carta.

Kod
                            
Salin
Benamkan
stateDiagram-v2 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 --> [*]

Nota

Penggunaan komen dalam gambar rajah keadaan dapat menyatakan dengan lebih jelas; anda boleh memilih untuk meletakkan komen di sebelah kanan atau kiri nod.

Kod
                            
Salin
Benamkan
stateDiagram-v2 State1: The state with a note note right of State1 Important information! You can write notes. end note State1 --> State2 note left of State2 : This is the note to the left.

Serentak

Sama seperti dalam plantUml, anda boleh menggunakan simbol sengkang -- untuk menentukan keserentakan.

Kod
                            
Salin
Benamkan
stateDiagram-v2 [*] --> Active state Active { [*] --> NumLockOff NumLockOff --> NumLockOn : EvNumLockPressed NumLockOn --> NumLockOff : EvNumLockPressed -- [*] --> CapsLockOff CapsLockOff --> CapsLockOn : EvCapsLockPressed CapsLockOn --> CapsLockOff : EvCapsLockPressed -- [*] --> ScrollLockOff ScrollLockOff --> ScrollLockOn : EvScrollLockPressed ScrollLockOn --> ScrollLockOff : EvScrollLockPressed }

Tetapkan arah carta

Bagi gambar rajah keadaan, anda boleh menggunakan pernyataan arah untuk menetapkan arah pemaparan carta, seperti yang ditunjukkan dalam contoh ini.

Kod
                            
Salin
Benamkan
stateDiagram direction LR [*] --> A A --> B B --> C state B { direction LR a --> b } B --> D

Komen

Komen boleh dimasukkan dalam gambar rajah keadaan, dan editor akan mengabaikannya. Komen mesti bermula dengan dua tanda peratus (%%); semua teks dari penanda itu hingga aksara baris baharu seterusnya akan dianggap sebagai komen, termasuk sebarang sintaks carta. Komen boleh menduduki satu baris sendiri, atau diletakkan di penghujung pernyataan.

Kod
                            
Salin
Benamkan
stateDiagram-v2 [*] --> Still Still --> [*] Still --> Moving Moving --> Still Moving --> Crash Crash --> [*]

Gunakan classDefs untuk menetapkan gaya

Batasan semasa classDef gambar rajah keadaan:

1. Tidak boleh digunakan pada keadaan mula atau tamat

2. Tidak boleh digunakan pada keadaan komposit atau di dalam keadaan komposit

Anda boleh menggunakan sintaks classDef (iaitu singkatan bagi class definition, di mana "class" adalah serupa dengan kelas dalam CSS) untuk mentakrifkan gaya. Selepas classDef ialah nama gaya, diikuti dengan satu atau lebih 'sifat-nilai', setiap 'sifat-nilai' terdiri daripada nama sifat CSS yang sah, satu titik bertindih (:), dan nilai yang sepadan.

Berikut ialah contoh classDef dengan hanya satu 'sifat-nilai':

                            
Salin
Benamkan
classDef movement font-style:italic;
  • Nama gaya ialah movement
  • Sifat tunggalnya ialah font-style, nilainya italic

Jika anda ingin mempunyai berbilang 'sifat-nilai', anda boleh meletakkan satu koma (,) antara setiap 'sifat-nilai'.

Berikut ialah contoh yang mengandungi tiga 'sifat-nilai':

                            
Salin
Benamkan
classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow
  • Nama gaya ialah badBadEvent
  • Sifat pertama ialah fill, nilainya ialah #f00
  • Sifat kedua ialah color, nilainya ialah white
  • Sifat ketiga ialah font-weight, nilainya ialah bold
  • Sifat keempat ialah stroke-width, nilainya ialah 2px
  • Sifat kelima ialah stroke, nilainya ialah yellow

Gunakan gaya classDef pada keadaan

Terdapat dua cara untuk menggunakan gaya classDef pada keadaan:

  • Gunakan sintaks class untuk menggunakan gaya classDef pada satu atau lebih keadaan dalam satu pernyataan
  • Gunakan operator ::: untuk menggunakan gaya classDef apabila keadaan digunakan dalam pernyataan peralihan (contohnya, dengan anak panah menunjuk ke/dari keadaan lain)

1. Pernyataan class

Pernyataan class memberitahu Mermaid untuk menggunakan classDef yang ditentukan pada satu atau lebih kelas. Bentuknya ialah:

                            
Salin
Benamkan
class [one or more state names, separated by commas] [name of a style defined with classDef]

Berikut ialah contoh penggunaan gaya badBadEvent pada keadaan bernama Crash:

                            
Salin
Benamkan
class Crash badBadEvent

Berikut ialah contoh penggunaan gaya movement pada dua keadaan, Moving dan Crash:

                            
Salin
Benamkan
class Moving,Crash movement

Berikut ialah satu contoh. Sila ambil perhatian bahawa keadaan Crash menggunakan dua gaya classDef: movement dan badBadEvent

Kod
                            
Salin
Benamkan
stateDiagram direction TB accTitle: This is the accessible title accDescr: This is an accessible description classDef notMoving fill:white classDef movement font-style:italic classDef badBadEvent fill:pink,color:white,font-weight:bold,stroke-width:2px,stroke:yellow [*]--> Still Still --> [*] Still --> Moving Moving --> Still Moving --> Crash Crash --> [*] class Still notMoving class Moving, Crash movement class Crash badBadEvent class end badBadEvent

2. Gunakan operator ::: untuk menggunakan gaya pada keadaan

Anda boleh menggunakan operator ::: untuk menggunakan gaya classDef pada keadaan. Sintaksnya ialah:

                            
Salin
Benamkan
[state]:::[style name]

Anda boleh menggunakannya dalam pernyataan yang menggunakan kelas, ini termasuk keadaan mula dan keadaan tamat. Contohnya:

Kod
                            
Salin
Benamkan
stateDiagram direction TB accTitle: This is the accessible title accDescr: This is an accessible description classDef notMoving fill:white classDef movement font-style:italic; classDef badBadEvent fill:pink,color:white,font-weight:bold,stroke-width:2px,stroke:yellow [*] --> Still:::notMoving Still --> [*] Still --> Moving:::movement Moving --> Still Moving --> Crash:::movement Crash:::badBadEvent --> [*]

Ruang dalam nama keadaan

Anda boleh mentakrifkan keadaan menggunakan id dahulu, kemudian merujuk id tersebut untuk menambah ruang pada keadaan.

Dalam contoh berikut, terdapat satu keadaan dengan ID yswsii, diterangkan sebagai ''Your state with spaces in it''. Selepas ditakrifkan, yswsii digunakan dalam peralihan pertama carta ([*] --> yswsii), dan juga digunakan semasa peralihan ke YetAnotherState (yswsii --> YetAnotherState). yswsii telah ditetapkan gayanya, supaya berbeza daripada keadaan lain.

Kod
                            
Salin
Benamkan
stateDiagram classDef yourState font-style:italic,font-weight:bold,fill:white yswsii: Your state with spaces in it [*] --> yswsii:::yourState [*] --> SomeOtherState SomeOtherState --> YetAnotherState yswsii --> YetAnotherState YetAnotherState --> [*]