Shopify Flow-এর শর্ত
নির্দিষ্ট নিয়ম পূরণ হলে শর্তগুলো ওয়ার্কফ্লো চালিয়ে যায়, যেমন if-then স্টেটমেন্ট শুরু হওয়া। আপনি কোনো শর্ত সেট করলে, GraphQL Admin API-এর ফিল্ডগুলো থেকে মানদণ্ড (যেমন product.title), একটি লজিক্যাল অপারেটর (যেমন equal to) এবং চেক করার জন্য একটি ভ্যালু (যেমন Blue jeans) বেছে নেন। কোনো ওয়ার্কফ্লো একটি শর্ত মূল্যায়ন করলে, Flow আপনার স্টোরের জন্য রিটার্ন করা ভ্যালুর সাথে ওয়ার্কফ্লোতে সংজ্ঞায়িত ভ্যালু চেক করে, তারপর ফলাফলগুলো ওয়ার্কফ্লো রানে প্রদর্শন করে। শর্তগুলো সংজ্ঞায়িত করার জন্য উপলভ্য ফিল্ড এবং ভ্যালুগুলো আরও ভালোভাবে বুঝতে, কীভাবে স্টোরের ডেটা প্রিভিউ করতে হয় তা জানুন।
শর্তের প্রাথমিক বিষয়গুলো বোঝা সম্পর্কে আরও জানুন।
এই পেজে
Flow-এর সাথে ব্যবহৃত ডেটার ধরন
আপনি কোনো শর্ত সেট করলে, Admin API-এ উপলভ্য ফিল্ডগুলো থেকে একটি মানদণ্ড বেছে নেন এবং Flow আপনার স্টোরের জন্য রিটার্ন করা ভ্যালুর সাথে এটির মূল্যায়ন করে।
Flow নিম্নলিখিত ধরনের ডেটা সমর্থন করে:
- ফ্লোট (Float): ফ্লোট ভ্যালু হলো দশমিকের পরিমাণ থাকা সংখ্যা। উদাহরণস্বরূপ, 4.25।
- পূর্ণসংখ্যা (Integer): পূর্ণসংখ্যার ভ্যালুগুলো হলো সম্পূর্ণ সংখ্যা যেগুলোতে কোনো দশমিক থাকে না। উদাহরণস্বরূপ, 42।
- তারিখ (Date): তারিখের ভ্যালুগুলো হলো তারিখের সংখ্যাগত উপস্থাপনা। উদাহরণস্বরূপ, 01012021।
- স্ট্রিং (String): স্ট্রিং ভ্যালু হলো টেক্সট। স্ট্রিং ভ্যালু ব্যবহার করে করা তুলনাগুলো কেস-সেনসিটিভ নয়।
- বুলিয়ান (Boolean): বুলিয়ান ভ্যালুগুলো সত্য বা মিথ্যা হয়।
- এনাম (Enum): এনাম ভ্যালুগুলো হলো ডেটার সেট যা একটি ভেরিয়েবলকে পূর্বনির্ধারিত ধ্রুবকের সেট হতে দেয়।
লজিক্যাল অপারেটর
লজিক্যাল অপারেটরগুলি নির্ধারণ করে কীভাবে আপনার শর্ত প্রয়োগ করা হবে। শর্তগুলি সাধারণ বিষয়গুলো চেক করতে পারে যেমন কোনো অর্ডারের মোট পরিমাণ একটি নির্দিষ্ট পরিমাণের চেয়ে বেশি কি না, অথবা কোনো গ্রাহক মার্কেটিং গ্রহণ করেন কি না। লজিক্যাল অপারেটরগুলি আরও জটিল বিষয়গুলোও চেক করতে পারে।
অপারেটরগুলো হতে পারে ফিল্ড-স্তরের অপারেটর, যেমন এর সমান বা এর সমান নয়, অথবা তালিকা অপারেটর, যেমন অন্তত একটি বা একটিও নয়।
ফিল্ড-স্তরের অপারেটর
ফিল্ড-স্তরের অপারেটরগুলো 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-এর চেয়ে কম বা সমান। |
| এর মধ্যে অন্তত একটি | প্রদত্ত তালিকার কোনো মানের সমান ফিল্ডটি কি না তা চেক করে। মানগুলো অবশ্যই আলাদাভাবে লিখতে হবে এবং এরপর এন্টার (enter) কী চাপতে হবে (ট্যাগের মতো)। ফাঁকা অ্যারেকে ব্যবহার করলে মূল্যায়ন মিথ্যা হয়। |
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 হয়, তাহলে শর্তটি সত্য, কারণ "apple"-এ "berry" অন্তর্ভুক্ত নেই। |
| যা দিয়ে শুরু হয় | প্রথম মানটি দ্বিতীয় মানের ডেটা দিয়ে শুরু হয় কি না তা চেক করতে মানগুলোর তুলনা করে। |
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" দিয়ে শেষ হয় না। |
নাল বা ফাঁকা অপারেটর
| অপারেটর | বিবরণ | সত্য/মিথ্যা শর্ত |
|---|---|---|
| ফাঁকা বা অস্তিত্ব নেই | কোনো ফিল্ড ফাঁকা (কোনো মান নেই) কি না বা সেটির কোনো অস্তিত্ব নেই (null) কি না তা চেক করে। |
ফিল্ডটি খালি বা null হলে এটি true প্রদান করে এবং এটি উপস্থিত থাকলে false প্রদান করে।
|
| খালি নয় এবং বিদ্যমান | একটি ফিল্ড উপস্থিত আছে কিনা এবং এটি খালি বা null নয় কিনা তা চেক করে। | ফিল্ডটি খালি না হলে এবং বিদ্যমান থাকলে এটি true প্রদান করে, আর খালি হলে false প্রদান করে। |
লিস্ট অপারেটর
লিস্টে অন্তর্ভুক্ত ডেটার উপর শর্ত চেক করতে ফিল্ড-স্তরের অপারেটরের সাথে লিস্ট অপারেটরগুলোকে একত্রিত করা হয়।
যেমন "কমপক্ষে একটি" উদাহরণের ক্ষেত্রে দেখা যায়, আপনি হয়তো চেক করে দেখতে চাইতে পারেন যে কোনো অর্ডারে একটি নির্দিষ্ট ট্যাগ (order.lineItems.product.tags-এর অধীনে একটি লিস্ট) সহ একটি নির্দিষ্ট পণ্য (order.lineItems-এ অবস্থিত) আছে কিনা। উভয় ক্ষেত্রেই, উদাহরণটি কমপক্ষে একটি (at least one of) লিস্ট অপারেটর ব্যবহার করে।
লিস্ট নিয়ে কাজ করার জন্য Flow 3টি অপারেটর প্রদান করে: At least one of, None of এবং All of।
| অপারেটর | বিবরণ | ব্যবহারের উদাহরণ |
|---|---|---|
| এর মধ্যে অন্তত একটি | লিস্টের কোনো আইটেম নির্দিষ্ট শর্তের সাথে মেলে কিনা তা চেক করে। লিস্টের কোনো আইটেম মিলে গেলে true প্রদান করে। লিস্ট খালি হলে বা কোনো আইটেম না মিললে false প্রদান করে। | At least one of order line items.product.tags is equal to tagname ব্যবহার করে চেক করুন কোনো অর্ডারে একটি নির্দিষ্ট ট্যাগযুক্ত কোনো পণ্য আছে কিনা। |
| None of | লিস্টের কোনো আইটেমই নির্দিষ্ট শর্তের সাথে মেলে না, তা চেক করে। কোনো আইটেম শর্তের সাথে না মিললে true প্রদান করে। লিস্ট খালি হলে true প্রদান করে। | None of product tags is equal to presale ব্যবহার করে চেক করুন কোনো পণ্যের presale ট্যাগ নেই কিনা।একটি সাধারণ ভুল হলো is not equal to ব্যবহার করে অপারেটরটিকে নেতিবাচক করার চেষ্টা করা। এই ডাবল-নেগেটিভ None of product tags is not equal to presale ব্যবহার করার ফলে শর্তটি বোঝা কঠিন হয়ে যায় এবং অবৈধ হয়ে পড়ে।
|
| All of | লিস্টের সব আইটেম নির্দিষ্ট শর্তের সাথে মেলে কিনা তা চেক করে। লিস্টের প্রতিটি আইটেম শর্তের সাথে মিললে true প্রদান করে। | All of order line items have a product.vendor equal to Acme ব্যবহার করে চেক করুন কোনো অর্ডারের সব আইটেমের Acme নামের নির্দিষ্ট কোনো পণ্যের ভেন্ডর আছে কিনা। |
শর্তের ক্রম
আপনি এমন ওয়ার্কফ্লো তৈরি করতে পারবেন যেগুলোতে একাধিক শর্ত থাকে এবং এর প্রতিটির কারণে আলাদা আলাদা কাজ হতে পারে। শর্তের ক্রমটি এখানে গুরুত্বপূর্ণ ভূমিকা রাখে। ওয়ার্কফ্লোর শুরুতেই শর্ত চেক করা শুরু হয় এবং প্রতিটি শর্তের মধ্য দিয়ে পদ্ধতিগতভাবে অগ্রসর হয়। কোনো শর্ত পূরণ হলে চেক করা বন্ধ হয়ে যায়।
কোনো গ্রাহক স্টোরে মোট কত খরচ করেছেন তার ওপর ভিত্তি করে তিনি কোনো লয়্যালটি প্রোগ্রামের জন্য যোগ্য কিনা, তা চেক করার জন্য এই উদাহরণটিতে একাধিক শর্ত ব্যবহার করা হয়েছে। শর্তগুলো সেগুলোর প্রদর্শিত ক্রমানুসারে চেক করা হয়:
- মোট দাম $1000-এর বেশি হলে এবং গ্রাহক মার্কেটিংয়ের বিষয়টি গ্রহণ করতে সম্মত হলে তাদেরকে
Goldট্যাগ দিন। - মোট দাম $1000-এর কম কিন্তু $500-এর বেশি হলে এবং গ্রাহক মার্কেটিংয়ের বিষয়টি গ্রহণ করতে সম্মত হলে তাদেরকে
Silverট্যাগ দিন। - মোট দাম $500-এর কম কিন্তু $200-এর বেশি হলে এবং গ্রাহক মার্কেটিংয়ের বিষয়টি গ্রহণ করতে সম্মত হলে তাদেরকে
Bronzeট্যাগ দিন।

