विस्तृत मार्गदर्शिका: UML स्टेट मशीन का उपयोग करके टेलीफोनी कॉल नियंत्रण प्रणाली का मॉडलिंग

🎯 समीक्षा

यह मार्गदर्शिका आपको डिज़ाइन और मॉडलिंग के माध्यम से एक के माध्यम से चलती हैटेलीफोनी कॉल नियंत्रण प्रणाली का उपयोग करके UML स्टेट मशीन आरेख. यह आउटबाउंड कॉल जीवनचक्र, जो दिखाता है कि उपयोगकर्ता के क्रियाकलापों और नेटवर्क घटनाओं के प्रतिक्रिया में फोन लाइन राज्यों के बीच कैसे संक्रमण होता है।

आरेख दोनों को दर्शाता है खुशहाल रास्ते (सफल कॉल सेटअप) और अखुशहाल रास्ते (त्रुटियाँ, समय सीमा समाप्त होना, व्यस्त लाइनें), जो दृढ़ता, अपवाद प्रबंधन और स्पष्ट राज्य संक्रमण पर जोर देता है—वास्तविक समय संचार प्रणालियों में महत्वपूर्ण सिद्धांत।


🧩 UML स्टेट मशीन में मूल अवधारणाएँ

आरेख में डुबकी लगाने से पहले, इन मूल UML अवधारणाओं को समझें:

अवधारणा विवरण
राज्य एक ऐसी स्थिति जिसमें एक वस्तु निश्चित शर्तों को पूरा करती है या क्रियाएँ करती है।
संक्रमण एक राज्य से दूसरे राज्य में परिवर्तन, जो एक घटना द्वारा प्रेरित होता है।
घटना एक ऐसी घटना जो संक्रमण का कारण बनती है (उदाहरण के लिए onHookवैध संख्या).
स्वयं संक्रमण एक संक्रमण जो एक ही राज्य में शुरू होता है और एक ही राज्य में समाप्त होता है (उदाहरण के लिए अंक(n) जब तक नहीं है डायल कर रहा है).
काल्पनिक अवस्था विशेष नियंत्रण बिंदु जैसे प्रारंभिक या अंतिम जो वास्तविक अवस्थाएँ नहीं हैं।
संयुक्त अवस्था एक अवस्था जिसमें उप-अवस्थाएँ होती हैं (उदाहरण के लिए त्रुटि अवस्था के साथ बिजी टोनतेज बिजी टोनरिकॉर्डेड संदेश).
गार्ड शर्त एक बूलियन व्यंजक जो एक संक्रमण होने के लिए सत्य होना चाहिए।

✅ प्रो टिप: उपयोग करें घटना [गार्ड] / क्रिया UML में सिंटैक्स ट्रिगर, शर्तों और प्रभावों को दस्तावेज़ करने के लिए।


🔄 आउटबाउंड कॉल जीवनचक्र: चरण-दर-चरण विश्लेषण

1. प्रारंभ और डायलिंग चरण

🔹 प्रारंभिक नकली अवस्था → आराम

  • प्रणाली शुरू होती है प्रारंभिक नकली अवस्था.

  • अभी तक कोई गतिविधि नहीं; फोन हुक पर है।

🔹 आराम → डायल टोन (onHook)

  • घटना: onHook (उपयोगकर्ता हैंडसेट उठाता है)

  • संक्रमण: onHook → डायल टोन

  • क्रिया: डायल टोन उत्पन्न करें; अंक प्रवेश के लिए तैयारी करें।

📌 यह कॉल जीवनचक्र में पहला दृश्यमान अवस्था परिवर्तन है।

🔹 डायल टोन → डायलिंग (digit(n))

  • घटना: digit(n) (उपयोगकर्ता एक अंक दर्ज करता है)

  • संक्रमण: digit(n) → डायलिंग

  • अवस्था: प्रवेश करें डायलिंग मोड।

