Freitag, 5. Dezember 2014

InfoPath/Nintex Workflow - Repeating Table auslesen

InfoPath ermöglicht mit Hilfe des Steuerelements „Wiederholte Tabelle" (Repeating Table) das Einfügen von Datensatz-Zeilen in einem Formular. Ein einfaches Beispiel wäre eine Bestellung mit mehreren Positionen. Zu jeder Position soll die Menge und die Artikelbezeichnung angegeben werden. Eine Bestellung kann mehrere Positionen haben. Die wiederholte Tabelle ermöglicht das Einfügen von weiteren Zeilen mit den Feldern „Artikelbezeichnung" und „Menge" der einzelnen Position.

Gegeben sei ein InfoPath Formular zur Erfassung einer Bestellung. Das Formular wurde in einer Formularbibliothek im SharePoint veröffentlicht und enthält eine wiederholte Tabelle. Die Felder eines InfoPath Formulars lassen sich mit Hilfe der Property Promotion als Spalten in SharePoint anzeigen. Bei Feldern in einer wiederholten Tabelle (wiederholtes Feld) ist dies zwar möglich, allerdings stehen in der SharePoint Spalte nur die Daten der ersten Zeile der Tabelle. Mit Nintex Workflow ist es möglich, auf einzelne Zeilen einer wiederholten Tabelle zuzugreifen, um zum Beispiel aus den einzelnen Positionen in einer zweiten Liste neue Elemente anzulegen.
 
Beim Absenden des Formulars wird eine XML-Datei in der Formularbibliothek gespeichert. Diese XML-Datei kann im Nintex Workflow ausgelesen werden.
 
Zum Auslesen der XML-Datei wird die Aktion „Query XML" verwendet. In der Konfiguration der Aktion kann mittels XPath auf die Formularfelder zugegriffen und in einer Collection Variable gespeichert werden. Wir speichern die Artikelbezeichnung in der Variable „collArtikel" und die Menge in der Variable „collMenge".


In den Collection Variablen werden die Daten aller Zeilen gespeichert. Mit Hilfe einer For Each Schleife kann die Collection Variable durchlaufen, die einzelnen Datensätze (Zeilen) zusammengesetzt und ein neues Element in einer zweiten Liste erstellt werden.



In der For Each Aktion wird eine der beiden Collection Variablen angegeben und eine Output Variable festgelegt.


Wichtig an dieser Stelle ist eine Variable für den Index. Diese wird benötigt, um in einem weiteren Collection Vorgang den richtigen Datensatz für die Menge auszulesen.
 
Innerhalb der For Each Schleife muss für jedes Feld aus der wiederholten Tabelle ein Collection Vorgang platziert werden. Aus der Variable collMenge wird das Element mit dem Index „numIndex" (aktuelles Element der For Each Schleife) ausgelesen und der Wert in der Variable „Menge" gespeichert. 


Nach den Collection Vorgängen zum Auslesen des Datensatzes, kann innerhalb der For Each Schleife eine Create List Item Aktion hinzugefügt werden, um für jede Position der Bestellung in einer separaten Liste ein neues Listenelement anzulegen.

InfoPath/Nintex Workflow - Delegieren von Workflowaufgaben

Nicht selten kommt es vor, dass mit Hilfe eines Formulars Daten erfasst werden und nach Absenden des Formulars ein Nintex Workflow startet. Dieser Workflow könnte zum Beispiel die Genehmigung oder Prüfung eines Antrages darstellen. Angenommen Sie haben ein recht komplexes InfoPath Formular mit mehreren Ansichten auf denen Daten eingegeben werden müssen sowie eine Ansicht für den Prüfer des Formulars.

Im Formular wählt der Antragsteller einen Zuständigkeitsbereich aus, der für die Prüfung notwendig ist. Das Formular wird ausgefüllt, abgesendet und der Bearbeiter erhält die Benachrichtigung über eine neue Aufgabe. Er öffnet das Formular und stellt fest, dass die Bearbeitung in einen anderen Zuständigkeitsbereich fällt. Aus Sicht des Prüfers wäre es praktisch in der Prüfer-Ansicht eine andere Person oder Gruppe anzugeben und die Aufgabe zu delegieren.
 
Zur Delegierung der Workflowaufgabe wird der Nintex Workflow Webservice und die zwei Methoden „GetRunningWorkflowTasksForCurrentUser" und „DelegateTask" verwendet. Erstere wird dazu genutzt, um die entsprechende Workflowaufgabe auf dem aktuellen Dokument nachzuschlagen. Mit der „DelegateTaks" Methode wird die Aufgabe letztendlich delegiert. Beide Datenverbindungen sollen nicht beim Öffnen des Formulars automatisch abgefragt werden. Für die Aufgabendelegierung wird das Formular wie folgt aufgebaut:

 

