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

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

لتنفيذ مهام تكامل مخصصة مضمنة مع سير العمل الخاص بك في Azure Logic Apps، يمكنك إضافة أجزاء التعليمات البرمجية JavaScript البسيطة وتشغيلها مباشرة من سير العمل في مدخل Microsoft Azure. لهذه المهمة، استخدم إجراء التعليمات البرمجية المضمنة المسمى Execute JavaScript Code. يقوم هذا الإجراء بإرجاع النتيجة من مقتطف التعليمات البرمجية حتى تتمكن من استخدام هذا الإخراج في الإجراءات اللاحقة لسير العمل. يحتوي هذا الإجراء أيضا على حدود مختلفة، استنادا إلى ما إذا كان لديك سير عمل Consumption أو Standard ويعمل بشكل أفضل مع قصاصات التعليمات البرمجية مع السمات التالية:

الإجراء اللغة نسخة اللغة مدة التشغيل حجم البيانات الإشعارات الأخرى
تنفيذ تعليمة JavaScript البرمجية JavaScript قياسي:
Node.js 16.x.x

الاستهلاك:
Node.js 8.11.1

لمزيد من المعلومات، راجع العناصر المضمنة القياسية .
ينتهي في 5 ثوانٍ أو أقل. يتعامل مع بيانات تصل إلى 50 ميغابايت. - لا يتطلب العمل مع إجراءات المتغيرات ، التي لا يدعمها الإجراء.

- لا يدعم وظيفة require() لتشغيل JavaScript.

لتشغيل التعليمات البرمجية التي لا تناسب هذه السمات، يمكنك إنشاء دالة واستدعائها باستخدام Azure Functions.

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

يُظهر الرسم التخطيطي التالي الإبرازات من مثال سير العمل:

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

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

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

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

    إذا لم يكن لديك سير عمل، فشاهد الوثائق التالية:

  • استنادا إلى ما إذا كان لديك سير عمل Consumption أو Standard logic app، راجع المتطلبات التالية:

    • سير عمل الاستهلاك

      • Node.js الإصدار 8.11.10

      • قم بإنشاء ارتباط إلى حساب تكامل، فارغ أو غير ذلك، من مورد تطبيق المنطق الخاص بك.

        هام

        تأكد من استخدام حساب تكامل مناسب لحالة الاستخدام أو السيناريو الخاص بك.

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

        تتكبد طبقات حساب التكامل الأخرى تكاليف، ولكنها تتضمن دعم اتفاقية مستوى الخدمة (SLA)، وتقدم مزيداً من المعدل نقل، ولها حدود أعلى. تعرف على المزيد بشأن تكامل مستويات الحساب و الحدود و الأسعار .

    • سير عمل قياسي

إضافة إجراء Execute JavaScript Code

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

  2. في المصمم، اتبع هذه الخطوات العامة لإضافة إجراء التعليمات البرمجية المضمنة المسمى Execute JavaScript Code إلى سير العمل الخاص بك.

    يضيف هذا المثال الإجراء الموجود ضمن مشغل Office 365 Outlook. بشكل افتراضي، يحتوي الإجراء على بعض نماذج التعليمات البرمجية، بما في ذلك عبارة return .

    لقطة شاشة تعرض إجراء Execute JavaScript Code مع نموذج التعليمات البرمجية الافتراضي.

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

    تلميح

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

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

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

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

    لقطة شاشة تعرض سير عمل Consumption، وإجراء Execute JavaScript Code، ومثال التعليمات البرمجية التي تنشئ متغيرات.

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

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

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

    بعد تحديد الخاصية Body ، يحل إجراء Execute JavaScript Code الرمز المميز إلى كائن JSON للقراءة فقط workflowContext ، والذي يمكن أن تستخدمه القصاصة البرمجية الخاصة بك كإدخال. يتضمن العنصر workflowContext الخصائص التي تمنح التعليمة البرمجية الخاصة بك الوصول إلى المخرجات من المشغل والإجراءات السابقة في سير العمل، مثل خاصية body المشغل، والتي تختلف عن خاصية النص الأساسي لرسالة البريد الإلكتروني. لمزيد من المعلومات بشأن العنصر workflowContext، راجع مشغل الإشارة ومخرجات الإجراء باستخدام عنصر workflowContext لاحقاً في هذه المقالة.

    هام

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

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

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

    أيضا، في إجراء Execute JavaScript Code، يجب عليك إضافة المعلمةActions ثم إضافة أسماء الإجراءات هذه إلى تلك المعلمة. لمزيد من المعلومات، راجع إضافة تبعيات كمعلمات إلى إجراء Execute JavaScript Code لاحقا في هذه المقالة.

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

    لقطة شاشة تعرض سير عمل تطبيق منطق الاستهلاك، وإجراء Execute JavaScript Code، وإعادة تسمية خاصية

    لا يتطلب return إجراء Execute JavaScript Code جملة. ومع ذلك، بتضمين العبارة return، يمكنك بسهولة الرجوع إلى نتائج الإجراء لاحقاً في سير العمل باستخدام الرمز المميز النتيجة في الإجراءات اللاحقة.

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

    لقطة شاشة تعرض سير عمل تطبيق منطق الاستهلاك النهائي.

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

مرجع المشغل ومخرجات الإجراء باستخدام عنصر workflowContext