🔹 स्वयं संक्रमण: डायलिंग → डायलिंग (digit(n))

  • घटना: digit(n) (बहुत सारे अंक दर्ज किए गए)

  • गार्ड: कोई नहीं (हमेशा अनुमति दी गई है)

  • क्रिया: डायल किए जा रहे नंबर में अंक जोड़ें।

  • उद्देश्य: निरंतर अंक प्रविष्टि की अनुमति दें बिना छोड़े डायलिंग अवस्था।

💡 स्वयं के संक्रमण फोन नंबर जैसे इनपुट अनुक्रमों को संभालने के लिए आवश्यक हैं।


2. कनेक्शन तर्क और अपवाद संभाल

🔹 डायलिंग → कनेक्टिंग (वैध संख्या)

  • घटना: वैध संख्या (पूर्ण संख्या के वैधता की जांच की गई)

  • संक्रमण: वैध संख्या → कनेक्टिंग

  • क्रिया: नेटवर्क के साथ कॉल सेटअप शुरू करें।

🔹 डायलिंग → रिकॉर्डेड मैसेज (अवैध संख्या)

  • घटना: अवैध संख्या (उदाहरण के लिए, गलत लंबाई, अवैध प्रीफिक्स)

  • संक्रमण: अवैध संख्या → रिकॉर्डेड मैसेज

  • क्रिया: पूर्व रिकॉर्ड किया गया संदेश प्लेयर करें: “आप जिस नंबर को डायल कर रहे हैं, वह सेवा में नहीं है।”

🔹 कनेक्टिंग → बसी टोन (नंबर बिजी)

  • घटना: संख्या व्यस्त

  • संक्रमण: संख्या व्यस्त → व्यस्त टोन

  • क्रिया: व्यस्त टोन प्लेब करें; उपयोगकर्ता को सूचित करें कि लाइन व्यस्त है।

🔹 कनेक्टिंग → तेज व्यस्त टोन (ट्रंक व्यस्त)

  • घटना: ट्रंक व्यस्त

  • संक्रमण: ट्रंक व्यस्त → तेज व्यस्त टोन

  • क्रिया: तेज व्यस्त टोन प्लेब करें; नेटवर्क भार को दर्शाएं।

⚠️ नोट: ये हैं त्रुटि स्थितियाँ जो सामान्य प्रवाह को बाधित करती हैं। इन्हें सम्मानजनक तरीके से संभालना चाहिए।


3. समय सीमा और चेतावनी तंत्र

🔹 डायलिंग → चेतावनी (समय सीमा समाप्त)

  • घटना: समय सीमा समाप्त अक्रियता के 30 सेकंड बाद

  • संक्रमण: समय सीमा समाप्त → चेतावनी

  • क्रिया: चेतावनी बीप प्लेब करें; उपयोगकर्ता को सूचित करें कि आगे जारी रखें या रोकें।

🔹 चेतावनी → समय सीमा समाप्त (समय सीमा समाप्त)

  • घटना: समय सीमा समाप्त10 सेकंड के बाद फिर से

  • संक्रमण: समय समाप्त → समय समाप्त

  • क्रिया:कॉल प्रयास रद्द करें; वापस लौटेंआराम.

⏱️ समय समाप्त तर्क अनंत इंतजार से बचाता है और उपयोगकर्ता अनुभव में सुधार करता है।


4. सक्रिय कॉल और अन्य बंद करना

🔹 जुड़ रहा है → बज रहा है (मार्गित)

  • घटना: मार्गितनेटवर्क सफलतापूर्वक कॉल को मार्गित करता है)

  • संक्रमण: मार्गित → बज रहा है

  • क्रिया:बुलाए गए पक्ष को बजाने का सिग्नल भेजें।

🔹 बज रहा है → जुड़ा हुआ (बुलाए गए फोन ने जवाब दिया)

  • घटना: बुलाए गए फोन ने जवाब दिया

  • संक्रमण: बुलाए गए फोन ने जवाब दिया → जुड़ा हुआ

  • क्रिया:ऑडियो कनेक्शन स्थापित करें; कॉल रिकॉर्डिंग शुरू करें (यदि सक्षम हो।)

