Hola, sigo probando el Update 1 (Carina), y hoy voy a mostrar como utilizar el Change tracking.
El change tracking ya esta documentado en la nueva versión de la SDK (aún en preview) aquí: https://msdn.microsoft.com/es-es/library/dn932130.aspx
La idea del Change Tracking, es recoger los cambios producidos en una entidad, con el objetivo de sincronizarlo con otro entorno. Solamente puede ser utilizado por SDK, y hoy os paso un ejemplo de esto.
Para habilitar esta funcionalidad, primero se debe ir a CRM y activar en la entidad el Change Tracking:
La idea de ejecución de SDK, es muy simple, podemos consultar una entidad, y pedirle los cambios. El código es como el siguiente:
RetrieveEntityChangesRequest req = new RetrieveEntityChangesRequest();
req.EntityName = "contact";
req.Columns = new ColumnSet(true);
req.PageInfo = new PagingInfo()
{
ReturnTotalRecordCount = true,
Count = 1000,
PageNumber = 1
};
RetrieveEntityChangesResponse res = (RetrieveEntityChangesResponse)service.Execute(req);
for (int i = 0; i < res.EntityChanges.Changes.Count;i++ )
{
if (res.EntityChanges.Changes[i].Type == ChangeType.NewOrUpdated)
{
NewOrUpdatedItem accion = (NewOrUpdatedItem)res.EntityChanges.Changes[i];
Entity record = accion.NewOrUpdatedEntity;
}
}
Ahí como se ve, podemos pedir los datos paginados, y luego leer los resultados que finalmente son entidades. Además puedo pedir una serie de columnas, o todas.
Este ejemplo, me devolverá todo lo que ha cambiado, pero os estaréis preguntando… ¿como filtro por fechas? para eso hay un parámetro adicional en el “Request” con el nombre “DataVersion”. El Data versión, lo podemos recoger por ejemplo de una primera ejecución del código y recogiendo el “DataToken” de la respuesta (me devuelve 17 cambios):
Vuelvo a ejecutar el mismo código, pero esta ver añadiendo como DataVersion el valor “647621!04/17/2015 23:21:06”:
Como se puede ver, ahora no devuelve ningún cambio, y me devuelve un nuevo DataToken. Si voy al CRM, y hago cualquier cambio en los contactos, básicamente me creo un contacto:
Vuelvo a ejecutar el mismo código y tengo el nuevo cambio:
El campo DataVersion esta relacionado con el timestamp del registro y nos permite hacer sincronizaciones con otros entornos, guardando el último y así facilitar las mismas.
Espero les haya gustado.
un saludo
@demian_rasko
No hay comentarios:
Publicar un comentario