如何为SharePoint网站中的任何更改创建每日摘要警报

我最近要求某人收到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. 必须设置某种监视器以检查站点中的新列表或库,并自动为用户设置警报。

问:如何为站点中的所有更改创建每日摘要警报?

我相信您正在寻找的解决方案可通过审计框架获得。 审计在SP中非常强大,不幸的是它很容易被输出所淹没。

Audit是SPSite,SPWeb,SPList和SPItem属性上可用的属性。

使用此属性调整特定审计标志(使用.Audit.AuditFlags属性)以满足您的需求(具体取决于您如何定义“更改”,但几乎您可以想到的任何内容都可用)。

有关SPAudit对象的详细信息, 请访问MSDN。

一旦定义了要审核的内容/位置,就必须将这些信息反馈给用户。

默认情况下,SP会在网站集级别设置一些不错的报告([网站集的url] / _ layouts / Reporting.aspx?类别=审核)。 这些可能会满足您的需求。

您的初始解决方案通过电子邮件为用户提供了警报 鉴于大多数用户希望将他们的信息集中在电子邮件中(尽管他们的MySite是放置报告链接的好地方!),您还需要做更多的工作。

您可以使用SPAuditQuery和SPAuditEntryCollection对象通过对象模型提取所需的审计信息。 同样, MSDN有一些关于如何使用这些对象的信息。

我建议设置一个在一天结束时运行的自定义SPJobDefinition,以便向用户发送其站点的审核报告。 Andrew Connell对如何在他的博客上设置自定义作业进行了很好的解释。

总结一下:

  • 启用对所讨论的SPWeb的审核
  • 为每个SPWeb使用SPAuditQuery和SPAuditEntryCollection创建报告
  • 创建一个每晚运行的SPJobDefinition,通过电子邮件将报告发送给每个SPWeb所有者

在网站上启用审核策略之前要考虑的事项是您添加的性能开销。

我建议尽可能少地保持足迹!

我的意思是,如果它只是某种内容类型或您希望获得此信息的某个列表,请务必仅在这些CT或列表上启用信息策略!

还要将日志记录保持在最低限度。 例如,如果您只对视图感兴趣,而不是删除或恢复,则只记录这些事件!

在大型网站上,我看到审计真的是垃圾表现!

此处还要注意一些注意事项:即使您可以在列表上启用审核(如非文档库),也不会专门为列表项记录大量事件(例如视图事件)! 这在任何地方都没有描述(实际上我甚至看到Ted Pattison在MSDN文章中提到了项目级审计)但我直接从CSS和产品团队那里得知项目级别审计由于性能问题而没有在SP2007中实现。 相反,您只需在日志中获取一个列表事件,指定已触摸该列表。

跟踪文档相当正常,但我发现审计发布页面上的视图事件(在API中被视为文档而非列表项)的问题取决于审计的设置方式和位置(例如,如果审计策略是通过inheritance实现的) CT())这是需要注意的事情。

[编辑:昨天对此进行了一些测试,甚至更糟:事实上, 只有在网站级审核策略上设置时, 才会跟踪发布页面 ! 如果您在列表或内容类型(甚至是从具有策略的内容类型inheritance的内容类型)上设置策略,则根本不会获得SPAuditItemType.Document级别事件。 将其设置在网站上,您将获得太多审核! 例如。 视图将触发x2视图事件,并且与更新相同,因此最终会记录太多。 它定义看起来像一个错误,当策略放在列表和CT上时,没有任何内容被审计…]

这里的主要信息是:仔细记录您的日志,因为它会影响您的网站性能测试,您希望记录的内容是真正记录的!

安德斯拉斯克

那么,不存在没有项目级别审计的情况。 项目级别审核已实施,但您必须为特定项目启用它。 如果列表项存在,您可以获取其实例并将此处的审核与列表中的操作相同。 问题是如何在创建ListItem时将其打开。 也许工作流可以帮助?