مشاركة عبر


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

عند إنشاء سير عمل تطبيق منطقي في Azure Logic Apps، يحتوي سير العمل على تعريف JavaScript Object Notation (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>" }
}
Attribute Required Description
definition Yes عنصر البداية لتعريف سير العمل
$schema فقط عند الرجوع إلى تعريف سير عمل خارجياً موقع ملف مخطط JSON الذي يصف إصدار لغة تعريف سير العمل، والذي يمكنك العثور عليه هنا:

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



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



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



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



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

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

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

Parameters

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

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

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



ملاحظة: لكافة كلمات المرور والمفاتيح والأسرار، استخدم securestring الأنواع أو secureobject لأن GET العملية لا ترجع هذه الأنواع. لمزيد من المعلومات حول تأمين المعلمات، راجع توصيات الأمان لمعلمات الإجراء والإدخال.
نوع المعلمة
< قيمة المعلمة الافتراضية> Yes مثل type قيمة المعلمة الافتراضية لاستخدامها إذا لم يتم تحديد قيمة عند إنشاء مثيل لسير العمل. defaultValue السمة مطلوبة بحيث يمكن لمصمم سير العمل إظهار المعلمة بشكل صحيح، ولكن يمكنك تحديد قيمة فارغة.
< صفيف مع قيم معلمات مسموح بها> No Array صفيف ذو قيم يمكن للمعلمة قبولها
< وصف المعلمة> No كائن 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": { "<...>" }
}
Attribute Required Type Description
< اسم تعريف النتيجة الثابتة> Yes String اسم تعريف نتيجة ثابت يمكن أن يشير إليه تعريف الإجراء من خلال كائن runtimeConfiguration.staticResult. لمزيد من المعلومات، راجع إعدادات تكوين وقت التشغيل.

يمكنك استخدام أي اسم فريد تريده. بشكل افتراضي، يتم إلحاق هذا الاسم الفريد برقم، والذي تتم زيادته حسب الضرورة.
< إرجاع سمات الإخراج والقيم> Yes Varies تختلف متطلبات هذه السمات بناء على شروط مختلفة. على سبيل المثال، عندما يكون status هو Succeeded، تتضمن السمة outputs السمات والقيم التي يتم إرجاعها كمخرجات وهمية بواسطة الإجراء. إذا كانت status هي Failed، فإن السمة outputs تتضمن السمة errors، وهي صفيف يحتوي على عنصر خطأ message واحد أو أكثر يحتوي على معلومات الخطأ.
< قيم الرأس> No JSON أي قيم رأس تم إرجاعها بواسطة الإجراء
< الحالة-التعليمات البرمجية التي تم إرجاعها> Yes String رمز الحالة الذي تم إرجاعه بواسطة الإجراء
< حالة الإجراء> Yes String حالة الإجراء، على سبيل المثال، 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 Result
"صوفيا أوين" إرجاع هذه الأحرف: 'صوفيا أوين'
"array[1]" إرجاع هذه الأحرف: 'array[1]'
"@@" إرجاع هذه الأحرف كسلسلة مكونة من حرف واحد: '@'
" @" إرجاع هذه الأحرف كسلسلة مكونة من حرفين: ' @'

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

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

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

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

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

تظهر لقطة الشاشة مصمم سير العمل ومحرر التعبير.

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

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

Outputs

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

Note

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

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

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
Attribute Required Type Description
< اسم المفتاح> Yes String اسم المفتاح لقيمة إرجاع الإخراج
< نوع المفتاح> Yes int وfloat وstring وsecurestring وbool وarray وعنصر JSON نوع القيمة المرجعة للإخراج
< قيمة المفتاح> Yes نفس <نوع المفتاح> القيمة المرجعة للإخراج

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

Operators

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

Operator Task
' لاستخدام سلسلة حرفية كمدخل أو في التعبيرات والدالات، قم بتضمين السلسلة فقط بعلامات اقتباس مفردة، على سبيل المثال، '<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"
? للإشارة إلى خاصية كائن دون المخاطرة بخطأ في وقت التشغيل أو فشل سير العمل، استخدم عامل تشغيل علامة الاستفهام (?)، المعروف أيضا باسم عامل تشغيل تجاهل القيم الخالية، قبل الخاصية . يتيح لك عامل التشغيل هذا الوصول بأمان إلى خاصية أو عنصر صفيف عندما يحتوي null العنصر الأصل أو الخاصية المشار إليها أو يكون مفقودا.

- إذا كان الكائن الأصل الذي يظهر قبل ? عامل التشغيل أو null يفتقد إلى الخاصية المشار إليها، فإن التعبير بأكمله يرجع null، بدلا من فشل سير العمل.

- إذا كان الكائن أو الخاصية موجودا، يقوم التعبير بإرجاع قيمة الخاصية.

على سبيل المثال، افترض أن لديك التعبير التالي:

triggerBody()?['ContentData']

- إذا triggerBody() أرجعت كائنا من الخاصية ContentData ، فستحصل على قيمة الكائن.

- إذا كانت triggerBody()null الخاصية أو مفقودةContentData، ترجع null الدالة بدلا من أن تفشل مع ظهور الخطأ "غير قادر على معالجة تعبيرات لغة القالب".

? يتيح لك عامل التشغيل أيضا تسلسل خصائص الوصول بأمان وهو مفيد في السيناريوهات التالية:

- إدارة التعبيرات التي تعمل مع حقول JSON الاختيارية.
- معالجة مخرجات الموصل التي قد تحذف خصائص معينة.
- تجنب التعبيرات الهشة في المنطق الشرطي.

على سبيل المثال، لتسلسل الوصول إلى الخاصية ومعالجة المخرجات الخالية من مشغل، يمكنك استخدام التعبير التالي:

coalesce(trigger().outputs?.body?['<property-name>'], '<property-default-value>')

Functions

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