IT Service Management basierend auf SharePoint 2013 mit Nintex und MatchPoint

Reporting

Gestern fand im Papiersaal in Zürich die Release Party von MatchPoint Snow statt. Beim neuesten Wurf des Software Herrstellers Colygon handelt es sich um eine unternehmensweite Collaboration Plattform basierend auf SharePoint 2013. Es wird als „Facebook für Unternehmen“ angepriesen. Im Gegensatz … Weiterlesen

MatchPoint Konfigurationen deployen und verwalten

MatchPoint bietet eine Sammlung von generischen WebParts für SharePoint an, welche mittels Konfiguration auf die jeweiligen Bedürfnisse angepasst werden können. Diese Konfigurationen werden zentral als XML Files abgelegt.

Dies bietet auf der einen Seite eine sehr hohe Flexibilität, was während des Projekts z.B. die Anpassung der Konfigurationen angeht, birgt aber auf der anderen Seite auch Risiken, so dass z.B. durch den Kunden angepasste Konfigurationen bei einem späteren Deployment überschrieben werden oder man alle Konfigurationen manuell vom Testsystem auf das Produktionssystem kopieren muss.

Um die Handhabung dieser Risiken zu vereinfachen und den Zeitaufwand für ein Deployment zu reduzieren, haben wird den Umgang mit den MatchPoint-Konfigurationen vereinheitlicht und automatisiert. Zum einen werden die Dateien per Knopfdruck kopiert und zum anderen übernimmt SharePoint die Kontrolle, so dass keine Konfigurationen aus Versehen überschrieben werden. Zusätzlich bieten wir eine kleine Funktion an, die Dateien wieder auf den Ursprungszustand des letzten regulären Deployments zurückzusetzen.

Integration in Solution

Um die Konfigurationen automatisch zu verteilen, haben wir ein einfaches Feature implementiert.

Pro WebPart-Typ existiert ein Ordner, welcher die Konfigurationsdateien enthält und diese somit in die Solution integriert. Das Feature kopiert die abgelegten XML Dateien aus der Solution in den „MatchPoint Configuration“-Ordner im 14-Hive (Program Files\Common files\Microsoft Shared\Web Server Extensions\14\).

Feature.xml:

ProvisionedFiles.xml:

Sobald das Feature auf einer Site Collection (in unserem Fall eine dedizierte Konfigurations-Site) aktiviert wird, werden die Dateien automatisch in die MatchPoint-Dokumentenbibliothek hochgeladen.

Status anzeigen und Deployment-Zustand wiederherstellen

Für die Verwaltung der verteilten Dateien, haben wir ein MatchPoint DataGrid WebPart mit einem ListDataProvider verwendet und eine Ribbon-Action definiert.

Um festzustellen, ob eine Konfiguration seit dem Deployment verändert wurde, nutzen wir das Konzept wie Dateien unter SharePoint abgelegt werden:

Grundsätzlich gibt es site pages (content pages) und application pages. Die Site Pages werden in zwei Kategorien aufgeteilt: Customized und Uncustomized (früher Ghosted und Unghosted).

Die, durch das Feature verteilten, Daten starten als Uncustomized, das bedeutet, dass sie direkt aus dem Dateisystem und nicht aus der Content Datenbank geladen werden. Wird nun eine solche Datei durch das SharePoint API oder in unserem Fall durch die MatchPoint-Adminoberfläche verändert, wird die neue Datei in der Content Datenbank abgelegt und von nun an von dort geladen. Die Datei ist Customized.

Weitere Infos zu diesem Konzept (Understanding and Creating Customized and Uncustomized Files):
http://msdn.microsoft.com/en-us/library/cc406685.aspx

Dieser Status kann per Code ausgelesen und mit einer CompositeColumn im DataGrid dargestellt werden:

 

 

Wird nun also eine WebPart-Konfiguration verändert, so wird die Datei anschliessend in der Liste als Customized angezeigt:

 

Ein weiterer Vorteil ist, dass beim Deployment einer neuen Solution die, zuvor von Hand angepassten, Konfigurationen nicht einfach überschrieben werden, sondern eben als Customized angezeigt und dann manuell auf die neue Version gesetzt werden können, während die nicht veränderten Konfigurationen beim Deployment sofort auf die neu verteilte Version gehoben werden. Dies verhindert ein ungewolltes Überschreiben der angepassten MatchPoint WebParts.

Für das Wiederherstellen des Deployment-Zustandes, wurde eine ContextualRibbonGroup-Action im DataGrid WebPart verwendet, welche eine OnClickExpression ausführt:

Durch die RevertContentStream Methode wird die Verknüpfung der Datei wieder auf das Dateisystem zurückgesetzt, womit MatchPoint wieder die ursprüngliche Konfigurationsdatei anzieht.

Fazit

Durch dieses einfache Feature und das angepasste DataGrid, konnten wir die Verteilung und Verwaltung der MatchPoint Konfigurationen in unseren Projekten erheblich vereinfachen und das Risiko minimieren, dass bei einem Deployment die angepassten WebParts verloren gehen.

News Teaser-Workflow und Aggregation mit Nintex und MatchPoint

