Im vorigen Beitrag zu unserer Dokumentenverwaltung-Applikation Suchfunktionalität für SharePoint Dokumentenverwaltung Applikation haben wir euch einen Einblick in unsere Lösung für die einfache Verwaltung von SharePoint-Bibliotheken gegeben. In diesem Beitrag stellen wir ein spezielles Feature vor: eine automatisierte Benachrichtigung, die neue Einträge in einer SharePoint-Bibliothek sofort sichtbar macht.
Benachrichtigung für neue Einträge in SharePoint-Bibliotheken
In unserer Dokumentenverwaltungs-App listen wir alle Einträge der angebundenen SharePoint-Bibliotheken auf. Eine davon bündelt die offenen Aufgaben für einzelne Benutzer. Damit niemand neue Aufgaben übersieht, zeigt ein rotes Badge direkt im Interface die Anzahl der offenen Tasks an. So erkennt der Benutzer auf den ersten Blick, welche Aufgaben noch auf Bearbeitung warten.

Automatische Aktualisierung der Benachrichtigung
Bei Änderungen der offenen Aufgaben aktualisieren wir die Benachrichtigung automatisch in einem vordefinierten Intervall. Kommt etwa eine neue Aufgabe hinzu oder schließt der Benutzer eine Aufgabe ab, wird das Badge ohne manuellen Refresh aktualisiert. Dafür verwenden wir die JavaScript-Methode setInterval, die den Abruf alle 300.000 Millisekunden (fünf Minuten) ausführt.
JavaScript-Intervall für Badge-Updates
private loadOpenTasksCount() {
// First call without delay
this.executeLoadOpenTasksCountCommand();
// Check open tasks every five minutes
this.interval = setInterval(this.executeLoadOpenTasksCountCommand, 300000);
}
Abfrage der Einträge der Liste
Für die Benachrichtigung führen wir eine REST-Abfrage auf SharePoint aus. Um die Performance hochzuhalten, selektieren wir nur die Feld-ID, filtern auf den angemeldeten Benutzer sowie den Aufgabenstatus und geben anschließend die Anzahl der Treffer an das Badge zurück.
REST-Abfrage mit Filterkriterien
public static getOpenTasksCount(): Promise<number> {
const service: SPRestService = SPServiceProvider.GetCurrentSPService();
const selectQuery = 'Id';
const filterQuery = `AssignedToId eq ${AppContext.currentUser.id} and Status eq 'In Progress'`;
return service
.getListItemsByFilter(AppContext.taskList, selectQuery, filterQuery)
.then(items => (items && items.value ? items.value.length : 0));
}
Service-Aufruf der SharePoint-Bibliothek
public getListItemsByFilter(list: IList, selectQuery?: string, filterQuery?: string) {
const restAPI = `${this.context.pageContext.web.absoluteUrl}/_api/web/Lists(guid'${list.Id}')/items?${
selectQuery !== null && selectQuery !== undefined ? `$select=${selectQuery}` : ''
}${
filterQuery !== null && filterQuery !== undefined ? `&$filter=${filterQuery}` : ''
}`;
return this.context.spHttpClient
.get(restAPI, SPHttpClient.configurations.v1)
.then(response => response.json());
}
Fazit
Die Kombination aus visueller Benachrichtigung und effizienter REST-Abfrage stellt sicher, dass Benutzer neue Aufgaben sofort sehen und trotzdem eine performante SharePoint-Erfahrung behalten. So bleibt die Steuerung der offenen Aufgaben transparent und reaktionsschnell.