SPChange - Classe
Représente une modification a été apportée à un objet SharePoint dans l'étendue d'un élément, la liste, le site Web, la collection de sites ou la base de données de contenu, ou à une stratégie de sécurité dans l'étendue d'une application Web.
Hiérarchie d’héritage
System.Object
Microsoft.SharePoint.SPChange
Espace de noms : Microsoft.SharePoint
Assembly : Microsoft.SharePoint (dans Microsoft.SharePoint.dll)
Syntaxe
'Déclaration
Public Class SPChange
'Utilisation
Dim instance As SPChange
public class SPChange
Remarques
Chaque entrée dans le journal des modifications SharePoint Foundation est représentée par une sous-classe de la classe SPChange . Les propriétés de la classe SPChange parent contiennent des informations de base concernant une modification, y compris le type de modification, tel que représenté par la propriété ChangeType ; l'heure de la modification, tel que représenté par la propriété Time ; et l'ID de la collection de sites dans laquelle la modification a été apportée, tel que représenté par la propriété SiteId .
Les propriétés des sous-classes de SPChange contiennent des informations spécifiques au type d'objet qui a été modifié. Par exemple, la classe SPChangeItem représente une modification apportée à un objet SPListItem et par conséquent ne possède une propriété ListId qui identifie la liste dans laquelle l'élément a été modifié. De même, la classe SPChangeList représente une modification apportée à une liste et possède une propriété WebId qui identifie le site Web où la liste a été modifiée.
Le journal des modifications n'enregistre pas les modifications apportées à tous les objets de SharePoint, uniquement pour les types d'objets sélectionnés. Les types d'objets qui sont suivies dans le journal des modifications sont répertoriés dans le tableau suivant, en même temps que les sous-classes de SPChange qui représentent les modifications correspondantes.
Sous-classe |
Représente des modifications |
---|---|
objets SPAlert . |
|
objets SPContentType . |
|
objets SPField . |
|
SPFile les objets qui existent en dehors d'une liste et n'ont pas d'éléments correspondants. |
|
SPFolder les objets qui existent en dehors d'une liste et n'ont pas d'éléments correspondants. |
|
objets SPGroup . |
|
les objets SPListItem et les fichiers et les dossiers qui peuvent leur être associées. |
|
objets SPList . |
|
objets SPPolicy . |
|
objets SPSite . |
|
objets SPUser . |
|
objets SPView . |
|
objets SPWeb . |
Utilisez la méthode GetChanges de l'objet SPList, SPWeb, SPSiteou SPContentDatabase pour renvoyer un objet SPChangeCollection avec les modifications qui se sont produites dans une étendue donnée. Vous pouvez énumérer la collection et examine chacun de ses membres individuellement.
Le nombre total de modifications retournées par une requête sur le journal des modifications peut être très volumineux, en fonction de la période de rétention définie pour le journal et l'étendue de la requête. Pour des raisons de performances, les modifications sont renvoyées par lots d'une certaine taille. Si vous souhaitez que toutes les modifications apportées, plutôt que seul le premier lot, votre code doit appeler la méthode GetChanges dans une boucle jusqu'à ce qu'elle retourne une collection avec des changements de zéro, ce qui signifie qu'il a atteint la fin du journal. Vous pouvez utiliser la ChangeToken à partir de la dernière modification du premier lot pour obtenir le deuxième lot, et ainsi de suite jusqu'à ce que vous obtenez une collection vide.
Vous pouvez également passer un objet SPChangeQuery à la méthode GetChanges . Cet objet possède les propriétés que vous pouvez utiliser pour filtrer les modifications par type d'objet et par type de modification. Vous pouvez également régler la taille de la collection qui est retournée sur un seul aller-retour en définissant la propriété FetchLimit de l'objet SPChangeQuery .
For more information about working with the change log, see Using the Change Log.
Exemples
L'exemple suivant récupère toutes les entrées dans le journal des modifications d'une base de données de contenu et imprime des informations sur chaque modification de la console.
using System;
using Microsoft.SharePoint;
namespace Test
{
class Program
{
static void Main(string[] args)
{
using (SPSite site = new SPSite("https://localhost"))
{
using (SPWeb web = site.RootWeb)
{
// Construct a query.
SPChangeQuery query = new SPChangeQuery(true, true);
SPTimeZone timeZone = web.RegionalSettings.TimeZone;
long total = 0;
// Get changes in batches.
while (true)
{
// Fetch a set of changes.
SPChangeCollection changes = site.ContentDatabase.GetChanges(query);
total += changes.Count;
// Write info about each change to the console.
foreach (SPChange change in changes)
{
// Print the date of the change.
Console.WriteLine("\nDate: {0}",
timeZone.UTCToLocalTime(change.Time).ToString());
// Print the ID of the site where the change took place.
Console.WriteLine("Site ID: {0}", change.SiteId.ToString("B"));
// Print the type of object that was changed.
// GetType().Name returns SPChangeItem, SPChangeList, etc.
// Remove the "SPChange" part of the name.
string objType = change.GetType().Name.Replace("SPChange", null);
Console.WriteLine("Type of object: {0}", objType);
// Print the nature of the change.
Console.WriteLine("Type of change: {0}", change.ChangeType.ToString());
}
// Break out of loop if we have the last batch
if (changes.Count < query.FetchLimit)
break;
// Otherwise, go get another batch
query.ChangeTokenStart = changes.LastChangeToken;
}
Console.WriteLine("\nTotal changes: {0}", total);
}
}
Console.Write("\nPress ENTER to continue...");
Console.ReadLine();
}
}
}
Imports System
Imports Microsoft.SharePoint
Module Test
Sub Main()
Using site As SPSite = New SPSite("http://lswss5/sites/don")
Using web As SPWeb = site.RootWeb
' Construct a query.
Dim query As SPChangeQuery = New SPChangeQuery(True, True)
Dim timeZone As SPTimeZone = web.RegionalSettings.TimeZone
Dim total As Long = 0
' Get changes in batches.
While True
' Fetch a set of changes.
Dim changes As SPChangeCollection = site.ContentDatabase.GetChanges(query)
total += changes.Count
' Write info about each change to the console.
Dim change As SPChange
For Each change In changes
' Print the date of the change.
Console.WriteLine(vbCrLf + "Date: {0}", _
timeZone.UTCToLocalTime(change.Time).ToString())
' Print the ID of the site where the change took place.
Console.WriteLine("Site ID: {0}", change.SiteId.ToString("B"))
' Print the type of object that was changed.
' GetType().Name returns SPChangeItem, SPChangeList, etc.
' Remove the "SPChange" part of the name.
Dim objType As String = change.GetType().Name.Replace("SPChange", Nothing)
Console.WriteLine("Type of object: {0}", objType)
' Print the nature of the change.
Console.WriteLine("Type of change: {0}", change.ChangeType.ToString())
Next
' Break out of loop if we have the last batch
If changes.Count < query.FetchLimit Then
Exit While
End If
' Otherwise, go get another batch
query.ChangeTokenStart = changes.LastChangeToken
End While
Console.WriteLine(vbCrLf + "Total changes: {0}", total)
End Using
End Using
Console.Write(vbCrLf + "Press ENTER to continue...")
Console.ReadLine()
End Sub
End Module
Cohérence de thread
Tous les membres statique (Partagé dans Visual Basic)s publics de ce type sont thread-safe. Cela n’est pas garanti pour les membres d’instance.
Voir aussi
Référence
Microsoft.SharePoint - Espace de noms
Autres ressources
Hiérarchie d’héritage
System.Object
Microsoft.SharePoint.SPChange
Microsoft.SharePoint.SPChangeAlert
Microsoft.SharePoint.SPChangeContentType
Microsoft.SharePoint.SPChangeField
Microsoft.SharePoint.SPChangeFile
Microsoft.SharePoint.SPChangeFolder
Microsoft.SharePoint.SPChangeGroup
Microsoft.SharePoint.SPChangeItem
Microsoft.SharePoint.SPChangeList
Microsoft.SharePoint.SPChangeSecurityPolicy
Microsoft.SharePoint.SPChangeSite
Microsoft.SharePoint.SPChangeUser
Microsoft.SharePoint.SPChangeView
Microsoft.SharePoint.SPChangeWeb