सीक्वेंस डायग्राम क्या है?
एक सीक्वेंस डायग्राम एक व्यवहारात्मक यूएमएल डायग्राम जो सॉफ्टवेयर ऑपरेशन के समय के साथ कैसे किए जाते हैं, उसका विवरण देता है। यूनिफाइड मॉडलिंग लैंग्वेज (यूएमएल) विनिर्माण के मुख्य मानक के रूप में, यह वस्तुओं, प्रक्रियाओं या माइक्रोसर्विसेज द्वारा संदेशों के आदान-प्रदान के सटीक क्रमानुक्रम को मॉडल करता है। जीवन रेखाओं को ऊर्ध्वाधर और क्रमिक अंतरक्रियाओं को क्षैतिज रूप से मैप करके, यह विशिष्ट यूएमएल डायग्राम प्रकार सॉफ्टवेयर इंजीनियरों और सिस्टम आर्किटेक्ट्स को उत्पादन कोड लिखने से पहले जटिल API कॉल अनुक्रम, नेटवर्क डेटा हैंडशेक्स और डेटाबेस लेनदेन सीमाओं को स्पष्ट रूप से देखने में सक्षम बनाता है।
साथ में वीपीएसकोड, आपको घंटों लंबे समय तक समानांतर तीरों को संरेखित करने, संदेश रेखाओं को फैलाने या नए चरण के लिए जगह बनाने के लिए बाउंडिंग बॉक्स को हटाने की आवश्यकता नहीं है। हमारा लेआउट इंजन आपके सादे पाठ विवरणात्मक स्क्रिप्ट्स टाइप करते समय समय रेखा ग्रिड को गतिशील रूप से गणना करता है।
मूल सिंटैक्स गाइड: तत्व और निर्माण
प्लांटयूएमएल में क्रियान्वित करने योग्य, मानकों के अनुरूप यूएमएल सीक्वेंस डायग्राम डिज़ाइन करने के लिए, आपको घटक घोषणाओं, संदेश तीर शैलियों, जीवन रेखाओं और तार्किक नियंत्रण संरचनाओं को समझना होगा।
1. यूएमएल प्रतिभागियों और आकृतियों की घोषणा
डिफ़ॉल्ट रूप से, इस यूएमएल डायग्राम में घटक एक मानक वर्गाकार बॉक्स आकृति विरासत में लेते हैं। हालांकि, आप अपनी इकाइयों के दृश्य आर्काइटाइप को बदल सकते हैं ताकि आपके सिस्टम सीमाओं के बारे में पाठकों को तुरंत संरचनात्मक संदर्भ मिल सके, विशिष्ट यूएमएल कीवर्ड्स का उपयोग करके:
एक्टर क्लाइंट
बाउंड्री "एपीआई गेटवे" के रूप में गेटवे
कंट्रोल कंट्रोलर
डेटाबेस "पोस्टग्रेसक्वल" के रूप में डीबी 
2. संदेश तीर और समकालिकता
आपकी तीर रेखाओं और शीर्षों की शैली यूएमएल डायग्राम मानकों के आधार पर आपके इंफ्रास्ट्रक्चर पाइपलाइनों के माध्यम से होने वाले सटीक संचार प्रोटोकॉल को निर्धारित करती है:
- सिंक्रोनस रिक्वेस्ट (ब्लॉकिंग): एक ठोस रेखा और एक ठोस तीर के शीर्ष द्वारा इंगित किया जाता है। भेजने वाला प्रतिक्रिया का इंतजार करता है:
ए आरोही बी - असिंक्रोनस संदेश (नॉन-ब्लॉकिंग): एक ठोस रेखा और एक खुले पतले तीर के शीर्ष द्वारा इंगित किया जाता है। भेजने वाला डेटा पारित करता है और तुरंत आगे बढ़ता है:
ए आरोही>> बी - प्रतिक्रिया / रिटर्न मान: एक बिंदु वाली रेखा और एक खुले तीर के शीर्ष द्वारा इंगित किया जाता है:
बी --> ए
3. लाइफलाइन्स का प्रबंधन (सक्रियण और निष्क्रियण)
अपने घटकों के सपाट बार की तरह दिखने से बचने के लिए, आपको स्पष्ट रूप से दिखाना चाहिए कि एक प्रक्रिया सक्रिय रूप से सीपीयू थ्रेड या मेमोरी क्षमता का उपयोग कर रही है। उपयोग करें सक्रिय करें और निष्क्रिय करें मार्कर, या संक्षिप्त इनलाइन वृद्धि सिंटैक्स का उपयोग करें (++ / --):
गेटवे -> कंट्रोलर ++ : "processPayment()"
कंट्रोलर --> गेटवे -- : "रिसीप्ट वापस करें" 
4. तर्क ब्लॉक: विकल्प, लूप और समानांतर
जटिल व्यावसायिक तर्क (जैसे यदि/विकल्प शाखाएं, डेटाबेस पुनर्प्रयास, या समानांतर निष्पादन थ्रेड) को यूएमएल आरेख विनिर्माण में ज्ञात संयुक्त अंशों के रूप में ज्ञात संरचित सामान्य फ्रेम सीमाओं के भीतर लपेटा जाना चाहिए:
- शर्ती तर्क (अल्ट / अन्य): शर्ती शाखाओं के मॉडल के रूप में मॉडलिंग करता है।
Plantuml Edit Plantuml in VPasCode
अल्ट सफलता स्थिति ए -> बी : "अनुरोध के साथ आगे बढ़ें" अन्य विफलता स्थिति ए -> बी : "त्रुटि कोड फेंकें" एंड
- पुनरावृत्ति लूप (लूप): इटरेशन, पुनर्प्रयास, या एक शर्त पूरी होने तक रद्दीकरण ब्लॉक के मॉडल के रूप में मॉडलिंग करता है।
Plantuml Edit Plantuml in VPasCode
लूप जब तक रद्दीकरण खाली न हो जाए कार्यकर्ता -> रद्दीकरण : "अगला कार्य प्राप्त करें" एंड
- समानांतर निष्पादन (पैर): मॉडल स्वतंत्र थ्रेड्स के आरंभ में एक साथ निष्पादित होने वाले ऑपरेशन को अलग करते हैं।
Plantuml Edit Plantuml in VPasCode
par समानांतर प्रक्रियाओं को चलाएं A -> लॉगसर्विस : "ट्रेस एनालिटिक्स लिखें" अन्यथा A -> डीबी : "ग्राहक प्रोफाइल डेटा को संग्रहित करें" अंत
स्पष्ट अनुक्रमों के लिए सर्वोत्तम प्रथाएं
- विभाजकों का उपयोग करके संदेशों को समूहित करें: डबल बराबर संकेतों का उपयोग करें (
== आपका चरण ==) एक विशाल प्राथमिकता-से-चेकआउट अनुक्रम को अलग-अलग तार्किक मील के पत्थरों में बांटने के लिए उपयोग करें। - स्वचालित संख्याकरण का उपयोग करें: रखें
स्वचालित संख्याकरणनिर्देश सीधे नीचे@startuml. इससे कार्यक्षेत्र को हर तीर पर चरण पूर्णांक लगाने के लिए मजबूर करता है, जिससे कोड समीक्षा बहुत आसान हो जाती है। - प्रतिक्रियाओं को साफ रखें: लौटने वाले तीरों पर बड़े वर्णनात्मक वाक्य लिखने से बचें (
-->). इसके बजाय, सिर्फ यह लेबल करें कि कौन सा रॉ डेटा ऑब्जेक्ट या HTTP कोड वापस जा रहा है (उदाहरण के लिए,"201 बनाया गया टोकन").
वास्तविक दुनिया के प्लांटयूएमएल अनुक्रम आरेख उदाहरण
उदाहरण 1: माइक्रोसर्विस प्राथमिकता लूप (अल्ट ब्लॉक्स और जीवन रेखाएं)
यह बॉयलरप्लेट एक मानक सुरक्षा अनुक्रम को संभालता है जहां एक क्लाइंट गेटवे के खिलाफ प्राथमिकता करता है, जो मानक यूएमएल आरेख प्रारूप के भीतर स्पष्ट जीवन रेखाएं और वैकल्पिक शर्तीय परिणाम संरचना को दर्शाता है।
@startuml
स्वचालित संख्याकरण
एक्टर उपयोगकर्ता
सीमा "वेब एप्लिकेशन" के रूप में एप्लिकेशन
नियंत्रण "प्राथमिकता सेवा" के रूप में प्राथमिकता
उपयोगकर्ता -> एप्लिकेशन ++ : "प्रमाण पत्र जमा करें"
एप्लिकेशन -> प्राथमिकता ++ : "पोस्ट /v1/प्राथमिकता"
अल्ट #LightGreen सफल प्राथमिकता
प्राथमिकता --> एप्लिकेशन : "200 ओके (जेवीटी टोकन)"
एप्लिकेशन --> उपयोगकर्ता : "डैशबोर्ड रेंडर करें"
अन्यथा #LightPink अमान्य प्रमाण पत्र
प्राथमिकता --> एप्लिकेशन : "401 अनधिकृत"
एप्लिकेशन --> उपयोगकर्ता : "त्रुटि टोस्ट दिखाएं"
अंत
disable प्राथमिकता
disable एप्लिकेशन
@enduml 
सिंटैक्स विश्लेषण: द स्वचालित संख्या टैग स्वचालित रूप से 1 से 5 तक संख्याओं का प्रबंधन करता है। द विकल्प और विकल्प ब्लॉक्स के साथ कस्टम हेक्स रंग फ्लैग्स जोड़े जाते हैं (उदाहरण के लिए, #LightGreen) के माध्यम से सफलता बनाम विफलता के निष्पादन मार्गों को तुरंत दृश्य रूप से हाइलाइट करने के लिए जोड़ा जाता है। द ++ टोकन सुनिश्चित करते हैं कि नेटवर्क कॉल ब्लॉक के दौरान लाइफलाइन्स सक्रिय रहती हैं।
उदाहरण 2: उन्नत ऑर्डर प्रसंस्करण (लूप्स, समानांतर और विभाजक)
यह एंटरप्राइज आर्किटेक्चर ब्लूप्रिंट एक विश्वसनीय चेकआउट प्रणाली का मॉडल बनाता है जो कार्यों को समानांतर कार्यकर्ताओं के बीच विभाजित करता है, डेटाबेस लेखन को निष्पादित करता है, और एक बाहरी प्रणाली सिंक लूप पर निर्भर करता है।
@startuml
स्वचालित संख्या
सीमा "चेकआउट API" के रूप में API
डेटाबेस "ऑर्डर्स डीबी" के रूप में DB
नियंत्रण "वर्कर कतार" के रूप में कतार
सीमा "स्ट्राइप" के रूप में स्ट्राइप
== चरण 1: लेनदेन लेजर सत्यापन ==
API -> DB ++ : "प्रतीक्षा कर रहे ऑर्डर को लिखें"
DB --> API -- : "ऑर्डर आईडी पुष्टि की गई"
== चरण 2: भुगतान और एसिंक भुगतान ==
API -> स्ट्राइप ++ : "ग्राहक खाते से शुल्क लें"
स्ट्राइप --> API -- : "भुगतान अनुमोदित"
समानांतर पृष्ठभूमि संचालन के लिए
API -> कतार ++ : "'ऑर्डर_प्लेस्ड' घटना प्रकाशित करें"
कतार को निष्क्रिय करें
विकल्प
API -> DB ++ : "स्थिति को 'भुगतान किया गया' में अद्यतन करें"
DB को निष्क्रिय करें
समाप्त
नेटवर्क विफलता पर अधिकतम 3 बार पुनर्प्रयास करना लूप
API -> API : "नोटिफिकेशन सिंक वेबहुक के लिए पिंग भेजें"
समाप्त
API --> क्लाइंट : "HTTP 200 (सफलता) लौटाएं"
@enduml 
सिंटैक्स विश्लेषण: द == विभाजक लेआउट को अलग-अलग संचालन चरणों में विभाजित करते हैं। द समानांतर ब्लॉक संदेश तीर के मार्ग से स्पष्ट रूप से दो अलग-अलग क्षैतिज मार्गों में शाखा बनाता है, जो दर्शाता है कि घटना प्रकाशन और डेटाबेस स्थिति अपडेट एक साथ होते हैं बिना एक दूसरे को अवरुद्ध किए। स्वयं-संकेतित तीर (API -> API) स्थानीय आंतरिक उदाहरण फ़ंक्शन लूप को आदर्श रूप से मैप करता है।