تحسين مسارات عمل Shopify Flow

عند بناء سير عمل، ستحتاج إلى التأكد من أنه يُشغَّل بأكبر قدر ممكن من الكفاءة. يوضّح هذا المستند السيناريوهات التي قد تتسبب في تقييد مسارات عملك أو استنفاد حدود واجهة برمجة التطبيقات (API)، ونصائح حول كيفية حل هذه المشكلات أو إيجاد حلول بديلة لها.

مشكلات الأداء الشائعة

يوضّح هذا القسم السيناريوهات الشائعة التي يمكن أن تسبب مشكلات في الأداء في مسارات عملك. من المحتمل وجود أكثر من سيناريو واحد في الوقت ذاته، مما قد يزيد من احتمالية مواجهة مشكلات في الأداء. للأخطاء المتعلقة بتهيئة المحرر أو تقييد المعدل، استخدم دليل استكشاف الأخطاء وإصلاحها.

المُشغّلات ذات الحجم الكبير

المُشغّلات ذات الحجم الكبير هي تلك التي يحدث فيها الحدث الأساسي بشكل متكرر. على سبيل المثال، يُشغَّل المُشغّل تغيُّر كمية مخزون متغير المنتج مع كل تغيير في المخزون بالمتجر. يعمل حجم المُشغّل كمضاعف لأي مشكلة في سير عملك. على سبيل المثال، إذا كان سير العمل يجلب 100 منتج، ويُشغَّل 1000 مرة في الدقيقة، فسيجلب 100,000 منتج في الدقيقة. وهذا قد يسبب مشكلات في الأداء.

الحل: حَسِّن مسارات عملك عن طريق استخدام بيانات أقل، أو استخدم خطوات الانتظار لتقسيم سير عملك.

العديد من مسارات العمل تستخدم المُشغّل نفسه

في Flow، يمكنك بناء أكثر من سير عمل واحد باستخدام المُشغّل نفسه. ستعمل مسارات العمل هذه بالتوازي مع بعضها البعض عند حدوث الحدث. يمكن أن يكون هذا مشكلة إذا شغّلت الكثير من مسارات العمل باستخدام المُشغّل نفسه للأسباب التالية:

  • يمكن أن تتعارض مسارات العمل مع بعضها البعض.
  • تحاول مسارات العمل جلب البيانات واستدعاء واجهات برمجة التطبيقات في الوقت ذاته، ويكون متجرك مقيدًا بعدد الطلبات التي يمكنه معالجتها في وقت واحد بواسطة حدود واجهة برمجة تطبيقات (API) Shopify.

الحل: ادمج مسارات العمل التي تستخدم المُشغّل ذاته في سير عمل واحد. يتيح لك هذا أيضًا التحكم في وقت تنفيذ كل منها، حتى لا تتعارض مع بعضها البعض. يعد دمج مسارات العمل مفيدًا بصفة خاصة إذا كانت مسارات العمل لا تسترد الكثير من البيانات أو أن البيانات التي تستردها متطابقة. أما إذا كانت مسارات العمل تسترد الكثير من البيانات المميزة، فقد تجد أن إبقاءها منفصلة يؤدي إلى أداء أفضل.

استخدام القوائم أو البيانات الخاطئة

عند إنشاء سير عمل، قد تستخدم قائمة من الكائنات، مثل المنتجات أو الطلبات. وإذا استخدمت قائمة من الكائنات، فسيجلب تطبيق Flow جميع الكائنات الموجودة في القائمة. وقد يمثل هذا مشكلة عندما تحتوي القائمة على الكثير من البيانات.

من المشكلات الشائعة الأخرى تحديد البيانات الخاطئة عن طريق الخطأ. على سبيل المثال، للتحقق من بيانات منتج في طلب ما، قد تحدد order / publication / products / tags بدلاً من order / line items / product / tags. وعادةً ما تكون النتيجة الأولى غير صحيحة، حيث إنها تجلب جميع المنتجات لمنشور ما، في حين أن القصد هو التحقق من المنتجات الموجودة في الطلب. قد يؤدي اختيار قائمة كبيرة كهذه إلى حدوث مشكلات في الأداء، واختيار قائمة خاطئة قد يؤدي إلى تنفيذ الأتمتة لإجراءات خاطئة.

الحل: حدّد البيانات التي تحتاج إليها بعناية وتجنّب استخدام القوائم عندما لا تكون هناك حاجة لذلك. اختبر مسارات العمل الخاصة بك للتأكد من أنها تعمل كما تتوقع.

الحقول الوصفية

لا ينبغي أن يتسبب جلب بيانات حقل وصفي (metafield) أو كائن وصفي (metaobject) فردي في حدوث مشكلات في الأداء. ومع ذلك، من المشكلات الشائعة اختيار القائمة metafields والتكرار (looping) على جميع الحقول الوصفية في أحد الموارد. إذا كان حقل القيمة value يحتوي على الكثير من البيانات، على سبيل المثال عند استخدام كائنات HTML، فقد يؤدي ذلك إلى معالجة قدر كبير من البيانات والتسبب في مشكلات في الأداء.