من داخل التعليمة البرمجية على المصمم، يمكنك استخدام قائمة المحتوى الديناميكي لتحديد تعليمة برمجية يشير إلى الإخراج من المشغل أو أي إجراء سابق. عند تحديد الرمز المميز، يحل إجراء Execute JavaScript Code هذا الرمز المميز إلى كائن JSON للقراءة فقط workflowContext . يمنح هذا العنصر التعليمة البرمجية الخاصة بك الوصول إلى المخرجات من المشغل وأي إجراءات سابقة وسير العمل. يستخدم العنصر البنية التالية ويتضمن الخصائص actions، trigger وworkflow، وهي عناصر أيضاً:

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

يحتوي الجدول التالي على مزيد من المعلومات بشأن هذه الخصائص:

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

يستخدم اسم الإجراء نفس اسم الإجراء الذي يظهر في تعريف سير العمل الأساسي، والذي يستبدل المسافات ( "" ) في اسم الإجراء بالشرطات السفلية ( _ ). توفر مجموعة العناصر هذه وصولاً إلى قيم خاصية الإجراء من تشغيل نسخة مسار العمل الحالية.
trigger ‏‏الكائن العنصر الناتج من المشغل حيث تكون النتيجة مكافئة لاستدعاء دالة المشغل () . يوفر هذا العنصر حق الوصول إلى قيم خصائص المشغل من تشغيل مثيل مسار العمل الحالي.
workflow ‏‏الكائن عنصر سير العمل المكافئ لاستدعاء الدالة workflow () . يوفر هذا العنصر الوصول إلى قيم الخصائص، مثل اسم مسار العمل ومعرف التشغيل وما إلى ذلك، من تشغيل مثيل سير العمل الحالي.

في مثال هذه المقالة، قد يحتوي عنصر workflowContext JSON على نماذج الخصائص والقيم التالية من مشغل Outlook:

{
   "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"
         }
      }
   }
}

إضافة تبعيات كمعلمات إلى إجراء Execute JavaScript Code

في بعض السيناريوهات، قد تحتاج إلى المطالبة صراحة بأن يتضمن إجراء Execute JavaScript Code مخرجات من المشغل أو الإجراءات التي تشير إليها التعليمات البرمجية الخاصة بك كتبعيات. على سبيل المثال، يجب عليك اتخاذ هذه الخطوة الإضافية عندما تشير التعليمة البرمجية الخاصة بك إلى مخرجات غير متوفرة في وقت تشغيل سير العمل. خلال وقت إنشاء سير العمل، يقوم محرك Azure Logic Apps بتحليل قصاصة برمجية التعليمة البرمجية لتحديد ما إذا كانت التعليمة البرمجية تشير إلى أي مخرجات تشغيل أو إجراء. في حالة وجود هذه المراجع، يقوم المحرك بتضمين هذه المخرجات تلقائياً. في وقت تشغيل سير العمل، إذا لم يتم العثور على المشغل المشار إليه أو إخراج الإجراء في العنصر workflowContext، فإن المحرك يقوم بإنشاء خطأ. لحل هذا الخطأ، يجب إضافة هذا المشغل أو الإجراء كتبعية صريحة لإجراء Execute JavaScript Code . السيناريو الآخر الذي يتطلب منك اتخاذ هذه الخطوة هو عندما يشير العنصر workflowContext إلى اسم مشغل أو إجراء يستخدم عامل تشغيل النقطة (. ).

لإضافة مشغل أو إجراء كتبعية، يمكنك إضافة المعلمات Trigger أو Actions كما هو قابل للتطبيق على إجراء Execute JavaScript Code . يمكنك بعد ذلك إضافة أسماء المشغل أو الإجراء كما تظهر في تعريف JSON الأساسي لسير العمل.

إشعار

لا يمكنك إضافة عمليات المتغيرات وحلقات مثل لكل أو حتى وفهارس التكرار باعتبارها تبعيات صريحة.

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

على سبيل المثال، افترض أن إجراء إرسال بريد إلكتروني للموافقة لموصل Office 365 Outlook يسبق قصاصة برمجية التعليمة البرمجية في نموذج سير العمل. يتضمن المثال التالي قصاصة برمجية التعليمة البرمجية مرجعاً لإخراج SelectedOption من هذا الإجراء.

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

ابحث عن المشغل أو اسم JSON للإجراء

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

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

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

    My.Action.Name

  1. في شريط أدوات مصمم سير العمل، حدد Code view. في عنصر actions، ابحث عن اسم الإجراء.

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

    قطة شاشة تعرض اسم الإجراء بتنسيق JSON.

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

  3. أضف الآن اسم JSON إلى إجراء Execute JavaScript Code .

إضافة اسم المشغل أو الإجراء إلى إجراء Execute JavaScript Code

  1. في إجراء Execute JavaScript Code ، افتح قائمة Add new parameter .

  2. من قائمة المعلمات، حدد المعلمات التالية كما يتطلب السيناريو الخاص بك.

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

    لقطة شاشة تعرض إجراء Execute JavaScript Code مع تحديد معلمة Actions.

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

    لقطة شاشة تعرض مربع عنصر الإجراءات -1 واسم JSON للإجراء.

  5. لإضافة اسم إجراء آخر، حدد Add new item.

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

مرجع العمل

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

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