Clase SPChangeToken

Representa la ubicación secuencial única de un cambio dentro del registro de cambios.

Jerarquía de la herencia

System.Object
  Microsoft.SharePoint.SPChangeToken

Espacio de nombres:  Microsoft.SharePoint
Ensamblado:  Microsoft.SharePoint (en Microsoft.SharePoint.dll)

Sintaxis

'Declaración
<SerializableAttribute> _
Public NotInheritable Class SPChangeToken
'Uso
Dim instance As SPChangeToken
[SerializableAttribute]
public sealed class SPChangeToken

Comentarios

Cada entrada en el registro de cambios está representado por un objeto SPChange . Cuando se registra un cambio, se marca con un token de identificación, que está representado por un objeto SPChangeToken de la propiedad ChangeToken del objeto SPChange .

Puede obtener el token de cambio que se usará para marcar la siguiente revisión que se registra para la lista, el sitio, la colección de sitios o la base de datos que está programando contra mediante el acceso a la propiedad CurrentChangeToken de la clase SPList, SPWeb, SPSiteo SPContentDatabase .

Más a menudo, que desea usar un token de cambio para limitar el ámbito de una consulta en el registro de cambios. Por ejemplo, puede recuperar los cambios desde un punto determinado en el registro de cambios pasando un objeto SPChangeToken como un argumento al método GetChanges de la SPList, SPWeb, SPSiteo SPContentDatabase clase. El token de cambio que se pasa representa la ubicación secuencial en el registro de donde desea que la consulta para empezar.

También puede llamar al método GetChanges con dos tokens de cambio como argumentos, que indica el que punto inicial y final de la consulta. De forma similar, puede especificar los puntos inicial y final mediante una llamada a otra sobrecarga del GetChanges, este una aceptación de una instancia de la clase SPChangeQuery . Esta clase tiene propiedades que se pueden usar para depurar una consulta, incluidas las propiedades de dos que contienen objetos de SPChangeToken , la propiedad ChangeTokenStart y la propiedad ChangeTokenEnd .

Todas las sobrecargas del método GetChanges devuelven un objeto de SPChangeCollection . El número de cambios que se devuelven en una sola colección está limitado por motivos de rendimiento, por lo que debe llamar GetChanges en un bucle hasta que obtenga una colección vacía, lo que significa que han alcanzado el final del registro o que no hay ningún cambio que cumplen la consulta. Al hacerlo, use el token devuelto por la propiedad LastChangeToken del primer lote para obtener el segundo lote, y así sucesivamente hasta que obtenga un lote con cero cambios. El enfoque general se ilustra en el código siguiente, que recupera todos los cambios registrados para una colección de sitios.

// Get the first batch of changes.
SPChangeToken token = null;
SPChangeCollection changes = siteCollection.GetChanges(token);

while (changes.Count > 0)
{
   foreach (SPChange change in changes)
   {
      // Process each change.
   }

   // Go get another batch.
   token = changes.LastChangeToken;
   changes = siteCollection.GetChanges(token);
}
' Get the first batch of changes.
Dim token As SPChangeToken = Nothing
Dim changes As SPChangeCollection = siteCollection.GetChanges(token)

While changes.Count > 0
   Dim change As SPChange
   For Each change in changes
      ' Process the change.
   Next change

   ' Go get another batch.
   token = changes.LastChangeToken
   changes = siteCollection.GetChanges(token)
End While

Ejemplos

En el siguiente ejemplo es una aplicación de consola que usa la clase SPChangeToken para devolver los cambios que se han producido en un sitio Web durante los últimos 60 días.

Nota

De forma predeterminada, el registro de cambios conserva los datos durante 60 días. Puede configurar el período de retención estableciendo la propiedad ChangeLogRetentionPeriod .

using System;
using Microsoft.SharePoint;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite siteCollection = new SPSite("https://localhost"))
         {
            using (SPWeb webSite = siteCollection.RootWeb)
            {
               // Display change times as local time.
               SPTimeZone timeZone = webSite.RegionalSettings.TimeZone;

               // Create a change token.
               DateTime startTime = DateTime.UtcNow.AddDays(-60);
               SPChangeToken startToken = new SPChangeToken(SPChangeCollection.CollectionScope.Web,
                                                            webSite.ID,
                                                            startTime);

               // Retrieve the first batch of changes.
               SPChangeCollection changes = webSite.GetChanges(startToken);

               while (changes.Count > 0)
               {
                  foreach (SPChange change in changes)
                  {
                     // Process the change.
                     Console.WriteLine("\nDate: {0}", timeZone.UTCToLocalTime(change.Time).ToString());
                     Console.WriteLine("Change subclass: {0}", change.GetType().ToString());
                     Console.WriteLine("Type of change: {0}", change.ChangeType.ToString());
                  }

                  // Get another batch.
                  startToken = changes.LastChangeToken;
                  changes = webSite.GetChanges(startToken);
               }
            }
         }
         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }
   }
}
Imports System
Imports Microsoft.SharePoint

Module ConsoleApp
   Sub Main()
      Using siteCollection As SPSite = New SPSite("https://localhost")
         Using webSite As SPWeb = siteCollection.RootWeb

            ' Display change times as local time.
            Dim timeZone As SPTimeZone = webSite.RegionalSettings.TimeZone

            ' Create a change token.
            Dim startTime As DateTime = DateTime.UtcNow.AddDays(-60)
            Dim startToken As SPChangeToken = New SPChangeToken(SPChangeCollection.CollectionScope.Web, _
                                                                webSite.ID, _
                                                                startTime)

            ' Retrieve the first batch of changes.
            Dim changes As SPChangeCollection = webSite.GetChanges(startToken)

            While changes.Count > 0
               Dim change As SPChange
               For Each change In changes
                  ' Process the change.
                  Console.WriteLine(vbCrLf + "Date: {0}", timeZone.UTCToLocalTime(change.Time).ToString())
                  Console.WriteLine("Change subclass: {0}", change.GetType().ToString())
                  Console.WriteLine("Type of change: {0}", change.ChangeType.ToString())
               Next

               ' Get another batch.
               startToken = changes.LastChangeToken
               changes = webSite.GetChanges(startToken)
            End While

         End Using
      End Using
      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()
   End Sub
End Module

Seguridad para subprocesos

Los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para los subprocesos.

Vea también

Referencia

Miembros SPChangeToken

Espacio de nombres Microsoft.SharePoint

Otros recursos

Using the Change Log