الحل: استخدم كائن metafield بدلاً من metafields.

الإفراط في استخدام إجراءات الحصول على البيانات

تم تصميم مسارات العمل التي تستخدم إجراء الحصول على البيانات مثل الحصول على بيانات الطلب لكي تُرجع 100 كائن كحد أقصى لكل سير عمل من إجراءات الحصول على البيانات. قد يؤدي تجاوز 100 كائن إلى حدوث مشكلات في الأداء.

الحل: شغّل سير العمل بشكل متكرر حتى لا يحتاج استعلامك إلى إرجاع أكثر من 100 نتيجة. أعِد استخدام إجراء الحصول على البيانات نفسه بدلاً من إجراء استعلامات متكررة.

عدم وجود عوامل تصفية للاستعلام في إجراءات الحصول على البيانات

تستدعي إجراءات الحصول على البيانات واجهة برمجة تطبيقات Shopify (Shopify API). وإذا لم يكن هناك استعلام، فستُرجع واجهة برمجة التطبيقات جميع الموارد أو لن تُرجع شيئًا. قد يتسبب هذا في مشكلات في الأداء، ولكنه قد يتسبب أيضًا في اتخاذ إجراءات خاطئة في متجرك عند استخدام البيانات المُرجَعة لاحقًا في سير العمل.

الحل: احرص دائمًا على تضمين عوامل تصفية الاستعلام في إجراءات الحصول على البيانات الخاصة بك.

عوامل تصفية الاستعلام غير الصحيحة في إجراءات الحصول على البيانات

تدعم استعلامات الحصول على البيانات مجموعة محدودة من عوامل تصفية الاستعلام، وبنية معينة، ومجموعة محددة من القيم التي يمكن استخدامها في عوامل التصفية. قد يؤدي إدخال عامل تصفية، أو قيمة عامل تصفية، أو بنية بشكل خاطئ إلى تجاهل الاستعلام بأكمله، مما قد يتسبب في مشكلات مشابهة لما يحدث عند عدم وجود عامل تصفية للاستعلام.

الحل: استخدم الوثائق التي يوفرها الإجراء في Flow للعثور على قائمة عوامل تصفية الاستعلام المتاحة. اختبر عوامل تصفية الاستعلام دائمًا للتأكد من أنها تُرجع البيانات المتوقعة. يمكنك استخدام إجراء تسجيل المخرجات (Log Output) في Flow لمراجعة البيانات المُرجَعة، أو يمكنك استدعاء Shopify Admin API مباشرةً من خلال عميل واجهة برمجة تطبيقات (API) مثل Postman أو من خلال تطبيق GraphiQL.

حلول إضافية لمشكلات الأداء الشائعة

استخدام خطوات الانتظار لتأخير جلب البيانات

تتيح لك خطوات الانتظار إيقاف سير عمل مؤقتًا لفترة زمنية محددة، ولكن يمكن استخدامها أيضًا لتحسين مسارات العمل الخاصة بك. تعمل كل خطوة انتظار فعليًا على تقسيم تنفيذ سير العمل إلى مراحل منفصلة. عند تشغيل سير العمل، فإنه يجلب تلقائيًا البيانات المطلوبة حتى خطوة الانتظار الأولى (ويجلب البيانات مرة أخرى بعد خطوة الانتظار لبقية سير العمل).

إذا كان سير العمل يستخدم مُشغِّلاً عالي الحجم ويجلب الكثير من البيانات، ولكنه سيتخذ إجراءً في بعض الأحيان فقط، فيمكنك وضع أي بيانات أو منطق معقد بعد زوج من الشرط وخطوة الانتظار. على سبيل المثال:

  1. المُشغِّل: تغيّر كمية مخزون متغير المنتج.
  2. الشرط: التحقق مما إذا كان المنتج في مجموعة.
  3. إذا كان صحيحًا، الإجراء: الانتظار لمدة ثانيتين.
  4. الإجراء: إرسال بريد إلكتروني إلى العميل (مع الكثير من البيانات).

في هذا المثال، لا يُستعلَم عن البيانات المطلوبة للخطوة 4 إلا بعد اكتمال خطوة الانتظار. إذا كان الشرط عادةً خطأً (false)، فهذا يعني أن سير العمل سيعمل بشكل أسرع وبكفاءة أكبر.

ما لا ينبغي تحسينه

استخدام نفس البيانات في إجراءات متعددة

عند استخدام نفس الحقل في خطوات متعددة، يُحلل تطبيق Flow استخدام تلك الحقول ويجلب تلك البيانات مرة واحدة فقط. وهذا يعني أنه يمكنك استخدام البيانات للمرات التي تريدها دون القلق بشأن الأداء.