Eine immer wieder von Kunden gewünschte Funktionalität im Rahmen eines Intranet-Projektes ist die Darstellung von News auf der Startseite. Auf SharePoint basierend sollen die Meldungen aus einer bestehenden News Website angezogen und zentral verwaltet werden können. Im folgenden Beispiel wurde dies mit Nintex Workflow und mit MatchPoint umgesetzt.

Die Anforderungen

Auf der Startseite sollen als Teaser ausgewählte Top News aus den verschiedenen Bereichen angezogen und dargestellt werden. Die News befinden sich in einer eigenen SiteCollection, wo die Meldungen erstellt und abgelegt werden.
Auf der Startseite sollen drei News Elemente platziert sein:

  • Ein Artikel Prominent mit grossem Bild zuoberst
  • Eine kleine Anzahl weiterer Newsteaser darunter
  • Zusätzlich aufklappbar weitere (ältere) Newsteaser

Alle Meldungen, die als Teaser auf der Startseite ersichtlich sein sollen, durchlaufen einen Workflow und können dadurch zentral verwaltet und freigegeben werden.

Die Umsetzung – Genehmigungs Workflow

Für die Newsmeldung wird in der entsprechenden SiteCollection eine News Seite erstellt, mit Inhalt befüllt und veröffentlicht. Diese Meldung ist damit in der News-Applikation ersichtlich und zugänglich. Soll nun die News ebenfalls auf der Startseite des Intranets dargestellt werden, so kann man über einen Button im Ribbon die Veröffentlichung auf der Startseite beantragen.

Durch diesen Vorgang wird ein Eintrag in einer Liste erstellt, auf welcher mit Nintex ein Workflow entwickelt wurde, welcher den Genehmigungs-Prozess abwickelt und somit die zentrale Verwaltung der Top News sicherstellt. Über das Startdatum kann der Zeitpunkt der Veröffentlichung auf der Startseite beeinflusst werden.

Die Verwaltungsstelle erhält eine E-Mail mit den Informationen zur News-Meldung. Sie hat nun die Möglichkeit, die News abzulehnen und nicht auf der Startseite anzeigen zu lassen, oder die Meldung als Top News zu genehmigen, entweder gepinnt und prominent zuoberst auf der Startseite ersichtlich, oder als normale Top News in der Liste unterhalb der gepinnten Nachricht. Durch den Nintex Workflow wird der erstellte Listeneintrag verändert und als Top News markiert.

WebParts – gepinnte News

Auf der Startseite wurden insgesamt vier Webparts mit MatchPoint erstellt. Für die gepinnte Top News wurde ein Composite Webpart verwendet, welches über einen ExpressionDataProvider den markierten Eintrag aus der Top News Liste anzieht und mit Hilfe des PatternTransformers darstellt.
Expression Code:

In der abgebildeten Methode wird die gepinnte Top News per CAML Query aus der Liste ausgelesen und mittels der URL mit Hilfe der MatchPoint API geladen und zurückgegeben.
Im PatternTransformer des MatchPoint Composite WebParts wird mit HTML das, aus der GetPinnedTopNews() Methode erhaltene, ListItem auf der Startseite dargestellt.

PatternTransformer – RowTemplate Code:

Aggregations WebParts

Da die Performance gerade auf der Startseite des Intranets sehr entscheidend ist, sollte für die Aggregation der neuen weiteren Meldungen jeweils nur einen Aufruf pro Meldung abgesetzt werden. Dies wird durch ein verstecktes MatchPoint Composite WebPart erreicht, welches ebenfalls mit einem ExpressionDataProvider und CAML-Query die Seiten aggregiert und lädt, jedoch nicht darstellt.
Expression Code:

Auszug aus dem DeveloperDashboard:

Weitere News WebParts

Anschliessend kann in den weiteren WebParts ebenfalls per ExpressionDataProvider über die ConnectionData auf die Daten des „Aggregations“-WebParts zugegriffen werden. Dadurch ist pro Meldung nur noch ein Zugriff notwendig und sowohl das Caching wie auch die Sortierung kann zentral gelöst werden.

Expression für die ersten vier News:
ConnectionData.NewsList.Count() > 3 ? ConnectionData.NewsList.ToList().GetRange(0, 4) : ConnectionData.NewsList.ToList().GetRange(0, ConnectionData.NewsList.Count())

Expression für die weiteren fünf Beiträge:
ConnectionData.NewsList.Count() > 4 ? ConnectionData.NewsList.ToList().GetRange(4, ConnectionData.NewsList.Count()-4) : null

Das „Aggregations“-WebPart wird per jQuery ausgeblendet, damit dieses für den Benutzer nicht sichtbar ist. Das Aufklappen des WebParts mit den fünf weiteren News wurde ebenfalls per jQuery gelöst.

Fazit

Mit Hilfe von Nintex, MatchPoint und einigen Tricks können dem Kundenwunsch entsprechende News Teaser in SharePoint gebaut werden, welche sowohl performant wie auch einfach zu verwalten sind. Dank des Workflows kann auch ein komplexer Genehmigungsprozess abgebildet und integriert werden.