प्लांटयूएमएल स्टेट डायग्राम सिंटैक्स गाइड

एक स्टेट डायग्राम क्या है?

एक स्टेट डायग्राम (अक्सर स्टेट मशीन या स्टेटचार्ट डायग्राम के रूप में जाना जाता है) एक व्यवहारात्मक यूएमएल डायग्राम जो एक एकल सिस्टम ऑब्जेक्ट, बिजनेस एंटिटी या रनटाइम प्रोसेस के जीवनचक्र को मॉडल करता है। यूनिफाइड मॉडलिंग लैंग्वेज (यूएमएल) विनिर्माण के एक मूलभूत घटक के रूप में, इस विशिष्ट यूएमएल डायग्राम प्रकार ऑब्जेक्ट के प्रारंभिक इनिशियलाइज़ेशन से अंतिम नष्ट होने तक विभिन्न अवस्थाओं को दर्शाता है, साथ ही एक अवस्था से दूसरी अवस्था में परिवर्तन को ट्रिगर करने वाली विशिष्ट घटनाओं या स्थितियों को भी दर्शाता है।

चाहे आप वेबसोकेट कनेक्शन के जटिल कनेक्शन फ्लैग्स के दस्तावेज़ीकरण कर रहे हों, ई-कॉमर्स चेकआउट मॉडल के ऑर्डर प्रोसेसिंग स्टेप्स के दस्तावेज़ीकरण कर रहे हों, या स्वतंत्र हार्डवेयर सिस्टम के व्यवहार के दस्तावेज़ीकरण कर रहे हों, एक यूएमएल स्टेट मशीन सॉफ्टवेयर डेवलपर्स और सॉफ्टवेयर आर्किटेक्ट्स को जटिल प्रतिक्रियाशील तर्क के स्पष्ट, अस्पष्ट नहीं ब्लूप्रिंट प्रदान करती है। साथ में वीपीएसकोड, आप जाली संरेखण या ओवरलैपिंग बाउंड्री तीरों के साथ लड़े बिना जटिल स्टेट ट्रांज़िशन को तुरंत स्क्रिप्ट कर सकते हैं।

कोर सिंटैक्स गाइड: तत्व और निर्माण

उच्च गुणवत्ता वाले, मानक संगत स्टेटचार्ट लेआउट लिखने के लिए, आपको शुरुआती और अंतिम बिंदुओं, स्टेट परिभाषाओं, इवेंट ट्रांज़िशन, नेस्टेड कंपोजिट स्टेट्स और शर्ती चयन बिंदुओं को समझने की आवश्यकता होती है।

1. प्रारंभिक और अंतिम अवस्थाएं

प्रत्येक स्टेट मशीन को एक एंट्री पॉइंट होना चाहिए और वैकल्पिक रूप से एक टर्मिनल पॉइंट हो सकता है। प्लांटयूएमएल सिंटैक्स में, इन सीमा तत्वों को एक साफ एस्टरिस्क सिंबल वाले वापसी द्वारा दर्शाया जाता है:

  • [*] --> स्टेटनाम (प्रारंभिक शुरुआती अवस्था को परिभाषित करता है)
  • स्टेटनाम --> [*] (टर्मिनल अंतिम अवस्था को परिभाषित करता है)

2. स्टेट्स और इवेंट ट्रांज़िशन को परिभाषित करना

जब भी एक दिशात्मक तीर (-->) द्वारा जुड़े हों, तो स्टेट्स स्वतः ही घोषित कर दिए जाते हैं। एक ट्रांज़िशन के लिए संदर्भ जोड़ने के लिए, कोलन (:) के बाद विशिष्ट घटना, एपीआई ट्रिगर या मेथड कॉल जो स्टेट बदलाव के कारण होता है:

[*] --> डिस्कनेक्टेड
डिस्कनेक्टेड --> कनेक्टिंग : "connect()"
कनेक्टिंग --> कनेक्टेड : "auth_success"

