我最近收到一个要求,要求某人接收有关 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];
}
}
}
这会产生两个问题:
- 用户创建了许多不同的警报。理想:只有一封电子邮件包含每日摘要。
- 必须设置某种监视器来检查站点中的新列表或库,并自动为用户设置警报。
问:如何为站点中的所有更改创建每日摘要警报?
我相信您正在寻找的解决方案可以通过审核框架获得。 SP 中的审核非常强大,不幸的是它很容易被输出淹没。
Audit 是 SPSite、SPWeb、SPList 和 SPItem 属性上可用的属性。
使用此属性调整特定的审核标志(使用 .Audit.AuditFlags 属性)以满足您的需求(具体细节取决于您如何定义“更改”,但几乎任何您能想到的都可用)。
有关详细信息SP审计对象 http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spaudit.aspx可以在 MSDN 上找到。
一旦您定义了要审核的内容/位置,您就必须将该信息返回给您的用户。
默认情况下,SP 设置一些可在网站集级别使用的精美报告([网站集的 url]/_layouts/Reporting.aspx?Category=Auditing)。这些可能会满足您的需求。
您最初的解决方案提到通过电子邮件向用户发出警报。鉴于大多数用户希望将他们的信息集中在电子邮件中(尽管他们的 MySite 是放置报告链接的好地方!),您还有更多工作要做。
您可以使用 SPAuditQuery 和 SPAuditEntryCollection 对象通过对象模型提取所需的审核信息。再次,MSDN有一些信息 http://msdn.microsoft.com/en-us/library/bb466223.aspx关于如何使用这些对象。
我建议设置一个在一天结束时运行的自定义 SPJobDefinition,通过电子邮件向用户发送其站点的审核报告。安德鲁康奈尔有一个很好的解释如何设置自定义作业 http://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspx在他的博客上。
总结一下:
- 启用对有问题的 SPWeb 的审核
- 使用 SPAuditQuery 和 SPAuditEntryCollection 为每个 SPWeb 创建报告
- 创建每晚运行的 SPJobDefinition,通过电子邮件将报告发送给每个 SPWeb 所有者
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)