قم بتشغيل أجزاء التعليمة البرمجية في مهام سير العمل باستخدام عمليات التعليمة البرمجية المضمنة في Azure Logic Apps

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

لإنشاء تعليمة برمجية وتشغيلها في سير عمل التطبيق المنطقي دون الحاجة إلى الكثير من الإعداد، يمكنك استخدام الموصل المضمن Inline 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. تستخرج التعليمة البرمجية النموذجية أي عناوين بريد إلكتروني موجودة في نص البريد الإلكتروني وتعيد تلك العناوين كإخراج يمكنك استخدامه في إجراء لاحق.

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

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

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

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

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

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

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

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

    تلميح

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

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

    لقطة شاشة تعرض سير عمل الاستهلاك وإجراء Execute JavaScript Code وقائمة الإكمال التلقائي للكلمات الأساسية.

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

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

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

    لقطة شاشة تعرض سير عمل الاستهلاك وإجراء Execute 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 إلى اسم مشغل أو إجراء يستخدم عامل تشغيل النقطة (. ).

لإضافة مشغل أو إجراء كتبعية، يمكنك إضافة معلمات المشغل أو الإجراءات كما هو قابل للتطبيق على إجراء 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 للإجراء.

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

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

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

مرجع العمل

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

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