2009-05-28 29 views
5

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

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

回答

6

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

Audit是SPSite,SPWeb,SPList和SPItem属性中的一个属性。

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

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

一旦您定义了您想要审核的内容/位置,您必须将该信息返回给用户。

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

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

您可以使用SPAuditQuery和SPAuditEntryCollection对象通过对象模型提取所需的审计信息。 MSDN has some information关于如何使用这些对象。

我建议设置一个自定义的SPJobDefinition,在一天结束时运行,以向用户发送他们网站的审计报告。 Andrew Connell在他的博客上有很好的解释how to setup a custom job

总结:

  • 启用审计的的SPWeb的问题
  • 创建使用SPAuditQuery和SPAuditEntryCollection每个的SPWeb
  • 报告创建运行,每天晚上,该报告通过电子邮件发送至SPJobDefinition每个SPWeb所有者
2

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

我会建议保持脚印尽可能少!

由此我的意思是,如果它只是一个内容类型或某个列表,你想要这些信息,一定要启用这些CT或列表上的信息政策!

同时保持日志记录为最小值。例如,如果你只对视图感兴趣,而不是删除或恢复,只记录这些事件!

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

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

文档被跟踪到相当好,但是我已经看到发布页面上的审核视图事件(在API中被认为是文档而不是列表项)的问题取决于审核的方式和位置(例如审核策略是用继承的CT来实现的),因此需要注意一些事情。

[编辑:这样做是昨天周围的一些测试,它的更糟糕:其实发布页面只有如果您在网站级别的审核策略设置跟踪!如果您在列表或内容类型上设置策略(或者甚至是使用策略继承内容类型的内容类型),您将获得 SPAuditItemType.Document级事件。将其设置在一个网站上,你会得到太多的审计!例如。一个视图将触发x2视图事件,并且与更新相同,所以最终会被记录太多。它definetely看起来像当政策被放在名单和CT的,没有什么是审计的一个bug ...]

这里的主要信息是: 小心你记录的内容,因为它会影响到你的网站的性能 测试你期望登录是真的记录!

心连心 安德斯·拉斯克

+0

感谢您的信息!我还没有完全确定解决我的问题的最佳方法。审计似乎可以解决我的问题,但如果没有项目级审计,那么我需要找到一种不同的方法。 – 2009-11-12 16:21:06

0

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

+1

我不确定我了解您的答案。在网站集级别打开/关闭审计。 – 2012-03-13 13:34:27

相关问题