შენი Shopify Flow-ს სამუშაო პროცესების ოპტიმიზაცია

როდესაც სამუშაო პროცესს ქმნი, გინდა დარწმუნდე, რომ ის მაქსიმალურად ეფექტურად ეშვება. ეს დოკუმენტი აღწერს სცენარებს, რომლებმაც შეიძლება გამოიწვიოს შენი სამუშაო პროცესების შეზღუდვა ან API ლიმიტების ამოწურვა, და გთავაზობს რჩევებს, თუ როგორ გადაჭრა ეს პრობლემები ან მონახო მათი შემოვლითი გზა.

ეფექტურობის გავრცელებული პრობლემები

ეს სექცია აღწერს გავრცელებულ სცენარებს, რომლებმაც შეიძლება შენს სამუშაო პროცესებში ეფექტურობის პრობლემები გამოიწვიოს. შესაძლებელია ერთდროულად ერთზე მეტი სცენარის არსებობა, რაც გაზრდის ეფექტურობის პრობლემების დაფიქსირების ალბათობას. რედაქტორის კონფიგურაციასთან ან სიხშირის შეზღუდვასთან დაკავშირებული შეცდომებისთვის გამოიყენე ხარვეზების აღმოფხვრის გზამკვლევი.

მაღალი მოცულობის ტრიგერები

მაღალი მოცულობის ტრიგერები ისეთებია, სადაც ძირითადი მოვლენა ხშირად ხდება. მაგალითად, ტრიგერი პროდუქტის ვარიანტის მარაგის რაოდენობა შეიცვალა მაღაზიაში მარაგის ყოველი ცვლილებისთვის ეშვება. ტრიგერის მოცულობა მოქმედებს როგორც მულტიპლიკატორი შენს სამუშაო პროცესში ნებისმიერ პრობლემაზე. მაგალითად, თუ სამუშაო პროცესს 100 პროდუქტი მოაქვს და წუთში 1000-ჯერ ეშვება, წუთში ის 100 000 პროდუქტს მიიღებს. ამან შეიძლება ეფექტურობის პრობლემები გამოიწვიოს.

გადაწყვეტა: ოპტიმიზაცია გაუკეთე შენს სამუშაო პროცესებს ნაკლები მონაცემების გამოყენებით ან გამოიყენე მოცდის ნაბიჯები შენი სამუშაო პროცესის დასაყოფად.

ბევრი სამუშაო პროცესი, რომელიც ერთსა და იმავე ტრიგერს იყენებს

Flow-ში ერთსა და იმავე ტრიგერის გამოყენებით ერთზე მეტი სამუშაო პროცესის აწყობა შეგიძლია. მოვლენის დადგომისას ეს სამუშაო პროცესები ერთმანეთის პარალელურად გაეშვება. ეს შეიძლება პრობლემური იყოს, თუ შემდეგი მიზეზების გამო ერთსა და იმავე ტრიგერით ძალიან ბევრ სამუშაო პროცესს გაუშვებ:

  • სამუშაო პროცესები შეიძლება ერთმანეთთან კონფლიქტში მოვიდეს.
  • სამუშაო პროცესები ერთდროულად მონაცემების მიღებასა და API-ების გამოძახებას ცდილობენ, ხოლო შენი მაღაზია ერთდროულად დასამუშავებელი მოთხოვნების რაოდენობით შეზღუდულია Shopify API-ის ლიმიტებით.

გადაწყვეტა: გააერთიანე სამუშაო პროცესები, რომლებიც ერთსა და იმავე ტრიგერს იყენებს, ერთ სამუშაო პროცესად. ეს ასევე საშუალებას გაძლევს, გააკონტროლო, თუ როდის სრულდება თითოეული მათგანი, რათა ისინი ერთმანეთთან კონფლიქტში არ მოვიდეს. სამუშაო პროცესების გაერთიანება განსაკუთრებით სასარგებლოა, თუ სამუშაო პროცესები ბევრ მონაცემს არ აბრუნებს ან მათი დაბრუნებული მონაცემები იდენტურია. თუ სამუშაო პროცესები ბევრ განსხვავებულ მონაცემს აბრუნებს, შესაძლოა აღმოაჩინო, რომ მათი განცალკევება უკეთეს ეფექტურობას უზრუნველყოფს.

