الدليل المرجعي للمخطط للغة تعريف سير العمل في Azure Logic Apps

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

بنية تعريف سير العمل

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

فيما يلي البنية عالية المستوى لتعريف سير العمل:

"definition": {
  "$schema": "<workflow-definition-language-schema-version>",
  "actions": { "<workflow-action-definitions>" },
  "contentVersion": "<workflow-definition-version-number>",
  "outputs": { "<workflow-output-definitions>" },
  "parameters": { "<workflow-parameter-definitions>" },
  "staticResults": { "<static-results-definitions>" },
  "triggers": { "<workflow-trigger-definitions>" }
}
السمة المطلوب الوصف
definition ‏‏نعم‬ عنصر البداية لتعريف سير العمل
$schema فقط عند الرجوع إلى تعريف سير عمل خارجياً موقع ملف مخطط JSON الذي يصف إصدار لغة تعريف سير العمل، والذي يمكنك العثور عليه هنا:

https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json
actions لا تعريفات إجراء واحد أو أكثر لتنفيذها في وقت تشغيل سير العمل. لمزيد من المعلومات، راجع المشغلات والإجراءات.



الحد الأقصى للإجراءات: 250
contentVersion لا رقم الإصدار لتعريف سير العمل الخاص بك، وهو "1.0.0.0" بشكل افتراضي. للمساعدة في تحديد التعريف الصحيح وتأكيده عند نشر سير عمل، حدد قيمة لاستخدامها.
outputs لا تعريفات المخرجات لإرجاعها من تشغيل سير العمل. للحصول على مزيدٍ من المعلومات، راجع الإخراجات.



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



الحد الأقصى للمعلمات: 50
staticResults لا تعريفات واحدة أو أكثر من النتائج الثابتة التي يتم إرجاعها بواسطة الإجراءات كمخرجات وهمية عند تمكين النتائج الثابتة على هذه الإجراءات. في كل تعريف إجراء، تشير السمة runtimeConfiguration.staticResult.name إلى التعريف المقابل داخل staticResults. لمزيد من المعلومات، راجع النتائج الثابتة.
triggers لا تعريفات مشغل واحد أو أكثر يقوم بإنشاء مثيل لسير العمل الخاص بك. يمكنك تعريف أكثر من مشغل واحد، ولكن فقط باستخدام لغة تعريف سير العمل، وليس بصريا من خلال مصمم سير العمل. لمزيد من المعلومات، راجع المشغلات والإجراءات.



الحد الأقصى للمشغلات: 10

المشغلات والإجراءات

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

المعلمات

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

فيما يلي البنية العامة لتعريف المعلمة:

"parameters": {
   "<parameter-name>": {
      "type": "<parameter-type>",
      "defaultValue": <default-parameter-value>,
      "allowedValues": [ <array-with-permitted-parameter-values> ],
      "metadata": {
         "description": "<parameter-description>"
      }
   }
},
السمة المطلوب نوع ‏‏الوصف
<parameter-name> ‏‏نعم‬ السلسلة‬ اسم المعلمة التي تريد تعريفها
<parameter-type> ‏‏نعم‬ int، float، string، bool، array، object، securestring، secureobject



ملاحظة: لجميع كلمات المرور والمفاتيح والأسرار، استخدم securestring الأنواع أو secureobject لأن GET العملية لا ترجع هذه الأنواع. لمزيد من المعلومات حول تأمين المعلمات، راجع توصيات الأمان لمعلمات الإجراء والإدخال.
نوع المعلمة
<default-parameter-value> ‏‏نعم‬ مثل type قيمة المعلمة الافتراضية لاستخدامها إذا لم يتم تحديد قيمة عند إنشاء مثيل لسير العمل. defaultValue السمة مطلوبة بحيث يمكن لمصمم Logic App إظهار المعلمة بشكل صحيح، ولكن يمكنك تحديد قيمة فارغة.
<array-with-permitted-parameter-values> لا صفيف صفيف ذو قيم يمكن للمعلمة قبولها
<parameter-description> لا كائن JSON أي تفاصيل معلمة أخرى، مثل وصف للمعلمة

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

النتائج الثابتة

في السمة staticResults، حدد وهمية الإجراء outputs وstatus التي يعيدها الإجراء عند تشغيل إعداد النتيجة الثابتة للإجراء. في تعريف الإجراء، تشير السمة runtimeConfiguration.staticResult.name إلى اسم تعريف النتيجة الثابتة داخل staticResults. تعرف على كيفية اختبار مهام سير عمل تطبيق المنطق باستخدام بيانات وهمية عن طريق إعداد نتائج ثابتة.

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "<static-result-definition-name>": {
         "outputs": {
            <output-attributes-and-values-returned>,
            "headers": { <header-values> },
            "statusCode": "<status-code-returned>"
         },
         "status": "<action-status>"
      }
   },
   "triggers": { "<...>" }
}
السمة المطلوب نوع ‏‏الوصف
<static-result-definition-name> ‏‏نعم‬ السلسلة‬ اسم تعريف نتيجة ثابت يمكن أن يشير إليه تعريف الإجراء من خلال كائن runtimeConfiguration.staticResult. لمزيد من المعلومات، راجع إعدادات تكوين وقت التشغيل.

