Shopify Flow में शर्तें
जब कुछ नियम पूरे हो जाते हैं, तो शर्तें वर्कफ़्लो को जारी रखती हैं, जैसे कि if-then स्टेटमेंट की शुरुआत। जब आप कोई शर्त सेट करते हैं, तो आप GraphQL Admin API के फ़ील्ड से मानदंड (जैसे product.title), एक लॉजिकल ऑपरेटर (जैसे के बराबर), और जांच के लिए एक मान (जैसे ब्लू जींस) चुनते हैं। जब कोई वर्कफ़्लो किसी शर्त का मूल्यांकन करता है, तो Flow वर्कफ़्लो में तय मान की जांच आपके स्टोर के लिए लौटाए गए मान से करता है, फिर नतीजों को वर्कफ़्लो रन में दिखाता है। शर्तों को तय करने के लिए उपलब्ध फ़ील्ड और मानों को बेहतर ढंग से समझने के लिए, स्टोर डेटा का प्रीव्यू करना सीखें।
शर्तों की बुनियादी बातें समझने के बारे में ज़्यादा जानें।
इस पेज पर
Flow के साथ इस्तेमाल किए जाने वाले डेटा के प्रकार
जब आप कोई शर्त सेट करते हैं, तो आप Admin API में उपलब्ध फ़ील्ड से एक मानदंड चुनते हैं और Flow आपके स्टोर के लिए लौटाए गए मान के आधार पर उसका मूल्यांकन करता है।
Flow इन तरह के डेटा को सपोर्ट करता है:
- फ़्लोट: फ़्लोट मान दशमलव वाली संख्याएं होती हैं। उदाहरण के लिए, 4.25.
- इंटीजर: इंटीजर मान पूर्ण संख्याएं होती हैं जिनमें दशमलव नहीं होता है। उदाहरण के लिए, 42.
- तारीख: तारीख मान, तारीख का संख्यात्मक प्रदर्शन होते हैं। उदाहरण के लिए, 01012021.
- स्ट्रिंग: स्ट्रिंग मान टेक्स्ट होते हैं। स्ट्रिंग मानों का इस्तेमाल करके की जाने वाली तुलना केस-सेंसिटिव नहीं होती है।
- बूलियन: बूलियन मान या तो सही होते हैं या गलत।
- इनम: इनम मान, डेटा के ऐसे सेट होते हैं जो किसी वैरिएबल को पहले से तय कॉन्सटेंट का एक सेट बनाने की अनुमति देते हैं।
लॉजिकल ऑपरेटर
लॉजिकल ऑपरेटर यह तय करते हैं कि आपकी शर्त कैसे लागू होती है। शर्तें साधारण प्रॉपर्टी की जांच कर सकती हैं, जैसे कि किसी ऑर्डर का कुल योग एक खास राशि से ज़्यादा है या नहीं, या कोई ग्राहक मार्केटिंग स्वीकार करता है या नहीं। लॉजिकल ऑपरेटर ज़्यादा जटिल प्रॉपर्टी की भी जांच कर सकते हैं।
ऑपरेटर या तो फ़ील्ड-लेवल ऑपरेटर हो सकते हैं, जैसे कि के बराबर या के बराबर नहीं, या सूची ऑपरेटर, जैसे कि इनमें से कम से कम एक या इनमें से कोई नहीं।
फ़ील्ड-लेवल ऑपरेटर
फ़ील्ड-लेवल ऑपरेटर का इस्तेमाल 2 मानों की तुलना करने के लिए किया जाता है। Flow इन ऑपरेटर का इस्तेमाल कर सकता है:
| ऑपरेटर | विवरण | उदाहरण |
|---|---|---|
| के बराबर | यह जांचने के लिए मानों की तुलना करता है कि क्या वे समान हैं। |
order.currentTotalDiscountsSet.shopMoney.amount के लिए वैल्यू को आपके स्टोर डेटा से प्राप्त किया जाता है और दूसरी वैल्यू, 50 से तुलना की जाती है।अगर ऑर्डर की कुल छूट बिल्कुल 50 के बराबर है, तो यह शर्त सही है। |
| के बराबर नहीं | यह जांचने के लिए मानों की तुलना करता है कि क्या वे समान नहीं हैं। |
order.currentTotalDiscountsSet.shopMoney.amount के लिए वैल्यू को आपके स्टोर डेटा से प्राप्त किया जाता है और दूसरी वैल्यू, 50 से तुलना की जाती है।अगर ऑर्डर की कुल छूट बिल्कुल 50 के बराबर नहीं है, तो यह शर्त सही है। |
| से बड़ा और से बड़ा या इसके बराबर | यह जांचने के लिए मानों की तुलना करता है कि पहला मान दूसरे मान से बड़ा है, या उससे बड़ा या उसके बराबर है। |
order.currentTotalDiscountsSet.shopMoney.amount के लिए वैल्यू को आपके स्टोर डेटा से प्राप्त किया जाता है और दूसरी वैल्यू, 50 से तुलना की जाती है।अगर ऑर्डर की कुल छूट की वैल्यू 137 है, तो यह शर्त सही है, क्योंकि 137, 50 से ज़्यादा है। |
| से कम और से कम या इसके बराबर | यह जांचने के लिए मानों की तुलना करता है कि पहला मान दूसरे मान से कम है, या उससे कम या उसके बराबर है। |
order.currentTotalDiscountsSet.shopMoney.amount के लिए वैल्यू को आपके स्टोर डेटा से प्राप्त किया जाता है और दूसरी वैल्यू, 50 से तुलना की जाती है।अगर ऑर्डर की कुल छूट 47 है, तो यह शर्त सही है, क्योंकि 47, 50 से कम या उसके बराबर है। |
| इनमें से कम से कम एक | यह जांचता है कि फ़ील्ड दी गई सूची में किसी मान के बराबर है या नहीं। मानों को अलग-अलग दर्ज किया जाना चाहिए और उसके बाद एंटर कुंजी दबानी चाहिए (टैग के समान)। खाली ऐरे पर इसका इस्तेमाल करने से मूल्यांकन गलत होता है। |
order.lineitem.product.title के लिए वैल्यू की तुलना इनसे की जाती है: pineapple, guava, kiwi।अगर लाइन आइटम प्रोडक्ट का टाइटल guava है, तो यह शर्त सही है, क्योंकि "guava" आपके द्वारा प्रदान की गई सूची में शामिल है। |
| इनमें से कोई नहीं | यह जांचता है कि फ़ील्ड दी गई सूची के किसी भी मान के बराबर नहीं है। |
order.lineitem.product.title के लिए वैल्यू की तुलना इनसे की जाती है: pineapple, guava, kiwi।अगर लाइन आइटम प्रोडक्ट का टाइटल raspberry है, तो यह शर्त सही है, क्योंकि "raspberry" आपके द्वारा प्रदान की गई सूची में शामिल नहीं है। |
| इसमें शामिल है | यह जांचने के लिए मानों की तुलना करता है कि पहले मान में दूसरे मान का डेटा शामिल है या नहीं। |
order.lineitem.product.title के लिए वैल्यू की तुलना इससे की जाती है: berry।अगर लाइन आइटम प्रोडक्ट का टाइटल strawberry है, तो यह शर्त सही है, क्योंकि "strawberry" में "berry" शामिल है। |
| इसमें शामिल नहीं है | यह जांचने के लिए मानों की तुलना करता है कि क्या पहले मान में दूसरे मान का डेटा शामिल नहीं है। |
order.lineitem.product.title के मान की तुलना इससे की जाती है: berry.अगर लाइन आइटम के प्रोडक्ट का टाइटल apple है, तो कंडीशन सही (true) है, क्योंकि "berry", "apple" में शामिल नहीं है। |
| इससे शुरू होता है | यह जांचने के लिए मानों की तुलना करता है कि पहला मान, दूसरे मान के डेटा से शुरू होता है या नहीं। |
order.shippingAddress.country के मान की तुलना इससे की जाती है: United.अगर ऑर्डर के शिपिंग पते का देश United Kingdom है, तो कंडीशन सही है, क्योंकि "United Kingdom", "United" से शुरू होता है। |
| इससे शुरू नहीं होता है | यह जांचने के लिए मानों की तुलना करता है कि पहला मान, दूसरे मान के डेटा से शुरू नहीं होता है या नहीं। |
order.shippingAddress.country के मान की तुलना इससे की जाती है: United.अगर ऑर्डर के शिपिंग पते का देश Canada है, तो कंडीशन सही है, क्योंकि "United Kingdom", "Canada" से शुरू नहीं होता है। |
| पर खत्म होता है | यह जांचने के लिए मानों की तुलना करता है कि पहला मान, दूसरे मान के डेटा पर खत्म होता है या नहीं। |
order.lineitems.product.title के मान की तुलना इससे की जाती है: pie.अगर लाइन आइटम के प्रोडक्ट का टाइटल key lime pie है, तो कंडीशन सही है, क्योंकि "key lime pie", "pie" पर खत्म होता है। |
| पर खत्म नहीं होता है | यह जांचने के लिए मानों की तुलना करता है कि पहला मान, दूसरे मान के डेटा पर खत्म नहीं होता है या नहीं। |
order.lineitems.product.title के मान की तुलना इससे की जाती है: pie.अगर लाइन आइटम के प्रोडक्ट का टाइटल chocolate cake है, तो कंडीशन सही है, क्योंकि "chocolate cake", "pie" पर खत्म नहीं होता है। |
शून्य या खाली ऑपरेटर
| ऑपरेटर | विवरण | सही/गलत स्थिति |
|---|---|---|
| खाली है या मौजूद नहीं है | जांचता है कि कोई फ़ील्ड खाली है (कोई मान नहीं है) या मौजूद नहीं है (शून्य है)। |
जब फ़ील्ड खाली या शून्य होता है, तो सही दिखाता है और अगर यह मौजूद है, तो गलत दिखाता है।
|
| खाली नहीं और मौजूद है | जांचता है कि कोई फ़ील्ड मौजूद है और खाली या शून्य नहीं है। | जब फ़ील्ड खाली नहीं होता और मौजूद होता है, तो सही दिखाता है, जब यह खाली होता है तो गलत दिखाता है। |
सूची ऑपरेटर
सूची ऑपरेटरों को फ़ील्ड-स्तर के ऑपरेटरों के साथ जोड़ा जाता है, ताकि आप सूचियों में शामिल डेटा पर स्थितियों की जांच कर सकें।
"कम से कम एक" उदाहरण की तरह, आप यह जांचना चाह सकते हैं कि किसी ऑर्डर में एक खास टैग (order.lineItems.product.tags के अंतर्गत एक सूची) वाला कोई खास प्रोडक्ट (order.lineItems में स्थित) है या नहीं। दोनों ही मामलों में, उदाहरण कम से कम एक सूची ऑपरेटर का उपयोग करता है।
Flow, सूचियों के साथ काम करने के लिए 3 ऑपरेटर देता है: कम से कम एक, कोई नहीं और सभी।
| ऑपरेटर | विवरण | उपयोग का उदाहरण |
|---|---|---|
| इनमें से कम से कम एक | यह जांचता है कि क्या लिस्ट में मौजूद कोई भी आइटम दी गई कंडीशन से मेल खाता है। अगर लिस्ट का कोई भी आइटम मेल खाता है, तो यह true दिखाता है। अगर लिस्ट खाली है या कोई भी आइटम मेल नहीं खाता है, तो यह false दिखाता है। | ऑर्डर लाइन आइटम का कम से कम एक प्रोडक्ट.टैग, टैगनेम के बराबर है का उपयोग करके जांचें कि किसी ऑर्डर में खास टैग वाला कोई प्रोडक्ट है या नहीं। |
| कोई नहीं | यह जांचता है कि लिस्ट में मौजूद कोई भी आइटम दी गई कंडीशन से मेल न खाए। अगर कोई भी आइटम कंडीशन से मेल नहीं खाता है, तो यह true दिखाता है। अगर लिस्ट खाली है, तो यह true दिखाता है। | None of product tags is equal to presale का उपयोग करके जांचें कि क्या किसी प्रोडक्ट में presale टैग नहीं है।एक आम गलती यह होती है कि is not equal to का उपयोग करके ऑपरेटर को नकारने की कोशिश की जाती है। इस दोहरी नकारात्मकता (डबल-नेगेटिव) None of product tags is not equal to presale का उपयोग करने से कंडीशन को समझना मुश्किल हो जाता है और यह अमान्य हो जाती है।
|
| सभी | यह जांचता है कि लिस्ट के सभी आइटम दी गई कंडीशन से मेल खाते हों। अगर लिस्ट का हर आइटम कंडीशन से मेल खाता है, तो यह true दिखाता है। | यह जांचने के लिए कि ऑर्डर के सभी आइटम का प्रोडक्ट वेंडर Acme है या नहीं, ऑर्डर के सभी लाइन आइटम का प्रोडक्ट.वेंडर Acme के बराबर है का उपयोग करें। |
स्थितियों का क्रम
आप ऐसे वर्कफ़्लो बना सकते हैं जिनमें कई स्थितियां हों, जिनमें से हरेक के परिणामस्वरूप अलग-अलग कार्रवाइयां हो सकती हैं। स्थितियों का क्रम मायने रखता है। स्थितियों की जांच वर्कफ़्लो की शुरुआत में शुरू होती है और व्यवस्थित रूप से हर स्थिति से होकर आगे बढ़ती है। जब कोई स्थिति पूरी हो जाती है, तो जांच रुक जाती है।
यह उदाहरण, स्टोर में ग्राहक द्वारा खर्च की गई कुल राशि के आधार पर यह जांचने के लिए कई स्थितियों का उपयोग करता है कि वह लॉयल्टी प्रोग्राम के लिए योग्य है या नहीं। स्थितियों की जांच उसी क्रम में की जाती है जिसमें वे दिखाई गई हैं:
- अगर कुल कीमत $1000 से ज़्यादा है और ग्राहक मार्केटिंग स्वीकार करने के लिए सहमत है, तो उन्हें
Goldटैग से टैग करें। - अगर कुल कीमत $1000 से कम लेकिन $500 से ज़्यादा है और ग्राहक मार्केटिंग स्वीकार करने के लिए सहमत है, तो उन्हें
Silverटैग से टैग करें। - अगर कुल कीमत $500 से कम लेकिन $200 से ज़्यादा है और ग्राहक मार्केटिंग स्वीकार करने के लिए सहमत है, तो उन्हें
Bronzeटैग से टैग करें।

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