სიების ან არასწორი მონაცემების გამოყენება

სამუშაო პროცესის აწყობისას შესაძლოა გამოიყენო ობიექტების სია, როგორიცაა პროდუქტები ან შეკვეთები. ობიექტების სიის გამოყენების შემთხვევაში Flow სიაში არსებულ ყველა ობიექტს მიიღებს. ეს შეიძლება პრობლემა გახდეს, როდესაც სია ბევრ მონაცემს შეიცავს.

კიდევ ერთი გავრცელებული პრობლემა არასწორი მონაცემების შემთხვევით არჩევაა. მაგალითად, შეკვეთაზე პროდუქტის მონაცემების შესამოწმებლად შესაძლოა აგერჩია order / publication / products / tags order / line items / product / tags-ის ნაცვლად. პირველი შედეგი ჩვეულებრივ არასწორია, რადგან მას პუბლიკაციისთვის ყველა პროდუქტი გამოაქვს, მაშინ როდესაც მიზანი შეკვეთაზე პროდუქტების შემოწმებაა. ასეთი დიდი სიის არჩევამ შეიძლება გამოიწვიოს ეფექტურობის პრობლემები, ხოლო არასწორი სიის არჩევამ შეიძლება განაპირობოს შენი ავტომატიზაციის მიერ არასწორი ქმედების შესრულება.

გადაწყვეტა: ფრთხილად აირჩიე საჭირო მონაცემები და თავიდან აირიდე სიების გამოყენება, როცა ეს არ გჭირდება. გატესტე შენი სამუშაო პროცესები, რათა დარწმუნდე, რომ ისინი მოსალოდნელ შედეგს იძლევა.

მეტაველები

ინდივიდუალური მეტაველის ან მეტაობიექტის მონაცემების მიღებამ ეფექტურობის პრობლემები არ უნდა გამოიწვიოს. თუმცა, გავრცელებული პრობლემაა metafields სიის არჩევა და რესურსზე არსებული ყველა მეტაველის ციკლური დამუშავება (looping). თუ value ველი შეიცავს ბევრ მონაცემს, მაგალითად, როდესაც HTML ობიექტები გამოიყენება, ამან შეიძლება განაპირობოს ბევრი მონაცემის დამუშავება და პოტენციურად გამოიწვიოს ეფექტურობის პრობლემები.

გადაწყვეტა: metafields-ის ნაცვლად გამოიყენე metafield ობიექტი.

Get data ქმედებების გადაჭარბებული გამოყენება

სამუშაო პროცესები, რომლებიც Get data ქმედებას იყენებს, მაგალითად Get order data, გათვლილია იმაზე, რომ თითოეულ სამუშაო პროცესზე Get data ქმედებებიდან მაქსიმუმ 100 ობიექტი დააბრუნოს. 100 ობიექტის გადაჭარბებამ შეიძლება გამოიწვიოს ეფექტურობის პრობლემები.

გადაწყვეტა: გაუშვი სამუშაო პროცესი უფრო ხშირად, რათა შენს მოთხოვნას არ დასჭირდეს 100-ზე მეტი შედეგის დაბრუნება. განმეორებითი მოთხოვნების გაგზავნის ნაცვლად, ხელახლა გამოიყენე იგივე Get data ქმედება.

Get data ქმედებებში მოთხოვნის ფილტრების არარსებობა

Get data ქმედებები იძახებს Shopify API-ს. თუ მოთხოვნა არ არის, მაშინ API ან ყველა რესურსს დააბრუნებს, ან — არცერთს. ამან შეიძლება გამოიწვიოს ეფექტურობის პრობლემები, მაგრამ ასევე შეიძლება გამოიწვიოს შენს მაღაზიაში არასწორი ქმედებების შესრულება, როდესაც დაბრუნებულ მონაცემებს მოგვიანებით სამუშაო პროცესში გამოიყენებ.

გადაწყვეტა: Get data ქმედებებში ყოველთვის ჩართე მოთხოვნის ფილტრები.

არასწორი მოთხოვნის ფილტრები Get data ქმედებებში

