Wie eine tägliche Zusammenfassung Warnung für jede Änderung in einer Sharepoint-Website erstellen

StackOverflow https://stackoverflow.com/questions/921509

Frage

Ich habe vor kurzem die Forderung nach einer Person, die eine tägliche Zusammenfassung Alarm für jede Änderung innerhalb einer Sharepoint-Website zu erhalten; Jeder Standort hat einen Besitzer, der verantwortlich für die Inhalte auf ihrer Website ist.

Die aktuelle Art, wie wir etwas Arbeits haben, automatisch Warnungen für jede Liste / Bibliothek innerhalb der Website einrichten.

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

Dies schafft zwei Probleme:

  1. Der Anwender hat viele verschiedene Warnungen erstellt. Ideal:. Nur EINE E-Mail mit der täglichen Zusammenfassung
  2. würde Irgendeine Art von Monitor eingerichtet werden, für neue Listen oder Bibliotheken in der Website zu überprüfen und automatisch Warnungen für den Benutzer einrichten.

F: Wie kann ich eine tägliche Zusammenfassung Alarm für alle Änderungen in einer Website erstellen

War es hilfreich?

Lösung

Ich glaube, die Lösung, die Sie suchen durch die Auditing-Framework zur Verfügung steht. Revision ist sehr robust in SP, leider ist es einfach, durch die Ausgabe überwältigt zu erhalten.

Das Audit ist eine Eigenschaft auf der SPSite, SPWeb, SPList und SPItem Eigenschaften.

Stellen Sie den spezifischen Audit-Flags (mit den .Audit.AuditFlags Eigenschaften) der Verwendung dieser Eigenschaft für Ihre Reise (die Besonderheiten werden davon abhängen, wie Sie „ändern“ definieren, aber fast alles, was Sie zur Verfügung denken).

Details über die SPAudit Objekt auf verfügbar sind MSDN.

Sobald Sie definiert, was / wo Sie überwachen möchten, müssen Sie diese Informationen zurück an die Benutzer bekommen.

In der Standardeinstellung SP einrichtet einige schöne Berichte, dass verfügbar auf der Websitesammlungsebene ([url der Websitesammlung] / _ Layouts / Reporting.aspx? Kategorie = Revision). Diese können Ihren Anforderungen entsprechen.

Ihre erste Lösung erwähnt Benachrichtigung per E-Mail für die Benutzer. Da die meisten Benutzer wollen ihre Informationen per E-Mail zentralisieren (obwohl ihre MySite großer Platz ist, einen Link zu den Berichten setzen!) Sie werden ein wenig mehr Arbeit zu tun haben.

Sie können die erforderlichen Audit-Informationen über das Objektmodell ziehen die SPAuditQuery und SPAuditEntryCollection Objekte verwenden. Auch hier MSDN hat einige Informationen , wie diese Objekte zu verwenden.

Ich würde empfehlen, eine benutzerdefinierte SPJobDefinition Einrichtung, die am Ende des Tages läuft der Benutzer den Prüfungsbericht für ihre Website auf E-Mail. Andrew Connell hat eine große explaination von zum Einrichten eines benutzerdefinierten Job in seinem Blog.

Fazit:

  • Aktivieren der Überwachung für die SPWeb des in Frage
  • einen Bericht erstellen SPAuditQuery und SPAuditEntryCollection für jeden SPWeb
  • mit
  • Ein SPJobDefinition, die jede Nacht führt den Bericht an jeden SPWeb Eigentümer per E-Mail

Andere Tipps

Eine Sache zu prüfen, bevor die Überwachungsrichtlinie auf einer Website ermöglicht, ist die Performance-Overhead Sie hinzufügen.

Ich würde empfehlen, den Fußabdruck so gering wie möglich zu halten hier!

Damit meine ich, wenn es nur ein bestimmte Inhaltstyp oder eine bestimmte Liste, die Sie diese Informationen mögen aus, sicher sein, nur die Informationspolitik über diese CTs oder Listen ermöglichen!

Halten Sie auch die Protokollierung auf ein Minimum. Zum Beispiel, wenn Sie interessieren sich nur für Ansichten, nicht gelöscht oder wieder herzustellen, nur diese Ereignisse einloggen!

Bei großen Websites, ich habe trash Wirtschaftlichkeitsprüfung wirklich gesehen!

Auch bewusst sein, einige Einsprüche hier: auch wenn Sie die Überwachung auf Listen aktivieren können (wie in nicht Bibliotheken dokumentieren), eine Menge von Veranstaltungen (für Veranstaltungen Beispielansicht) ist nicht speziell für Listenelemente angemeldet! Dies ist nicht überall beschrieben (in der Tat i sogar Ted Pattison Positionsebene Audit erwähnt in einem MSDN-Artikel gesehen habe), aber ich habe es direkt von CSS und Produktteam, dass Positionsebene Prüfung nicht wegen Performance-Probleme in SP2007 umgesetzt. Stattdessen erhalten Sie nur eine Liste Ereignis im Protokoll spezifiziert, dass die Liste berührt wurde.

Dokumente ist ziemlich ok verfolgt, aber ich habe Probleme mit der Prüfung Ansicht Ereignisse auf Verlagsseite (die in der API betrachtet wird ein Dokument ist kein Listeneintrag) gesehen je nachdem, wie und wo Auditierung gesetzt wurde (zB wenn Prüfrichtlinien waren mit vererbten CT implementiert), so das ist etwas bewusst zu sein.

[edit: habe einige Tests, um dieses gestern und seine noch schlimmer: In der Tat Publishing Seiten ist nur verfolgt, wenn Sie auf Site-Ebene Audit-Richtlinie festgelegt! Wenn Sie für eine Politik auf einer Liste oder einen Inhaltstyp (oder sogar einen Inhaltstyp, der mit einer Politik von einem Inhaltstyp erbt) Sie erhalten Nein SPAuditItemType.Document Level-Event überhaupt. Legen Sie es auf einer Website, und Sie werden zu viele Prüfungen bekommen! Z.B. eine Ansicht wird x2 Ansicht Events und gleicht mit Updates auslösen, so dass Sie am Ende mit zu viel protokolliert werden. Es sieht auf jeden Fall wie ein Fehler, der nichts geprüft wird, wenn Politik setzt auf Listen und CTs ...]

Die wichtigste Botschaft ist hier: Sie vorsichtig, was Sie sich, da sie Ihre Websites Leistung auswirken TEST dass das, was Sie erwarten, ist wirklich angemeldet loggen sein!

hth Anders Rask

Nun, es ist kein Fall, dass es keine Positionsebene Revision. Die Positionsebene Revision implementiert, aber Sie müssen es auf EIN für bestimmte Artikel. Wenn Listeneintrag vorhanden ist, kann man seine Instanz erhalten, und schalten Sie die gleiche Prüfung wie Sie dies tun Listen. Das Problem ist, dass, wie es schaltet, wenn die ListItem erstellt wird. Vielleicht könnte Workflow helfen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top