Das Feld „File URL" (Textfeld) dient zur Angabe der URL zum Dokument, auf der der Workflow und die Workflowaufgabe liegen. In einem praktischen Anwendungsszenario kann die File URL automatisch ermittelt werden. Im Feld „Delegate to User" wird der User angegeben, dem die Task neu zugewiesen werden soll.
 
Als erstes wird die Datenverbindung zum Auslesen der aktuellen Aufgaben ID angelegt. Der Nintex Workflow Webservice kann wie folgt aufgerufen werden:

http://<sitename>/_vti_bin/nintexworkflow/workflow.asmx

Wir verwenden hier die Methode „GetRunningWorkflowTasksForCurrentUser".

Am „Query Task ID" Button erstellen wir eine Regel, die als erste Aktion die File URL aus dem Textfeld im Formular in das Query Feld „fileURL" der eben angelegten Datenverbindung schreibt. Mit der zweiten Aktion dieser Regel wird die Datenverbindung abgefragt.

 

Ein Klick auf den "Query Task ID" Button fragt, bei eingegebener File URL, alle benötigten Informationen zur Nintex Workflow Aufgabe zum dazugehörigen Element ab. Als nächstes kann die eigentliche Delegation der Aufgabe eingerichtet werden. Dazu wird zunächst die Datenverbindung benötigt, die den Nintex Workflow Webservice aufruft und diesmal die Methode „DelegateTask" verwendet.

Am „Delegate User" Button wird eine Regel angelegt, die zunächst alle benötigten Query Felder der Delegate Task Datenverbindung füllt und anschließend die Datenverbindung abfragt.


 

Der Wert für die „spTaskId" erhalten wir aus der „GetRunningWorkflowTasksForCurrentUser" Datenverbindung. Den „taskListName" und den Kommentar setzen wir in diesem Beispiel auf einen fixen Wert. Die Person, an die die Aufgabe delegiert werden soll, wird über ein Personen oder Gruppenfeld im Formular festgelegt. Mit der Checkbox „sendNotification" kann festgelegt werden, ob der neue Bearbeiter der Aufgabe eine E-Mail Benachrichtigung erhalten soll. Nach dem Setzen der Felder wird letztendlich die Datenverbindung abgefragt und die Aufgabe entsprechend delegiert.
 
Das Formular ist nun fertig eingerichtet. Im Feld File URL tragen wir einen Link zu einem Dokument mit einem laufenden Workflow inklusive einer Workflowaufgabe, die mir zugewiesen ist, ein. Mit Hilfe des „Query Task ID" Buttons erhalten wir die entsprechende Task ID der Aufgabe. Im Feld „Delegate to User" legen wir fest, wem die Aufgabe zugewiesen werden soll. Die Checkbox steuert den Versand einer E-Mail Benachrichtigung zur Delegation der Aufgabe.

Microsoft Gold Partner

Eine Profilierung als Gold Certified Partner im Microsoft Partner Programm ist der höchste Partnerstatus den Microsoft zu vergeben hat. Der Gold Status ist Auszeichnung aber zugleich auch eine jährlich wiederkehrende Herausforderung, da Microsoft hohe Anforderungen an die Vergabe dieser Auszeichnung stellt. Die Nachweise zu Qualifikation und Zertifizierung von Mitarbeitern sowie zu Praxiserfahrung sind jährlich aufs Neue zu erbringen.
Auch für das Jahr 2015 haben uns in den Microsoft Kompetenzen „Collaboration and Content“, „Application Development“ und „Midmarket Solution Provider“ wieder profiliert.
So können wir Sie auch im Jahr 2015 wieder mit aktuellstem Know-How in Ihren Projekten begleiten.

Dienstag, 7. Oktober 2014

Solutions - Seitenfunktionen (Benachrichtigen, Drucken, RSS, Weiterempfehlen, Favorit)

SharePoint ist ein sehr mächtiges System, das einen großen "Baukasten" mit nahezu unendlichen Modulen und Funktionen bereitstellt. Viele dieser Funktionen sind auch sehr sinnvoll, aber leider nicht immer direkt sichtbar und erfordern teils das "Suchen" in der Menüband (Ribbon) genannten Funktionsleiste.

