स्विच केस
इनपुट के मान के आधार पर निष्पादन को कई शाखाओं में से किसी एक पर रूट करें।
कार्यप्रवाह निष्पादन को कई शाखाओं में से एक पर रूट करें, किसी इनपुट मान की तुलना केस मानों के एक सेट से करके, प्रोग्रामिंग में switch-case कथन के समान, जिससे एक से अधिक Continue If ब्लॉकों को चेन किए बिना बहु-मार्ग शाखांकन, मान-आधारित रूटिंग, और निर्णय वृक्ष संभव होते हैं।
यह ब्लॉक कैसे काम करता है
यह ब्लॉक एकल इनपुट मान की तुलना केस मैपिंग की कुंजियों से करता है और निष्पादन को पहली मेल खाने वाली case के साथ संबद्ध चरण पर निर्देशित करता है। ब्लॉक:
एक
मानइनपुट (आमतौर पर एक selector जो workflow input या step output, जैसे classification result, को संदर्भित करता है) लेता है और उसे string में बदलता हैस्ट्रिंग को इसमें खोजता है
casesमैपिंग में, जहाँ प्रत्येक कुंजी एक case value है और प्रत्येक value वह चरण है जिसे तब निष्पादित किया जाना है जब वह case मेल खाए (उदा.{"red": "$steps.on_red", "blue": "$steps.on_blue"})यदि
case_insensitiveसक्षम होने पर, तुलना अक्षर-केस की अनदेखी करती हैयदि कोई case मेल खाता है, तो निष्पादन उस case के चरण पर जारी रहता है और अन्य सभी शाखाएँ समाप्त हो जाती हैं
यदि कोई case मेल नहीं खाता, तो निष्पादन में सूचीबद्ध चरणों पर जारी रहता है
default_next_stepsयदि कोई case मेल नहीं खाता और
default_next_stepsखाली है, तो शाखा समाप्त हो जाती है
क्योंकि तुलना से पहले इनपुट मान को string में बदला जाता है, non-string मान अपनी string representation से मेल खाते हैं: True कुंजी से मेल खाता है "True", 1.0 मिलता है "1.0" (नहीं "1"), और अनुपस्थित/None मान मिलता है "None". प्रत्येक target step अधिकतम एक बार भर में दिखाई दे सकता है cases और default_next_steps - कई case मानों को समान logic पर रूट करने के लिए, प्रत्येक case को उसके अपने step पर point करें या upstream में value को normalize करें (जैसे Expression block के साथ)।
सामान्य उपयोग के मामले
क्लासिफिकेशन परिणाम के आधार पर रूटिंग: छवियों को classification model द्वारा अनुमानित शीर्ष class के आधार पर अलग-अलग processing paths पर भेजें (उदा. "damaged" → alert branch, "ok" → logging branch, anything else → default review branch)
मोड-आधारित पाइपलाइन: एक workflow input parameter (उदा.
$inputs.mode) का उपयोग करके workflow को संपादित किए बिना runtime पर वैकल्पिक processing branches के बीच चुनेंबहु-मार्ग अलर्टिंग: workflow में पहले गणना किए गए severity या category value के आधार पर अलग-अलग notification blocks (email, Slack, webhook) पर रूट करें
चेन की गई शर्तों को प्रतिस्थापित करना: समान मान की अलग-अलग constants से तुलना करने वाले Continue If blocks की श्रृंखला को एक एकल, अधिक पढ़ने योग्य block में समेटें
अन्य ब्लॉक्स से कनेक्ट करना
यह ब्लॉक workflow के निष्पादन प्रवाह को नियंत्रित करता है और इससे जोड़ा जा सकता है:
वर्गीकरण या पहचान ब्लॉकों के बाद पूर्वानुमानित classes, counts, या अन्य prediction properties पर शाखा बनाने के लिए (अक्सर Property Definition या Expression block के माध्यम से जो switch-on करने के लिए value निकालता है)
वर्कफ़्लो इनपुट्स के बाद runtime parameter से एक शाखा चुनने के लिए
किसी भी downstream blocks से पहले (models, notifications, sinks) जो केवल किसी विशिष्ट case के लिए चलने चाहिए - प्रत्येक case target अपनी execution branch का head बन जाता है
एक default branch के साथ के माध्यम से जोड़ा गया
default_next_stepsअमेल खाने वाले मानों को संभालने के लिए, या जब कुछ भी मेल न खाए तो बस रोकने के लिए खाली छोड़ा गया
प्रकार पहचानकर्ता
स्टेप में निम्नलिखित पहचानकर्ता का उपयोग करें "type" फ़ील्ड: roboflow_core/switch_case@v1 अपने वर्कफ़्लो में ब्लॉक को एक स्टेप के रूप में जोड़ने के लिए।
गुण
नाम
प्रकार
विवरण
संदर्भ
name
str
इस स्टेप के लिए एक विशिष्ट पहचानकर्ता दर्ज करें..
❌
मान
Union[bool, float, int, str]
case keys के विरुद्ध मिलाने का मान। सामान्यतः एक selector जो workflow input या step output (उदा. $inputs.mode या $steps.classifier.top) को संदर्भित करता है। तुलना से पहले मान को string में बदल दिया जाता है, इसलिए booleans keys 'True'/'False' से, 1.0 '1.0' से और None value 'None' से मेल खाती है..
✅
case_insensitive
bool
जब सक्षम हो, case values अक्षर-केस की अनदेखी करते हुए मिलाए जाते हैं (उदा. value 'RED' case key 'red' से मेल खाती है)..
❌
यह संदर्भ स्तंभ यह इंगित करता है कि संपत्ति को वर्कफ़्लो रनटाइम में उपलब्ध गतिशील मानों के साथ पैरामीटराइज़ किया जा सकता है वर्कफ़्लो रनटाइम। देखें बाइंडिंग्स अधिक जानकारी के लिए।
इनपुट और आउटपुट बाइंडिंग्स
उपलब्ध कनेक्शन उसके बाइंडिंग प्रकारों पर निर्भर करते हैं। देखें कि कौन-से बाइंडिंग प्रकार स्विच केस संस्करण v1 है।
इनपुट और आउटपुट बाइंडिंग्स
इनपुट
मान(*): case keys के विरुद्ध मिलाने का मान। सामान्यतः एक selector जो workflow input या step output (उदा. $inputs.mode या $steps.classifier.top) को संदर्भित करता है। तुलना से पहले मान को string में बदल दिया जाता है, इसलिए booleans keys 'True'/'False' से, 1.0 '1.0' से और None value 'None' से मेल खाती है..cases(चरण): case value का उस step से मैपिंग जिसे तब execute करना चाहिए जबमानउससे मेल खाता है, उदा. {"red": "$steps.on_red", "blue": "$steps.on_blue"}. प्रत्येक target step अधिकतम एक बार भर में दिखाई दे सकता हैcasesऔरdefault_next_steps..default_next_steps(चरण): जब कोई case मेल न खाए, तब निष्पादित करने वाले चरण। कुछ भी मेल न खाने पर शाखा समाप्त करने के लिए खाली छोड़ें..
आउटपुट
अंतिम अपडेट
क्या यह उपयोगी था?