Pergunta

Eu comecei recentemente a necessidade de uma pessoa para receber um alerta de resumo diário para qualquer alteração dentro de um site SharePoint; cada site tem um proprietário que está a cargo do conteúdo em seu site.

A forma atual que temos algo de trabalho é definida automaticamente alertas para cada lista / biblioteca dentro do site.

// Get the Lists on this Site
SPListCollection siteLists = currentSite.Lists;
foreach (SPList list in siteLists)
{
    if (!list.ToString().Equals("Master Page Gallery"))
    {
        if (list.ReadSecurity == 1) // user has read access to all items
        {
            // Create an Alert for this List
            Guid alertID = currentUser.Alerts.Add(list, SPEventType.All, SPAlertFrequency.Daily);

            // Set any additional properties
            SPAlert newAlert = currentUser.Alerts[alertID];
        }
    }
}

Isto cria dois problemas:

  1. O usuário tem um monte de diferentes alertas criados. Ideal:. Apenas um e-mail com o resumo diário
  2. Algum tipo de monitor de teria de ser configurado para verificar se há novas listas ou bibliotecas no site e automaticamente configurar alertas para o usuário.

Q: Como posso criar um alerta de resumo diário para todas as mudanças em um site

?
Foi útil?

Solução

Eu acredito que a solução que você está procurando está disponível através da estrutura de auditoria. Auditoria é muito robusto em SP, infelizmente é fácil ficar sobrecarregado pela saída.

A auditoria é uma propriedade disponível nas propriedades SPSite, SPWeb, SPList e SPItem.

Ajuste as bandeiras de auditoria específica (usando as propriedades .Audit.AuditFlags) usando esta propriedade que atendam às suas necessidades (as especificidades dependerá de como você define "mudança", mas quase qualquer coisa que você pode pensar está disponível).

Detalhes sobre a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spaudit.aspx" rel="noreferrer"> SPAudit objeto estão disponíveis no MSDN.

Uma vez que você definiu o que / onde você quer auditoria, você vai ter que ter isso de volta informações para seus usuários.

Por padrão, conjuntos de SP até alguns relatos agradáveis ??que disponível no nível de conjunto de sites ([url do conjunto de sites] / _ layouts / Reporting.aspx? Categoria = Auditoria). Estes podem atender às suas necessidades.

A sua solução inicial mencionado alertas via e-mail para os usuários. Dado que a maioria dos usuários quer centralizar suas informações no e-mail (embora sua MySite é ótimo lugar para colocar um link para os relatórios!) Você terá um pouco mais de trabalho para fazer.

Você pode puxar as informações de auditoria exigido pelo modelo de objeto usando os objetos SPAuditQuery e SPAuditEntryCollection. Mais uma vez, MSDN tem algum informações sobre como usar esses objetos.

Eu recomendaria a criação de um SPJobDefinition personalizado que é executado no final do dia para enviar e-mail os usuários do relatório de auditoria para o seu site. Andrew Connell tem uma grande explicação sobre como configurar um trabalho personalizado em seu blog.

Para resumir:

  • ativar a auditoria para o SPWeb em questão
  • criar um relatório usando SPAuditQuery e SPAuditEntryCollection para cada SPWeb
  • criar um SPJobDefinition que executa todas as noites para enviar o relatório a cada proprietário SPWeb

Outras dicas

Uma coisa a considerar antes de activar a política de auditoria em um site, é o desempenho sobrecarga você adicionar.

Eu recomendaria manter a pegada tão pouco quanto possível aqui!

Por isso quero dizer se o seu apenas um determinado tipo de conteúdo ou uma determinada lista que você deseja que esta informação de, certifique-se de só permitem que a política de informação sobre estes CT do ou listas!

Além disso, mantenha o registro a um mínimo. Por exemplo, se você está interessado apenas em pontos de vista, não exclusão ou restauração, apenas a registrar esses eventos!

auditoria em grandes sites eu tenho visto realmente desempenho lixo!

Também estar ciente de algumas ressalvas aqui: mesmo que você pode ativar a auditoria em listas (como em não bibliotecas de documentos), um monte de eventos (para eventos exemplo vista) não é registrado especificamente para os itens da lista! Esta não é descrito em qualquer lugar (na verdade eu vi mesmo auditoria nível Ted Pattison item de menção em um artigo MSDN), mas eu tenho-o diretamente do CSS e do produto equipe que auditoria nível de item não está implementado no SP2007 por causa de problemas de desempenho. Em vez disso você só pegar um evento de lista no log especificando que a lista tenha sido tocado.

Documentos é monitorado bastante ok, mas eu vi problemas com eventos vista de auditoria sobre a publicação de página (que na API é considerado um documento não um item da lista) dependendo de como e onde a auditoria foi criado (por exemplo, se as políticas de auditoria foram implementado com herdou CT de) de modo que seja algo para estar ciente.

[edit: fiz alguns testes em torno deste ontem e suas ainda piores: na verdade páginas de publicação é única rastreado se definir no local política de auditoria nível! Se você definir uma política sobre uma lista ou um tipo de conteúdo (ou até mesmo um tipo de conteúdo que herda de um tipo de conteúdo com uma política) você receberá não eventos de nível SPAuditItemType.Document em tudo. Coloque-o em um site e você receberá muitos auditorias! Por exemplo. uma visão irá desencadear eventos vista x2, e mesmo com as atualizações, assim você acaba com demasiada sendo registrado. Ele definitivamente parece um bug que nada é auditada quando as políticas são colocadas em listas e do CT ...]

A mensagem principal aqui é: Cuidado com o que você faz logon, uma vez que irá afectar o seu desempenho locais TEST que o que você espera de log é realmente logado!

hth Anders Rask

Bem, não é um caso que não há nenhuma auditoria no nível do item. A auditoria nível de item é implementado, mas você tem de ligá-lo para o item específico. Se item da lista existe você pode obter o seu exemplo e ativar a auditoria o mesmo que você faça isso listas. O problema é que como para ligá-lo quando o ListItem é criado. Talvez fluxo de trabalho poderia ajudar?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top