SPChangeQuery используется для получения данных об изменениях
произошедших на сайте в различных разрезах. В отличие от аудита, данная
возможность включёна по умолчанию, но возвращает меньше информации.
Для осуществления запроса вызывается метод .GetChanges() объекта SPSite, SPWeb, SPList или SPContentDatabase.
Рассмотрим возможные отслеживаемые действия:
Пример использования:
Результат работы программы (консольное приложение):
Взято из: http://www.aviw.net/2012/05/spchangequery.html
Для осуществления запроса вызывается метод .GetChanges() объекта SPSite, SPWeb, SPList или SPContentDatabase.
Рассмотрим возможные отслеживаемые действия:
var query = new SPChangeQuery(false, false) { Add = true, // Добавление объекта Delete = true, // Удаление объекта Update = true, // Обновление объекта SystemUpdate = true, // Системное обновление элемента GroupMembershipAdd = true, // Добавление пользователя в группу GroupMembershipDelete = true, // Добавление пользователя в группу Move = true, // Перемещение объекта Rename = true, // Переименование объекта Restore = true, //Восстановление объекта из корзины или архивной копии RoleAssignmentAdd = true, // Назначение роли пользователю или группе RoleAssignmentDelete = true, // Удаление роли RoleDefinitionAdd = true, // Назначение разрешений роли RoleDefinitionDelete = true, // Удаление разрешений роли RoleDefinitionUpdate = true, // Обновление разрешений роли };и возможные отслеживаемые объекты:
var query = new SPChangeQuery(false, false) { Alert = true, // Оповещения ContentType = true, // Типы содержимого Field = true, // Поля списка File = true, // Файлы Folder = true, // Папки Group = true, // Группы Item = true, // Элементы списков List = true, // Списки Navigation = true, // Элементы навигации SecurityPolicy = true, // Политики безопасности Site = true, // Коллекция сайтов User = true, // Пользователи View = true, // Представления списков Web = true, // Сайт };Также позволяет задавать начальную (ChangeTokenStart) или конечную (ChangeTokenEnd) дату возвращаемых изменений.
Пример использования:
using (var site = new SPSite("http://site/")) { using (var web = site.OpenWeb()) { var list = web.Lists["TestList"]; var timeZone = web.RegionalSettings.TimeZone; var query = new SPChangeQuery(false, false) { FetchLimit = 500, // Limit Item = true, // Object type Add = true, // Change type Delete = true, // Change type Update = true, // Change type ChangeTokenStart = new SPChangeToken(SPChangeCollection.CollectionScope.List, list.ID, new DateTime(2012, 05, 11)) //From date }; Console.WriteLine("{0,-20}{1, -10}{2}", "Title/ID", "Action", "Time"); while (true) { var changes = list.GetChanges(query); foreach (var change in changes.OfType<SPChangeItem>()) { string itemTitle; try { itemTitle = "Item Title: " + list.Items.GetItemById(change.Id).Title; } catch (Exception) { itemTitle = "Item Id: " + change.Id; } Console.WriteLine("{0,-20}{1, -10}{2}", itemTitle, change.ChangeType, timeZone.UTCToLocalTime(change.Time)); } // Go to next batch or break if (changes.Count < query.FetchLimit) break; query.ChangeTokenStart = changes.LastChangeToken; } } }
Результат работы программы (консольное приложение):
Взято из: http://www.aviw.net/2012/05/spchangequery.html
Комментариев нет:
Отправить комментарий