2009-05-28 18 views
5

Gần đây tôi đã nhận được yêu cầu cho một người nhận cảnh báo tóm tắt hàng ngày cho bất kỳ thay đổi nào trong một trang SharePoint; mỗi trang web có một chủ sở hữu phụ trách nội dung trên trang web của họ.Cách tạo cảnh báo tóm tắt hàng ngày cho bất kỳ thay đổi nào trong trang SharePoint

Cách hiện tại chúng tôi có hoạt động nào đó là tự động thiết lập cảnh báo cho mọi danh sách/thư viện trong trang web.

// 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]; 
     } 
    } 
} 

Điều này tạo ra hai vấn đề:

  1. Người sử dụng có rất nhiều cảnh báo khác nhau tạo ra. Lý tưởng: Chỉ ONE email với bản tóm tắt hàng ngày.
  2. Một số loại màn hình sẽ phải được thiết lập để kiểm tra danh sách hoặc thư viện mới trong trang web và tự động thiết lập cảnh báo cho người dùng.

H: Làm cách nào để tạo cảnh báo tóm tắt hàng ngày cho mọi thay đổi trên trang web?

Trả lời

6

Tôi tin rằng giải pháp bạn đang tìm kiếm có sẵn thông qua khung kiểm tra. Kiểm toán là rất mạnh mẽ trong SP, tiếc là nó dễ dàng bị choáng ngợp bởi đầu ra.

Kiểm tra là thuộc tính có sẵn trên các thuộc tính SPSite, SPWeb, SPList và SPItem.

Điều chỉnh cờ kiểm tra cụ thể (sử dụng thuộc tính .Audit.AuditFlags) sử dụng thuộc tính này để đáp ứng nhu cầu của bạn (chi tiết cụ thể sẽ phụ thuộc vào cách bạn xác định "thay đổi") nhưng hầu như mọi thứ bạn có thể nghĩ đều khả dụng).

Chi tiết về SPAudit object khả dụng trên MSDN.

Khi bạn đã xác định những gì/nơi bạn muốn kiểm tra, bạn sẽ phải lấy lại thông tin đó cho người dùng của mình.

Theo mặc định, SP thiết lập một số báo cáo đẹp có sẵn ở cấp tuyển tập trang ([url của tuyển tập trang]/_ bố trí/Reporting.aspx? Danh mục = Kiểm toán). Chúng có thể đáp ứng nhu cầu của bạn.

Giải pháp ban đầu của bạn đã đề cập cảnh báo qua email cho người dùng. Do hầu hết người dùng muốn tập trung thông tin của họ trong email (mặc dù MySite của họ là nơi tuyệt vời để đặt liên kết đến các báo cáo!), Bạn sẽ có nhiều việc phải làm hơn một chút.

Bạn có thể lấy thông tin kiểm tra bắt buộc thông qua mô hình đối tượng bằng cách sử dụng các đối tượng SPAuditQuery và SPAuditEntryCollection. Một lần nữa, MSDN has some information về cách sử dụng các đối tượng này.

Tôi khuyên bạn nên thiết lập SPJobDefinition tùy chỉnh chạy vào cuối ngày để gửi email cho người dùng báo cáo kiểm tra cho trang web của họ. Andrew Connell có một giải thích tuyệt vời về how to setup a custom job trên blog của mình.

Để tóm tắt:

  • kích hoạt thẩm định của SPWeb trong câu hỏi
  • tạo một báo cáo sử dụng SPAuditQuery và SPAuditEntryCollection cho mỗi SPWeb
  • tạo SPJobDefinition chạy mỗi đêm để gửi báo cáo cho mỗi chủ sở hữu SPWeb
2

Điều cần xem xét trước khi bật chính sách kiểm tra trên trang web, là hiệu suất trên đầu bạn thêm vào.

Tôi khuyên bạn nên giữ dấu chân càng ít càng tốt ở đây!

Do đó, nếu chỉ một loại nội dung nhất định hoặc một danh sách nhất định bạn muốn thông tin này, hãy đảm bảo chỉ bật chính sách thông tin trên danh sách hoặc danh sách CT này!

Cũng giữ mức ghi nhật ký ở mức tối thiểu. Ví dụ: nếu bạn chỉ quan tâm đến chế độ xem, không xóa hoặc khôi phục, chỉ ghi lại các sự kiện này!

Trên các trang web lớn, tôi đã thấy kiểm tra hiệu suất thùng rác thực sự!

Cũng cần lưu ý một số điều cần lưu ý ở đây: mặc dù bạn có thể bật kiểm tra trên danh sách (như trong thư viện tài liệu), nhiều sự kiện (ví dụ xem sự kiện) không được ghi cụ thể cho mục danh sách! Điều này không được mô tả ở bất kỳ đâu (trên thực tế tôi đã thấy Ted Pattison đề cập đến kiểm tra mức mục trong bài viết MSDN) nhưng tôi có nó trực tiếp từ CSS và nhóm sản phẩm kiểm tra mức mục không được triển khai trong SP2007 vì các vấn đề hiệu suất. Thay vào đó bạn chỉ nhận được một sự kiện danh sách trong nhật ký xác định rằng danh sách đã được chạm vào.

Tài liệu được theo dõi khá ok, nhưng tôi đã gặp sự cố với các sự kiện kiểm tra trên trang xuất bản (trong API được coi là tài liệu không phải là mục danh sách). đã được thực hiện với CT kế thừa) để có điều gì đó cần biết.

[sửa: đã làm một số thử nghiệm xung quanh ngày hôm qua này và thậm chí tồi tệ hơn của nó: Trong thực tế trang xuất bảnchỉ theo dõi nếu bạn đặt trên chính sách kiểm toán cấp độ trang web! Nếu bạn đặt chính sách trên danh sách hoặc loại nội dung (hoặc thậm chí là loại nội dung được kế thừa từ loại nội dung có chính sách), bạn sẽ nhận được no SPAuditItemType.Dự kiện cấp tài liệu. Đặt nó trên một trang web và bạn sẽ nhận được quá nhiều kiểm toán! Ví dụ. một khung nhìn sẽ kích hoạt các sự kiện xem x2, và tương tự với các bản cập nhật, vì vậy bạn kết thúc với quá nhiều việc được ghi lại. Nó definetely trông giống như một lỗi rằng không có gì là kiểm toán khi chính sách được đưa vào danh sách và CT của ...]

Thông điệp chính ở đây là: cẩn thận những gì bạn đăng nhập, vì nó sẽ ảnh hưởng đến trang web của bạn hiệu suất THI rằng những gì bạn mong muốn đăng nhập thực sự được đăng nhập!

hth Anders Rask

+0

Cảm ơn thông tin!Tôi đã không quyết định chính xác cách tốt nhất để giải quyết vấn đề của mình là gì. Kiểm toán có vẻ như nó sẽ giải quyết vấn đề của tôi, nhưng nếu không có kiểm tra mức mục thì tôi sẽ cần phải tìm một phương pháp khác. –

0

Vâng, nó không phải là một trường hợp đó không có mức mục kiểm toán. Kiểm tra mức mục được thực hiện nhưng bạn phải BẬT nó cho mục cụ thể. Nếu mục danh sách tồn tại, bạn có thể nhận được thể hiện của nó và bật ON kiểm toán giống như bạn làm điều này vào danh sách. Vấn đề là làm thế nào để biến nó ON khi ListItem được tạo ra. Có lẽ quy trình làm việc có thể giúp ích?

+1

Tôi không chắc tôi hiểu câu trả lời của bạn. Kiểm tra được bật/tắt ở cấp tuyển tập trang. –

Các vấn đề liên quan