إضافة مقتطفات التعليمات البرمجية وتشغيلها باستخدام التعليمات البرمجية المضمنة في Azure Logic Apps

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

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

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

Screenshot that shows an example logic app

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

  • حساب Azure والاشتراك إذا لم يكن لديك اشتراك، فقم بالتسجيل للحصول على حساب Azure مجاني.

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

    إذا لم يكن لديك تطبيق منطقي، فراجع الوثائق التالية:

  • استنادا إلى ما إذا كان تطبيقك المنطقي متعدد المستأجرين أو مستأجرا واحدا، راجع المعلومات التالية.

    • متعدد المستأجرين: يتطلب الإصدار Node.js 8.11.1. تحتاج أيضا إلى حساب تكامل فارغ مرتبط بتطبيقك المنطقي. تأكد من استخدام حساب تكامل مناسب لحالة الاستخدام أو السيناريو الخاص بك.

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

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

    • مستأجر واحد: يتطلب إصداراتNode.js 10.x.x أو 11.x.x أو 12.x.x. ومع ذلك، لا تحتاج إلى حساب تكامل، ولكن تتم إعادة تسمية إجراء التعليمات البرمجية المضمنة عمليات التعليمات البرمجية المضمنة وله حدود محدثة.

إضافة رمز مضمن

  1. إذا لم تكن قد قمت بذلك بالفعل، في مدخل Azure، فافتح سير عمل التطبيق المنطقي في المصمم.

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

    لإضافة الإجراء بين الخطوات، حرك مؤشر الماوس فوق السهم الذي يربط تلك الخطوات. حدد علامة الجمع (+) التي تظهر، وحدد إضافة إجراء.

    يضيف هذا المثال الإجراء ضمن مشغل Office 365 Outlook.

    Add the new step under the trigger

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

    Select the

    يظهر الإجراء في المصمم وبشكل افتراضي، يحتوي على بعض نماذج التعليمات البرمجية، بما في ذلك عبارة return .

    Inline Code action with default sample code

  4. في المربع التعليمات البرمجية، احذف نموذج التعليمة البرمجية، ثم أدخل التعليمة البرمجية . اكتب التعليمة البرمجية التي تضعها داخل طريقة، ولكن بدون توقيع الطريقة.

    إذا بدأت في كتابة كلمة رئيسية تم التعرف عليها، فستظهر قائمة الإكمال التلقائي بحيث يمكنك التحديد من الكلمات الرئيسية المتاحة، على سبيل المثال:

    Keyword autocomplete list

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

    Create variables

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

    بعد تحديد الرمز المميز للنص ، يعمل إجراء التعليمات البرمجية المضمنة على حل الرمز المميز إلى كائن يشير إلى workflowContext قيمة خاصية Body البريد الإلكتروني:

    Select result

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

    ملاحظة

    إذا كان مقتطف التعليمات البرمجية يشير إلى أسماء الإجراءات التي تستخدم عامل تشغيل النقطة (.) ، فيجب عليك إضافة أسماء الإجراءات هذه إلى معلمة الإجراءات. ويجب أن ترفق تلك الإشارات أيضا أسماء الإجراءات بأقواس معقوفة ([]) وعلامتي اقتباس، على سبيل المثال:

    // Correct
    workflowContext.actions["my.action.name"].body

    // Incorrect
    workflowContext.actions.my.action.name.body

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

    Finished logic app

  5. عند الانتهاء، احفظ تطبيق المنطق الخاص بك.

يؤدي المشغل المرجعي والإجراء إلى التعليمات البرمجية الخاصة بك

يحتوي الكائن workflowContext على هذه البنية ، والتي تتضمن actions، والخصائص workflowtriggerالفرعية:

{
   "workflowContext": {
      "actions": {
         "<action-name-1>": @actions('<action-name-1>'),
         "<action-name-2>": @actions('<action-name-2>')
      },
      "trigger": {
         @trigger()
      },
      "workflow": {
         @workflow()
      }
   }
}

يحتوي هذا الجدول على مزيد من المعلومات حول هذه الخصائص الفرعية:

الخاصية النوع الوصف
actions جمع الكائنات كائنات النتائج من الإجراءات التي يتم تشغيلها قبل تشغيل مقتطف التعليمات البرمجية. يحتوي كل كائن على زوج من قيم المفاتيح حيث يكون المفتاح هو اسم إجراء ، والقيمة تعادل استدعاء الدالة action() باستخدام @actions('<action-name>'). يستخدم اسم الإجراء نفس اسم الإجراء المستخدم في تعريف سير العمل الأساسي، والذي يستبدل المسافات (" ") في اسم الإجراء بشرطة سفلية (_). يوفر هذا الكائن الوصول إلى قيم خصائص الإجراء من تشغيل مثيل سير العمل الحالي.
trigger عنصر كائن النتيجة من الزناد وما يعادل استدعاء الدالة trigger() . يوفر هذا الكائن حق الوصول لتشغيل قيم الخصائص من تشغيل مثيل سير العمل الحالي.
workflow عنصر كائن سير العمل وما يعادله باستدعاء الدالة workflow() . يوفر هذا الكائن الوصول إلى قيم خصائص سير العمل، مثل اسم سير العمل ومعرف التشغيل وما إلى ذلك، من تشغيل مثيل سير العمل الحالي.

