فتح إمكانات Dynamics 365 المتقدمة باستخدام الموصلات المخصصة الجاهزة للإنتاج
By Mirko Peters ·
مرحبًا بك في دليلنا المعمّق حول الارتقاء بتكاملات Power Platform وDynamics 365 إلى المستوى التالي. إذا سبق أن واجهتَ عائقًا كبيرًا عند جلب جداول مخصصة محددة، أو تنفيذ حقول محسوبة معقدة، أو تنفيذ استعلامات OData دقيقة باستخدام المكونات الجاهزة، فلست وحدك. الأدوات القياسية ممتازة لتطوير التطبيقات بسرعة، لكن بنى المؤسسات غالبًا ما تتطلب تحكمًا دقيقًا، ومعالجة قوية للأخطاء، وضوابط أمان محكمة. في هذه ا
Automatically translated with AI from the original post. Read the English original
مرحبًا بك في دليلنا المعمّق حول الارتقاء بتكاملات Power Platform وDynamics 365 إلى المستوى التالي. إذا سبق أن واجهتَ عائقًا كبيرًا عند جلب جداول مخصصة محددة، أو تنفيذ حقول محسوبة معقدة، أو تنفيذ استعلامات OData دقيقة باستخدام المكونات الجاهزة، فلست وحدك. الأدوات القياسية ممتازة لتطوير التطبيقات بسرعة، لكن بنى المؤسسات غالبًا ما تتطلب تحكمًا دقيقًا، ومعالجة قوية للأخطاء، وضوابط أمان محكمة. في هذه المقالة الشاملة، سنستعرض كيف تسدّ الموصلات المخصصة الفجوة بين Power Platform وواجهة برمجة تطبيقات Dataverse Web API، لتمنحك تحكمًا كاملًا في مشهد بياناتك.
يُكمل هذا الدليل المكتوب المفاهيم التي تناولناها في حلقتنا الصوتية بشكل مباشر. إذا أردت الاستماع إلى الشرح الصوتي، والاطلاع على كل التفاصيل، والاستماع إلى قصص تطبيقية من الواقع، فتأكد من متابعة الحلقة ذات الصلة: Expose Dynamics 365 APIs with Power Platform Custom Connectors.
الشعار التعريفي
عندما يتوقف الموصل القياسي، لا يضطر أتمتتك إلى التوقف معه.
ما ستتعلمه
- كيفية تحديد الإمكانات المفقودة في موصل Dynamics 365 القياسي
- سير عمل عملي لاكتشاف نقاط نهاية Dynamics/Dataverse Web API التي تحتاجها بالضبط
- إنشاء موصل مخصص آمن (OAuth2 عبر Azure AD، والنطاقات، ومبادئ الخدمة)
- أنماط الإنتاج: التصفية، والترقيم بالصفحات، والتحكم في المعدل، وإعادة المحاولة، وتطور المخطط
- الحوكمة: DLP، وRBAC، والملكية، والإصدارات، والمراقبة، والتدقيق
المشكلة في جملة واحدة
لا تعرض الموصلات القياسية دائمًا جداولك المخصصة، أو حقولك المحسوبة، أو عوامل التصفية المرنة، بينما تمنحك الموصلات المخصصة تحكمًا كاملًا في API مع ضوابط حوكمة للمؤسسات.
المخطط المرجعي (من البداية إلى النهاية)
1) الاكتشاف
- تحديد الاحتياجات المفقودة (الجداول المخصصة، والأعمدة، وعوامل التصفية المتقدمة، والإجراءات).
- استخدم بيانات Dataverse Web API الوصفية، أو Solution Explorer، أو API Inspector/Postman للتحقق من نقاط النهاية والأسماء المنطقية.
- تحقق من استعلامات OData، أي $filter و$select و$expand، باستخدام حمولات بيانات نموذجية.
2) التأمين
- أنشئ تسجيل تطبيق Azure AD (مستأجر واحد، OAuth2).
- امنح أدوار تطبيق Graph/Dataverse الأدنى الضرورية، وحدّد المفوَّض من المستخدم مقابل مبدأ الخدمة.
- اضبط عنوان إعادة التوجيه للموصل المخصص، وخطط لتدوير الأسرار بانتظام.
3) البناء
- في Power Platform، أنشئ موصلًا مخصصًا (باستخدام OpenAPI أو من الصفر).
- حدّد المضيف، ومسار الأساس، والمصادقة، والإجراءات (GET/POST/PATCH)، بما في ذلك مخططات الاستعلام والنص.
- أضف السياسات: إعادة المحاولة مع التراجع الأسي، والترقيم بالصفحات، وتعيين الترويسات الافتراضية، والمهلات الزمنية.
4) الحوكمة
- عيّن المالك، وحدّد البيئات (التطوير/الاختبار/الإنتاج)، وصنّف وفق نهج DLP.
- قيّد الاستخدام عبر RBAC/مجموعات الأمان، ووثّق النطاقات ومجالات البيانات.
- ضع إدارة الإصدارات (v1 وv2 …)، وسجلًا للتغييرات، والجداول الزمنية للإيقاف.
5) التشغيل
- راقب عمليات تشغيل التدفقات وقياسات الموصل، ونبّه عند ارتفاع أخطاء 4xx/5xx أو طول أوقات التشغيل.
- أضف قواطع الدائرة، وإعادة تشغيل الطلبات المحجوزة عند تقييد 429، وتتبّع الاستهلاك.
- أجرِ مراجعة ربع سنوية للأذونات والأسرار وتغييرات API.
دليل سريع لاكتشاف API
- البحث عن الأسماء المنطقية: في الحل الخاص بك، تحقق من الأسماء المنطقية للجداول والأعمدة (مثال:
new_pricetierlevelid). - اختبار الاستعلامات باستخدام Postman:
GET .../api/data/v9.2/new_warrantyclaims?$select=...&$filter=modifiedon ge {timestamp}- استخدم
$expandللبحث المرتبط؛ و$countمع الترقيم بالصفحات (@odata.nextLink).
- الحقول المحسوبة/حقول التجميع: تحقق من أنها مُخزَّنة فعليًا وقابلة للتصفية؛ وإلا فاحسبها على الخادم (FetchXML) أو في المرحلة اللاحقة.
- الإجراءات/الدوال: استدعِ الإجراءات المرتبطة وغير المرتبطة (مثل
CalculatePrice) عندما لا تكفي عمليات CRUD.
ضوابط الأمان والخصوصية
- OAuth2 (Azure AD)، دون مفاتيح API.
- أقل الامتيازات: قصر أدوار التطبيق على جداول وعمليات محددة؛ وفضّل مبادئ الخدمة للمهام الخلفية.
- إسناد المستخدم: استخدم الأذونات المفوّضة عندما تتطلب الأعمال مسار تدقيق يمكن ربطه بإنسان محدد.
- DLP: صنّف الموصل على أنه Business، واحظر التدفقات العابرة للحدود نحو الخدمات الشخصية.
- تقليل البيانات: استخدم
$selectلجلب الأعمدة اللازمة فقط؛ أخفِ معلومات التعريف الشخصية في المراحل اللاحقة؛ وطبّق RLS على مستوى البيئة حيثما كان ذلك مناسبًا.
أنماط إنتاجية جاهزة للنسخ
التراجع الأسي عند الأخطاء 429 و5xx
- ابدأ بتأخير أولي من 2 إلى 5 ثوانٍ، وضاعفه حتى حد أقصى (مثلًا 60 ثانية)؛ واجعل عدد المحاولات القصوى بين 5 و7؛ وسجّل معرّفات الارتباط (Correlation IDs).
الترقيم على صفحات (Pagination)
- التزم بالقيمة
@odata.nextLink؛ وادمج الصفحات على الخادم كلما أمكن ذلك؛ واضبط حجم الصفحة (مثلًا$top=5000) ضمن الحدود المسموح بها.
التحميلات التزايدية (Delta loads)
- صفِّ السجلات باستخدام
modifiedon ge {lastRunUtc}؛ واحفظ آخر علامة مرجعية ناجحة (Watermark)؛ وعالج فروق الساعة بين الأنظمة.
عدم التكرار (Idempotency)
- استخدم عمليات الإدراج أو التحديث (
PATCHمعIf-Matchأو مفتاح بديل) لتجنب التكرار؛ واحفظ معرّفات المصدر.
تطور المخطط (Schema evolution)
- اكتشف الحقول المفقودة أو الزائدة؛ وتعامل مع الحقول غير المعروفة بفشل ناعم؛ واحتفظ بالموصلين v1/v2 أثناء فترة الترحيل.
حالات استخدام توضيحية (وكيف يعالجها الموصل المخصص)
- مزامنة جدول مخصص (WarrantyClaims)
- الإجراء:
GET /new_warrantyclaims?$select=claimid,status,amount&$filter=modifiedon ge {ts} - التدفق: التكرار → الحصول على المطالبات → For Each → الإدراج أو التحديث في Dataverse/ERP.
- مرشح متقدم لـ "حسابات VIP"
- الإجراء:
GET /accounts?$filter=new_vipstatus eq true and statuscode eq 1 - التدفق: التشغيل وفق جدول زمني ← التصرف فقط مع الحسابات المميزة والنشطة ← إشعار مديري نجاح العملاء (CSMs).
- استدعاء إجراء على الخادم (إعادة الاحتساب)
- الإجراء:
POST /CalculateRevenue(غير مرتبط) مع معاملات (نطاق التاريخ، الشريحة). - التدفق: عند الطلب أو عبر Runbook ← استدعاء الإجراء ← تخزين النتيجة في جدول التقارير.
المراقبة والموثوقية
- لوحة المعلومات: معدل النجاح، ومتوسط زمن الاستجابة، وعدد المحاولات المعادة، وأكثر رموز الخطأ تكرارًا، والإنتاجية لكل إجراء.
- التنبيهات: استمرار أخطاء 429، وإخفاقات المصادقة، وتجاوز زمن الاستجابة للنسبة المئوية 95 (P95)، وعدم تطابق المخطط.
- السجلات: أدرج معرّفات الطلبات، ومفاتيح التقسيم، والعلامات المرجعية في القياس عن بُعد لتمكين إعادة التشغيل.
- المرونة: جهّز مسارات احتياطية عند امتلاء الطابور (مثل جدول Dataverse أو Azure Queue) عند تكرار الفشل.
الحوكمة ودورة الحياة
- المالك المسجّل (للتطبيق والموصل)، مع توثيق الغرض، ونطاقات البيانات، والمستهلكين.
- سير عمل الترقية: لا ينتقل إلى بيئة الإنتاج (PRD) إلا الأصول المعتمدة رسميًا؛ وتُدار الأسرار الخاصة بكل بيئة عبر مراجع الاتصال (connection references).
- وتيرة المراجعة: مراجعة الوصول ربع سنويًا، وتدوير الأسرار، والتحقق من إيقاف واجهات برمجة التطبيقات.
- الإيقاف: وسمه بأنه مهمل، وامنع الاتصالات الجديدة، وأوقفه نهائيًا بعد اكتمال الترحيل.
خطة البدء السريع في 10 خطوات (خطة أسبوعية)
- حدّد الفجوات في الموصل القياسي (الجداول، والحقول، والمرشحات، والإجراءات).
- أكّد نقاط نهاية Web API والاستعلامات في Postman.
- سجّل تطبيق Azure AD؛ وحدّد هل ستعتمد الأذونات المفوّضة أم التطبيق فقط.
- ابنِ الموصل المخصص في بيئة التطوير (Dev)؛ وعرّف الإجراءات والمخططات.
- أضف السياسات: إعادة المحاولة، والترقيم على صفحات، والترويسات، ومهلات الانتظار.
- أنشئ مراجع اتصال لكل بيئة.
- انشر تدفقًا تجريبيًا؛ وتحقق من حجم البيانات، والمرشحات، وعدم التكرار.
- أضف المراقبة والتنبيهات؛ ووثّق أدلة التشغيل (Runbooks).
- انقل إلى بيئتي الاختبار والإنتاج؛ وأحكم الضبط عبر DLP وRBAC.
- انشر وثائق الإصدار 1؛ وخطّط للإصدار 2 (الحدود المعروفة وخارطة الطريق).
المزالق الشائعة (وطرق معالجتها)
- تقييد الطلبات (429) ← طبّق التراجع وتجميع الطلبات؛ ووزّع الجداول الزمنية.
- أذونات واسعة أكثر من اللازم ← استخدم أدوار تطبيق بأقل قدر من الصلاحيات؛ وقسّم الموصلات حسب النطاق.
- أسرار مدمجة في الكود ← استخدم مبادئ الخدمة (Service principals) مع أسرار مُدارة؛ ودوّرها ربع سنويًا.
- انتشار الموصلات ← كتالوج مركزي، ومالكون محددون، وسياسة إصدارات.
- كسر المخططات ← اختبارات العقود في بيئة التطوير؛ وشغّل الإصدارين v1/v2 بالتوازي أثناء تغييرات واجهة البرمجة.
الأسئلة المتداولة
س: هل يمكنني الوصول إلى الجداول المخصصة أو جداول ISV؟
ج: نعم، استخدم أسماءها المنطقية عبر Web API؛ وأضف إجراءات إلى الموصل مع مخططات مناسبة.
س: مفوّضة أم للتطبيق فقط؟
ج: للتطبيق فقط في المهام الخلفية والمجدولة؛ والمفوّضة عندما تحتاج إلى تدقيق أو تحكم على مستوى المستخدم.
س: كيف أبقى متوافقًا مع DLP؟
ج: صنّفه على أنه Business، واحظر الموصلات العابرة للحدود، وقيّد الاستخدام حسب مجموعة الأمان، وسجّل عمليات التصدير.
س: ماذا عن الأداء على نطاق واسع؟
ج: اجمع القراءات في دفعات، واستخدم delta queries، وطبّق التراجع عند الأخطاء 429، وشغّل المعالجة المتوازية بحذر؛ وراقب واضبط $top والمرشحات.
الخاتمة
يتيح إتقان الموصلات المخصصة في Power Platform للمطورين والمهندسين المعماريين تجاوز قيود الحلول العامة والوصول مباشرةً إلى قوة واجهة برمجة تطبيقات الويب في Dynamics 365. ومن خلال اتباع مخططات منظمة للاكتشاف والأمان والحوكمة والمرونة التشغيلية، يمكنك بناء مسارات أتمتة تتوسع بسلاسة دون المساس بمعايير الأمان المؤسسي. تذكّر أن الانتقال من الكتل الجاهزة إلى واجهات برمجة التطبيقات المخصصة يتطلب تخطيطاً دقيقاً فيما يخص المصادقة وتقييد معدل الطلبات وإدارة دورة الحياة، غير أن المكافأة هي التحكم الكامل في بيانات عملك.
للتعمق أكثر في سيناريوهات الواقع العملي، والاستماع إلى نقاشات الخبراء، والاطلاع على نصائح عملية تجعل تنفيذ Power Platform التالي لديك ناجحاً بامتياز، لا تفوّت الاستماع إلى البودكاست المرتبط بهذا الموضوع عبر الرابط Expose Dynamics 365 APIs with Power Platform Custom Connectors.