مشغل الاستطلاع

مكتمل

مشغل الاستطلاع عبارة عن تطبيق يستدعي خدمة REST API بانتظام ويتحقق من البيانات الجديدة. بعد أن يقرر النظام الأساسي أن البيانات الجديدة متاحة، يطلق المشغل البيانات المجمعة الجديدة ويمررها إلى تدفق سحابة أو سير عمل "التطبيقات المنطقية".

يوضح الرسم التخطيطي التالي تدفق العملية الأساسي لكيفية حصول مشغل الاستطلاع على بيانات جديدة.

رسم تخطيطي لتدفق العملية الأساسي لمشغل الاستطلاع.

يبدأ مشغل الاستطلاع باسترجاع البيانات وتحديد الحالة. بعد ذلك، سيتحقق دوريًا من وجود تحديثات من خلال طلب جميع البيانات منذ آخر تحديث للحالة. بعد استرداد البيانات الجديدة، يتم تعيين الحالة الجديدة وستستمر العملية. يجب أن تكون API قادرة على إرجاع البيانات على نحو متزايد، بناءً على قيمة المعلمة. تحتفظ Power Automate أو "التطبيقات المنطقية من Azure" بالحالة بحيث لا يكون لـ API متطلبات خاصة لإدارة الحالة.

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

متطلبات API

لا يتطلب مشغل الاستطلاع سوى أن يكون لدى API أسلوب لاسترداد البيانات يمكنه تصفية البيانات باستخدام معلمة سلسلة استعلام. يجب أيضًا توفر أسلوب لاستخراج القيمة التالية للمعلمة من البيانات التي تم إرجاعها. يمكن توفير التنفيذ من خلال أسلوب عمل مخصص أو قائم بالفعل.

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

  • ترجع ListOrders الأوامر التي تم فرزها حسب رقم الأمر بترتيب تنازلي. نتيجة لذلك، يرجع أعلى رقم أمر إلى الترتيب الأول في القائمة.

  • تقبل ListOrders معلمة سلسلة الاستعلام لاسترداد الأوامر التي يكون فيها رقم الأمر أكبر من قيمة المعلمة.

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

التنفيذ

يتم إنشاء مشغل استطلاع باستخدام معالج في Power Automate. تتضمن العملية الخطوات التالية:

  1. حدّد طلب HTTP الذي سيتم استخدامه لاسترداد البيانات.

    لقطة شاشة لنموذج تعريف طلب HTTP.

    تشتمل سلسلة الاستعلام الخاصة بالطلب على المعلمة fromWidget التي تتيح الإنشاء المسبق لتعريف المعلمة. تضمن هذه المعلمة أن البيانات التي تم إرجاعها تزايدية، وأنها ستعيد "جميع عناصر واجهة المستخدم التي تم إنشاؤها منذ ذلك الذي تم تحديده من قِبل المعلمة."

  2. قم بتغيير رؤية المعلمة إلى الحالة داخلية، مما سيمنع المستخدمين من إجراء تغييرات على هذه المعلمة، والتي يتم استخدامها داخليًا فقط من قِبل الموصل.

  3. حدّد البيانات التي يتم إرجاعها من قِبل الخدمة. يجب أن تشتمل هذه البيانات على الخاصية التي سيتم استخدامها كقيمة لـ fromWidget في الطلبات المتتالية.

    لقطة شاشة توضح الاستيراد من عينة.

    في هذا المثال، يطلق على الخاصية اسم المعرف.

  4. أكمل تكوين المشغل. حدّد معلمة الاستعلام، وحدّد قيمة أو تعبيرًا يُرجع قيمة، ثم حدّد مجموعة تحتوي على بيانات المشغل.

    لقطة شاشة من تفاصيل تكوين المشغل الكامل.

    يتضمن هذا المثال المعلمات التالية:

    • يتم تحديد fromWidget باعتباره معلمة الاستعلام التي ستتلقى القيمة المستخرجة من نتائج المعمل.

    • يستخرج تعبير @{triggerBody().widgets[0].id} أعلى معرف عنصر واجهة مستخدم حالياً. نظرًا لأنه يتم فرز المجموعة التي تم إرجاعها في قيمة المعرف التنازلي، فإن استخراج القيمة من العنصر الأول يساعد على ضمان أنها تمثل أعلى معرّف حالي.

    • يحدّد التعبير @triggerBody().widgets مجموعة البيانات.

يجب استخراج المعلمات ومعالجتها، ولا يمكن تنفيذ هذا التحويل إلا باستخدام نهج الموصل. وبالتالي، يتم تخزين تكوين مشغل الاستطلاع في صورة قالب نهج منفصل عن تعريف موصل OpenAPI. يتمثل أحد الآثار الضمنية في أنه لا يمكن تحرير جميع تكوينات مشغل الاستطلاع يدوياً في محرر Swagger.

يتمثل أحد القيود التي يجب أن تكون على دراية بها في أن جسم المشغل لا يمكن أن يكون مصفوفة. على سبيل المثال، فكِّر في أسلوب يطلق عليه اسم ListOrders يُرجع البيانات التالية:

[
  {"value" : 42.00, "id" : "2", ... },
  {"value" : 10.00, "id" : "1", ... }
]

لن تتم معالجة جسم المشغل هذا، وسيؤدي المشغل إلى إنشاء خطأ في تدفق Power Automate أو سير عمل "التطبيقات المنطقية" في وقت التشغيل.

بدلاً من ذلك، يحتاج الأسلوب إلى إرجاع خاصية تشتمل على مصفوفة من السجلات، على سبيل المثال:

{
  "orders": [
    { "value" : 42.00, "id" : "2", ... },
    { "value" : 10.00, "id" : "1", ... }
  ]
}  

يمكن استخدام بنية البيانات هذه باعتبارها جزءًا من تنفيذ مشغل الاستطلاع.

‏‫المعالجة الدُفعية‬

على غرار مشغل خطاف الويب، يتم تحديد مشغل الاستطلاع من خلال الملحق x-ms-trigger المضاف إلى OpenAPI. القيمة المحددة من قِبل مشغل الاستقصاء عبارة عن دفعة، تشير إلى أن الأسلوب سيعيد مصفوفة بدلاً من كائن فردي، كما يفعل في استجابة خطاف الويب.

  /trigger/ListInvoices:
    post:
      x-ms-trigger: batch

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

لقطة شاشة لمربع حوار الإعدادات لخيارات الاستطلاع.

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

من السهل تحديد مشغلات الاستطلاع عن مشغلات خطاف الويب؛ ومع ذلك، فهي أقل دقة وغالبًا لا تعمل بصورة جيدًا. إن قرار إنشاء واستخدام نوعاً أو آخر من المشغلات المدفوعة بالميزات والبنية والوظائف الخاصة بواجهة API للخدمة.