Supervisar los cambios en los datos de la entidad mediante el seguimiento de cambios y la API web

Completado

Comúnmente, las organizaciones necesitan sincronizar datos en múltiples sistemas. Microsoft Dataverse proporciona una función denominada seguimiento de cambios que administra de manera eficiente este escenario. Con el seguimiento de cambios habilitado, puede crear aplicaciones para consultar estos cambios.

Habilitar seguimiento de cambios para una tabla

Puede habilitar el seguimiento de cambios en una tabla estableciendo la marca Realizar un seguimiento de los cambios en la configuración de la tabla en Power Apps Maker Portal, que se encuentra bajo la sección Configuraciones avanzadas > Para esta tabla.

De acuerdo con la documentación de OData 4.0, los vínculos delta son "vínculos opacos generados por servicios que el cliente usa para recuperar cambios posteriores en un resultado". Microsoft ha incorporado este estándar en el seguimiento de cambios de Dataverse para proporcionar un método común y estándar para interactuar con los datos de cambios a medida que ocurren con el paso del tiempo. Para obtener más información sobre los vínculos delta, consulte OData Versión 4.0: vínculos delta.

Después de emitir una solicitud de seguimiento de cambios, la respuesta incluirá un vínculo delta, que luego pasará a la próxima solicitud para obtener los cambios que se hayan producido desde la solicitud inicial. Dependerá de su aplicación mantener el vínculo delta, de manera similar al modo en que habría hecho un seguimiento con marcas de fecha/hora en el pasado.

Recuperar cambios en tablas mediante la API web

Después de habilitar el seguimiento de cambios en una tabla, puede recuperar los cambios a través de la API web agregando odata.track-changes como encabezado de preferencia en la solicitud web. En el siguiente ejemplo se solicitan los cambios de la tabla de cuenta para un conjunto específico de campos (name, account number, telephone1 y fax).

GET [Organization URI]/org1/api/data/v9.2/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

En la solicitud inicial, recibirá el conjunto completo de datos que se aplica a la consulta porque no se ha aplicado un delta. Sin embargo, la respuesta muestra un valor @odata.deltaLink. Este vínculo contiene un parámetro deltatoken, que debe pasarse a la solicitud posterior cuando desee ver qué cambios se han aplicado desde que se ejecutó esta consulta. Piense en este proceso como algo similar a cómo gestionaría la paginación en OData.

El siguiente ejemplo es una respuesta a la solicitud de cuenta anterior:

{
          "@odata.context":"[Organization URI]/data/v9.2/$metadata#accounts(name,telephone1,fax)/$delta",
          "@odata.deltaLink":"[Organization URI]/api/data/v9.2/accounts?$select=name,telephone1,fax&$deltatoken=919042%2108%2f22%2f2017%2008%3a10%3a44",
"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.2/$metadata#accounts/$deletedEntity",
            "id":"2e451703-c686-e711-80e5-00155db19e6d",
            "reason":"deleted"
        }
    ]
}

En este escenario, considere que ha pasado algún tiempo y ahora desea ver si se han aplicado otros cambios. Puede usar el parámetro @odata.deltaLink para ejecutar la consulta (o extraer el deltatoken si está administrando cadenas de conexión de manera diferente) y ver qué cambios han ocurrido desde la última solicitud.

En el siguiente ejemplo se muestra cómo recuperaría los cambios desde esa última solicitud ejecutando @odata.deltaLink:

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

En este escenario, imagine que se creó una nueva cuenta y se eliminó otra. Su respuesta sería similar a la del siguiente ejemplo:

{
          "@odata.context":"[Organization URI]/data/v9.2/$metadata#accounts(name,telephone1,fax)/$delta",
          "@odata.deltaLink":"[Organization URI]/api/data/v9.2/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"
        }
    ]
}

Como se muestra en el ejemplo, se proporcionó otro vínculo delta, que se puede usar la próxima vez que se necesite ver qué cambios han ocurrido.

Recuperar el número de cambios en un delta

También puede recuperar el número de cambios realizados en un delta dado agregando el parámetro $count a la solicitud.

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