একটি শর্তে একাধিক মানদণ্ড একত্রিত করা
একটি শর্ত তৈরি করার সময় আপনি বেশ কয়েকটি মানদণ্ড সেট করতে পারেন। সামগ্রিক শর্তটি true নাকি false তা নির্ধারণ করার জন্য এই আলাদা আলাদা মানদণ্ড কীভাবে একত্রিত করা উচিত তা আপনি বেছে নিতে পারবেন।
সবগুলো মানদণ্ড পূরণ হলে
AND নির্বাচন করলে সেটি কেবল তখনই একটি true প্রতিক্রিয়া প্রদান করবে, যদি আপনার সেট করা প্রতিটি মানদণ্ড true হয়।
উদাহরণস্বরূপ, যেসব গ্রাহক কানাডায় থাকেন এবং একটি অর্ডারে $500-এর বেশি খরচ করেন তাদের ট্যাগ করার জন্য আপনি একটি ওয়ার্কফ্লো তৈরি করেছেন।

গ্রাহক কানাডায় থাকলে এবং তিনি অর্ডারে $500-এর বেশি খরচ করলে ওয়ার্কফ্লোটি কেবল তখনই তাকে ট্যাগ করবে। এই শর্তগুলোর মধ্যে যেকোনো একটি false হলে, গ্রাহককে ট্যাগ করা হবে না।
যেকোনো মানদণ্ড পূরণ হলে
OR নির্বাচন করলে তা একটি true প্রতিক্রিয়া প্রদান করে, যদি আপনার সেট করা মানদণ্ডগুলোর মধ্যে যেকোনো একটি true হয়।
উদাহরণস্বরূপ, Cancel বা Investigate-এর ঝুঁকির সুপারিশ সহ অর্ডারগুলো ট্যাগ করতে আপনি একটি ওয়ার্কফ্লো তৈরি করেছেন। এই শর্তগুলোর মধ্যে যেকোনো একটি true হলেই অর্ডারটি ট্যাগ করা হয়।

