Compartilhar via


Como a: Obter recentes alterações de perfil de usuário usando o log de alteração

Microsoft Office do SharePoint Server 2007 oferece um modelo de objeto controle de alterações para armazenar o perfil usuário para suporte person-Based alertas. Esses alertas avisá-lo de aniversários de tempo de serviço e muitas outras alterações em um perfil usuário. O Office SharePoint Server 2007 trata todos os campos de data no perfil de usuário como aniversários de tempo de serviço. Quando uma data no perfil de usuário corresponde a atual data (com base no tempo servidor), O Office SharePoint Server 2007 cria um novo evento Aniversário de casamento. Observe que alterações em um campo de data não criam um evento.

A implementação de modelo de objeto de controle de alterações é semelhante a, mas menos eficiente do que o objeto Windows SharePoint Services 3.0 wssversion3 SPChange SPChange. O UserProfile USERPROFILE classe define dois métodos sobrecarregados para suporte controle de alterações. Esses são:

  • Pública GetChanges(Microsoft.Office.Server.UserProfiles.UserProfileChangeQuery) Microsoft.Office.Server.UserProfiles.UserProfileChangeCollection

  • Pública Microsoft.Office.Server.UserProfiles.UserProfileChangeCollection GetColleagueChanges (Microsoft.Office.Server.UserProfiles.UserProfileChangeQuery)

Use o GetChangesUserProfile GetChanges para retornar a coleção das alterações que ocorreram no perfil de usuário em um quadro tempo determinado. Um objeto SPChange SPChange contém informações sobre o tipo de alteração, conforme representado pelo ChangeType ChangeType enumeração. O ChangeType valor changeType indica o tipo de alteração, incluindo adicionando, atualizar, excluir ou renomear as alterações.

UserProfileChangeQuery é uma enumeração que descreve o evento alteração que você está interessado. De exemplo, ele pode ser:

  • DistributionListMembership

  • Colega

  • QuickLink

  • Aniversário de casamento

  • ProfileProperty

  • USERPROFILE

  • PrivacyItem

  • SingleValueProperty

  • MultivalueProperty

  • SiteMembership

O seguinte exemplo de código mostra como usar o método GetChanges() GetChanges() para localizar o que foi alterado em um perfil usuário na última Five Days. Observe que o GetColleagueChanges() GetColleagueChanges() método funciona da mesma maneira e retorna as alterações no perfil do colega de trabalho do usuário.

Antes de usar o exemplo de código, substituir nome_do_domínio nome de usuário e outros espaços reservados com real valores. Também referências adicionar para o seguinte no seu projeto Microsoft Visual Studio:

  • Microsoft.Office.Server

  • Microsoft.SharePoint

  • System.Web

Exemplo

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();
               }
            }
        }
    }

Consulte também

Outros recursos

Como a: recuperar um perfil de usuário
Como a: recuperar propriedades de perfil de usuário
Como a: recuperar o que é comum entre dois perfis de usuário