تعقب تغييرات بيانات الكيان وتعقب التغيير وWeb API

مكتمل

وبشكل عام، تحتاج المؤسسات إلى مزامنة البيانات عبر أنظمة متعددة. يوفر Microsoft Dataverse ميزة لإدارة هذا السيناريو بكفاءة، وهو ما يسمى بـ تعقب التغيير. مع تمكين تعقب التغييرات، يمكنك إنشاء تطبيقات للاستعلام عن هذه التغييرات.

تمكين تعقب التغييرات لكيان ما

يمكنك تمكين تعقب التغييرات على أحد الكيانات بإعداد علامة تمكين تعقب التغييرات للتدفق على إعدادات الوحدة في مدخل منشئ PowerApps ، والموجود ضمن قسم المزيد من الإعدادات > إنشاء الإعدادات وتحديثها. كما يشير الاسم الخاص به، يمكن استخدام هذه الميزة بشكل متكرر بواسطة Power Automate للسماح لك بتشغيل عمليات الأتمتة استنادًا إلى التغييرات التي يتم اجراؤها على سجل كيان معين.

تمكين تعقب التغييرات للتدفق المحدد.

وفقا لوثائق OData 4.0، تُعد ارتباطات delta هي "الارتباطات غير الشفافة، المنشأة من قبل الخدمة التي يستخدمها العميل لاسترداد التغييرات اللاحقة لناتج ما." قامت Microsoft بإنشاء معيار Dataverse هذا في تعقب التغييرات لتوفير أسلوب عام قياسي للربط مع تغيير البيانات أثناء حدوثها بمرور الوقت. للمزيد من المعلومات حول ارتباطات delta، راجع ارتباطات delta الخاصة بالإصدار 4.0 من OData. بعد إصدار طلب تعقب التغيير، ستحتوي الاستجابة الخاصة بك على ارتباط delta، والذي ستقوم بتمريره إلى الطلب التالي للحصول على التغييرات التي حدثت منذ الطلب الأولي. سيتم الحصول على التطبيق الخاص بك للمحافظة على ارتباط delta، وذلك بشكل مشابه لكيفية تتبع الارتباط مع طوابع التاريخ/الوقت في الماضي.

استرداد التغييرات في الكيانات باستخدام Web API

بعد تمكين تعقب التغييرات على كيان ما، يمكنك استرداد التغييرات التي قام بها من خلال Web API عن طريق إضافة odata.track-changes كعنوان تفضيلي في طلب الويب الخاص بك. يطلب المثال التالي إجراء تغييرات من كيان الحساب لمجموعة محددة من الحقول (الاسم ورقم الحساب ورقم الهاتف1 ورقم الفاكس).

GET [Organization URI]/org1/api/data/v9.1/accounts?$select=name,accountnumber,telephone1,fax HTTP/1.1
Prefer: odata.track-changes
Cache-Control: no-cache
OData-Version: 4.0
Content-Type: application/json

وفي الطلب الأولي، ستتلقى مجموعة كاملة من البيانات التي تنطبق على الاستعلام نظرًا لعدم تطبيق delta. ومع ذلك، ستعرض الاستجابة إحدى قيم @odata.deltaLink. يحتوي هذا الارتباط على معلمة deltatoken، المخصصة لتمريرها إلى طلبك اللاحق عندما تريد معرفة التغييرات التي تم تطبيقها منذ تشغيل هذا الاستعلام. يمكنك التفكير في هذه العملية بنفس طريقة معالجة الترحيل في OData.

المثال التالي هو الاستجابة لطلب الحساب السابق:

{
          "@odata.context":"[Organization URI]/data/v9.0/$metadata#accounts(name,telephone1,fax)/$delta",
          "@odata.deltaLink":"[Organization URI]/api/data/v9.1/accounts?$select=name,telephone1,fax&$deltatoken=919058%2108%2f22%2f2017%2008%3a21%3a20",
"value":
    [
        {
            "@odata.etag":"W/\"915244\"",
            "name":"Monte Orton",
            "telephone1":"555000",
            "fax":"10101",
            "accountid":"60c4e274-0d87-e711-80e5-00155db19e6d"
        },
        {
            "@odata.context":"[Organization URI]/api/data/v9.0/$metadata#accounts/$deletedEntity",
            "id":"2e451703-c686-e711-80e5-00155db19e6d",
            "reason":"deleted"
        }
    ]
}

في هذا السيناريو، يجب مراعاة أن بعض الوقت قد انقضى، وترغب الآن في معرفة ما إذا كان قد تم تطبيق أي تغييرات أخرى. يمكنك استخدام معلمة @odata.deltaLink لتشغيل الاستعلام الخاص (أو لاستخراج deltatoken إذا كنت تقوم بإدارة سلاسل الاتصال بشكل مختلف)، ورؤية التغييرات التي حدثت منذ الطلب الأخير.

يوضح المثال التالي كيفية استرداد التغييرات التي تمت منذ الطلب الأخير بواسطة تشغيل @odata.deltaLink الذي تم إرجاعه:

GET [Organization URI]/api/data/v9.1/accounts?$select=name,accountnumber,telephone1,fax&$deltatoken=919042%2108%2f22%2f2017%2008%3a10%3a44

في هذا السيناريو، تخيل أنه تم إنشاء حساب جديد وتم حذف آخر. ردك سيكون مشابهًا للمثال التالي بعد ذلك:

{
          "@odata.context":"[Organization URI]/data/v9.1/$metadata#accounts(name,telephone1,fax)/$delta",
          "@odata.deltaLink":"[Organization URI]/api/data/v9.1/accounts?$select=name,telephone1,fax&$deltatoken=919058%2108%2f22%2f2017%2008%3a21%3a20",
"value":
    [
        {
            "@odata.etag":"W/\"915244\"",
            "name":"Monte Orton",
            "telephone1":"555000",
            "fax":"10101",
            "accountid":"60c4e274-0d87-e711-80e5-00155db19e6d"
        },
        {
            "@odata.context":"[Organization URI]/api/data/v9.1/$metadata#accounts/$deletedEntity",
            "id":"2e451703-c686-e711-80e5-00155db19e6d",
            "reason":"deleted"
        }
    ]
}

كما هو موضح في المثال، تم إرسال ارتباط delta آخر، ويمكنك استخدامه في المرة التالية التي تحتاج إليها لمعرفة التغييرات التي حدثت.

استرداد عدد التغييرات في delta

يمكنك أيضًا استرداد عدد التغييرات التي تم إجراؤها في وحدة delta معينة عن طريق إضافة المعلمة $count إلى الطلب الخاص بك.

GET [Organization URI]/api/data/v9.1/accounts/$count?$deltatoken=919042%2108%2f22%2f2017%2008%3a10%3a44