2009-05-28 69 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

相關問題