يمكنك استخدام أي اسم فريد تريده. بشكل افتراضي، يتم إلحاق هذا الاسم الفريد برقم، والذي تتم زيادته حسب الضرورة.
<output-attributes-and-values-returned> ‏‏نعم‬ يتفاوت تختلف متطلبات هذه السمات بناء على شروط مختلفة. على سبيل المثال، عندما يكون status هو Succeeded، تتضمن السمة outputs السمات والقيم التي يتم إرجاعها كمخرجات وهمية بواسطة الإجراء. إذا كانت status هي Failed، فإن السمة outputs تتضمن السمة errors، وهي صفيف يحتوي على عنصر خطأ message واحد أو أكثر يحتوي على معلومات الخطأ.
<header-values> لا JSON أي قيم رأس تم إرجاعها بواسطة الإجراء
<status-code-returned> ‏‏نعم‬ السلسلة‬ رمز الحالة الذي تم إرجاعه بواسطة الإجراء
<action-status> ‏‏نعم‬ السلسلة‬ حالة الإجراء، على سبيل المثال، Succeeded أو Failed

على سبيل المثال، في تعريف إجراء HTTP هذا، تشير مراجع السمة runtimeConfiguration.staticResult.nameHTTP0 داخل السمة staticResults حيث يتم تعريف المخرجات الوهمية للإجراء. تحدد السمة runtimeConfiguration.staticResult.staticResultOptions أن إعداد النتيجة الثابتة هو Enabled في إجراء HTTP.

"actions": {
   "HTTP": {
      "inputs": {
         "method": "GET",
         "uri": "https://www.microsoft.com"
      },
      "runAfter": {},
      "runtimeConfiguration": {
         "staticResult": {
            "name": "HTTP0",
            "staticResultOptions": "Enabled"
         }
      },
      "type": "Http"
   }
},

يقوم إجراء HTTP بإرجاع المخرجات في التعريف HTTP0 داخل staticResults. في هذا المثال، بالنسبة إلى رمز الحالة، يكون الإخراج الوهمي هو OK. بالنسبة لقيم العنوان، يكون الإخراج الوهمي هو "Content-Type": "application/JSON". بالنسبة لحالة الإجراء، يكون الإخراج الوهمي هو Succeeded.

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "HTTP0": {
         "outputs": {
            "headers": {
               "Content-Type": "application/JSON"
            },
            "statusCode": "OK"
         },
         "status": "Succeeded"
      }
   },
   "triggers": { "<...>" }
},

Expressions

باستخدام JSON، يمكنك الحصول على قيم حرفية موجودة في وقت التصميم، على سبيل المثال:

"customerName": "Sophia Owen",
"rainbowColors": ["red", "orange", "yellow", "green", "blue", "indigo", "violet"],
"rainbowColorsCount": 7

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

على سبيل المثال، بالنسبة للخاصية المعرفة customerName مسبقاً، يمكنك الحصول على قيمة الخاصية باستخدام الدالة parameters() في تعبير وتعيين تلك القيمة إلى الخاصية accountName:

"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"

يتيح لك استنتاج السلسلة أيضاً استخدام تعبيرات متعددة داخل سلاسل ملتفة بواسطة الحرف @ والأقواس المتعرجة ({}). فيما يلي بناء الجملة:

@{ "<expression1>", "<expression2>" }

تكون النتيجة دائماً سلسلة، ما يجعل هذه الإمكانية مشابهة للدالة concat()، على سبيل المثال:

"customerName": "First name: @{parameters('firstName')} Last name: @{parameters('lastName')}"

إذا كان لديك سلسلة حرفية تبدأ بالحرف @، فبادئة الحرف @ بحرف @ آخر كحرف إلغاء: @@

توضح هذه الأمثلة كيفية تقييم التعبيرات:

قيمة JSON النتيجة
"صوفيا أوين" إرجاع هذه الأحرف: 'صوفيا أوين'
"array[1]" إرجاع هذه الأحرف: 'array[1]'
"@@" إرجاع هذه الأحرف كسلسلة مكونة من حرف واحد: '@'
" @" إرجاع هذه الأحرف كسلسلة مكونة من حرفين: ' @'