🔹 जुड़ा हुआ → अन्य बंद (onHook या बुलाए गए फोन ने बंद कर दिया)

  • अन्य बंद करने के दो रास्ते:

    1. उपयोगकर्ता रोकता है: onHook → अन्य बंद

    2. दूसरी पार्टी ने कॉल को रद्द कर दिया: कॉल की गई फ़ोन हैंग अप → डिस्कनेक्टेड

🔄 दोनों संक्रमण की ओर ले जाते हैंडिस्कनेक्टेडपहुँचने से पहले अंतिम स्थिति.

🔹 डिस्कनेक्टेड → अंतिम स्थिति

  • घटना: कोई नहीं (स्पष्ट या सफाई कार्य द्वारा)

  • संक्रमण: डिस्कनेक्टेड → अंतिम

  • क्रिया: संसाधनों को साफ करें, कॉल के दैर्ध्य को लॉग करें, सांख्यिकी को अपडेट करें।

✅ अंतिम स्थिति कॉल जीवनचक्र के अंत को दर्शाती है।


🎨 स्पष्टता के लिए दृश्य डिज़ाइन सिद्धांत

जटिल स्थिति मशीनों को पढ़ने योग्य और बनाए रखने योग्य बनाने के लिए:

सिद्धांत कार्यान्वयन
मुख्य सुखद मार्ग मुख्य प्रवाह (आराम → डायल टोन → डायलिंग → कनेक्टिंग → रिंगिंग → कनेक्टेड) को साफ ऊर्ध्वाधर या क्षैतिज रेखा के रूप में रखें।
अपवादों के लिए बाहर की ओर शाखाएँ बनाएँ त्रुटि स्थितियों (बिजी टोन, फास्ट बिजी टोन, रिकॉर्डेड मैसेज) को पार्श्व शाखाओं के रूप में रखें।
संबंधित स्थितियों को समूहित करें उपयोग करें संयुक्त स्थितियाँ त्रुटि स्थितियों के लिए (नीचे देखें)।
प्रतिरूप स्थितियों का समझदारी से उपयोग करें प्रारंभिक और अंतिम को स्पष्ट रूप से चिह्नित किया जाना चाहिए।
प्रतिच्छेदन संक्रमण से बचें तीरों के ओवरलैप होने से बचें; आवश्यकता पड़ने पर ओर्थोगोनल क्षेत्रों का उपयोग करें।

🔧 उन्नत मॉडलिंग तकनीकें

✅ संयुक्त अवस्था: “त्रुटि” समूहन

सूचीबद्ध करने के बजाय बसी टोनतेज बसी टोन, और रिकॉर्डेड संदेश अलग-अलग अवस्थाओं के रूप में, उन्हें एक संयुक्त अवस्था कहलाती है त्रुटि:

[त्रुटि] 
├── बसी टोन
├── तेज बसी टोन
└── रिकॉर्डेड संदेश
  • प्रवेश क्रिया: त्रुटि टोन या संदेश प्लेयर करें।

  • निकास क्रिया: वापस जाएं डायल टोन या आराम उपयोगकर्ता प्रतिक्रिया के बाद।

✅ लाभ:दृश्य अव्यवस्था को कम करता है और स्केलेबिलिटी में सुधार करता है।


✅ गार्ड शर्तें (वैकल्पिक सुधार)

संक्रमण को बेहतर बनाने के लिए गार्ड जोड़ें:

अंक(n) [संख्या.लंबाई < 15] → डायल कर रहा है
वैध संख्या [संख्या.अंतरराष्ट्रीय] → जुड़ रहा है

🛠️ गार्ड अमान्य संक्रमणों को रोकते हैं और शर्तीय तर्क का समर्थन करते हैं।


📌 मुख्य बातें: जटिल स्थिति मशीनों के लिए उत्तम अभ्यास

