Share via


Procédure : obtenir les dernières modifications du profil utilisateur à l'aide du journal des modifications

Microsoft Office SharePoint Server 2007 offre un modèle objet de suivi des modifications permettant au magasin de profils utilisateur de prend en charge les alertes basées sur les personnes. Ces alertes vous avertissent des anniversaires et de nombreuses autres modifications d'un profil utilisateur. Office SharePoint Server 2007 traite tous les champs de date du profil utilisateur tels que les anniversaires. Lorsqu'une date du profil correspond à la date du jour (d'après la date/heure du serveur), Office SharePoint Server 2007 crée un nouvel événement d'anniversaire. Notez que les modifications apportées à un champ de date ne créent pas d'événement.

La mise en œuvre du modèle objet du suivi des modifications est similaire à l'objet Windows SharePoint Services 3.0 SPChange, mais en moins robuste. La classe UserProfile définit deux méthodes surchargées pour la prise en charge du suivi des modifications :

  • public Microsoft.Office.Server.UserProfiles.UserProfileChangeCollection GetChanges(Microsoft.Office.Server.UserProfiles.UserProfileChangeQuery)

  • public Microsoft.Office.Server.UserProfiles.UserProfileChangeCollection GetColleagueChanges (Microsoft.Office.Server.UserProfiles.UserProfileChangeQuery)

Utilisez la méthode GetChanges de l'objet UserProfile pour renvoyer la collection des modifications qui ont eu lieu dans le profil utilisateur dans un laps de temps donné. Un objet SPChange contient des informations sur le type de la modification, représenté par l'énumération ChangeType. La valeur ChangeType indique le type de la modification, dont l'ajout, la mise à jour, la suppression ou le changement de nom.

UserProfileChangeQuery est une énumération qui décrit l'événement de modification qui vous intéresse, par exemple :

  • DistributionListMembership

  • Colleague

  • QuickLink

  • Anniversary

  • ProfileProperty

  • UserProfile

  • PrivacyItem

  • SingleValueProperty

  • MultivalueProperty

  • SiteMembership

L'exemple de code suivant indique comment utiliser la méthode GetChanges() pour découvrir ce qui a changé dans un profil utilisateur au cours des cinq derniers jours. Notez que la méthode GetColleagueChanges() fonctionne de la même manière et renvoie les modifications apportées au profil du collègue.

Avant d'utiliser cet exemple de code, remplacez domainname, username et les autres espaces réservés par des valeurs réelles. Ajoutez aussi des références aux éléments suivants dans votre projet Microsoft Visual Studio :

  • Microsoft.Office.Server

  • Microsoft.SharePoint

  • System.Web

Exemple

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server;
using Microsoft.Office.Server.Administration;
using Microsoft.Office.Server.UserProfiles;
using Microsoft.SharePoint;
using System.Web;

namespace UserProfilesOMApp
{
    class Program
    {
        static void Main(string[] args)
        {

            using (SPSite site = new SPSite("https://servername"))
            {
                ServerContext context = ServerContext.GetContext(site);
                UserProfileManager profileManager = 
                    new UserProfileManager(context);

                // this gets some subset of changes to a user profile

                DateTime startDate = 
                    DateTime.UtcNow.Subtract(TimeSpan.FromDays(5));
                UserProfileChangeQuery changeQuery = 
                    new UserProfileChangeQuery(false, true);
                UserProfileChangeToken changeToken = 
                    new UserProfileChangeToken(startDate);
                changeQuery.ChangeTokenStart = changeToken;
                changeQuery.Anniversary = true;
                changeQuery.SingleValueProperty = true;
                changeQuery.MultiValueProperty = true;
                changeQuery.DistributionListMembership = true;
                changeQuery.SiteMembership = true;

                UserProfileChangeCollection changes = 
                    profileManager.GetUserProfile
                    ("domainname\\username").
                    GetChanges(changeQuery);
                foreach (UserProfileChange change in changes)
                {
                    Console.WriteLine(change.EventTime.ToString());
                    if (change is UserProfilePropertyValueChange)
                    {
                        UserProfilePropertyValueChange propertyChange = 
                            (UserProfilePropertyValueChange)change;
                            Console.WriteLine(propertyChange.
                            ChangeType.ToString());
                    }
                    else if (change is UserProfileMembershipChange)
                    {
                        UserProfileMembershipChange membershipChange = 
                            (UserProfileMembershipChange)change;
                            Console.WriteLine(membershipChange.
                            ChangeType.ToString());
                    }

                }
                Console.Read();
               }
            }
        }
    }

Voir aussi

Autres ressources

Procédure : récupérer un profil utilisateur
Procédure : récupérer les propriétés de profil utilisateur
Procédure : récupérer les éléments communs à deux profils utilisateur