إنشاء حلقات لتكرار الإجراءات في مهام سير العمل باستخدام Azure Logic Apps

ينطبق على: Azure Logic Apps (الاستهلاك + قياسي)

تتضمن Azure Logic Apps إجراءات التكرار الحلقي التالية التي يمكنك استخدامها في سير العمل الخاص بك:

  • لتكرار إجراء واحد أو أكثر على العناصر في صفيف، أضف لكل إجراء إلى سير العمل.

    بدلا من ذلك، إذا كان لديك مشغل يتلقى صفيفا وتريد تشغيل تكرار لكل عنصر صفيف، يمكنك خصم هذا الصفيف باستخدام خاصية مشغل SplitOn.

  • لتكرار إجراء واحد أو أكثر حتى يتم استيفاء شرط أو تغيير الحالة، أضف الإجراء Until إلى سير العمل.

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

المتطلبات الأساسية

تنفيذ نفس الإجراءات على كل عنصر

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

  • يمكن لكل إجراء معالجة عدد محدود من عناصر الصفيف. لهذا الحد، راجع حدود التزامن والتكرار الحلقي والتفصيل.

  • بشكل افتراضي، يتم تشغيل الدورات أو التكرارات في لكل إجراء في نفس الوقت بالتوازي.

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

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

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

  • تستخدم الإجراءات في كل تكرار حلقي الدالةitem() للإشارة إلى كل عنصر ومعالجته في الصفيف. إذا حددت بيانات غير موجودة في صفيف، يفشل سير العمل.

يرسل سير العمل المثال التالي ملخصا يوميا لموجز ويب RSS. يستخدم سير العمل لكل إجراء يرسل بريدا إلكترونيا لكل عنصر جديد.

استنادا إلى ما إذا كان لديك سير عمل Consumption أو Standard، اتبع الخطوات المقابلة:

  1. في مدخل Microsoft Azure، قم بإنشاء مثال سير عمل تطبيق منطق الاستهلاك بالخطوات التالية بالترتيب المحدد:

  2. اتبع نفس الخطوات العامة لإضافة إجراء لكل إجراء بين مشغل RSS وإرسال إجراء بريد إلكتروني في سير العمل.

  3. الآن أنشئ التكرار الحلقي:

    1. حدد داخل مربع تحديد إخراج من الخطوات السابقة بحيث يتم فتح قائمة المحتوى الديناميكي.

    2. في قائمة إضافة محتوى ديناميكي، من قسم When a feed item is published ، حدد Feed links، وهو إخراج صفيف من مشغل RSS.

      إشعار

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

      Screenshot shows Azure portal, Consumption workflow designer, action named For each, and opened dynamic content list.

      عند الانتهاء، يظهر إخراج الصفيف المحدد كما في المثال التالي:

      Screenshot shows Consumption workflow, action named For each, and selected array output.

    3. لتشغيل إجراء موجود على كل عنصر صفيف، اسحب إجراء إرسال بريد إلكتروني إلى لكل تكرار حلقي.

      الآن، يبدو سير العمل الخاص بك مثل المثال التالي:

      Screenshot shows Consumption workflow, action named For each, and action named Send an email, now inside For each loop.

  4. عند الانتهاء، احفظ سير العمل الخاص بك.

  5. لاختبار سير العمل يدويا، على شريط أدوات المصمم، حدد تشغيل تشغيل المشغل>.

لكل تعريف إجراء (JSON)

إذا كنت تعمل في طريقة عرض التعليمات البرمجية For_each ، يمكنك تحديد الإجراء في تعريف JSON لسير العمل الخاص بك، على سبيل المثال:

"actions": {
   "For_each": {
      "actions": {
         "Send_an_email_(V2)": {
            "type": "ApiConnection",
            "inputs": {
               "body": {
                  "Body": "@{item()}",
                  "Subject": "New CNN post @{triggerBody()?['publishDate']}",
                  "To": "me@contoso.com"
               },
               "host": {
                  "connection": {
                     "name": "@parameters('$connections')['office365']['connectionId']"
                  }
               },
               "method": "post",
               "path": "/v2/Mail"
            },
            "runAfter": {}
         }
      },
      "foreach": "@triggerBody()?['links']",
      "runAfter": {},
      "type": "Foreach"
   }
},

لكل منها: تشغيل بشكل تسلسلي

بشكل افتراضي، يتم تشغيل التكرارات في لكل تكرار حلقي في نفس الوقت بالتوازي. ومع ذلك، عندما يكون لديك حلقات متداخلة أو متغيرات داخل الحلقات حيث تتوقع نتائج يمكن التنبؤ بها، يجب تشغيل هذه الحلقات واحدا تلو الآخر أو بشكل تسلسلي.

  1. في الزاوية العلوية اليسرى لكل إجراء، حدد علامات الحذف (...) >الإعدادات.

  2. ضمن التحكم في التزامن، قم بتغيير الإعداد من إيقاف التشغيل إلى تشغيل.

  3. انقل شريط تمرير درجة التوازي إلى 1، وحدد تم.

    Screenshot shows Consumption workflow, action named For each, concurrency control setting turned on, and degree of parallelism slider set to 1.