अभ्यास यह क्यों महत्वपूर्ण है
असफल मार्गों का मॉडलिंग करें वास्तविक प्रणालियाँ विफल होती हैं। डिज़ाइन करें अमान्य संख्यासमय सीमा समाप्तट्रंक व्यस्त विश्वसनीयता सुनिश्चित करता है।
क्रिया व्यंजकों का उपयोग करें शामिल करें / logCallAttempt() या / playTone() प्रभाव दिखाने के लिए।
घटनाओं को विस्तृत और क्रिया-केंद्रित रखें उपयोग करें onHookराउटेडकॉल की गई फ़ोन उत्तर देता हैके बजायई1ई2.
राज्यों के नाम स्पष्ट रूप से बताएं बचेंराज्य1राज्य2. उपयोग करेंडायल कर रहा हैबज रहा हैकनेक्टेड.
मान्यताओं को दस्तावेज़ करें उदाहरण के लिए, “गतिरोध के बाद 30 सेकंड के लिए अक्रियता” को टिप्पणियों में नोट किया जाना चाहिए।

💻 कोड उत्पादन: प्लांटयूएमएल और मेरमेड

यहाँ हैंतैयार उपयोग कोड ब्लॉकआपके पसंदीदा फॉर्मेट में इस आरेख को उत्पन्न करने के लिए।


✅ प्लांटयूएमएल कोड

@startuml

[*] –> आराम
आराम –> डायल टोन : ऑनहुक
डायल टोन –> डायल कर रहा है : अंक(n)
डायल कर रहा है –> डायल कर रहा है : अंक(n) ‘ स्वयं संक्रमण
डायल कर रहा है –> कनेक्टिंग : वैध संख्या
डायलिंग –> रिकॉर्डेड मैसेज : अमान्य संख्या
डायलिंग –> चेतावनी : समय समाप्त
चेतावनी –> समय समाप्त : समय समाप्त
कनेक्टिंग –> रिंगिंग : रूट किया गया
कनेक्टिंग –> बिजी टोन : संख्या व्यस्त
कनेक्टिंग –> फास्ट बिजी टोन : ट्रंक व्यस्त
रिंगिंग –> कनेक्टेड : कॉल करने वाले फोन ने जवाब दिया
कनेक्टेड –> डिस्कनेक्टेड : हुक पर
कनेक्टेड –> डिस्कनेक्टेड : कॉल करने वाले फोन ने डिस्कनेक्ट कर दिया
डिस्कनेक्टेड –> [*] : साफ-सफाई

राज्य “त्रुटि” के रूप में त्रुटि राज्य {
राज्य “बिजी टोन” के रूप में बिजी टोन
राज्य “फास्ट बिजी टोन” के रूप में फास्ट बिजी टोन
राज्य “रिकॉर्डेड मैसेज” के रूप में रिकॉर्डेड मैसेज
}

‘ आंतरिक क्रियाएँ
आराम : प्रवेश / ऑफ-हुक का इंतजार
डायल टोन : प्रवेश / डायल टोन प्ले करें
डायलिंग : प्रवेश / अंक एकत्र करें
कनेक्टिंग : प्रवेश / कॉल रूट करें
रिंगिंग : प्रवेश / दूरस्थ फोन को बजाएँ
कनेक्टेड : प्रवेश / कॉल सेशन स्थापित करें
डिस्कनेक्टेड : प्रवेश / सेशन समाप्त करें

@enduml

📥 उपयोग कैसे करें: यहाँ पेस्ट करें प्लांटयूएमएल लाइव या आपके आईडीई प्लगइन।


✅ मेरमाइड कोड

stateDiagram-v2
    [*] --> Idle
    Idle --> DialTone : onHook

    DialTone --> Dialing : digit(n)
    Dialing --> Dialing : digit(n)  ' स्वयं संक्रमण
    Dialing --> Connecting : validNumber
    Dialing --> RecordedMessage : invalidNumber
    Dialing --> Warning : timeout

    Warning --> Timeout : timeout

    Connecting --> Ringing : routed
    Connecting --> BusyTone : numberBusy
    Connecting --> FastBusyTone : trunkBusy

    Ringing --> Connected : calledPhoneAnswers
    Connected --> Disconnected : onHook
    Connected --> Disconnected : calledPhoneHangsUp

    Disconnected --> [*] : cleanup

    state Error {
        BusyTone
        FastBusyTone
        RecordedMessage
    }

    Connecting --> BusyTone : numberBusy
    Connecting --> FastBusyTone : trunkBusy
    Dialing --> RecordedMessage : invalidNumber

    note right of BusyTone
        मानक व्यस्त टोन प्रसारित करें
    end note

    note right of FastBusyTone
        तेज व्यस्त टोन प्रसारित करें (नेटवर्क भार)
    end note

    note right of RecordedMessage
        रिकॉर्ड किया गया संदेश प्रसारित करें: "नंबर सेवा में नहीं है।"
    end note

    note right of Timeout
        40 सेकंड के बाद कॉल प्रयास रद्द कर दिया गया
    end note