في مثال هذا الموضوع، يحتوي الكائن على workflowContext هذه الخصائص التي يمكن للتعليمات البرمجية الوصول إليها:

{
   "workflowContext": {
      "trigger": {
         "name": "When_a_new_email_arrives",
         "inputs": {
            "host": {
               "connection": {
                  "name": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Web/connections/office365"
               }
            },
            "method": "get",
            "path": "/Mail/OnNewEmail",
            "queries": {
               "includeAttachments": "False"
            }
         },
         "outputs": {
            "headers": {
               "Pragma": "no-cache",
               "Content-Type": "application/json; charset=utf-8",
               "Expires": "-1",
               "Content-Length": "962095"
            },
            "body": {
               "Id": "AAMkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgBGAAAAAABmZwxUQtCGTqSPpjjMQeD",
               "DateTimeReceived": "2019-03-28T19:42:16+00:00",
               "HasAttachment": false,
               "Subject": "Hello World",
               "BodyPreview": "Hello World",
               "Importance": 1,
               "ConversationId": "AAQkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgAQ",
               "IsRead": false,
               "IsHtml": true,
               "Body": "Hello World",
               "From": "<sender>@<domain>.com",
               "To": "<recipient-2>@<domain>.com;<recipient-2>@<domain>.com",
               "Cc": null,
               "Bcc": null,
               "Attachments": []
            }
         },
         "startTime": "2019-05-03T14:30:45.971564Z",
         "endTime": "2019-05-03T14:30:50.1746874Z",
         "scheduledTime": "2019-05-03T14:30:45.8778117Z",
         "trackingId": "1cd5ffbd-f989-4df5-a96a-6e9ce31d03c5",
         "clientTrackingId": "08586447130394969981639729333CU06",
         "originHistoryName": "08586447130394969981639729333CU06",
         "code": "OK",
         "status": "Succeeded"
      },
      "workflow": {
         "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>",
         "name": "<logic-app-workflow-name>",
         "type": "Microsoft.Logic/workflows",
         "location": "<Azure-region>",
         "run": {
            "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>/runs/08586453954668694173655267965CU00",
            "name": "08586453954668694173655267965CU00",
            "type": "Microsoft.Logic/workflows/runs"
         }
      }
   }
}

إضافة مؤشرات

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

تلميح

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

على سبيل المثال، افترض أن لديك التعليمات البرمجية التي تشير إلى نتيجة SelectedOption من الإجراء إرسال بريد إلكتروني للموافقة على موصل Office 365 Outlook. في وقت الإنشاء، يقوم محرك Logic Apps بتحليل التعليمات البرمجية لتحديد ما إذا كنت قد أشرت إلى أي نتائج تشغيل أو إجراء ويتضمن هذه النتائج تلقائيا. في وقت التشغيل، إذا تلقيت خطأ يفيد بأن المشغل المشار إليه أو نتيجة الإجراء غير متوفرة في الكائن المحدد workflowContext ، فيمكنك إضافة هذا المشغل أو الإجراء كتبعية صريحة. في هذا المثال، يمكنك إضافة المعلمة الإجراءات وتحديد أن إجراء التعليمات البرمجية المضمنة يتضمن صراحة النتيجة من الإجراء إرسال بريد إلكتروني للموافقة .

لإضافة هذه المعلمات، افتح القائمة إضافة معلمات جديدة ، وحدد المعلمات التي تريدها:

Add parameters

المعلمة الوصف
الإجراءات قم بتضمين نتائج من الإجراءات السابقة. راجع تضمين نتائج الإجراءات.
مشغّل تضمين نتائج من المشغل. راجع تضمين نتائج المشغل.

تضمين نتائج المشغل

إذا قمت بتحديد المشغلات، فستتم مطالبتك بما إذا كنت تريد تضمين نتائج المشغلات.

  • من قائمة المشغل ، حدد نعم.

تضمين نتائج الإجراءات

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

  • لا تدعم هذه الإمكانية المتغيرات والحلقات وفهارس التكرار.

  • تستخدم الأسماء في تعريف سير عمل تطبيق المنطق تسطيرا سفليا (_)، وليس مسافة.

  • بالنسبة لأسماء الإجراءات التي تستخدم عامل تشغيل النقطة (.)، قم بتضمين عوامل التشغيل هذه، على سبيل المثال:

    My.Action.Name

  1. على شريط أدوات المصمم، حدد طريقة عرض التعليمات البرمجية، وابحث داخل السمة عن اسم الإجراء actions .

    على سبيل المثال، Send_approval_email_ هو اسم JSON لإجراء إرسال بريد إلكتروني للموافقة .

    Find action name in JSON

  2. للعودة إلى طريقة عرض المصمم، على شريط أدوات طريقة عرض التعليمات البرمجية، حدد مصمم.

  3. لإضافة الإجراء الأول، في المربع عنصر الإجراءات - 1 ، أدخل اسم JSON الخاص بالإجراء.

    Enter first action

  4. لإضافة إجراء آخر، حدد إضافة عنصر جديد.

‏‏المرجع

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

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

تعرف على المزيد حول الموصلات لتطبيقات Azure Logic