শর্তে স্ট্যাটিক ও ডাইনামিক ডেটা
সাধারণত, কোনো শর্তের দ্বিতীয় মানটি হলো একটি স্ট্যাটিক ও ম্যানুয়ালি-এন্টার করা মান (যেমন product.title == "your title")। ওয়ার্কফ্লো প্রতিবার রান করার সময় এই মান একই থাকে।
দ্বিতীয় মানের ফিল্ডে যদি একটি আইকন প্রদর্শিত হয়, তবে আপনি ডাইনামিক মানও ব্যবহার করতে পারবেন। ওয়ার্কফ্লো প্রতিবার রান করার সময় আপনার স্টোর ডেটা থেকে ডাইনামিক মান নেওয়া হয়। কোনো ডাইনামিক মান ব্যবহার করতে,
আইকনে ক্লিক করুন এবং আপনি যে মানটির সাথে মিলিয়ে দেখতে চান সেটি নির্বাচন করুন। সব ফিল্ডের জন্য ডাইনামিক মান উপলভ্য নেই।
উদাহরণস্বরূপ, অর্ডারের বিলিং ঠিকানার দেশ যদি এর শিপিংয়ের ঠিকানার দেশের সাথে মিলে যায়, তবে আপনি এমন একটি ওয়ার্কফ্লো তৈরি করতে পারবেন যা অর্ডারটিকে ট্যাগ করবে।