Get data მოთხოვნებს აქვს მოთხოვნის ფილტრების შეზღუდული ნაკრების, კონკრეტული სინტაქსის და იმ კონკრეტული მნიშვნელობების ნაკრების მხარდაჭერა, რომელთა გამოყენებაც ფილტრებში შეიძლება. არასწორი ფილტრის, ფილტრის მნიშვნელობის ან სინტაქსის შეყვანამ შეიძლება გამოიწვიოს მთლიანი მოთხოვნის იგნორირება, რამაც შეიძლება გამოიწვიოს ისეთივე პრობლემები, როგორიცაა მოთხოვნის ფილტრის არარსებობის შემთხვევაში.

გადაწყვეტა: ხელმისაწვდომი მოთხოვნის ფილტრების სიის სანახავად გამოიყენე Flow-ში ქმედების მიერ მოწოდებული დოკუმენტაცია. ყოველთვის გატესტე შენი მოთხოვნის ფილტრები, რათა დარწმუნდე, რომ ისინი მოსალოდნელ მონაცემებს აბრუნებს. შეგიძლია გამოიყენო Log Output ქმედება Flow-ში დაბრუნებული მონაცემების გადასახედად, ან შეგიძლია პირდაპირ გამოიძახო Shopify Admin API Postman-ის მსგავსი API კლიენტის ან GraphiQL აპის მეშვეობით.

დამატებითი გადაწყვეტილებები ეფექტურობის გავრცელებული პრობლემებისთვის

მონაცემების მიღების გადასადებად გამოიყენე მოცდის (Wait) ნაბიჯები

მოცდის (Wait) ნაბიჯები საშუალებას გაძლევს, შეაჩერო სამუშაო პროცესი მითითებული დროით, თუმცა მოცდის ნაბიჯების გამოყენება სამუშაო პროცესების ოპტიმიზაციისთვისაც შეიძლება. თითოეული მოცდის ნაბიჯი შენი სამუშაო პროცესის შესრულებას ეფექტურად ყოფს ცალკეულ ფაზებად. სამუშაო პროცესის გაშვებისას, ის ავტომატურად იღებს მონაცემებს, რომლებიც საჭიროა პირველ მოცდის ნაბიჯამდე (და კვლავ იღებს მონაცემებს მოცდის ნაბიჯის შემდეგ, სამუშაო პროცესის დარჩენილი ნაწილისთვის).

თუ სამუშაო პროცესი იყენებს მაღალი მოცულობის ტრიგერს და იღებს ბევრ მონაცემს, მაგრამ ქმედებას მხოლოდ იშვიათად ასრულებს, მაშინ შეგიძლია ნებისმიერი რთული მონაცემი ან ლოგიკა პირობისა (condition) და მოცდის ნაბიჯის წყვილის შემდეგ განათავსო. მაგალითად:

  1. ტრიგერი: პროდუქტის ვარიანტის მარაგის რაოდენობა შეიცვალა.
  2. პირობა: შეამოწმე, არის თუ არა პროდუქტი კოლექციაში.
  3. თუ ჭეშმარიტია, ქმედება: მოიცადე 2 წამი.
  4. ქმედება: გაუგზავნე ელფოსტა მომხმარებელს (ბევრი მონაცემით).

ამ მაგალითში მე-4 ნაბიჯისთვის საჭირო მონაცემები მხოლოდ მოცდის ნაბიჯის დასრულების შემდეგ გამოითხოვება. თუ პირობა ჩვეულებრივ მცდარია, მაშინ ეს ნიშნავს, რომ სამუშაო პროცესი უფრო სწრაფად და ეფექტურად გაეშვება.

რისი ოპტიმიზაცია არ არის საჭირო

ერთი და იმავე მონაცემების მრავალ ქმედებაში გამოყენება

როდესაც ერთსა და იმავე ველს მრავალ ნაბიჯში იყენებ, Flow აანალიზებს ამ ველების გამოყენებას და მონაცემებს მხოლოდ ერთხელ იღებს. ეს ნიშნავს, რომ მონაცემები შეგიძლია გამოიყენო რამდენჯერაც გინდა, ეფექტურობაზე ფიქრის გარეშე.