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