Как создать ежедневное сводное оповещение о любых изменениях на сайте SharePoint

StackOverflow https://stackoverflow.com/questions/921509

Вопрос

Недавно я получил требование, чтобы пользователь получал ежедневное сводное оповещение о любых изменениях на сайте SharePoint;у каждого сайта есть владелец, который отвечает за контент на своем сайте.

В настоящее время у нас есть что-то работающее, чтобы автоматически настраивать оповещения для каждого списка / библиотеки на сайте.

// 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];
        }
    }
}

Это создает две проблемы:

  1. У пользователя создано множество различных оповещений.Идеальный вариант:Только ОДНО электронное письмо с ежедневной сводкой.
  2. Необходимо было бы настроить какой-то монитор для проверки наличия новых списков или библиотек на сайте и автоматической настройки оповещений для пользователя.

Q:Как я могу создать ежедневное сводное оповещение обо всех изменениях на сайте?

Это было полезно?

Решение

Я полагаю, что решение, которое вы ищете, доступно через платформу аудита.Аудит очень надежен в SP, к сожалению, его легко перегружать результатами.

Аудит - это свойство, доступное в свойствах SPSite, SPWeb, SPList и SPItem.

Настройте конкретные флаги аудита (используя .Аудит.Свойства AuditFlags), используя это свойство в соответствии с вашими потребностями (специфика будет зависеть от того, как вы определяете "изменить", но доступно практически все, что вы можете придумать).

Подробная информация о Объект SPAudit доступны на MSDN.

Как только вы определите, что / где вы хотите провести аудит, вам нужно будет вернуть эту информацию своим пользователям.

По умолчанию SP настраивает несколько удобных отчетов, доступных на уровне семейства сайтов ([URL семейства сайтов]/_layouts/Reporting.aspx?Категория = Аудит).Они могут удовлетворить ваши потребности.

В вашем первоначальном решении упоминались оповещения по электронной почте для пользователей.Учитывая, что большинство пользователей хотят централизовать свою информацию в электронной почте (хотя их MySite - отличное место для размещения ссылки на отчеты!), вам придется немного больше поработать.

Вы можете извлечь необходимую информацию аудита через объектную модель, используя объекты SPAuditQuery и SPAuditEntryCollection.Снова, В MSDN есть некоторая информация о том, как использовать эти объекты.

Я бы рекомендовал настроить пользовательское SPJobDefinition, которое запускается в конце дня, чтобы отправлять пользователям по электронной почте отчет об аудите для их сайта.У Эндрю Коннелла есть отличное объяснение как настроить пользовательское задание в своем блоге.

Подводя итог:

  • включить аудит для рассматриваемого SPWeb
  • создайте отчет, используя SPAuditQuery и SPAuditEntryCollection для каждого SPWeb
  • создайте SPJobDefinition, которое запускается каждую ночь, чтобы отправлять отчет по электронной почте каждому владельцу SPWeb

Другие советы

Прежде чем включать политику аудита на сайте, следует учитывать дополнительные затраты на производительность, которые вы добавляете.

Я бы рекомендовал оставить здесь как можно меньше следов!

Под этим я подразумеваю, что если вы хотите получить эту информацию только из определенного типа контента или определенного списка, обязательно включите информационную политику только для этих CT или списков!

Также сведите ведение журнала к минимуму.Например, если вас интересуют только просмотры, а не удаление или восстановление, регистрируйте только эти события!

На крупных сайтах я видел аудит действительно отвратительной производительности!

Также имейте в виду некоторые предостережения здесь:несмотря на то, что вы можете включить аудит списков (как в библиотеках, не содержащих документов), многие события (например, события просмотра) не регистрируются специально для элементов списка!Это нигде не описано (на самом деле я даже видел, как Тед Паттисон упоминал аудит уровня элемента в статье MSDN), но я узнал непосредственно от CSS и product team, что аудит уровня элемента не реализован в SP2007 из-за проблем с производительностью.Вместо этого вы просто получаете событие list в журнале, указывающее, что список был затронут.

Документы отслеживаются довольно нормально, но я видел проблемы с проверкой событий просмотра на странице публикации (которая в API считается документом, а не элементом списка) в зависимости от того, как и где был установлен аудит (например, если политики аудита были реализованы с унаследованными CT), так что об этом следует знать.

[править:вчера провел некоторое тестирование по этому поводу, и это еще хуже:На самом деле публикуемые страницы является Только отслеживается, если вы установили политику аудита на уровне сайта!Если вы установите политику для списка или типа контента (или даже типа контента, который наследуется от типа контента с политикой), вы получите НЕТ SPAuditItemType.События на уровне документа вообще.Установите его на сайте, и вы получите слишком много проверок!Например.представление вызовет события просмотра x2, и то же самое с обновлениями, так что в конечном итоге будет записано слишком много данных.Это определенно похоже на ошибку, из-за которой ничего не проверяется, когда политики помещаются в списки и CT ...]

Основной посыл здесь заключается в следующем:будьте осторожны с тем, что вы регистрируете, поскольку это повлияет на производительность ваших сайтов ПРОВЕРЬТЕ, что то, что вы ожидаете зарегистрировать, действительно зарегистрировано!

hth Андерс Раск

Ну, это не тот случай, когда нет аудита на уровне элемента.Аудит на уровне элемента реализован, но вы должны включить его для конкретного элемента.Если элемент списка существует, вы можете получить его экземпляр и включить аудит так же, как вы делаете это со списками.Проблема в том, как включить его при создании ListItem.Может быть, рабочий процесс мог бы помочь?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top