3. संयुक्त / नेस्टेड अवस्थाएं

जटिल एप्लिकेशन में अक्सर ऐसी अलग-अलग अवस्थाएं होती हैं जिनमें उनके स्वयं के नेस्टेड उप-अवस्थाएं होती हैं। आप इन संयुक्त संरचनाओं को के उपयोग करके लागू कर सकते हैंअवस्थाकीवर्ड के बाद खुले कोष्ठक के साथ:

अवस्था सक्रिय कार्यस्थल {
    [*] --> आराम
    आराम --> टाइपिंग : "कीप्रेस"
    टाइपिंग --> आराम : "टाइमआउट"
}

4. चयन बिंदु (शर्ती शाखाएं)

जब कोई घटना होती है, तो प्रणाली को अगले अवस्था गंतव्य के निर्धारण से पहले आंतरिक डेटा फ्लैग का मूल्यांकन करने की आवश्यकता होती है। एक मानक UML चयन हीरे को खींचने के लिए, का उपयोग करें<<चयन>>स्टेरियोटाइप टोकन:

अवस्था भुगतान_जांच <<चयन>>
आर्डर_प्लेस्ड --> भुगतान_जांच : "प्रोसेस()"
भुगतान_जांच --> भुगतान किया गया : [बैलेंस >= कुल]
भुगतान_जांच --> विफल : [बैलेंस < कुल]

स्पष्ट स्टेटचार्ट्स के लिए सर्वोत्तम प्रथाएं

  • अवस्था विवरणों का उपयोग करें: आप एक अवस्था नोड के भीतर सीधे एक दांते के आवरण के साथ ऑपरेशनल विवरण, एंट्री हुक्स या एग्जिट फंक्शन जोड़ सकते हैं (उदाहरण के लिए, अवस्था_नाम : entry / logTimestamp()).
  • अवस्था नाम संक्षिप्त रखें: अपने आंतरिक अवस्था चर कोड के लिए कैमलकेस या स्नेक_केस का उपयोग करें (उदाहरण के लिए, भुगतान_प्रोसेसिंग), और यदि आप उनके साथ लंबा मानव-पठनीय लेबल जोड़ना चाहते हैं तो उद्धरण चिह्नों का उपयोग करें।
  • वेक्टर रूटिंग दिशाओं का प्रबंधन करें: यदि आपके बहु-स्तरीय जीवनचक्र नक्शे ऊर्ध्वाधर रूप से भारी हो जाते हैं, तो संबंध तीरों के भीतर इनलाइन स्थानिक नियमों को जोड़ें (उदाहरण के लिए, -दाएं-> या -नीचे->) लेआउट घनत्व को संतुलित करने के लिए।

वास्तविक दुनिया के PlantUML राज्य आरेख उदाहरण

उदाहरण 1: आईओटी उपकरण नेटवर्क जीवनचक्र (संयुक्त अवस्थाएँ और विकल्प)

यह बॉयलरप्लेट आईओटी सेंसर मॉड्यूल के संपर्क व्यवहारात्मक अवस्था लूप्स को ट्रैक करता है, जटिल संरचनात्मक नेस्टेड ब्लॉक्स और शर्ती आकलन विकल्प पिन्स के उदाहरण देता है।

@startuml
[*] --> ऑफलाइन

ऑफलाइन --> जुड़ रहा है : "पावर_ऑन"

राज्य जुड़ रहा है {
    [*] --> प्रारंभिक सेटिंग
    प्रारंभिक सेटिंग --> DNS_हल कर रहा है : "हार्डवेयर_तैयार"
    DNS_हल कर रहा है --> हैंडशेक भेज रहा है : "आईपी_प्राप्त हुआ"
}

राज्य authentication_check <<चयन>>
जुड़ रहा है --> authentication_check : "सर्वर_चुनौती_प्राप्त हुई"

authentication_check --> ऑनलाइन : [टोकन_वैध]
authentication_check --> ऑफलाइन : [टोकन_मुद्रित] : "लाल_लेड_ब्लिंक"

