مرجع واجهة برمجة تطبيقات HTTP
يعرض ملحق "الوظائف الدائمة" مجموعة من واجهات برمجة تطبيقات HTTP المضمنة التي يمكن استخدامها لتنفيذ مهام على عمليات التنسيق، والكيانات ومراكز المهام. واجهات برمجة التطبيقات HTTP هذه هي إخطارات على الويب بقابلية للتوسعة التي معتمدة من قبل مضيف "وظائف Azure" ولكن يتم معالجتها مباشرة بواسطة ملحق "الوظائف الدائمة".
عنوان URL الأساسي لواجهات برمجة التطبيقات المذكورة في هذه المقالة هو نفس عنوان URL الأساسي لتطبيق الوظائف. عند التطوير محلياً باستخدام Azure Functions Core Tools، يكون عنوان URL الأساسي عادة http://localhost:7071
. في خدمة Azure Functions المستضافة، يكون عنوان URL الأساسي عادة https://{appName}.azurewebsites.net
. يتم دعم أسماء المضيفين المخصصة أيضاً إذا تم تكوينها على تطبيق App Service الخاص بك.
تتطلب كافة واجهات برمجة تطبيقات HTTP التي تم تنفيذها بواسطة الملحق المعلمات التالية. نوع البيانات لكافة المعلمات هو string
.
المعلمة | نوع المعلمة | الوصف |
---|---|---|
taskHub |
سلسلة الاستعلام | اسم مركز المهمة. إذا لم يتم تحديد، يتم افتراض اسم مركز المهمة لتطبيق الوظائف الحالي. |
connection |
سلسلة الاستعلام | اسم إعداد تطبيق الاتصال لموفر تخزين الخلفية. إذا لم يتم تحديد، يتم افتراض تكوين الاتصال الافتراضي لتطبيق الوظائف. |
systemKey |
سلسلة الاستعلام | مفتاح التخويل المطلوب لاستدعاء واجهة برمجة التطبيقات. |
systemKey
هو مفتاح تخويل تم تجديده تلقائيًا من قبل مضيف "وظائف Azure". وهو يمنح على وجه التحديد الوصول إلى واجهات برمجة التطبيقات ملحق المهام الدائمة ويمكن إدارته بنفس الطريقة مثل مفاتيح الوصول الأخرى لوظائف Azure. يمكنك إنشاء عناوين URL التي تحتوي على قيم سلسلة الاستعلام الصحيحة taskHub
، وconnection
، وsystemKey
باستخدام واجهات برمجة التطبيقات ربط عميل التنسيق، مثل واجهات برمجة تطبيقات CreateCheckStatusResponse
وCreateHttpManagementPayload
في .NET وواجهات برمجة تطبيقات createCheckStatusResponse
وcreateHttpManagementPayload
في JavaScript، إلخ.
تغطي الأقسام القليلة التالية واجهات برمجة تطبيقات HTTP المحددة المدعومة من الملحق وتقدم أمثلة حول كيفية استخدامها.
بدء التنسيق
بدء تنفيذ مثيل جديد من وظيفة المنسق المحددة.
Request
للحصول على الإصدار 1.x من وقت تشغيل الوظائف، يتم تنسيق الطلب كما يلي (يتم عرض أسطر متعددة للوضوح):
POST /admin/extensions/DurableTaskExtension/orchestrators/{functionName}/{instanceId?}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
في الإصدار 2.x من وقت تشغيل الوظائف، يحتوي تنسيق URL على كافة المعلمات نفسها ولكن مع بادئة مختلفة قليلًا:
POST /runtime/webhooks/durabletask/orchestrators/{functionName}/{instanceId?}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
تتضمن معلمات الطلب لواجهة برمجة التطبيقات هذه المجموعة الافتراضية المذكورة سابقًا بالإضافة إلى المعلمات الفريدة التالية:
الحقل | نوع المعلمة | الوصف |
---|---|---|
functionName |
URL | اسم وظيفة المنسق لبدء التشغيل. |
instanceId |
عنوان URL | المعلمة الاختيارية. معرف مثيل التنسيق. إذا لم يتم تحديد، ستبدأ وظيفة المنسق بمعرف مثيل عشوائي. |
{content} |
طلب المحتوى | اختياري. إدخال وظيفة المنسق بتنسيق JSON. |
Response
يمكن إرجاع العديد من قيم تعليمة برمجية للحالة المحتملة.
- HTTP 202 (Accepted): تمت جدولة دالة المنسق المحددة لبدء التشغيل. يحتوي عنوان الاستجابة
Location
على URL للتحقق من حالة التنسيق. - HTTP 400 (Bad request): دالة المنسق المحددة غير موجودة، ومعرف المثيل المحدد غير صالح، أو محتوى طلب JSON غير صالح.
التالي هو طلب مثال يبدأ بوظيفة منسق RestartVMs
ويتضمن البيانات الأساسية لعنصر JSON:
POST /runtime/webhooks/durabletask/orchestrators/RestartVMs?code=XXX
Content-Type: application/json
Content-Length: 83
{
"resourceGroup": "myRG",
"subscriptionId": "111deb5d-09df-4604-992e-a968345530a9"
}
البيانات الأساسية للاستجابة لحالات HTTP 202 هي عنصر JSON مع الحقول التالية:
الحقل | الوصف |
---|---|
id |
معرف مثيل التنسيق. |
statusQueryGetUri |
حالة URL لمثيل التنسيق. |
sendEventPostUri |
URL «تنفيذ حدث» لمثيل التنسيق. |
terminatePostUri |
URL «الإنهاء» لمثيل التنسيق. |
purgeHistoryDeleteUri |
URL «سجل المسح» لمثيل التنسيق. |
rewindPostUri |
(معاينة) URL «الإرجاع» لمثيل التنسيق. |
suspendPostUri |
عنوان URL «للتوقف مؤقتًا» لمثيل التنسيق. |
resumePostUri |
عنوان URL «للاستئناف» لمثيل التنسيق. |
نوع البيانات لكافة الحقول هي string
.
فيما يلي البيانات الأساسية لاستجابة مثال لمثيل تنسيق مع abc123
كمعرفه (منسق للقراءة):
{
"id": "abc123",
"purgeHistoryDeleteUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123?code=XXX",
"sendEventPostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123/raiseEvent/{eventName}?code=XXX",
"statusQueryGetUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123?code=XXX",
"terminatePostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123/terminate?reason={text}&code=XXX",
"suspendPostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123/suspend?reason={text}&code=XXX",
"resumePostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123/resume?reason={text}&code=XXX"
}
استجابة HTTP مقصودة لتكون متوافقة مع نمط المستهلك للتحقق. كما تتضمن عناوين الاستجابة الملحوظة التالية:
- Location: عنوان URL لنقطة نهاية الحالة. يحتوي URL هذا على نفس قيمة حقل
statusQueryGetUri
. - Retry-After: عدد الثواني التي يجب الانتظار بين عمليات التحقق. القيمة الافتراضية هي
10
.
لمزيد من المعلومات حول نمط التحقق من HTTP غير متزامن، فراجع وثائق تعقب العملية غير المتزامنة لـ HTTP.
الحصول على حالة المثيل
احصل على حالة مثيل تنسيق محدد.
Request
للحصول على الإصدار 1.x من وقت تشغيل الوظائف، يتم تنسيق الطلب كما يلي (يتم عرض أسطر متعددة للوضوح):
GET /admin/extensions/DurableTaskExtension/instances/{instanceId}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&showHistory=[true|false]
&showHistoryOutput=[true|false]
&showInput=[true|false]
&returnInternalServerErrorOnFailure=[true|false]
في الإصدار 2.x من وقت تشغيل الوظائف، يحتوي تنسيق URL على كافة المعلمات نفسها ولكن مع بادئة مختلفة قليلًا:
GET /runtime/webhooks/durabletask/instances/{instanceId}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&showHistory=[true|false]
&showHistoryOutput=[true|false]
&showInput=[true|false]
&returnInternalServerErrorOnFailure=[true|false]
تتضمن معلمات الطلب لواجهة برمجة التطبيقات هذه المجموعة الافتراضية المذكورة سابقًا بالإضافة إلى المعلمات الفريدة التالية:
الحقل | نوع المعلمة | الوصف |
---|---|---|
instanceId |
URL | معرف مثيل التنسيق. |
showInput |
سلسلة الاستعلام | المعلمة الاختيارية. إذا تم تعيينها إلى false ، فلن يتم تضمين إدخال الوظيفة في البيانات الأساسية للاستجابة. |
showHistory |
سلسلة الاستعلام | المعلمة الاختيارية. إذا تم تعيينها إلى true ، سيتم تضمين سجل تنفيذ التنسيق في البيانات الأساسية للاستجابة. |
showHistoryOutput |
سلسلة الاستعلام | المعلمة الاختيارية. إذا تم تعيينها إلى true ، سيتم تضمين مخرجات الوظيفة في محفوظات تنفيذ التنسيق. |
createdTimeFrom |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديدها، تقوم بتصفية قائمة المثيلات التي تم إرجاعها التي تم إنشاؤها فيها أو بعد الطابع الزمني ISO8601 المحدد. |
createdTimeTo |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديدها، تقوم بتصفية قائمة المثيلات التي تم إرجاعها التي تم إنشاؤها فيها أو قبل الطابع الزمني ISO8601 المحدد. |
runtimeStatus |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديدها، تقوم بتصفية قائمة المثيلات التي تم إرجاعها استنادًا إلى حالة وقت التشغيل الخاصة بها. لعرض قائمة قيم حالة وقت التشغيل المحتملة، راجع مقالة "الاستعلام عن المثيلات". |
returnInternalServerErrorOnFailure |
سلسلة الاستعلام | المعلمة الاختيارية. إذا تم تعيينها إلى true ، فإن واجهة برمجة التطبيقات هذه ستعيد استجابة HTTP 500 بدلًا من 200 إذا كان المثيل في حالة فشل. هذه المعلمة مخصصة لسيناريوهات التحقق من للحالة التلقائية. |
Response
يمكن إرجاع العديد من قيم تعليمة برمجية للحالة المحتملة.
- HTTP 200 (OK): المثيل المحدد في حالة إكمال أو فشل.
- HTTP 202 (Accepted): المثيل المحدد قيد التقدم.
- HTTP 400 (Bad Request): فشل المثيل المحدد أو تم إنهاؤه.
- HTTP 404 (Not Found): المثيل المحدد غير موجود أو لم يتم بدء تشغيله.
- HTTP 500 (Internal Server Error): يتم إرجاعه فقط عند تعيين
returnInternalServerErrorOnFailure
إلىtrue
وفشل المثيل المحدد مع استثناء غير معالج.
البيانات الأساسية للاستجابة لحالات HTTP 200 و HTTP 202 هي عنصر JSON مع الحقول التالية:
الحقل | نوع البيانات | الوصف |
---|---|---|
runtimeStatus |
سلسلة | حالة وقت التشغيل للمثيل. تتضمن القيم قيد التشغيل، معلق، فشل، تم إلغاؤه، تم إنهاؤه، مكتمل، متوقف مؤقتًا. |
input |
JSON | بيانات JSON المستخدمة لتهيئة المثيل. هذا الحقل هو null إذا تم تعيين معلمة سلسلة الاستعلام showInput إلى false . |
customStatus |
JSON | بيانات JSON المستخدمة لحالة التنسيق المخصصة. هذا الحقل هو null إذا لم يتم تعيينه. |
output |
JSON | إخراج JSON للمثيل. هذا الحقل هو null إذا لم يكن المثيل في حالة مكتملة. |
createdTime |
سلسلة | الوقت الذي تم إنشاء المثيل فيه. يستخدم ISO 8601 برمز ممتد. |
lastUpdatedTime |
سلسلة | الوقت الذي استمر فيه المثيل آخر مرة. يستخدم ISO 8601 برمز ممتد. |
historyEvents |
JSON | صفيف JSON الذي يحتوي على محفوظات تنفيذ التنسيق. هذا الحقل هو null ما لم يتم تعيين معلمة سلسلة الاستعلام showHistory إلى true . |
فيما يلي مثال على البيانات الأساسية للاستجابة بما في ذلك محفوظات تنفيذ التنسيق ومخرجات النشاط (منسقة للقراءة):
{
"createdTime": "2018-02-28T05:18:49Z",
"historyEvents": [
{
"EventType": "ExecutionStarted",
"FunctionName": "E1_HelloSequence",
"Timestamp": "2018-02-28T05:18:49.3452372Z"
},
{
"EventType": "TaskCompleted",
"FunctionName": "E1_SayHello",
"Result": "Hello Tokyo!",
"ScheduledTime": "2018-02-28T05:18:51.3939873Z",
"Timestamp": "2018-02-28T05:18:52.2895622Z"
},
{
"EventType": "TaskCompleted",
"FunctionName": "E1_SayHello",
"Result": "Hello Seattle!",
"ScheduledTime": "2018-02-28T05:18:52.8755705Z",
"Timestamp": "2018-02-28T05:18:53.1765771Z"
},
{
"EventType": "TaskCompleted",
"FunctionName": "E1_SayHello",
"Result": "Hello London!",
"ScheduledTime": "2018-02-28T05:18:53.5170791Z",
"Timestamp": "2018-02-28T05:18:53.891081Z"
},
{
"EventType": "ExecutionCompleted",
"OrchestrationStatus": "Completed",
"Result": [
"Hello Tokyo!",
"Hello Seattle!",
"Hello London!"
],
"Timestamp": "2018-02-28T05:18:54.3660895Z"
}
],
"input": null,
"customStatus": { "nextActions": ["A", "B", "C"], "foo": 2 },
"lastUpdatedTime": "2018-02-28T05:18:54Z",
"output": [
"Hello Tokyo!",
"Hello Seattle!",
"Hello London!"
],
"runtimeStatus": "Completed"
}
تتضمن استجابة HTTP 202 أيضًا عنوان استجابة Location التي تشير إلى نفس URL مثل حقل statusQueryGetUri
المذكور سابقًا.
الحصول على حالة كافة المثيلات
يمكنك أيضًا الاستعلام عن حالة كافة المثيلات عن طريق إزالة instanceId
من طلب "الحصول على حالة المثيل". في هذه الحالة، المعلمات الأساسية هي مثل "الحصول على حالة المثيل". معلمات سلسلة الاستعلام للتصفية معتمدة أيضًا.
Request
للحصول على الإصدار 1.x من وقت تشغيل الوظائف، يتم تنسيق الطلب كما يلي (يتم عرض أسطر متعددة للوضوح):
GET /admin/extensions/DurableTaskExtension/instances
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
&instanceIdPrefix={prefix}
&showInput=[true|false]
&top={integer}
في الإصدار 2.x من وقت تشغيل الوظائف، يحتوي تنسيق URL على كافة المعلمات نفسها ولكن مع بادئة مختلفة قليلًا:
GET /runtime/webhooks/durableTask/instances?
taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
&instanceIdPrefix={prefix}
&showInput=[true|false]
&top={integer}
تتضمن معلمات الطلب لواجهة برمجة التطبيقات هذه المجموعة الافتراضية المذكورة سابقًا بالإضافة إلى المعلمات الفريدة التالية:
الحقل | نوع المعلمة | الوصف |
---|---|---|
showInput |
سلسلة الاستعلام | المعلمة الاختيارية. إذا تم تعيينها إلى false ، فلن يتم تضمين إدخال الوظيفة في البيانات الأساسية للاستجابة. |
showHistoryOutput |
سلسلة الاستعلام | المعلمة الاختيارية. إذا تم تعيينها إلى true ، سيتم تضمين مخرجات الوظيفة في محفوظات تنفيذ التنسيق. |
createdTimeFrom |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديدها، تقوم بتصفية قائمة المثيلات التي تم إرجاعها التي تم إنشاؤها فيها أو بعد الطابع الزمني ISO8601 المحدد. |
createdTimeTo |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديدها، تقوم بتصفية قائمة المثيلات التي تم إرجاعها التي تم إنشاؤها فيها أو قبل الطابع الزمني ISO8601 المحدد. |
runtimeStatus |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديدها، تقوم بتصفية قائمة المثيلات التي تم إرجاعها استنادًا إلى حالة وقت التشغيل الخاصة بها. لعرض قائمة قيم حالة وقت التشغيل المحتملة، راجع مقالة "الاستعلام عن المثيلات". |
instanceIdPrefix |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديده، يقوم بتصفية قائمة المثيلات التي تم إرجاعها لتضمين المثيلات التي يبدأ معرف مثيلها بسلسلة البادئة المحددة فقط. متوفر بدءاً من الإصدار 2.7.2 للملحق. |
top |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديد، تحد من عدد المثيلات التي تم إرجاعها بواسطة الاستعلام. |
Response
وفيما يلي مثال للبيانات الأساسية للاستجابة بما في ذلك حالة التنسيق (منسقة للقراءة):
[
{
"instanceId": "7af46ff000564c65aafbfe99d07c32a5",
"runtimeStatus": "Completed",
"input": null,
"customStatus": null,
"output": [
"Hello Tokyo!",
"Hello Seattle!",
"Hello London!"
],
"createdTime": "2018-06-04T10:46:39Z",
"lastUpdatedTime": "2018-06-04T10:46:47Z"
},
{
"instanceId": "80eb7dd5c22f4eeba9f42b062794321e",
"runtimeStatus": "Running",
"input": null,
"customStatus": null,
"output": null,
"createdTime": "2018-06-04T15:18:28Z",
"lastUpdatedTime": "2018-06-04T15:18:38Z"
},
{
"instanceId": "9124518926db408ab8dfe84822aba2b1",
"runtimeStatus": "Completed",
"input": null,
"customStatus": null,
"output": [
"Hello Tokyo!",
"Hello Seattle!",
"Hello London!"
],
"createdTime": "2018-06-04T10:46:54Z",
"lastUpdatedTime": "2018-06-04T10:47:03Z"
},
{
"instanceId": "d100b90b903c4009ba1a90868331b11b",
"runtimeStatus": "Pending",
"input": null,
"customStatus": null,
"output": null,
"createdTime": "2018-06-04T15:18:39Z",
"lastUpdatedTime": "2018-06-04T15:18:39Z"
}
]
إشعار
يمكن أن تكون هذه العملية مكلفة للغاية من حيث الإدخال/إخراج تخزين Azure إذا كنت تستخدم default Azure Storage provider وإذا كان هناك الكثير من الصفوف في جدول المثيلات. يمكن العثور على مزيد من التفاصيل حول جدول المثيل في وثائق موفر Azure Storage.
إذا كان هناك المزيد من النتائج، يتم إرجاع رمز مميز مستمر في عنوان الاستجابة. اسم العنوان هو x-ms-continuation-token
.
تنبيه
قد ترجع نتيجة الاستعلام عناصر أقل من الحد المحدد بواسطة top
. عند تلقي النتائج، يجب عليك دائمًا التحقق لمعرفة ما إذا كان هناك رمز مميز للمتابعة.
إذا قمت بتعيين قيمة رمز مميز مستمر في عنوان الطلب التالي، يمكنك الحصول على الصفحة التالية من النتائج. هذا الاسم من عنوان الطلب هو أيضًا x-ms-continuation-token
.
إزالة محفوظات مثيل واحد
حذف المحفوظات والبينات الاصطناعية المرتبطة لمثيل تنسيق محدد.
Request
للحصول على الإصدار 1.x من وقت تشغيل الوظائف، يتم تنسيق الطلب كما يلي (يتم عرض أسطر متعددة للوضوح):
DELETE /admin/extensions/DurableTaskExtension/instances/{instanceId}
?taskHub={taskHub}
&connection={connection}
&code={systemKey}
في الإصدار 2.x من وقت تشغيل الوظائف، يحتوي تنسيق URL على كافة المعلمات نفسها ولكن مع بادئة مختلفة قليلًا:
DELETE /runtime/webhooks/durabletask/instances/{instanceId}
?taskHub={taskHub}
&connection={connection}
&code={systemKey}
تتضمن معلمات الطلب لواجهة برمجة التطبيقات هذه المجموعة الافتراضية المذكورة سابقًا بالإضافة إلى المعلمات الفريدة التالية:
الحقل | نوع المعلمة | الوصف |
---|---|---|
instanceId |
URL | معرف مثيل التنسيق. |
Response
يمكن إرجاع قيم تعليمة برمجية حالة HTTP التالية.
- HTTP 200 (OK): تم إزالة محفوظات المثيل بنجاح.
- HTTP 404 (Not Found): المثيل المحدد غير موجود.
البيانات الأساسية للاستجابة لحالة HTTP 200 هي عنصر JSON مع الحقل التالي:
الحقل | نوع البيانات | الوصف |
---|---|---|
instancesDeleted |
integer | عدد المثيلات المحذوفة. بالنسبة لحالة المثيل الواحد، يجب أن تكون هذه القيمة دائمًا 1 . |
فيما يلي مثال على البيانات الأساسية للاستجابة (منسقة لسهولة القراءة):
{
"instancesDeleted": 1
}
إزالة محفوظات مثيلات متعددة
يمكنك أيضًا حذف المحفوظات والبيانات الاصطناعية ذات الصلة لمثيلات متعددة داخل مركز المهام عن طريق إزالة {instanceId}
من طلب "إزالة محفوظات مثيل واحد". لإزالة محفوظات المثيل بشكل انتقائي، استخدم نفس عوامل التصفية الموضحة في طلب "الحصول على حالة كافة المثيلات".
Request
للحصول على الإصدار 1.x من وقت تشغيل الوظائف، يتم تنسيق الطلب كما يلي (يتم عرض أسطر متعددة للوضوح):
DELETE /admin/extensions/DurableTaskExtension/instances
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
في الإصدار 2.x من وقت تشغيل الوظائف، يحتوي تنسيق URL على كافة المعلمات نفسها ولكن مع بادئة مختلفة قليلًا:
DELETE /runtime/webhooks/durabletask/instances
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
تتضمن معلمات الطلب لواجهة برمجة التطبيقات هذه المجموعة الافتراضية المذكورة سابقًا بالإضافة إلى المعلمات الفريدة التالية:
الحقل | نوع المعلمة | الوصف |
---|---|---|
createdTimeFrom |
سلسلة الاستعلام | تقوم بتصفية قائمة المثيلات التي تم إزالتها التي تم إنشاؤها فيها أو بعد الطابع الزمني ISO8601 المحدد. |
createdTimeTo |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديدها، تقوم بتصفية قائمة المثيلات التي تم إزالتها التي تم إنشاؤها فيها أو قبل الطابع الزمني ISO8601 المحدد. |
runtimeStatus |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديدها، تقوم بتصفية قائمة المثيلات التي تم إزالتها استنادًا إلى حالة وقت التشغيل الخاصة بها. لعرض قائمة قيم حالة وقت التشغيل المحتملة، راجع مقالة "الاستعلام عن المثيلات". |
إشعار
يمكن أن تكون هذه العملية مكلفة للغاية من حيث الإدخال/إخراج تخزين Azure إذا كنت تستخدم default Azure Storage provider وإذا كان هناك العديد من الصفوف في المثيلات و/أو جداول المحفوظات. يمكن العثور على مزيد من التفاصيل حول هذه الجداول في وثائق Performance and scale in Durable Functions (Azure Functions).
Response
يمكن إرجاع قيم تعليمة برمجية حالة HTTP التالية.
- HTTP 200 (OK): تم إزالة محفوظات المثيل بنجاح.
- HTTP 404 (Not Found): لم يتم العثور على مثيلات تطابق تعبير عامل التصفية.
البيانات الأساسية للاستجابة لحالة HTTP 200 هي عنصر JSON مع الحقل التالي:
الحقل | نوع البيانات | الوصف |
---|---|---|
instancesDeleted |
integer | عدد المثيلات المحذوفة. |
فيما يلي مثال على البيانات الأساسية للاستجابة (منسقة لسهولة القراءة):
{
"instancesDeleted": 250
}
تنفيذ حدث
يرسل رسالة إعلام بالحدث إلى مثيل تنسيق قيد التشغيل.
Request
للحصول على الإصدار 1.x من وقت تشغيل الوظائف، يتم تنسيق الطلب كما يلي (يتم عرض أسطر متعددة للوضوح):
POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/raiseEvent/{eventName}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
في الإصدار 2.x من وقت تشغيل الوظائف، يحتوي تنسيق URL على كافة المعلمات نفسها ولكن مع بادئة مختلفة قليلًا:
POST /runtime/webhooks/durabletask/instances/{instanceId}/raiseEvent/{eventName}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
تتضمن معلمات الطلب لواجهة برمجة التطبيقات هذه المجموعة الافتراضية المذكورة سابقًا بالإضافة إلى المعلمات الفريدة التالية:
الحقل | نوع المعلمة | الوصف |
---|---|---|
instanceId |
URL | معرف مثيل التنسيق. |
eventName |
عنوان URL | اسم الحدث الذي ينتظره مثيل التنسيق المستهدف. |
{content} |
طلب المحتوى | حمولة الحدث منسقة بـ JSON. |
Response
يمكن إرجاع العديد من قيم تعليمة برمجية للحالة المحتملة.
- HTTP 202 (Accepted): تم قبول الحدث الذي تم إنشاءه للمعالجة.
- HTTP 400 (Bad request): لم يكن محتوى الطلب من النوع
application/json
أو لم يكن JSON صالحًا. - HTTP 404 (Not Found): المثيل المحدد لم يتم العثور عليه.
- HTTP 410 (Gone): لقد اكتمل المثيل المحدد أو فشل ولا يمكنه معالجة أي أحداث تم ناشئة.
هنا مثال طلب يرسل سلسلة JSON "incr"
إلى مثيل انتظار حدث يسمى operation:
POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/raiseEvent/operation?taskHub=DurableFunctionsHub&connection=Storage&code=XXX
Content-Type: application/json
Content-Length: 6
"incr"
لا تحتوي الاستجابات لواجهة برمجة التطبيقات هذه على أي محتوى.
إنهاء المثيل
إنهاء مثيل تنسيق قيد التشغيل.
Request
للحصول على الإصدار 1.x من وقت تشغيل الوظائف، يتم تنسيق الطلب كما يلي (يتم عرض أسطر متعددة للوضوح):
POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/terminate
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
في الإصدار 2.x من وقت تشغيل الوظائف، يحتوي تنسيق URL على كافة المعلمات نفسها ولكن مع بادئة مختلفة قليلًا:
POST /runtime/webhooks/durabletask/instances/{instanceId}/terminate
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
تتضمن معلمات الطلب لواجهة برمجة التطبيقات هذه المجموعة الافتراضية المذكورة سابقًا بالإضافة إلى المعلمة الفريدة التالية.
الحقل | نوع المعلمة | الوصف |
---|---|---|
instanceId |
URL | معرف مثيل التنسيق. |
reason |
سلسلة الاستعلام | اختياري. سبب إنهاء مثيل التنسيق. |
Response
يمكن إرجاع العديد من قيم تعليمة برمجية للحالة المحتملة.
- HTTP 202 (Accepted): تم قبول طلب الإنهاء للمعالجة.
- HTTP 404 (Not Found): المثيل المحدد لم يتم العثور عليه.
- HTTP 410 (Gone): لقد اكتمل المثيل المحدد أو فشل.
هنا مثال طلب ينهي مثيل قيد التشغيل ويحدد سبب لـ لعربات:
POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/terminate?reason=buggy&taskHub=DurableFunctionsHub&connection=Storage&code=XXX
لا تحتوي الاستجابات لواجهة برمجة التطبيقات هذه على أي محتوى.
تعليق المثيل
إيقاف مثيل تنسيق قيد التشغيل مؤقتًا.
Request
في الإصدار 2.x من وقت تشغيل الوظائف، يتم تنسيق الطلب كما يلي (يتم عرض أسطر متعددة للوضوح):
POST /runtime/webhooks/durabletask/instances/{instanceId}/suspend
?reason={text}
&taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
الحقل | نوع المعلمة | الوصف |
---|---|---|
instanceId |
URL | معرف مثيل التنسيق. |
reason |
سلسلة الاستعلام | اختياري. سبب إيقاف مثيل التنسيق مؤقتًا. |
يمكن إرجاع العديد من قيم تعليمة برمجية للحالة المحتملة.
- HTTP 202 (Accepted): تم قبول طلب الإيقاف مؤقتًا للمعالجة.
- HTTP 404 (Not Found): المثيل المحدد لم يتم العثور عليه.
- HTTP 410 (Gone): لقد اكتمل المثيل المحدد أو فشل أو تم إنهاؤه.
لا تحتوي الاستجابات لواجهة برمجة التطبيقات هذه على أي محتوى.
استئناف المثيل
استئناف مثيل تنسيق متوقف مؤقتًا.
Request
في الإصدار 2.x من وقت تشغيل الوظائف، يتم تنسيق الطلب كما يلي (يتم عرض أسطر متعددة للوضوح):
POST /runtime/webhooks/durabletask/instances/{instanceId}/resume
?reason={text}
&taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
الحقل | نوع المعلمة | الوصف |
---|---|---|
instanceId |
URL | معرف مثيل التنسيق. |
reason |
سلسلة الاستعلام | اختياري. سبب استئناف مثيل التنسيق. |
يمكن إرجاع العديد من قيم تعليمة برمجية للحالة المحتملة.
- HTTP 202 (Accepted): تم قبول طلب الاستئناف للمعالجة.
- HTTP 404 (Not Found): المثيل المحدد لم يتم العثور عليه.
- HTTP 410 (Gone): لقد اكتمل المثيل المحدد أو فشل أو تم إنهاؤه.
لا تحتوي الاستجابات لواجهة برمجة التطبيقات هذه على أي محتوى.
مثيل الإرجاع (معاينة)
يستعيد مثيل تنسيق فاشل إلى حالة تشغيل عن طريق إعادة تشغيل العمليات الفاشلة الأخيرة.
Request
للحصول على الإصدار 1.x من وقت تشغيل الوظائف، يتم تنسيق الطلب كما يلي (يتم عرض أسطر متعددة للوضوح):
POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/rewind
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
في الإصدار 2.x من وقت تشغيل الوظائف، يحتوي تنسيق URL على كافة المعلمات نفسها ولكن مع بادئة مختلفة قليلًا:
POST /runtime/webhooks/durabletask/instances/{instanceId}/rewind
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
تتضمن معلمات الطلب لواجهة برمجة التطبيقات هذه المجموعة الافتراضية المذكورة سابقًا بالإضافة إلى المعلمة الفريدة التالية.
الحقل | نوع المعلمة | الوصف |
---|---|---|
instanceId |
URL | معرف مثيل التنسيق. |
reason |
سلسلة الاستعلام | اختياري. سبب إرجاع مثيل التنسيق. |
Response
يمكن إرجاع العديد من قيم تعليمة برمجية للحالة المحتملة.
- HTTP 202 (Accepted): تم قبول طلب للإرجاع للمعالجة.
- HTTP 404 (Not Found): المثيل المحدد لم يتم العثور عليه.
- HTTP 410 (Gone): لقد اكتمل المثيل المحدد أو تم إنهاؤه.
هنا مثال طلب يرجع مثيل فشل ويحدد سبب ثابت:
POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/rewind?reason=fixed&taskHub=DurableFunctionsHub&connection=Storage&code=XXX
لا تحتوي الاستجابات لواجهة برمجة التطبيقات هذه على أي محتوى.
كيان الإشارة
يرسل رسالة عملية أحادية الاتجاه إلى كيان دائم. إذا لم يكن الكيان موجودًا، فسيتم إنشاءه تلقائيًا.
إشعار
الكيانات الدائمة متاحة بدءًا من الوظائف الدائمة 2.0.
Request
تم تنسيق طلب HTTP كما يلي (يتم عرض أسطر متعددة للوضوح):
POST /runtime/webhooks/durabletask/entities/{entityName}/{entityKey}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&op={operationName}
تتضمن معلمات الطلب لواجهة برمجة التطبيقات هذه المجموعة الافتراضية المذكورة سابقًا بالإضافة إلى المعلمات الفريدة التالية:
الحقل | نوع المعلمة | الوصف |
---|---|---|
entityName |
URL | اسم (نوع) الكيان. |
entityKey |
عنوان URL | مفتاح (معرف فريد) الكيان. |
op |
سلسلة الاستعلام | اختياري. اسم العملية المحددة من قبل المستخدم لاستدعاء. |
{content} |
طلب المحتوى | حمولة الحدث منسقة بـ JSON. |
هنا هو طلب مثال يرسل رسالة "إضافة" محددة من قبل المستخدم إلى كيان Counter
مسمى steps
. محتوى الرسالة هو القيمة 5
. إذا لم يكن الكيان موجودًا بالفعل، سيتم إنشاؤه بواسطة هذا الطلب:
POST /runtime/webhooks/durabletask/entities/Counter/steps?op=Add
Content-Type: application/json
5
إشعار
بشكل افتراضي، باستخدام كيانات على أساس الفئة في .NET، لتحدد قيمة op
لـ delete
ستحذف حالة الكيان. إذا حدد الكيان عملية باسم delete
، ومع ذلك، سيتم استدعاء هذه العملية المحددة من قبل المستخدم بدلًا من ذلك.
Response
تحتوي هذه العملية على عدة استجابات ممكنة:
- HTTP 202 (مقبول): تم قبول عملية الإشارة للمعالجة غير المتزامنة.
- HTTP 400 (Bad request): لم يكن محتوى الطلب من النوع
application/json
، أو لم يكن JSON صالحًا، أو كان له قيمةentityKey
غير الصالحة. - HTTP 404 (Not Found): المحدد
entityName
لم يتم العثور عليه.
لا يحتوي طلب HTTP الناجح على أي محتوى في الاستجابة. قد يحتوي طلب HTTP الفاشل على معلومات خطأ بتنسيق JSON في محتوى الاستجابة.
الحصول على كيان
احصل على حالة الكيان المحدد.
Request
تم تنسيق طلب HTTP كما يلي (يتم عرض أسطر متعددة للوضوح):
GET /runtime/webhooks/durabletask/entities/{entityName}/{entityKey}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Response
تحتوي هذه العملية على استجابتين ممكنتين:
- HTTP 200 (OK): الكيان المحدد موجود.
- HTTP 404 (Not Found): الكيان المحدد لم يتم العثور عليه.
تحتوي الاستجابة الناجحة على حالة مسلسلة من JSON للكيان كمحتواه.
مثال
المثال التالي لطلب HTTP يحصل على حالة كيان Counter
موجود مسمى steps
:
GET /runtime/webhooks/durabletask/entities/Counter/steps
إذا كان كيان Counter
يحتوي على عدد من الخطوات المحفوظة ببساطة في حقل currentValue
، فقد يبدو محتوى الاستجابة كما يلي (منسق لسهولة القراءة):
{
"currentValue": 5
}
قائمة الكيانات
يمكنك الاستعلام عن كيانات متعددة حسب اسم الكيان أو حسب تاريخ العملية الأخير.
Request
تم تنسيق طلب HTTP كما يلي (يتم عرض أسطر متعددة للوضوح):
GET /runtime/webhooks/durabletask/entities/{entityName}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&lastOperationTimeFrom={timestamp}
&lastOperationTimeTo={timestamp}
&fetchState=[true|false]
&top={integer}
تتضمن معلمات الطلب لواجهة برمجة التطبيقات هذه المجموعة الافتراضية المذكورة سابقًا بالإضافة إلى المعلمات الفريدة التالية:
الحقل | نوع المعلمة | الوصف |
---|---|---|
entityName |
URL | اختياري. عند تحديدها، تقوم بتصفية قائمة الكيانات التي تم إرجاعها حسب اسم الكيان (غير متحسس لحالة الأحرف). |
fetchState |
سلسلة الاستعلام | المعلمة الاختيارية. إذا تم تعيينها إلى true ، فلن يتم تضمين حالة الكيان في البيانات الأساسية للاستجابة. |
lastOperationTimeFrom |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديدها، تقوم بتصفية قائمة الكيانات التي تم إرجاعها التي عالجت العمليات بعد الطابع الزمني ISO8601 المحدد. |
lastOperationTimeTo |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديدها، تقوم بتصفية قائمة الكيانات التي تم إرجاعها التي عالجت العمليات قبل الطابع الزمني ISO8601 المحدد. |
top |
سلسلة الاستعلام | المعلمة الاختيارية. عند تحديد، تحد من عدد الكيانات التي تم إرجاعها بواسطة الاستعلام. |
Response
استجابة HTTP 200 الناجحة تحتوي على صفيف تسلسل JSON للكيانات واختياريًا حالة كل كيان.
تقوم العملية افتراضيًا بإرجاع أول 100 كيان تطابق معايير الاستعلام. يمكن للمستدعي تحديد قيمة معلمة سلسلة استعلام لـ top
لإرجاع أقصى عدد مختلف من النتائج. إذا كان هناك المزيد من النتائج خارج ما يتم إرجاعه، يتم إرجاع رمز مميز مستمر أيضًا في عنوان الاستجابة. اسم العنوان هو x-ms-continuation-token
.
إذا قمت بتعيين قيمة رمز مميز مستمر في عنوان الطلب التالي، يمكنك الحصول على الصفحة التالية من النتائج. هذا الاسم من عنوان الطلب هو أيضًا x-ms-continuation-token
.
مثال - عرض كافة الكيانات
يعرض طلب HTTP للمثال التالي كافة الكيانات في مركز المهمة:
GET /runtime/webhooks/durabletask/entities
قد تبدو استجابة JSON كما يلي (منسقة لسهولة القراءة):
[
{
"entityId": { "key": "cats", "name": "counter" },
"lastOperationTime": "2019-12-18T21:45:44.6326361Z",
},
{
"entityId": { "key": "dogs", "name": "counter" },
"lastOperationTime": "2019-12-18T21:46:01.9477382Z"
},
{
"entityId": { "key": "mice", "name": "counter" },
"lastOperationTime": "2019-12-18T21:46:15.4626159Z"
},
{
"entityId": { "key": "radio", "name": "device" },
"lastOperationTime": "2019-12-18T21:46:18.2616154Z"
},
]
مثال - تصفية قائمة الكيانات
يعرض طلب HTTP المثال التالي فقط أول كيانين من نوع counter
ثم يحضر حالتهما أيضًا:
GET /runtime/webhooks/durabletask/entities/counter?top=2&fetchState=true
قد تبدو استجابة JSON كما يلي (منسقة لسهولة القراءة):
[
{
"entityId": { "key": "cats", "name": "counter" },
"lastOperationTime": "2019-12-18T21:45:44.6326361Z",
"state": { "value": 9 }
},
{
"entityId": { "key": "dogs", "name": "counter" },
"lastOperationTime": "2019-12-18T21:46:01.9477382Z",
"state": { "value": 10 }
}
]