এই উদাহরণে, দ্বিতীয় মানের সাথে মিলিয়ে দেখার জন্য ম্যানুয়ালি কোনো স্ট্যাটিক স্ট্রিং উল্লেখ করার বদলে, প্রথম ও দ্বিতীয়, উভয় মানই আপনার স্টোরের ডেটা থেকে নেওয়া হয়েছে। গ্রাহকের দেওয়া বিলিং ঠিকানার দেশটি যদি তার দেওয়া শিপিংয়ের ঠিকানার দেশের মতোই হয়, তবে শর্তটি true হবে এবং অর্ডারটি ট্যাগ করা হবে।
ভুল ধরণের ডাইনামিক ডেটা ব্যবহার করার প্রয়োজন আপনার মাঝে মাঝে হতে পারে। উদাহরণস্বরূপ, স্ট্রিং হিসেবে সেভ করা কোনো নম্বরের সাথে অন্য নম্বরের তুলনা করার প্রয়োজন আপনার হতে পারে। এক্ষেত্রে, ডেটাকে সঠিক ধরণে কনভার্ট করতে আপনি Run code বিকল্পটি ব্যবহার করতে পারেন।
টেমপ্লেট
টেমপ্লেট লাইব্রেরি-এর বেশিরভাগ টেমপ্লেটেই কোনো না কোনো শর্ত থাকে।
শর্তের উদাহরণ
তালিকার অন্তত একটি আইটেম কোনো শর্তের সাথে মেলে কি না তা চেক করুন
এই উদাহরণটিতে এমন একটি সাধারণ শর্ত দেখানো হয়েছে যা তালিকার অন্তত একটি আইটেম নির্দিষ্ট কোনো মানের সাথে মেলে কি না তা চেক করে।
এই ক্ষেত্রে, শর্তটি চেক করে যে কোনো অর্ডারের কোনো পণ্যে presale ট্যাগ রয়েছে কি না। এই শর্তটি তৈরি করতে, আপনি order / lineItems / product / tags বেছে নেবেন। ডিফল্টরূপে, Flow লজিক্যাল অপারেটর হিসেবে at least one of-কে বেছে নেয়:

at least one of অংশগুলো হলো লিস্ট অপারেটর এবং একাধিক তালিকা আইটেমের মধ্যে মিল পরিচালনা করতে এগুলো ব্যবহৃত হয়। is equal to অংশটি হলো একটি ফিল্ড-লেভেল অপারেটর যা নির্ধারণ করে যে একটি একক তালিকা আইটেম মেলে কি না।
তালিকার কোনো আইটেমই শর্তের সাথে মেলে না কি না তা চেক করুন
এই উদাহরণটি এমন একটি সাধারণ শর্ত দেখায় যা চেক করে তালিকার কোনো আইটেমই নির্দিষ্ট কোনো মানের সাথে মেলে না কি না। বিবেচনা করার মতো একটি সাধারণ সমস্যা হলো তালিকাগুলো খালি থাকতে পারে। তালিকা খালি থাকলে, শর্তটি লিস্ট অপারেটর দিয়ে পরিচালনা করা হবে (এই ক্ষেত্রে none of)।
এই ক্ষেত্রে, পণ্যের কোনো ট্যাগই foo-এর সমান না কি না শর্তটি তা চেক করে:

শর্তটি true রিটার্ন করবে যদি (1) পণ্যের কোনো ট্যাগ না থাকে বা (2) কোনো ট্যাগই foo না হয়। অন্যথায়, এটি false রিটার্ন করবে।
তালিকার কোনো আইটেম একাধিক ক্রাইটেরিয়ার সাথে মেলে কি না তা চেক করুন
এই উদাহরণটি এমন একটি সাধারণ শর্ত দেখায় যা তালিকার অন্তত একটি আইটেম দুটি আলাদা ক্রাইটেরিয়ার সাথে মেলে কি না তা চেক করে।
এই ক্ষেত্রে, শর্তটি চেক করে যে কোনো অর্ডারের কোনো একটি পণ্যের ট্যাগ presale এবং এর productType clothing কি না।

এই শর্তটি তৈরি করতে, আপনাকে যা করতে হবে:
- প্রথম ক্রাইটেরিয়ার জন্য order / lineItems / product / tags বেছে নিন।
- lineItems তালিকায় Add criteria for same item বেছে নিন। দ্রষ্টব্য: এখানে ভুল তালিকা আইটেম বেছে নেওয়া একটি সাধারণ ভুল।
- শীর্ষ স্তরের অবজেক্ট হিসেবে lineItems_item এবং এরপর দ্বিতীয় ক্রাইটেরিয়ার জন্য product / productType` বেছে নিন। দ্রষ্টব্য: এখানে ভুল অবজেক্ট বেছে নেওয়াও একটি সাধারণ ভুল।
- ক্রাইটেরিয়া দুটিকে একত্রিত করতে AND বেছে নিন।
- ক্রাইটেরিয়া দুটির জন্য
presaleএবংclothingমানগুলো লিখুন।