राज्य ऑनलाइन {
    [*] --> अनागत
    अनागत --> डेटा_भेज रहा है : "टाइमर_ट्रिगर"
    डेटा_भेज रहा है --> अनागत : "पुष्टि_प्राप्त हुई"
    अनागत --> ऊर्जा_बचाव : "कम_बैटरी_पाई गई"
}

ऑनलाइन --> ऑफलाइन : "कनेक्शन_खो गया"
@enduml

सिंटैक्स विश्लेषण: यह नक्शा स्पष्ट रूप से व्यक्तिगत संचालन लूप्स को अलग करता है। जब हार्डवेयर संयुक्त जुड़ रहा है व्रैपर अवस्था में संक्रमण करता है, तो यह DNS समाधान जैसी स्थानीय उप-अवस्थाओं को ट्रैक करता है जब तक कि authentication_check चयन हीरा तक नहीं पहुँचता है। कोष्ठक ([टोकन_वैध]) मानक UML गार्ड शर्तों का प्रतिनिधित्व करते हैं।

उदाहरण 2: ई-कॉमर्स आदेश पूर्णता राज्य मशीन (समानांतर उप-अवस्थाएँ)

यह उन्नत उद्यम नक्शा एक बहु-थ्रेडेड आदेश प्रणाली का मॉडल बनाता है जो लंबवत समानांतर व्यवहार (प्रसव पैकेज और बिलिंग रिकॉर्ड को एक साथ प्रसंस्कृत करना) को दर्शाता है, जिसमें विभाजन रेखाएँ (--).

@startuml
[*] --> खरीदारी_कार्ट

खरीदारी_कार्ट --> आदेश_प्रस्तुत किया गया : "चेकआउट_क्लिक"
आदेश_प्रस्तुत किया गया --> भुगतान_प्रसंस्करण : "फंड_अनुमति दी गई"

राज्य भुगतान_प्रसंस्करण {
    [*] --> बैंक_संपर्क कर रहा है
    बैंक_संपर्क कर रहा है --> निपटान_पूरा हुआ : "कैप्चर_सफलता"
}

भुगतान_प्रसंस्करण --> आदेश_पुष्टि की गई : "भुगतान_साफ"

राज्य आदेश_पुष्टि की गई {
    [*] --> लॉजिस्टिक्स_हैंडलिंग
    राज्य लॉजिस्टिक्स_हैंडलिंग {
        [*] --> वस्तुएँ_चुन रहा है
        वस्तुएँ_चुन रहा है --> बॉक्स_पैक कर रहा है : "इन्वेंटरी_सुरक्षित"
        बॉक्स_पैक कर रहा है --> डिलीवरी_के लिए_तैयार : "लेबल_प्रिंटेड"
    }
    --
    [*] --> बिलिंग_रिकॉर्ड्स
    राज्य बिलिंग_रिकॉर्ड्स {
        [*] --> इन्वॉइस_तैयार कर रहा है
        इन्वॉइस_तैयार कर रहा है --> इन्वॉइस_ईमेल किया गया : "पीडीएफ_जनरेटेड"
    }
}

आदेश_पुष्टि की गई --> आदेश_संग्रहीत : "डिलीवरी_पुष्टि की गई"
आदेश_संग्रहीत --> [*]
@enduml

सिंटैक्स विश्लेषण: आदेश_पुष्टि की गई संयुक्त संरचना के भीतर, डबल डैश विभाजक (--) लंबवत विभाजक के रूप में कार्य करता है। इससे PlantUML को आरेख को दो समानांतर अवस्थाओं में विभाजित करने का निर्देश मिलता है जो समानांतर रूप से निष्पादित होती हैं: बाएं ओर भौतिक लॉजिस्टिक्स पाइपलाइन और दाएं ओर कॉर्पोरेट बिलिंग अपडेट्स।

Scroll to Top