Apa itu Diagram State?
Sebuah Diagram State (sering disebut sebagai Mesin State atau Diagram Statechart) adalah diagram perilaku diagram UML yang memodelkan siklus hidup dari satu objek sistem, entitas bisnis, atau proses runtime. Sebagai komponen dasar dari spesifikasi Bahasa Pemodelan Terpadu (UML), jenis diagram ini jenis diagram UML menggambarkan berbagai keadaan yang dapat dihuni oleh suatu objek mulai dari instansiasi awal hingga penghancuran akhir, beserta peristiwa atau kondisi khusus yang memicu perubahan dari satu keadaan ke keadaan lainnya.
Apakah Anda sedang mendokumentasikan bendera koneksi yang rumit dari koneksi WebSocket, langkah-langkah pemrosesan pesanan dari model checkout e-commerce, atau perilaku sistem perangkat keras otonom, mesin state UML memberikan kepada pengembang perangkat lunak dan arsitek perangkat lunak gambaran yang jelas dan tak ambigu mengenai logika reaktif yang kompleks. Dengan VPasCode, Anda dapat membuat skrip transisi keadaan yang kompleks secara instan tanpa harus bersusah payah dengan penyesuaian grid atau panah batas yang tumpang tindih.
Panduan Sintaks Inti: Elemen dan Konstruksi
Untuk menulis tata letak diagram state yang berkualitas tinggi dan sesuai standar, Anda perlu memahami titik awal dan akhir, definisi keadaan, transisi peristiwa, keadaan komposit bersarang, serta titik pilihan bersyarat.
1. Keadaan Awal dan Akhir
Setiap mesin keadaan harus memiliki titik masuk dan, secara opsional, titik terminal. Dalam sintaks PlantUML, elemen batas ini diwakili oleh pembungkus simbol bintang yang bersih:
[*] --> NamaKeadaan(Menentukan keadaan awal mulai)NamaKeadaan --> [*](Menentukan keadaan akhir terminal)
2. Mendefinisikan Keadaan dan Transisi Peristiwa
Keadaan dideklarasikan secara otomatis kapan pun mereka dihubungkan oleh panah arah (-->). Untuk menambahkan konteks pada transisi, tambahkan titik dua (:) diikuti oleh peristiwa khusus, pemicu API, atau pemanggilan metode yang menyebabkan perubahan keadaan:
[*] --> Terputus
Terputus --> Menghubungkan : "connect()"
Menghubungkan --> Terhubung : "auth_success" 
3. Status Komposit / Bersarang
Aplikasi yang kompleks sering memiliki status individual yang berisi sub-status bersarang sendiri. Anda dapat menerapkan struktur komposit ini dengan menggunakan kata kunci statekata kunci diikuti oleh kurung kurawal buka:
state ActiveWorkspace {
[*] --> Idle
Idle --> Typing : "tekan tombol"
Typing --> Idle : "waktu habis"
} 
4. Titik Pilihan (Pemilihan Bersyarat)
Ketika suatu peristiwa terjadi, sistem sering harus mengevaluasi bendera data internal sebelum menentukan tujuan status berikutnya. Untuk menggambar berlian pilihan UML standar, gunakan token stereotip <<pilihan>>token stereotip:
state check_payment <<pilihan>>
OrderPlaced --> check_payment : "proses()"
check_payment --> Paid : [saldo >= total]
check_payment --> Failed : [saldo < total] 
Praktik Terbaik untuk Statechart yang Bersih
- Manfaatkan Deskripsi Status: Anda dapat menambahkan detail operasional yang jelas, hook masuk, atau fungsi keluar langsung di dalam simpul status dengan menggunakan pembungkus titik dua secara inline (misalnya,
NamaState : entry / logTimestamp()). - Jaga Nama Status Tetap Ringkas: Gunakan CamelCase atau snake_case untuk kode variabel status internal Anda (misalnya,
PembayaranDiproses), dan gunakan tanda petik jika Anda perlu melampirkan label yang panjang dan mudah dibaca manusia ke dalamnya. - Kelola arah routing vektor: Jika peta siklus hidup multi-tier Anda menjadi berantakan secara vertikal, sisipkan aturan spasial inline di dalam panah koneksi (misalnya,
-kanan->atau-bawah->) untuk menyeimbangkan kerapatan tata letak.
Contoh Diagram State PlantUML Dunia Nyata
Contoh 1: Siklus Hidup Jaringan Perangkat IoT (Status Komposit & Pilihan)
Rancangan ini melacak lingkaran status perilaku koneksi dari modul sensor IoT, menunjukkan blok bersarang struktural yang kompleks dan pin pilihan evaluasi bersyarat.
@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 
Analisis Sintaks: Peta ini dengan jelas memisahkan lingkaran operasional individu. Ketika perangkat keras beralih ke status komposit Connecting wrapper state, ia melacak sub-status lokal seperti resolusi DNS sebelum mencapai authentication_checkdiagram pilihan. Kurung ([token_valid]) mewakili kondisi penjaga standar UML.
Contoh 2: Mesin State Pemenuhan Pesanan E-Commerce (Sub-Status Bersamaan)
Rancangan perusahaan canggih ini memodelkan sistem pesanan berbasis multi-thread yang menunjukkan perilaku bersamaan ortogonal (pemrosesan paket pengiriman dan catatan penagihan secara bersamaan) menggunakan garis pemisah (--).
@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 
Analisis Sintaks: Di dalam struktur komposit OrderConfirmed struktur komposit, pembatas garis ganda (--) berfungsi sebagai pembatas ortogonal. Ini menginstruksikan PlantUML untuk membagi diagram menjadi dua status bersamaan yang berjalan secara paralel: alur logistik fisik di sebelah kiri, dan pembaruan penagihan perusahaan di sebelah kanan.