لكل تعريف إجراء (JSON): تشغيل بشكل تسلسلي

إذا كنت تعمل في طريقة عرض التعليمات البرمجية For_each مع الإجراء في تعريف JSON لسير العمل الخاص بك، يمكنك استخدام Sequential الخيار عن طريق إضافة المعلمة operationOptions ، على سبيل المثال:

"actions": {
   "For_each": {
      "actions": {
         "Send_an_email_(V2)": { }
      },
      "foreach": "@triggerBody()?['links']",
      "runAfter": {},
      "type": "Foreach",
      "operationOptions": "Sequential"
   }
}

حتى

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

تحتوي القائمة التالية على بعض السيناريوهات الشائعة حيث يمكنك استخدام إجراء Until :

  • اتصل بنقطة نهاية حتى تحصل على الاستجابة التي تريدها.

  • أنشئ سجل في قاعدة بيانات. انتظر حتى تتم الموافقة على حقل معين في هذا السجل. تابع المعالجة.

في سير العمل المثال التالي، بدءا من الساعة 8:00 صباحا كل يوم، يقوم الإجراء Until بزيادة متغير حتى تساوي قيمة المتغير 10. ثم يرسل سير العمل رسالة بريد إلكتروني تؤكد القيمة الحالية.

إشعار

يستخدم هذا المثال Office 365 Outlook، ولكن يمكنك استخدام أي موفر بريد إلكتروني تدعمه Azure Logic Apps. إذا كنت تستخدم حساب بريد إلكتروني آخر، تبقى الخطوات العامة كما هي، ولكن قد تختلف واجهة المستخدم الخاصة بك قليلاً.

  1. في مدخل Microsoft Azure، قم بإنشاء مورد تطبيق منطق الاستهلاك مع سير عمل فارغ.

  2. في المصمم، اتبع هذه الخطوات العامة لإضافة مشغل التكرار المضمن المسمى Schedule إلى سير العمل.

  3. في مشغل التكرار ، حدد الفاصل الزمني والتردد والساعة من اليوم لتشغيل المشغل.

    الخاصية القيمة
    الفترة 1
    التردد Day
    في هذه الساعات 8

    لإضافة المعلمة At these hours ، افتح قائمة Add new parameter ، وحدد At these hours، والتي تظهر فقط بعد تعيين Frequency إلى Day.

    Screenshot shows Azure portal, Consumption workflow designer, and Recurrence trigger parameters with selected option for At these hours.

    عند الانتهاء، يبدو مشغل التكرار مثل المثال التالي:

    Screenshot shows Azure portal, Consumption workflow, and Recurrence trigger parameters set up.

  4. ضمن المشغل، اتبع هذه الخطوات العامة لإضافة الإجراء المضمن المتغيرات المسمى Initialize variable إلى سير العمل الخاص بك.

  5. في إجراء تهيئة المتغير ، قم بتوفير القيم التالية:

    الخاصية القيمة‬ ‏‏الوصف
    الاسم حد اسم المتغير الخاص بك
    النوع عدد صحيح نوع بيانات المتغير الخاص بك
    القيمة 0 قيمة بدء المتغير الخاص بك

    Screenshot shows Azure portal, Consumption workflow, and parameters for built-in action named Initialize variable.

  6. ضمن الإجراء Initialize variable، اتبع هذه الخطوات العامة لإضافة إجراء Control المضمن المسمى Until إلى سير العمل الخاص بك.

  7. في الإجراء Until ، قم بتوفير القيم التالية لإعداد شرط الإيقاف للحلقة.

    1. حدد داخل المربع الموجود في أقصى اليسار المسمى Choose a value، والذي يفتح قائمة المحتوى الديناميكي تلقائيا.

    2. من القائمة، ضمن المتغيرات، حدد المتغير المسمى Limit.

    3. من قائمة عامل التشغيل الأوسط، حدد يساوي عامل التشغيل .

    4. في المربع الموجود في أقصى اليمين المسمى Choose a value، أدخل 10 كقيمة مقارنة.

    Screenshot shows Consumption workflow and built-in action named Until with finished stop condition.

  8. داخل الإجراء Until، حدد Add an action.

  9. في مربع البحث Choose an operation، اتبع هذه الخطوات العامة لإضافة الإجراء المضمن المتغيرات المسمى Increment variable إلى الإجراء Until.

  10. في إجراء متغير الزيادة، قم بتوفير القيم التالية لزيادة قيمة متغير الحد بمقدار 1:

    الخاصية القيمة
    الاسم حدد المتغير Limit.
    القيمة 1

    Screenshot shows Consumption workflow and built-in action named Until with Name set to the Limit variable and Value set to 1.

  11. خارج الإجراء Until وضمنه، اتبع هذه الخطوات العامة لإضافة إجراء يرسل بريدا إلكترونيا.

    يستمر هذا المثال مع إجراء Office 365 Outlook المسمى إرسال بريد إلكتروني.

  12. في إجراء البريد الإلكتروني، قم بتوفير القيم التالية:

    الخاصية القيمة‬ ‏‏الوصف
    إلى <email-address@domain> عنوان البريد الإلكتروني للمستلم. للاختبار، يمكنك استخدام عنوان البريد الإلكتروني الخاص بك.
    الموضوع القيمة الحالية لمتغير "الحد" هي: الحد موضوع البريد الإلكتروني. في هذا المثال، تأكد من تضمين المتغير Limit للتأكد من أن القيمة الحالية تفي بشرطك المحدد:

    1. حدد داخل مربع الموضوع بحيث تظهر قائمة المحتوى الديناميكي.

    2. في قائمة المحتوى الديناميكي، بجوار رأس قسم المتغيرات ، حدد مشاهدة المزيد.

    3. حدد Limit.
    نص الرسالة <محتوى-بريد إلكتروني> محتوى رسالة البريد الإلكتروني الذي تريد إرساله. في هذا المثال، أدخل أي نص تريده.

    عند الانتهاء، يبدو إجراء البريد الإلكتروني مشابها للمثال التالي:

    Screenshot shows Consumption workflow and action named Send an email with property values.

  13. احفظ سير العمل الخاص بك.