वर्कफ़्लो ग्राहक को केवल तभी टैग करता है, जब ग्राहक कनाडा में स्थित हो और वे ऑर्डर में $500 से ज़्यादा खर्च करते हैं। अगर इनमें से कोई भी शर्त गलत है, तो ग्राहक को टैग नहीं किया जाता है।
अगर कोई भी मानदंड पूरा होता है.
OR को चुनने पर सही प्रतिक्रिया मिलती है, अगर आपके द्वारा सेट किए गए मानदंडों में से कोई एक भी सही हो।
उदाहरण के लिए, आप Cancel या Investigate के जोखिम संबंधी सुझाव वाले ऑर्डर को टैग करने के लिए एक वर्कफ़्लो बनाते हैं। जब तक इनमें से कोई एक शर्त सही है, तब तक ऑर्डर को टैग किया जाता है।

शर्तों में स्थिर और गतिशील डेटा.
आमतौर पर, किसी शर्त में दूसरा मान एक स्थिर, मैन्युअल रूप से दर्ज किया गया मान होता है (जैसे product.title == "आपका शीर्षक")। यह मान हर बार वर्कफ़्लो चलने पर समान रहता है।
आप गतिशील मानों का भी उपयोग कर सकते हैं, अगर दूसरे मान के लिए फ़ील्ड में आइकन दिखाई देता है। हर बार वर्कफ़्लो चलने पर आपके स्टोर डेटा से गतिशील मान लिए जाते हैं। गतिशील मान का उपयोग करने के लिए,
आइकन पर क्लिक करें और वह मान चुनें जिसके सामने आप जांच करना चाहते हैं। गतिशील मान सभी फ़ील्ड के लिए उपलब्ध नहीं हैं।
उदाहरण के लिए, आप एक ऐसा वर्कफ़्लो बनाते हैं जो किसी ऑर्डर को तब टैग करता है जब ऑर्डर के बिलिंग पते का देश उसके शिपिंग पते के देश से मेल खाता है।