In üblichen Intranet Systemen werden bestimmte Funktionen aber immer wieder von den Nutzern gewünscht, wie z.B. die Möglichkeit sich eine Benachrichtigung (via eMail) zu abonnieren, oder einen Inhalt schnell zu drucken. Für einige dieser Funktionalitäten haben wir auf Basis der langjährigen Erfahrung eine Art "Schnellzugriff" geschaffen. Wir nennen dies "Seitenfunktionen". Diesen Namen haben wir gewählt, weil diese Funktionen üblicherweise in die SharePoint Masterpage eingebunden werden (können) und damit auf allen Seiten eines Intranets oder Extranet (oder auch Internets) zur Verfügung stehen, und zwar immer an derselben Stelle.

Selbstverständlich kann sowohl die Optik der Icons als auch die Auswahl der Funktionen an Ihre Wünsche angepasst bzw. konfiguriert werden. Aktuell stellt die Lösung die folgenden Funktionen als Schnellzugriff zur Verfügung:

- Benachrichtigen (SharePointStandard Funktion um eine neue Benachrichtigung einzurichten)

- Weiterempfehlen (mailto Link mit automatischer dynamischer Definition von Betreff, Absender und Text in einer neuen eMail)

- Favoriten (Setzen eines Browserfavoriten, oder Folgen eines Inhalts in der mySite)

- Drucken (Browser Druck Dialog in optimiertem Print-Layout)

- RSS Feeds (Link auf einen bestimmten RSS Feed oder eine Sammlung von RSS Feeds)

 

 
Die "Seitenfunktionen" werden als installierbare SharePoint Solution bereitgestellt und funktionieren ab der Version SharePoint Foundation 2010.

Sollten Sie Fragen zu dieser Lösung haben stehen Ihnen unsere Berater selbstverständlich jederzeit gerne zur Verfügung.

InfoPath/Formulare - AD User Anlage (inkl. Nintex Workflow)

Neue Mitarbeiter in einem Unternehmen sind nichts Ungewöhnliches. Mit dem Eintritt eines neuen Mitarbeiters werden verschiedene Prozesse angestoßen, z.B. benötigt der Mitarbeiter einen Arbeitsplatz und einen AD Account um sich anzumelden. Dieser Prozess lässt sich mit Hilfe von Microsoft InfoPath und Nintex Workflow sehr gut elektronisch unterstützen und zum Teil automatisieren.

Die benötigten Daten zur Anlage eines AD Accounts für den neuen Mitarbeiter werden mit Hilfe eines InfoPath Formulars erfasst. Der Vorgesetzte legt ein neues Formular an und füllt die Felder bezüglich der Stammdaten entsprechend aus. Das Feld "Vorgesetzter" wird automatisch beim Öffnen des Formulars belegt.


Der IT Abteilung wird letztendlich eine Aufgabe zum Überprüfen der Daten auf Vollständigkeit zugewiesen. Sind die Daten vollständig, soll der AD User angelegt werden. Nintex Workflow stellt in der Enterprise Version eine Aktion zur Verfügung mit der direkt im AD ein User Account angelegt werden kann. Diese Aktion muss entsprechend konfiguriert werden. Im Konfigurationsmenü dieser Aktion lassen sich alle notwendigen Felder mit Informationen aus dem Formular füllen. Nach erfolgreicher Anlage werden alle Beteiligten per E-Mail benachrichtigt.
 

Tools - SharePoint Logfiles analysieren

Jeder SharePoint Administrator steht früher oder später vor dem Problem aufgrund eines Fehlers die SharePoint Logfiles analysieren zu müssen. Glücklicherweise lässt sich in SharePoint in der Zentraladministration sehr genau konfigurieren welche Events / Informationen in den Logfiles protokolliert werden, ebenso wie den Ort der Logfiles und die maximale Größe bzw. Anzahl an aufbewahrten Logfiles.

Durch die Einführung der Correlation ID mit SharPoint 2010 ist es auch erheblich einfacher geworden in den Logfiles Informationen zu einem bestimmten Fehler aufzufinden. Trotzdem beinhaltet ein Standard Logfile sehr viele Informationen die es teilweise recht aufwendig oder schwierig machen die gesuchten und relevanten Informationen für eine Fehleranalyse zu finden.

Um diese Analyse einfacher zu machen gibt es verschiedene Hilfsmittel. Als Standardwerkzeug kommt meistens der normale Editor (Notepad) von Windows zum Einsatz, allerdings auch nur deshalb weil dieser auf jedem Windows Server System bereits installiert ist. Dieser hat allerdings zwei erhebliche Nachteile: Zum einen ist die Übersichtlichkeit für den Einsatzzweck alles andere als optimal, zum anderen hat er mit großen Dateien teils erhebliche Performanceprobleme. Und groß sind die SharePoint Logfiles leider meistens.

Glücklicherweise gibt es noch etliche Alternativen, von denen wir Ihnen zwei vorstellen möchten, die wir häufig einsetzen.