اختبار سير العمل

لاختبار سير عمل تطبيق المنطق يدويا، اتبع الخطوات بناء على ما إذا كان لديك تطبيق منطق الاستهلاك أو قياسي.

في شريط أدوات المصمم، حدد تشغيل تشغيل المشغل>.

بعد بدء تشغيل سير العمل، تتلقى رسالة بريد إلكتروني تتضمن المحتوى الذي حددته:

Screenshot shows sample email received from example workflow.

منع التكرارات الحلقية التي لا نهاية لها

يتوقف الإجراء Until عن التنفيذ استنادا إلى الخصائص التالية، والتي يمكنك عرضها عن طريق تحديد Change limits في الإجراء. تأكد من تعيين قيم الخصائص هذه وفقا لذلك:

الخاصية ‏‏الوصف
عدد الحد الأقصى لعدد التكرارات التي يتم تشغيلها قبل إنهاء الحلقة.

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

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

للحصول على الحدود الافتراضية والحد الأقصى لقيمة المهلة، راجع حدود التزامن والتكرار الحلقي والتفصيل.

تعريف "Until" (JSON)

إذا كنت تعمل في طريقة عرض التعليمات البرمجية Until ، يمكنك تحديد إجراء في تعريف JSON لسير العمل الخاص بك، على سبيل المثال:

"actions": {
   "Initialize_variable": {
      // Definition for initialize variable action
   },
   "Send_an_email": {
      // Definition for send email action
   },
   "Until": {
      "type": "Until",
      "actions": {
         "Increment_variable": {
            "type": "IncrementVariable",
            "inputs": {
               "name": "Limit",
               "value": 1
            },
            "runAfter": {}
         }
      },
      "expression": "@equals(variables('Limit'), 10)",
      // To prevent endless loops, an "Until" loop 
      // includes these default limits that stop the loop. 
      "limit": { 
         "count": 60,
         "timeout": "PT1H"
      },
      "runAfter": {
         "Initialize_variable": [
            "Succeeded"
         ]
      }
   }
}

يستدعي هذا المثال حتى التكرار الحلقي نقطة نهاية HTTP، والتي تنشئ موردا. يتوقف التكرار الحلقي عند إرجاع نص استجابة HTTP بالحالة Completed. لمنع التكرارات الحلقية التي لا نهاية لها، تتوقف الحلقة أيضا إذا حدث أي من الشروط التالية:

  • تم تشغيل التكرار الحلقي 10 مرات كما هو محدد بواسطة السمة count. الإعداد الافتراضي هو 60 مرة.

  • تم تشغيل التكرار الحلقي لمدة ساعتين كما هو محدد بواسطة السمة timeout بتنسيق ISO 8601. الوقت الافتراضي هو عبارة عن ساعة واحدة.

"actions": {
   "myUntilLoopName": {
      "type": "Until",
      "actions": {
         "Create_new_resource": {
            "type": "Http",
            "inputs": {
               "body": {
                  "resourceId": "@triggerBody()"
               },
               "url": "https://domain.com/provisionResource/create-resource",
               "body": {
                  "resourceId": "@triggerBody()"
               }
            },
            "runAfter": {},
            "type": "ApiConnection"
         }
      },
      "expression": "@equals(triggerBody(), 'Completed')",
      "limit": {
         "count": 10,
         "timeout": "PT2H"
      },
      "runAfter": {}
   }
}

الخطوات التالية