إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يمكن استخدام واجهة API في Power Platform لاستخراج تفاصيل متعددة وبيانات التعريف من بيئات Microsoft Power Platform مع قاعدة بيانات Microsoft Dataverse أو من دونها. يتم استخدام واجهة API داخليًا بواسطة العديد من العملاء المتاحين اليوم مثل PowerShell.
في هذا البرنامج التعليمي، ستتعلم كيفية:
- قم بإنشاء Power Automate أو عملية سير عمل Logic Apps (Azure) أو البرنامج النصي لـ PowerShell الذي يوثق واجهة API Power Platform.
- اتصل بنقطة نهاية قائمة بيئات لاسترداد تفاصيل بيئة Microsoft Power Platform.
- كرر خلال كائن السعة لاسترداد الاستهلاك الفعلي.
- احفظ بيانات استهلاك البيانات في جدول لعرضها.
كمثال على هذا السيناريو، يتطلع العميل إلى التعامل مع استهلاك السعة الخاصة به حتى يتمكن من فهم تخصيص سعة المستأجر الإجمالية حسب القسم بشكل أفضل. يساعد هذا العميل على أداء بعض وظائف محاسبة التكاليف الداخلية وعمليات رد المبالغ المدفوعة بناء على مقدار استهلاك كل قسم من إجمالي السعة المتاحة. يستخدم هذا العميل وصف البيئة لاستدعاء القسم الذي يمتلك كل بيئة.
التوصيل والإعداد المتغير
استخدم التفاصيل التالية حول الاتصال Power Platform برمجيا. يمكنك الاختيار بين تجربة Azure أو PowerShell النصية.
إنشاء سير العمل وإعداد المتغيرات
للبدء ، في هذا البرنامج التعليمي نستخدم سير عمل Logic Apps. سير عمل Power Automate مقبول أيضًا، وأي محرك تنسيق آخر تفضل شركتك استخدامه للأتمتة. تستخدم جميع الاستدعاءات لاسترداد البيانات واجهات برمجة تطبيقات RESTful بحيث تعمل أي أدوات تدعم REST مع هذا البرنامج التعليمي.
قم بزيارة مدخل Azure، ثم قم بإنشاء تطبيق منطق جديد وقم بتسميته:
بعد الانتهاء من التوفير، قم بتحرير سير العمل باستخدام المصمم وقم بإعداد مشغل التكرار للتشغيل يوميًا:
بعد ذلك ، نحتاج إلى تهيئة خمسة متغيرات:
- SPN-Id - هذا هو معرف العميل الأساسي للخدمة. يتم استخدامه لاحقا لإجراء المصادقة في سياق الخدمة الأساسي. إذا كنت تستخدم سياق اسم المستخدم/كلمة المرور، فيمكنك تخطي هذا المتغير.
- DBCapacity - هذا متغير عائم لسعة قاعدة البيانات المستهلكة بالميغابايت.
- FileCapacity - هذا متغير عائم لسعة الملف المستهلكة بالميغابايت.
- LogCapacity - هذا متغير عائم لسعة السجل المستهلكة بالميغابايت.
- SimplifiedEnvironmentArray-Init - هذا متغير صفيف نقوم بملئه ببعض خصائص البيئة. هذا يبسط بشكل كبير إخراج تقرير جدول HTML النهائي.
بعد ذلك ، نقوم بالمصادقة باستخدام Microsoft Entra رمز مميز واسترداده للاتصال بواجهة Power Platform برمجة التطبيقات. إذا لم تكن قد أكملت إعداد Microsoft Entra، فراجع المصادقة - قديمة.
في هذا البرنامج التعليمي، نستخدم مخزنًا رئيسيًا لتخزين القيمة السرية لكيان الخدمة. بهذه الطريقة، يمكن لمسؤول تكنولوجيا المعلومات إتاحة هذه القيمة بأمان لسير عملك. ثم يتم ملء هذا في استدعاء POST لاسترداد Microsoft Entra الرمز المميز.
وبعد ذلك نقوم بعمل تحليل للاستجابة الرمزية لـ Microsoft Entra في كائن مصنف باستخدام مخطط JSON هذا في إجراء "تحليل JSON":
{
"properties": {
"access_token": {
"type": "string"
},
"expires_in": {
"type": "integer"
},
"ext_expires_in": {
"type": "integer"
},
"token_type": {
"type": "string"
}
},
"type": "object"
}
إحضار البيئات
في هذا القسم، نجلب قائمة البيئة التي تديرها. يمكن القيام بذلك عبر واجهة API وPowerShell.
استدعاء نقطة نهاية بيئات القائمة
حان الوقت لاستدعاء Power Platform API. استخدم نقطة النهاية بيئات القائمة لاسترداد جميع بيئاتنا وبيانات التعريف الخاصة بها، وتحديدا باستخدام المعلمة $expand للسعة. يستخدم هذا أيضًا رأس التفويض مع رمز الحامل الذي تلقيناه في القسم السابق من معرف Microsoft Entra. إذا استخدمت سياق اسم المستخدم / كلمة المرور، فيمكنك أيضًا إدخال رمز Bearer في هذه الخطوة أيضًا.
ثم نقوم بتحليل Power Platform رد واجهة برمجة التطبيقات إلى كائن مكتوب باستخدام مخطط JSON هذا مع إجراء "تحليل JSON":
{
"properties": {
"value": {
"items": {
"properties": {
"description": {
"type": "string"
},
"id": {
"type": "string"
},
"location": {
"type": "string"
},
"name": {
"type": "string"
},
"properties": {
"properties": {
"addons": {
"type": "array"
},
"azureRegion": {
"type": "string"
},
"capacity": {
"items": {
"properties": {
"actualConsumption": {
"type": "number"
},
"capacityType": {
"type": "string"
},
"capacityUnit": {
"type": "string"
},
"ratedConsumption": {
"type": "number"
},
"updatedOn": {
"type": "string"
}
},
"required": [
"capacityType",
"actualConsumption",
"ratedConsumption",
"capacityUnit",
"updatedOn"
],
"type": "object"
},
"type": "array"
},
"clientUris": {
"properties": {
"admin": {
"type": "string"
},
"maker": {
"type": "string"
}
},
"type": "object"
},
"cluster": {
"properties": {
"category": {
"type": "string"
},
"number": {
"type": "string"
}
},
"type": "object"
},
"connectedGroups": {
"type": "array"
},
"createdBy": {
"properties": {
"displayName": {
"type": "string"
},
"id": {
"type": "string"
},
"type": {
"type": "string"
}
},
"type": "object"
},
"createdTime": {
"type": "string"
},
"creationType": {
"type": "string"
},
"databaseType": {
"type": "string"
},
"displayName": {
"type": "string"
},
"environmentSku": {
"type": "string"
},
"isDefault": {
"type": "boolean"
},
"linkedEnvironmentMetadata": {
"properties": {
"backgroundOperationsState": {
"type": "string"
},
"baseLanguage": {
"type": "number"
},
"createdTime": {
"type": "string"
},
"domainName": {
"type": "string"
},
"friendlyName": {
"type": "string"
},
"instanceApiUrl": {
"type": "string"
},
"instanceState": {
"type": "string"
},
"instanceUrl": {
"type": "string"
},
"platformSku": {
"type": "string"
},
"resourceId": {
"type": "string"
},
"scaleGroup": {
"type": "string"
},
"uniqueName": {
"type": "string"
},
"version": {
"type": "string"
}
},
"type": "object"
},
"protectionStatus": {
"properties": {
"keyManagedBy": {
"type": "string"
}
},
"type": "object"
},
"provisioningState": {
"type": "string"
},
"retentionDetails": {
"properties": {
"backupsAvailableFromDateTime": {
"type": "string"
},
"retentionPeriod": {
"type": "string"
}
},
"type": "object"
},
"retentionPeriod": {
"type": "string"
},
"runtimeEndpoints": {
"properties": {
"microsoft.ApiManagement": {
"type": "string"
},
"microsoft.BusinessAppPlatform": {
"type": "string"
},
"microsoft.CommonDataModel": {
"type": "string"
},
"microsoft.Flow": {
"type": "string"
},
"microsoft.PowerApps": {
"type": "string"
},
"microsoft.PowerAppsAdvisor": {
"type": "string"
}
},
"type": "object"
},
"states": {
"properties": {
"management": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
},
"runtime": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"updateCadence": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"id",
"type",
"location",
"name",
"properties"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
كرر خلال كائن القدرة
هذا هو الجزء الأكثر تعقيدًا من البرنامج التعليمي. هنا نستخدم حلقة داخل حلقة لتكرار كل بيئة في رد بيئة القائمة ، ولكل بيئة مجموعة من تفاصيل السعة التي نكررها أيضا. يتيح لنا ذلك الحصول على المعلومات الضرورية لكل صف بيئة في جدول تقرير السعة الخاص بنا.
لكل وتحليل
لنأخذ هذا خطوة بخطوة. أولا ، نستخدم عنصر تحكم لكل عنصر تحكم باستخدام "قيمة" إخراج Parse-List-Response:
ثم نقوم بتحليل هذه البيئة الفردية في كائن مكتوب باستخدام مخطط JSON هذا:
{
"properties": {
"description": {
"type": "string"
},
"id": {
"type": "string"
},
"location": {
"type": "string"
},
"name": {
"type": "string"
},
"properties": {
"properties": {
"addons": {
"type": "array"
},
"azureRegion": {
"type": "string"
},
"capacity": {
"items": {
"properties": {
"actualConsumption": {
"type": "number"
},
"capacityType": {
"type": "string"
},
"capacityUnit": {
"type": "string"
},
"ratedConsumption": {
"type": "number"
},
"updatedOn": {
"type": "string"
}
},
"required": [
"capacityType",
"actualConsumption",
"ratedConsumption",
"capacityUnit",
"updatedOn"
],
"type": "object"
},
"type": "array"
},
"clientUris": {
"properties": {
"admin": {
"type": "string"
},
"maker": {
"type": "string"
}
},
"type": "object"
},
"cluster": {
"properties": {
"number": {
"type": "string"
}
},
"type": "object"
},
"connectedGroups": {
"type": "array"
},
"createdBy": {
"properties": {
"displayName": {
"type": "string"
},
"id": {
"type": "string"
},
"type": {
"type": "string"
}
},
"type": "object"
},
"createdTime": {
"type": "string"
},
"creationType": {
"type": "string"
},
"databaseType": {
"type": "string"
},
"displayName": {
"type": "string"
},
"environmentSku": {
"type": "string"
},
"isDefault": {
"type": "boolean"
},
"linkedEnvironmentMetadata": {
"properties": {
"backgroundOperationsState": {
"type": "string"
},
"baseLanguage": {
"type": "integer"
},
"createdTime": {
"type": "string"
},
"domainName": {
"type": "string"
},
"friendlyName": {
"type": "string"
},
"instanceApiUrl": {
"type": "string"
},
"instanceState": {
"type": "string"
},
"instanceUrl": {
"type": "string"
},
"resourceId": {
"type": "string"
},
"scaleGroup": {
"type": "string"
},
"uniqueName": {
"type": "string"
},
"version": {
"type": "string"
}
},
"type": "object"
},
"protectionStatus": {
"properties": {
"keyManagedBy": {
"type": "string"
}
},
"type": "object"
},
"provisioningState": {
"type": "string"
},
"retentionDetails": {
"properties": {
"backupsAvailableFromDateTime": {
"type": "string"
},
"retentionPeriod": {
"type": "string"
}
},
"type": "object"
},
"retentionPeriod": {
"type": "string"
},
"runtimeEndpoints": {
"properties": {
"microsoft.ApiManagement": {
"type": "string"
},
"microsoft.BusinessAppPlatform": {
"type": "string"
},
"microsoft.CommonDataModel": {
"type": "string"
},
"microsoft.Flow": {
"type": "string"
},
"microsoft.PowerApps": {
"type": "string"
},
"microsoft.PowerAppsAdvisor": {
"type": "string"
}
},
"type": "object"
},
"states": {
"properties": {
"management": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
},
"runtime": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"updateCadence": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"type": {
"type": "string"
}
},
"type": "object"
}
بعد ذلك ، نستخدم عنصر تحكم آخر لكل عنصر تحكم باستخدام "سعة" إخراج Parse-CurrentItem. ثم نقوم بتحليل هذا في كائن مكتوب باستخدام مخطط JSON هذا:
الآن يمكننا استخدام مفتاح التحكم في خاصية CapacityType من إخراج Parse-Capacity. هذه إما قيمة "قاعدة البيانات" أو "الملف" أو "السجل". تحت كل حالة تبديل، التقط خاصية "actualConsumption" ذات الصلة في المتغير ذي الصلة. في الحالة التالية، ترى أننا نلتقط سعة قاعدة البيانات:
كخطوة أخيرة في حلقة "لكل بيئة"، يمكننا الآن التقاط تفاصيل البيئة لهذا الصف في التقرير. باستخدام عنصر التحكم إلحاق بمتغير مصفوفة، استخدم مخطط JSON التالي:
{
"properties": {
"actualConsumption": {
"type": "number"
},
"capacityType": {
"type": "string"
},
"capacityUnit": {
"type": "string"
},
"ratedConsumption": {
"type": "number"
},
"updatedOn": {
"type": "string"
}
},
"type": "object"
}
إنشاء جدول تقارير
تهانينا، لقد وصلت الآن إلى الجزء السهل! والآن، وقد تم تعبئة مصفوفة القدرة الإنتاجية للبيئة المبسطة والمكتملة، فإنه يمكننا عرضها بتنسيق جدولي.
استخدام موصل جدول HTML
عند تشغيل تطبيق المنطق، يمكننا الآن رؤية ناتج تقرير جدول HTML:
يمكن إرسال التقرير اختياريًا عبر البريد الإلكتروني إلى أصحاب المصلحة في هذا المثال لأغراض محاسبة التكاليف، أو يمكن حفظ البيانات في قاعدة بيانات لمزيد من التحليل والتوجه التاريخي.