Notepad++

Ein optimaler und schneller Ersatz für den Standard Editor ist Notepad++. Dieses kleine Tool kennt alle wichtigen Programmiersprachen und deren Syntaxen, ist sehr schnell und sparsam im Ressourcenverbrauch. Durch etliche Plugins kann es auch noch stark erweitert werden. Im Zusammenhang mit SharePoint Logfiles besticht es vor allem durch zwei Dinge: Die Geschwindigkeit mit der große Dateien geöffnet und bearbeitet werden können sowie die umfangreichen Suchfunktionen. Außerdem ist es gleichzeitig eine große Hilfe wenn man andere Dateien auf dem SharePoint Server analysieren muss, wie z.B. XML oder ASPX Dateien. Ein Nachteil sei hier aber auch erwähnt. Aufgrund der mächtigen und umfangreichen Funktionen ist die Menü- und Funktionsstruktur teils sehr unübersichtlich. Notepad++ ist ein OpenSource Tool und somit kostenlos erhältlich. Damit eignet es sich perfekt als Zusatztool auf den SharePoint Servern.

SharePoint Log Viewer

Der SharePoint Log Viewer ist ebenfalls ein OpenSource Projekt, in diesem Fall in der CodePlex Plattform. Es ist im Gegensatz zu Notepad++ ausschließlich für die Analyse von SharePoint Logfiles, genauer gesagt ULS Logfiles geeignet, bietet hier aber dafür umfangreiche und nützliche Filterfunktionen. Er ermöglicht das Analysieren mehrerer Logfiles gleichzeitig, die Suche und Filterung in jeder einzelnen Spalte, Exportfunktionen bis hin zum Live Monitoring inkl. automatischen eMail Benachrichtigungen bei bestimmten Fehlern. Der SharePoint Log Viewer unterstützt alle SharePoint Versionen ab 2007.

Der SharePoint Logviewer steht hier zum Download zur Verfügung:

https://sharepointlogviewer.codeplex.com/

Powershell Scripts - Alternative Sprachen (Sprachpakete) in allen Websites aktivieren

Wer SharePoint mit mehreren Sprachen betreiben möchte, weiß dass es dazu grundsätzlich zwei Möglichkeiten gibt: Die sprachenabhängige Anpassung der Oberfläche über Sprachpakete sowie die Trennung der Inhalte in verschiedene Sprachen (sogenannte Variations). Das letztere ist ein eigenständiges Thema. Wir möchten in diesem Beitrag  kurz auf ein spezielles Thema / Problem beim Einsatz von Sprachpaketen eingehen.

Sobald man zusätzliche Sprachpakete auf dem SharePoint installiert hat (übrigens, hier immer darauf achten dass man unter Umständen auch die Service Packs für die Sprachpakete installieren muss), stehen die zusätzlichen Sprachen grundsätzlich zur Verfügung.

Ein Sprachpaket ermöglicht die Umschaltung auf eine der anderen Sprachen. Dieses Umschalten stellt alle SharePoint Standard Oberflächen Funktionen auf die jeweilige Sprache um, außerdem ist es damit möglich in der jeweils aktiven Sprache die Namen von Listen, Spalten sowie Navigationselementen anzupassen.

Der Nachteil ist allerdings dass die zusätzlichen Sprachen pro Website aktiviert werden müssen, um auch genutzt werden zu können. Da hier keine Vererbung möglich ist, ist der einfachste Weg (vor allem bei bereits bestehenden Websites) die zusätzliche Sprache über ein kleines Powershell Script zu aktivieren.

Ein einfaches Powershell Script dass für alle Websites einer anzugebenden URL einfach alle installieren Sprachpakete aktiviert wäre das folgende:

# Enables SELECTED installed languages for each subsite in a site collection
 $spSite = Get-SPSite -Identity
http://DemoURL
 foreach ($spWeb in $spSite.AllWebs)
 {
   $spWeb.IsMultilingual = $true
   $WebRegionSettings = New-Object Microsoft.SharePoint.SPRegionalSettings($spWeb)
   foreach ($language in $WebRegionSettings.InstalledLanguages)
   {
        write-host -BackgroundColor Green -ForegroundColor Black "Update -" $spWeb "site with LCID:" $language.DisplayName
        $culture = New-Object System.Globalization.CultureInfo($language.LCID)
        $spWeb.AddSupportedUICulture($Culture)
   }
   $spWeb.Update()
 }


 

Dieses Script bzw. die Logik davon kann man natürlich z.B. auch mittels einem Event Receiver und dem sogenannten Feature Stappling als SharePoint Solution bereitstellen, die automatisch bei jeder neu angelegten Website die Sprachen aktiviert.