📥 उपयोग कैसे करें: यहाँ पेस्ट करें मेरमाइड लाइव एडिटर या समर्थित मार्कडाउन टूल्स (वीएस कोड, ओब्सिडियन आदि)।


📚 सारांश और अंतिम विचार

यह टेलीफोनी कॉल नियंत्रण प्रणाली स्थिति मशीन एक वास्तविक दुनिया का उदाहरण है कि यूएमएल कैसे उच्च विश्वसनीयता वाले जटिल, घटना-आधारित प्रणालियों को मॉडल कर सकता है।

✅ इस आरेख की प्रभावशीलता क्या है:

  • स्पष्ट खुशी का मार्ग जिसमें तार्किक प्रवाह है।

  • व्यापक त्रुटि प्रबंधन.

  • का उपयोग स्वयं संक्रमणसंयुक्त अवस्थाएँ, और गार्ड.

  • दृश्य स्पष्टता के माध्यम से समूहीकरण और अनोटेशन.

🛠️ इस पैटर्न का उपयोग कब करें:

  • टेलीफोनी प्रणालियाँ

  • आईओटी उपकरण नियंत्रण

  • उपयोगकर्ता सत्र प्रबंधन

  • वर्कफ्लो इंजन

  • सीमित अवस्था तर्क वाले एम्बेडेड सिस्टम


📝 क्या आप इसे विस्तारित करना चाहते हैं?

जोड़ने पर विचार करें:

  • कॉल रिकॉर्डिंग अवस्था (साथ में रिकॉर्डिंग शुरू करेंरिकॉर्डिंग बंद करें घटनाएँ)

  • कॉल फॉरवर्डिंग तर्क (शर्ती रूटिंग)

  • कॉल वेटिंग समर्थन (समानांतर अवस्थाएँ)

  • कॉल ट्रांसफर एक उप-अवस्था के रूप में कनेक्टेड

  • अवस्था इतिहास (हल्का/गहन इतिहास) बाधा के बाद पुनर्प्रवेश के लिए


📌 अंतिम सिफारिश

हमेशा सफलता और विफलता दोनों मार्गों को मॉडल करें।
केवल “खुशहाल मार्ग” को हैंडल करने वाली अवस्था मशीन अधूरी है और उत्पादन में बग्स के लिए अधिक झुकी हुई है।

इस गाइड का उपयोग एक टेम्पलेट किसी भी रियल-टाइम सिस्टम के मॉडलिंग के लिए जहाँ राज्य संक्रमणघटनाएँ, और त्रुटि लचीलापन मामला।


✅ उत्पन्न करने, दृश्यीकृत करने या विस्तार करने के लिए तैयार?
👉 कॉपी करें प्लांटयूएमएल या मेरमेड ऊपर दिए गए कोड को अपने दस्तावेज़, संरचना आरेखों या प्रणाली डिज़ाइन दस्तावेज़ में एकीकृत करें।

मुझे बताएं अगर आपको एक पीडीएफ संस्करणइंटरैक्टिव आरेख, या एक बड़े प्रणाली मॉडल में एकीकरण (उदाहरण के लिए, घटकों या क्रमवार आरेखों के साथ)!


📘 “सर्वोत्तम प्रणालियाँ केवल सही नहीं होती हैं—वे विफलता की पूर्वसूचना करती हैं।”
— यूएमएल राज्य मशीनों के साथ डिज़ाइन करना