لهذه الأمثلة، افترض أنك تحدد "myBirthMonth" يساوي "يناير" و"myAge" يساوي الرقم 42:

"myBirthMonth": "January",
"myAge": 42

توضح هذه الأمثلة كيفية تقييم التعبيرات التالية:

تعبير JSON النتيجة
"@parameters('myBirthMonth')" إرجاع هذه السلسلة: "يناير"
"@{parameters('myBirthMonth')}" إرجاع هذه السلسلة: "يناير"
"@parameters('myAge')" إرجاع هذا الرقم: 42
"@{parameters('myAge')}" إرجاع هذا الرقم كسلسلة: "42"
"عمري هو @{parameters('myAge')}" إرجاع هذه السلسلة: "عمري 42"
"@concat('عمري هو ', string(parameters('myAge')))" إرجاع هذه السلسلة: "عمري 42"
"عمري هو @@{parameters('myAge')}" إرجاع هذه السلسلة، التي تتضمن التعبير: "عمري هو @{parameters('myAge')}`

عند العمل بشكل مرئي في مصمم سير العمل، يمكنك إنشاء تعبيرات باستخدام محرر التعبير، على سبيل المثال:

Screenshot shows workflow designer and expression editor.

عند الانتهاء، يظهر التعبير للخاصية المقابلة في تعريف سير العمل الخاص بك، على سبيل المثال، الخاصية searchQuery هنا:

"Search_tweets": {
  "inputs": {
    "host": {
      "connection": {
        "name": "@parameters('$connections')['twitter']['connectionId']"
      }
    }
  },
  "method": "get",
  "path": "/searchtweets",
  "queries": {
    "maxResults": 20,
    "searchQuery": "Azure @{concat('firstName','', 'LastName')}"
  }
},

الإخراجات

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

إشعار

عند الاستجابة للطلبات الواردة من واجهة برمجة تطبيقات REST الخاصة بالخدمة، لا تستخدم outputs. بدلاً من ذلك، استخدم Response نوع الإجراء. لمزيد من المعلومات، راجع مشغلات وإجراءات سير العمل.

فيما يلي البنية العامة لتعريف الإخراج:

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
السمة المطلوب نوع ‏‏الوصف
<key-name> ‏‏نعم‬ السلسلة‬ اسم المفتاح لقيمة إرجاع الإخراج
<key-type> ‏‏نعم‬ int وfloat وstring وsecurestring وbool وarray وعنصر JSON نوع القيمة المرجعة للإخراج
<قيمة-المفتاح> ‏‏نعم‬ مثل <key-type> القيمة المرجعة للإخراج

للحصول على الإخراج من تشغيل سير العمل، راجع محفوظات تشغيل التطبيق المنطقي وتفاصيله في مدخل Microsoft Azure أو استخدم واجهة برمجة تطبيقات REST لسير العمل. يمكنك أيضاً تمرير الإخراج إلى الأنظمة الخارجية، على سبيل المثال، Power BI بحيث يمكنك إنشاء لوحات المعلومات.

عوامل التشغيل

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

المشغل مهمة
' لاستخدام سلسلة حرفية كمدخل أو في التعبيرات والدالات، قم بتضمين السلسلة فقط بعلامات اقتباس مفردة، على سبيل المثال، '<myString>'. لا تستخدم علامات الاقتباس المزدوجة ("")، التي تتعارض مع تنسيق JSON حول تعبير بأكمله. على سبيل المثال:

نعم: length('Hello')
No: length("Hello")

عند تمرير الصفائف أو الأرقام، لا تحتاج إلى علامات ترقيم الالتفاف. على سبيل المثال:

نعم: الطول([1، 2، 3])
لا: الطول("[1، 2، 3]")
[] للإشارة إلى قيمة في موضع معين (فهرس) في صفيف أو داخل كائن JSON، استخدم الأقواس المربعة، على سبيل المثال:

- للحصول على العنصر الثاني في صفيف:

myArray[1]

- للوصول إلى الخصائص داخل كائن JSON:

مثال 1:
setProperty(<object>, '<parent-property>', addProperty(<object>['<parent-property>'], '<child-property>', <value>)

مثال 2:
lastIndexOf(triggerBody()?['subject'],'some string')
. للإشارة إلى خاصية في كائن، استخدم عامل تشغيل النقطة. على سبيل المثال، للحصول على الخاصية name لكائن customer JSON:

"@parameters('customer').name"
? للإشارة إلى خصائص فارغة في كائن دون خطأ في وقت التشغيل، استخدم عامل تشغيل علامة الاستفهام. على سبيل المثال، لمعالجة المخرجات الخالية من مشغل، يمكنك استخدام هذا التعبير:

@coalesce(trigger().outputs?.body?.<someProperty>, '<property-default-value>')

الدالات

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

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