इस उदाहरण में, पहले और दूसरे दोनों मान आपके स्टोर के डेटा से लिए गए हैं, न कि दूसरे मान के लिए जांच करने के लिए मैन्युअल रूप से एक स्थिर स्ट्रिंग को तय करने से। अगर ग्राहक द्वारा दिए गए बिलिंग पते में देश वही है जो ग्राहक ने शिपिंग पते में दिया है, तो शर्त सही है और ऑर्डर को टैग किया जाता है।
आपको कभी-कभी ऐसे गतिशील डेटा का उपयोग करने की ज़रूरत पड़ सकती है जो गलत प्रकार का हो। उदाहरण के लिए, आपको किसी स्ट्रिंग के रूप में स्टोर किए गए नंबर की तुलना दूसरे नंबर से करने की ज़रूरत पड़ सकती है। इस मामले में, आप डेटा को सही प्रकार में रूपांतरण करने के लिए कोड चलाएं विकल्प का उपयोग कर सकते हैं।
टेम्पलेट.
टेम्पलेट लाइब्रेरी में ज़्यादातर टेम्पलेट में एक शर्त होती है।
शर्त के उदाहरण.
जांचें कि क्या सूची में कम से कम एक आइटम किसी शर्त से मेल खाता है.
यह उदाहरण एक सामान्य शर्त दिखाता है जो यह जांचती है कि सूची में कम से कम एक आइटम एक निश्चित मान से मेल खाता है या नहीं।
इस मामले में, शर्त यह जांचती है कि किसी ऑर्डर में किसी एक प्रोडक्ट का टैग presale है या नहीं। इस शर्त को बनाने के लिए, आप order / lineItems / product / tags चुनेंगे। डिफ़ॉल्ट रूप से, Flow लॉजिकल ऑपरेटर के रूप में कम से कम एक को चुनता है:

कम से कम एक वाले भाग सूची ऑपरेटर हैं और इनका उपयोग कई सूची आइटम में मिलान को संभालने के लिए किया जाता है। के बराबर है वाला भाग एक फ़ील्ड-स्तर ऑपरेटर है जो यह तय करता है कि कोई एक सूची आइटम मेल खाता है या नहीं।
जांचें कि क्या सूची में कोई भी आइटम किसी शर्त से मेल नहीं खाता है.
यह उदाहरण एक सामान्य शर्त दिखाता है जो यह जांचती है कि सूची में कोई भी आइटम एक निश्चित मान से मेल नहीं खाता है। विचार करने वाली एक आम समस्या यह है कि सूचियां खाली हो सकती हैं। जब कोई सूची खाली होती है, तो शर्त को सूची ऑपरेटर (इस मामले में कोई नहीं) द्वारा हैंडल किया जाता है।
इस मामले में, शर्त जांचती है कि क्या कोई भी प्रोडक्ट टैग foo के बराबर नहीं है:

शर्त true लौटाएगी अगर (1) कोई प्रोडक्ट टैग नहीं हैं या (2) कोई भी टैग foo नहीं है। अन्यथा, यह false लौटाएगी।
जांचें कि क्या सूची में कोई आइटम कई मानदंडों से मेल खाता है.
यह उदाहरण एक सामान्य शर्त दिखाता है जो यह जांचती है कि सूची में कम से कम एक आइटम दो अलग-अलग मानदंडों से मेल खाता है या नहीं।
इस मामले में, शर्त यह जांचती है कि किसी ऑर्डर में किसी एक प्रोडक्ट का टैग presale है और उसका प्रोडक्ट प्रकार clothing है या नहीं।

इस शर्त को बनाने के लिए, आपको यह करना चाहिए:
- पहले मानदंड के लिए order / lineItems / product / tags चुनें।
- lineItems सूची पर एक ही आइटम के लिए मानदंड जोड़ें चुनें। ध्यान दें: यहां गलत सूची आइटम चुनना एक आम गलती है।
- टॉप लेवल ऑब्जेक्ट के रूप में lineItems_item और दूसरे क्राइटेरिया के लिए product / productType` चुनें। ध्यान दें: यहां गलत ऑब्जेक्ट चुनना भी एक आम गलती है।
- दोनों क्राइटेरिया को जोड़ने के लिए AND चुनें।
- दोनों क्राइटेरिया के लिए
presaleऔरclothingवैल्यू एंटर करें।